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

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

Object.ReferenceEqualsを追加

File size: 8.9 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 max = Math.Max(Math.Max(r, g), b)
115 min = Math.Min(Math.Min(r, g), b)
116 d = max - min
117 If g = max Then
118 Return (b - r) As Double / d * 60 + 120
119 ElseIf b = max Then
120 Return (r - g) As Double / d * 60 + 240
121 ElseIf g < b Then
122 Return (g - b) As Double / d * 60 + 360
123 Else
124 Return (g - b) As Double / d * 60
125 EndIf
126 End Function
127
128 Function GetSaturation() As Single
129 Dim max As Long, min As Long
130 max = Math.Max(Math.Max(r, g), b)
131 min = Math.Min(Math.Min(r, g), b)
132 Return (max - min) / max
133 End Function
134
135 Function GetBrightness() As Single
136 Dim max As Long
137 max = Math.Max(Math.Max(r, g), b)
138 Return max * (1 / 255)
139 End Function
140
141/*
142 ' Common color constants
143 Const Enum
144 AliceBlue = &hFFF0F8FF
145 AntiqueWhite = &hFFFAEBD7
146 Aqua = &hFF00FFFF
147 Aquamarine = &hFF7FFFD4
148 Azure = &hFFF0FFFF
149 Beige = &hFFF5F5DC
150 Bisque = &hFFFFE4C4
151 Black = &hFF000000
152 BlanchedAlmond = &hFFFFEBCD
153 Blue = &hFF0000FF
154 BlueViolet = &hFF8A2BE2
155 Brown = &hFFA52A2A
156 BurlyWood = &hFFDEB887
157 CadetBlue = &hFF5F9EA0
158 Chartreuse = &hFF7FFF00
159 Chocolate = &hFFD2691E
160 Coral = &hFFFF7F50
161 CornflowerBlue = &hFF6495ED
162 Cornsilk = &hFFFFF8DC
163 Crimson = &hFFDC143C
164 Cyan = &hFF00FFFF
165 DarkBlue = &hFF00008B
166 DarkCyan = &hFF008B8B
167 DarkGoldenrod = &hFFB8860B
168 DarkGray = &hFFA9A9A9
169 DarkGreen = &hFF006400
170 DarkKhaki = &hFFBDB76B
171 DarkMagenta = &hFF8B008B
172 DarkOliveGreen = &hFF556B2F
173 DarkOrange = &hFFFF8C00
174 DarkOrchid = &hFF9932CC
175 DarkRed = &hFF8B0000
176 DarkSalmon = &hFFE9967A
177 DarkSeaGreen = &hFF8FBC8B
178 DarkSlateBlue = &hFF483D8B
179 DarkSlateGray = &hFF2F4F4F
180 DarkTurquoise = &hFF00CED1
181 DarkViolet = &hFF9400D3
182 DeepPink = &hFFFF1493
183 DeepSkyBlue = &hFF00BFFF
184 DimGray = &hFF696969
185 DodgerBlue = &hFF1E90FF
186 Firebrick = &hFFB22222
187 FloralWhite = &hFFFFFAF0
188 ForestGreen = &hFF228B22
189 Fuchsia = &hFFFF00FF
190 Gainsboro = &hFFDCDCDC
191 GhostWhite = &hFFF8F8FF
192 Gold = &hFFFFD700
193 Goldenrod = &hFFDAA520
194 Gray = &hFF808080
195 Green = &hFF008000
196 GreenYellow = &hFFADFF2F
197 Honeydew = &hFFF0FFF0
198 HotPink = &hFFFF69B4
199 IndianRed = &hFFCD5C5C
200 Indigo = &hFF4B0082
201 Ivory = &hFFFFFFF0
202 Khaki = &hFFF0E68C
203 Lavender = &hFFE6E6FA
204 LavenderBlush = &hFFFFF0F5
205 LawnGreen = &hFF7CFC00
206 LemonChiffon = &hFFFFFACD
207 LightBlue = &hFFADD8E6
208 LightCoral = &hFFF08080
209 LightCyan = &hFFE0FFFF
210 LightGoldenrodYellow = &hFFFAFAD2
211 LightGray = &hFFD3D3D3
212 LightGreen = &hFF90EE90
213 LightPink = &hFFFFB6C1
214 LightSalmon = &hFFFFA07A
215 LightSeaGreen = &hFF20B2AA
216 LightSkyBlue = &hFF87CEFA
217 LightSlateGray = &hFF778899
218 LightSteelBlue = &hFFB0C4DE
219 LightYellow = &hFFFFFFE0
220 Lime = &hFF00FF00
221 LimeGreen = &hFF32CD32
222 Linen = &hFFFAF0E6
223 Magenta = &hFFFF00FF
224 Maroon = &hFF800000
225 MediumAquamarine = &hFF66CDAA
226 MediumBlue = &hFF0000CD
227 MediumOrchid = &hFFBA55D3
228 MediumPurple = &hFF9370DB
229 MediumSeaGreen = &hFF3CB371
230 MediumSlateBlue = &hFF7B68EE
231 MediumSpringGreen = &hFF00FA9A
232 MediumTurquoise = &hFF48D1CC
233 MediumVioletRed = &hFFC71585
234 MidnightBlue = &hFF191970
235 MintCream = &hFFF5FFFA
236 MistyRose = &hFFFFE4E1
237 Moccasin = &hFFFFE4B5
238 NavajoWhite = &hFFFFDEAD
239 Navy = &hFF000080
240 OldLace = &hFFFDF5E6
241 Olive = &hFF808000
242 OliveDrab = &hFF6B8E23
243 Orange = &hFFFFA500
244 OrangeRed = &hFFFF4500
245 Orchid = &hFFDA70D6
246 PaleGoldenrod = &hFFEEE8AA
247 PaleGreen = &hFF98FB98
248 PaleTurquoise = &hFFAFEEEE
249 PaleVioletRed = &hFFDB7093
250 PapayaWhip = &hFFFFEFD5
251 PeachPuff = &hFFFFDAB9
252 Peru = &hFFCD853F
253 Pink = &hFFFFC0CB
254 Plum = &hFFDDA0DD
255 PowderBlue = &hFFB0E0E6
256 Purple = &hFF800080
257 Red = &hFFFF0000
258 RosyBrown = &hFFBC8F8F
259 RoyalBlue = &hFF4169E1
260 SaddleBrown = &hFF8B4513
261 Salmon = &hFFFA8072
262 SandyBrown = &hFFF4A460
263 SeaGreen = &hFF2E8B57
264 SeaShell = &hFFFFF5EE
265 Sienna = &hFFA0522D
266 Silver = &hFFC0C0C0
267 SkyBlue = &hFF87CEEB
268 SlateBlue = &hFF6A5ACD
269 SlateGray = &hFF708090
270 Snow = &hFFFFFAFA
271 SpringGreen = &hFF00FF7F
272 SteelBlue = &hFF4682B4
273 Tan = &hFFD2B48C
274 Teal = &hFF008080
275 Thistle = &hFFD8BFD8
276 Tomato = &hFFFF6347
277 Transparent = &h00FFFFFF
278 Turquoise = &hFF40E0D0
279 Violet = &hFFEE82EE
280 Wheat = &hFFF5DEB3
281 White = &hFFFFFFFF
282 WhiteSmoke = &hFFF5F5F5
283 Yellow = &hFFFFFF00
284 YellowGreen = &hFF9ACD32
285 End Enum
286
287 ' Shift count and bit mask for A, R, G, B components
288
289 Const Enum
290 AlphaShift = 24
291 RedShift = 16
292 GreenShift = 8
293 BlueShift = 0
294 End Enum
295
296 Const Enum
297 AlphaMask = &hff000000
298 RedMask = &h00ff0000
299 GreenMask = &h0000ff00
300 BlueMask = &h000000ff
301 End Enum
302*/
303 Static Function MakeARGB(a As Byte, r As Byte, g As Byte, b As Byte) As ARGB
304 MakeARGB = (((b As ARGB) << BLUE_SHIFT) Or _
305 ((g As ARGB) << GREEN_SHIFT) Or _
306 ((r As ARGB) << RED_SHIFT) Or _
307 ((a As ARGB) << ALPHA_SHIFT))
308 End Function
309
310Protected
311 argb As ARGB
312End Class
313
314#endif '__SYSTEM_DRAWING_COLOR_AB__
Note: See TracBrowser for help on using the repository browser.