github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/image/color/color.go (about)

     1  // Copyright 2011 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  // colorパッケージは基本的な色ライブラリを実装します。
     6  package color
     7  
     8  // Colorは、アルファ乗算済みの16ビットチャンネルRGBAに自身を変換できます。
     9  // この変換は損失を伴う可能性があります。
    10  type Color interface {
    11  	RGBA() (r, g, b, a uint32)
    12  }
    13  
    14  // RGBAは、伝統的な32ビットのアルファ乗算済みカラーを表し、赤、緑、青、アルファそれぞれが8ビットです。
    15  //
    16  // アルファ乗算済みの色成分Cは、アルファ(A)によってスケーリングされているため、
    17  // 0 <= C <= Aの有効な値を持ちます。
    18  type RGBA struct {
    19  	R, G, B, A uint8
    20  }
    21  
    22  func (c RGBA) RGBA() (r, g, b, a uint32)
    23  
    24  // RGBA64は、64ビットのアルファ乗算済みカラーを表し、赤、緑、青、アルファそれぞれが16ビットです。
    25  //
    26  // アルファ乗算済みの色成分Cは、アルファ(A)によってスケーリングされているため、
    27  // 0 <= C <= Aの有効な値を持ちます。
    28  type RGBA64 struct {
    29  	R, G, B, A uint16
    30  }
    31  
    32  func (c RGBA64) RGBA() (r, g, b, a uint32)
    33  
    34  // NRGBAは、アルファ非乗算の32ビットカラーを表します。
    35  type NRGBA struct {
    36  	R, G, B, A uint8
    37  }
    38  
    39  func (c NRGBA) RGBA() (r, g, b, a uint32)
    40  
    41  // NRGBA64は、アルファ非乗算の64ビットカラーを表し、
    42  // 赤、緑、青、アルファそれぞれが16ビットです。
    43  type NRGBA64 struct {
    44  	R, G, B, A uint16
    45  }
    46  
    47  func (c NRGBA64) RGBA() (r, g, b, a uint32)
    48  
    49  // Alphaは、8ビットのアルファカラーを表します。
    50  type Alpha struct {
    51  	A uint8
    52  }
    53  
    54  func (c Alpha) RGBA() (r, g, b, a uint32)
    55  
    56  // Alpha16は、16ビットのアルファカラーを表します。
    57  type Alpha16 struct {
    58  	A uint16
    59  }
    60  
    61  func (c Alpha16) RGBA() (r, g, b, a uint32)
    62  
    63  // Grayは、8ビットのグレースケールカラーを表します。
    64  type Gray struct {
    65  	Y uint8
    66  }
    67  
    68  func (c Gray) RGBA() (r, g, b, a uint32)
    69  
    70  // Gray16は、16ビットのグレースケールカラーを表します。
    71  type Gray16 struct {
    72  	Y uint16
    73  }
    74  
    75  func (c Gray16) RGBA() (r, g, b, a uint32)
    76  
    77  // Modelは、任意の [Color] を自身のカラーモデルのものに変換できます。この変換は損失を伴う可能性があります。
    78  type Model interface {
    79  	Convert(c Color) Color
    80  }
    81  
    82  // ModelFuncは、変換を実装するためにfを呼び出す [Model] を返します。
    83  func ModelFunc(f func(Color) Color) Model
    84  
    85  // 標準のカラータイプのモデル。
    86  var (
    87  	RGBAModel    Model = ModelFunc(rgbaModel)
    88  	RGBA64Model  Model = ModelFunc(rgba64Model)
    89  	NRGBAModel   Model = ModelFunc(nrgbaModel)
    90  	NRGBA64Model Model = ModelFunc(nrgba64Model)
    91  	AlphaModel   Model = ModelFunc(alphaModel)
    92  	Alpha16Model Model = ModelFunc(alpha16Model)
    93  	GrayModel    Model = ModelFunc(grayModel)
    94  	Gray16Model  Model = ModelFunc(gray16Model)
    95  )
    96  
    97  // Paletteは色のパレットです。
    98  type Palette []Color
    99  
   100  // Convertは、ユークリッドのR,G,B空間でcに最も近いパレット色を返します。
   101  func (p Palette) Convert(c Color) Color
   102  
   103  // Indexは、ユークリッドのR,G,B,A空間でcに最も近いパレット色のインデックスを返します。
   104  func (p Palette) Index(c Color) int
   105  
   106  // 標準的な色。
   107  var (
   108  	Black       = Gray16{0}
   109  	White       = Gray16{0xffff}
   110  	Transparent = Alpha16{0}
   111  	Opaque      = Alpha16{0xffff}
   112  )