source: trunk/ab5.0/ablib/src/Classes/System/Drawing/Color.ab@ 635

Last change on this file since 635 was 635, checked in by NoWest, 16 years ago

名前空間への入れ忘れの修正と
ConsoleクラスのResetColorのバグへ対応。
正しい動作かご確認ください。

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