source: trunk/Include/Classes/System/Drawing/Color.ab@ 335

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

SPrintF関連の追加。関数FloatToChars, FormatFloatE, FormatIntegerUと列挙体FormatFlags。

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