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)