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 )