github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/image/draw/draw.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // パッケージdrawは、画像合成関数を提供します。 6 // 7 // このパッケージの紹介については、「Go image/drawパッケージ」を参照してください: 8 // https://golang.org/doc/articles/image_draw.html 9 package draw 10 11 import ( 12 "github.com/shogo82148/std/image" 13 "github.com/shogo82148/std/image/color" 14 ) 15 16 // Imageは、単一のピクセルを変更するSetメソッドを持つimage.Imageです。 17 type Image interface { 18 image.Image 19 Set(x, y int, c color.Color) 20 } 21 22 // RGBA64Imageは、単一のピクセルを変更するSetRGBA64メソッドで、[Image] と [image.RGBA64Image] の 23 // インターフェースを拡張します。SetRGBA64はSetを呼び出すのと同等ですが、具体的な色の 24 // タイプを [color.Color] インターフェースタイプに変換する際の割り当てを避けることができます。 25 type RGBA64Image interface { 26 image.RGBA64Image 27 Set(x, y int, c color.Color) 28 SetRGBA64(x, y int, c color.RGBA64) 29 } 30 31 // Quantizerは、画像のパレットを生成します。 32 type Quantizer interface { 33 Quantize(p color.Palette, m image.Image) color.Palette 34 } 35 36 // Opは、ポーター-ダフ合成演算子です。 37 type Op int 38 39 const ( 40 // Overは ``(src in mask) over dst'' を指定します。 41 Over Op = iota 42 // Srcは ``src in mask'' を指定します。 43 Src 44 ) 45 46 // Drawは、この [Op] とともにDraw関数を呼び出すことで [Drawer] インターフェースを実装します。 47 func (op Op) Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point) 48 49 // Drawerは [Draw] メソッドを含みます。 50 type Drawer interface { 51 Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point) 52 } 53 54 // FloydSteinbergは、Floyd-Steinberg誤差拡散を持つ [Src] [Op] の [Drawer] です。 55 var FloydSteinberg Drawer = floydSteinberg{} 56 57 // Drawは、nilマスクで [DrawMask] を呼び出します。 58 func Draw(dst Image, r image.Rectangle, src image.Image, sp image.Point, op Op) 59 60 // DrawMaskは、dstのr.Minをsrcのspとmaskのmpに揃え、その後dstの矩形rを 61 // ポーター-ダフ合成の結果で置き換えます。nilのマスクは不透明として扱われます。 62 func DrawMask(dst Image, r image.Rectangle, src image.Image, sp image.Point, mask image.Image, mp image.Point, op Op)