source: Include/Classes/System/Drawing/Color.ab@ 282

Last change on this file since 282 was 282, checked in by イグトランス (egtra), 17 years ago

#121対応、Classes/System/Windows/Forms以下を名前空間に入れた。

File size: 9.0 KB
Line 
1' Classes/System/Drawing/Color.ab
2
3#ifndef __SYSTEM_DRAWING_COLOR_AB__
4#define __SYSTEM_DRAWING_COLOR_AB__
5
6#include <Classes/System/Math.ab>
7#include <Classes/System/Drawing/Imaging/misc.ab>
8
9Class Color
10Public
11 Sub Color()
12 argb = MakeARGB(255, 0, 0, 0) ' Black
13 End Sub
14
15 Sub Color(ByRef c As Color)
16 argb = c.argb
17 End Sub
18
19 Sub Color(r As Byte, g As Byte, b As Byte)
20 argb = MakeARGB(255, r, g, b)
21 End Sub
22
23 Sub Color(a As Byte, r As Byte, g As Byte, b As Byte)
24 argb = MakeARGB(a, r, g, b)
25 End Sub
26
27 Sub Color(newArgb As ARGB)
28 argb = newArgb
29 End Sub
30/*
31 Sub Operator =(c As Color)
32 argb = c.argb
33 End Sub
34*/
35 Function Operator ==(c As Color) As Boolean
36 Return Equals(c)
37 End Function
38
39 Function Operator <>(c As Color) As Boolean
40 Return Not Equals(c)
41 End Function
42
43 Function A() As Byte
44 Return (argb >> ALPHA_SHIFT) As Byte
45 End Function
46
47 Function R() As Byte
48 Return (argb >> RED_SHIFT) As Byte
49 End Function
50
51 Function G() As Byte
52 Return (argb >> GREEN_SHIFT) As Byte
53 End Function
54
55 Function B() As Byte
56 Return (argb >> BLUE_SHIFT) As Byte
57 End Function
58
59 Function Value() As ARGB
60 Return argb
61 End Function
62
63 Sub Value(value As ARGB)
64 argb = value
65 End Sub
66
67 Sub SetFromCOLORREF(rgb As COLORREF)
68 If (rgb And &hff000000) = &h01000000 Then
69 Exit Sub ' パレットインデックス指定は無効
70 Else
71 argb = Color_MakeARGB(255, GetRValue(rgb), GetGValue(rgb), GetBValue(rgb))
72 End If
73 End Sub
74
75 Function ToCOLORREF() As COLORREF
76 ToCOLORREF = RGB(R, G, B)
77 End Function
78
79 Function ToArgb() As ARGB
80 Return argb
81 End Function
82
83 Static Function FromArgb(argb As ARGB) As Color
84 Dim c As Color(argb)
85 Rteurn c
86 End Function
87
88 Static Function FromArgb(a As Byte, base As Color) As Color
89 Dim c As Color(a, base.R, base.G, base.B)
90 Return c
91 End Function
92
93 Static Function FromArgb(r As Byte, g As Byte, b As Byte) As Color
94 Dim c As Color(r, g, b)
95 Return c
96 End Function
97
98 Static Function FromArgb(a As Byte, r As Byte, g As Byte, b As Byte) As Color
99 Dim c As Color(a, r, g, b)
100 Return c
101 End Function
102
103 Override Function GetHashCode() As Long
104 Return argb As Long
105 End Function
106
107 Function Equals(c As Color) As Boolean
108 Return argb = c.argb
109 End Function
110
111 ' HSBを求める式はhttp://ofo.jp/osakana/cgtips/hsb.phtmlを参考にしました。
112 Function GetHue() As Single
113 Dim max As Long, min As Long, d As Long
114 Dim r = R
115 Dim g = G
116 Dim b = B
117 max = System.Math.Max(System.Math.Max(r, g), b)
118 min = System.Math.Min(System.Math.Min(r, g), b)
119 d = max - min
120 If g = max Then
121 Return (b - r) As Double / d * 60 + 120
122 ElseIf b = max Then
123 Return (r - g) As Double / d * 60 + 240
124 ElseIf g < b Then
125 Return (g - b) As Double / d * 60 + 360
126 Else
127 Return (g - b) As Double / d * 60
128 EndIf
129 End Function
130
131 Function GetSaturation() As Single
132 Dim max As Long, min As Long
133 Dim r = R
134 Dim g = G
135 Dim b = B
136 max = System.Math.Max(System.Math.Max(r, g), b)
137 min = System.Math.Min(System.Math.Min(r, g), b)
138 Return (max - min) / max
139 End Function
140
141 Function GetBrightness() As Single
142 Dim max As Long
143 Dim r = R
144 Dim g = G
145 Dim b = B
146 max = System.Math.Max(System.Math.Max(r, g), b)
147 Return max * (1 / 255)
148 End Function
149
150/*
151 ' Common color constants
152 Const Enum
153 AliceBlue = &hFFF0F8FF
154 AntiqueWhite = &hFFFAEBD7
155 Aqua = &hFF00FFFF
156 Aquamarine = &hFF7FFFD4
157 Azure = &hFFF0FFFF
158 Beige = &hFFF5F5DC
159 Bisque = &hFFFFE4C4
160 Black = &hFF000000
161 BlanchedAlmond = &hFFFFEBCD
162 Blue = &hFF0000FF
163 BlueViolet = &hFF8A2BE2
164 Brown = &hFFA52A2A
165 BurlyWood = &hFFDEB887
166 CadetBlue = &hFF5F9EA0
167 Chartreuse = &hFF7FFF00
168 Chocolate = &hFFD2691E
169 Coral = &hFFFF7F50
170 CornflowerBlue = &hFF6495ED
171 Cornsilk = &hFFFFF8DC
172 Crimson = &hFFDC143C
173 Cyan = &hFF00FFFF
174 DarkBlue = &hFF00008B
175 DarkCyan = &hFF008B8B
176 DarkGoldenrod = &hFFB8860B
177 DarkGray = &hFFA9A9A9
178 DarkGreen = &hFF006400
179 DarkKhaki = &hFFBDB76B
180 DarkMagenta = &hFF8B008B
181 DarkOliveGreen = &hFF556B2F
182 DarkOrange = &hFFFF8C00
183 DarkOrchid = &hFF9932CC
184 DarkRed = &hFF8B0000
185 DarkSalmon = &hFFE9967A
186 DarkSeaGreen = &hFF8FBC8B
187 DarkSlateBlue = &hFF483D8B
188 DarkSlateGray = &hFF2F4F4F
189 DarkTurquoise = &hFF00CED1
190 DarkViolet = &hFF9400D3
191 DeepPink = &hFFFF1493
192 DeepSkyBlue = &hFF00BFFF
193 DimGray = &hFF696969
194 DodgerBlue = &hFF1E90FF
195 Firebrick = &hFFB22222
196 FloralWhite = &hFFFFFAF0
197 ForestGreen = &hFF228B22
198 Fuchsia = &hFFFF00FF
199 Gainsboro = &hFFDCDCDC
200 GhostWhite = &hFFF8F8FF
201 Gold = &hFFFFD700
202 Goldenrod = &hFFDAA520
203 Gray = &hFF808080
204 Green = &hFF008000
205 GreenYellow = &hFFADFF2F
206 Honeydew = &hFFF0FFF0
207 HotPink = &hFFFF69B4
208 IndianRed = &hFFCD5C5C
209 Indigo = &hFF4B0082
210 Ivory = &hFFFFFFF0
211 Khaki = &hFFF0E68C
212 Lavender = &hFFE6E6FA
213 LavenderBlush = &hFFFFF0F5
214 LawnGreen = &hFF7CFC00
215 LemonChiffon = &hFFFFFACD
216 LightBlue = &hFFADD8E6
217 LightCoral = &hFFF08080
218 LightCyan = &hFFE0FFFF
219 LightGoldenrodYellow = &hFFFAFAD2
220 LightGray = &hFFD3D3D3
221 LightGreen = &hFF90EE90
222 LightPink = &hFFFFB6C1
223 LightSalmon = &hFFFFA07A
224 LightSeaGreen = &hFF20B2AA
225 LightSkyBlue = &hFF87CEFA
226 LightSlateGray = &hFF778899
227 LightSteelBlue = &hFFB0C4DE
228 LightYellow = &hFFFFFFE0
229 Lime = &hFF00FF00
230 LimeGreen = &hFF32CD32
231 Linen = &hFFFAF0E6
232 Magenta = &hFFFF00FF
233 Maroon = &hFF800000
234 MediumAquamarine = &hFF66CDAA
235 MediumBlue = &hFF0000CD
236 MediumOrchid = &hFFBA55D3
237 MediumPurple = &hFF9370DB
238 MediumSeaGreen = &hFF3CB371
239 MediumSlateBlue = &hFF7B68EE
240 MediumSpringGreen = &hFF00FA9A
241 MediumTurquoise = &hFF48D1CC
242 MediumVioletRed = &hFFC71585
243 MidnightBlue = &hFF191970
244 MintCream = &hFFF5FFFA
245 MistyRose = &hFFFFE4E1
246 Moccasin = &hFFFFE4B5
247 NavajoWhite = &hFFFFDEAD
248 Navy = &hFF000080
249 OldLace = &hFFFDF5E6
250 Olive = &hFF808000
251 OliveDrab = &hFF6B8E23
252 Orange = &hFFFFA500
253 OrangeRed = &hFFFF4500
254 Orchid = &hFFDA70D6
255 PaleGoldenrod = &hFFEEE8AA
256 PaleGreen = &hFF98FB98
257 PaleTurquoise = &hFFAFEEEE
258 PaleVioletRed = &hFFDB7093
259 PapayaWhip = &hFFFFEFD5
260 PeachPuff = &hFFFFDAB9
261 Peru = &hFFCD853F
262 Pink = &hFFFFC0CB
263 Plum = &hFFDDA0DD
264 PowderBlue = &hFFB0E0E6
265 Purple = &hFF800080
266 Red = &hFFFF0000
267 RosyBrown = &hFFBC8F8F
268 RoyalBlue = &hFF4169E1
269 SaddleBrown = &hFF8B4513
270 Salmon = &hFFFA8072
271 SandyBrown = &hFFF4A460
272 SeaGreen = &hFF2E8B57
273 SeaShell = &hFFFFF5EE
274 Sienna = &hFFA0522D
275 Silver = &hFFC0C0C0
276 SkyBlue = &hFF87CEEB
277 SlateBlue = &hFF6A5ACD
278 SlateGray = &hFF708090
279 Snow = &hFFFFFAFA
280 SpringGreen = &hFF00FF7F
281 SteelBlue = &hFF4682B4
282 Tan = &hFFD2B48C
283 Teal = &hFF008080
284 Thistle = &hFFD8BFD8
285 Tomato = &hFFFF6347
286 Transparent = &h00FFFFFF
287 Turquoise = &hFF40E0D0
288 Violet = &hFFEE82EE
289 Wheat = &hFFF5DEB3
290 White = &hFFFFFFFF
291 WhiteSmoke = &hFFF5F5F5
292 Yellow = &hFFFFFF00
293 YellowGreen = &hFF9ACD32
294 End Enum
295
296 ' Shift count and bit mask for A, R, G, B components
297
298 Const Enum
299 AlphaShift = 24
300 RedShift = 16
301 GreenShift = 8
302 BlueShift = 0
303 End Enum
304
305 Const Enum
306 AlphaMask = &hff000000
307 RedMask = &h00ff0000
308 GreenMask = &h0000ff00
309 BlueMask = &h000000ff
310 End Enum
311*/
312 Static Function MakeARGB(a As Byte, r As Byte, g As Byte, b As Byte) As ARGB
313 MakeARGB = (((b As ARGB) << BLUE_SHIFT) Or _
314 ((g As ARGB) << GREEN_SHIFT) Or _
315 ((r As ARGB) << RED_SHIFT) Or _
316 ((a As ARGB) << ALPHA_SHIFT))
317 End Function
318
319Protected
320 argb As ARGB
321End Class
322
323#endif '__SYSTEM_DRAWING_COLOR_AB__
Note: See TracBrowser for help on using the repository browser.