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
RevLine 
[11]1' Classes/System/Drawing/Color.ab
2
3#ifndef __SYSTEM_DRAWING_COLOR_AB__
4#define __SYSTEM_DRAWING_COLOR_AB__
5
[335]6'#include <Classes/System/Math.ab>
[11]7#include <Classes/System/Drawing/Imaging/misc.ab>
8
9Class Color
10Public
11 Sub Color()
[25]12 argb = MakeARGB(255, 0, 0, 0) ' Black
[11]13 End Sub
14
[25]15 Sub Color(ByRef c As Color)
16 argb = c.argb
17 End Sub
18
[11]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)
[25]24 argb = MakeARGB(a, r, g, b)
[11]25 End Sub
26
[25]27 Sub Color(newArgb As ARGB)
28 argb = newArgb
[11]29 End Sub
[212]30/*
[11]31 Sub Operator =(c As Color)
[25]32 argb = c.argb
[11]33 End Sub
[212]34*/
[104]35 Function Operator ==(c As Color) As Boolean
[11]36 Return Equals(c)
37 End Function
38
[104]39 Function Operator <>(c As Color) As Boolean
[11]40 Return Not Equals(c)
41 End Function
42
43 Function A() As Byte
[77]44 Return (argb >> ALPHA_SHIFT) As Byte
[11]45 End Function
46
47 Function R() As Byte
[77]48 Return (argb >> RED_SHIFT) As Byte
[11]49 End Function
50
51 Function G() As Byte
[77]52 Return (argb >> GREEN_SHIFT) As Byte
[11]53 End Function
54
55 Function B() As Byte
[77]56 Return (argb >> BLUE_SHIFT) As Byte
[11]57 End Function
58
[25]59 Function Value() As ARGB
60 Return argb
[11]61 End Function
62
[25]63 Sub Value(value As ARGB)
[11]64 argb = value
65 End Sub
66
67 Sub SetFromCOLORREF(rgb As COLORREF)
[25]68 If (rgb And &hff000000) = &h01000000 Then
[166]69 Exit Sub ' パレットインデックス指定は無効
[25]70 Else
[303]71 argb = MakeARGB(255, GetRValue(rgb) As Byte, GetGValue(rgb) As Byte, GetBValue(rgb) As Byte)
[25]72 End If
[11]73 End Sub
74
75 Function ToCOLORREF() As COLORREF
76 ToCOLORREF = RGB(R, G, B)
77 End Function
[335]78/*
[11]79 Function ToArgb() As ARGB
[335]80 ToArgb = argb
[11]81 End Function
[335]82*/
[11]83 Static Function FromArgb(argb As ARGB) As Color
[303]84 Return New Color(argb)
[11]85 End Function
86
87 Static Function FromArgb(a As Byte, base As Color) As Color
[303]88 Return New Color(a, base.R, base.G, base.B)
[11]89 End Function
90
[25]91 Static Function FromArgb(r As Byte, g As Byte, b As Byte) As Color
[303]92 Return New Color(r, g, b)
[11]93 End Function
94
[25]95 Static Function FromArgb(a As Byte, r As Byte, g As Byte, b As Byte) As Color
[303]96 Return New Color(a, r, g, b)
[11]97 End Function
98
[166]99 Override Function GetHashCode() As Long
100 Return argb As Long
101 End Function
102
[104]103 Function Equals(c As Color) As Boolean
[11]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
[282]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)
[11]115 d = max - min
116 If g = max Then
[303]117 Return ((b - r) As Double / d * 60.0 + 120.0) As Single
[11]118 ElseIf b = max Then
[303]119 Return ((r - g) As Double / d * 60 + 240) As Single
[11]120 ElseIf g < b Then
[303]121 Return ((g - b) As Double / d * 60 + 360) As Single
[11]122 Else
[303]123 Return ((g - b) As Double / d * 60) As Single
[11]124 EndIf
125 End Function
126
127 Function GetSaturation() As Single
[282]128 Dim r = R
129 Dim g = G
130 Dim b = B
[303]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
[11]133 Return (max - min) / max
134 End Function
135
136 Function GetBrightness() As Single
[282]137 Dim r = R
138 Dim g = G
139 Dim b = B
[303]140 Dim max = System.Math.Max(System.Math.Max(r, g), b)
[11]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*/
[25]306 Static Function MakeARGB(a As Byte, r As Byte, g As Byte, b As Byte) As ARGB
[77]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))
[11]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.