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
RevLine 
[11]1' Classes/System/Drawing/Color.ab
2
[635]3Namespace System
4Namespace Drawing
[11]5
6Class Color
7Public
8 Sub Color()
[25]9 argb = MakeARGB(255, 0, 0, 0) ' Black
[11]10 End Sub
11
[25]12 Sub Color(ByRef c As Color)
13 argb = c.argb
14 End Sub
15
[11]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)
[25]21 argb = MakeARGB(a, r, g, b)
[11]22 End Sub
23
[635]24 Sub Color(newArgb As System.Drawing.Imaging.ARGB)
[25]25 argb = newArgb
[11]26 End Sub
[473]27
[104]28 Function Operator ==(c As Color) As Boolean
[11]29 Return Equals(c)
30 End Function
31
[104]32 Function Operator <>(c As Color) As Boolean
[11]33 Return Not Equals(c)
34 End Function
35
36 Function A() As Byte
[635]37 A = (argb >> System.Drawing.Imaging.ALPHA_SHIFT) As Byte
[11]38 End Function
39
40 Function R() As Byte
[635]41 R = (argb >> System.Drawing.Imaging.RED_SHIFT) As Byte
[11]42 End Function
43
44 Function G() As Byte
[635]45 G = (argb >> System.Drawing.Imaging.GREEN_SHIFT) As Byte
[11]46 End Function
47
48 Function B() As Byte
[635]49 B = (argb >> System.Drawing.Imaging.BLUE_SHIFT) As Byte
[11]50 End Function
51
[635]52 Function Value() As System.Drawing.Imaging.ARGB
[473]53 Value = argb
[11]54 End Function
55
[635]56 Sub Value(value As System.Drawing.Imaging.ARGB)
[11]57 argb = value
58 End Sub
59
60 Sub SetFromCOLORREF(rgb As COLORREF)
[25]61 If (rgb And &hff000000) = &h01000000 Then
[166]62 Exit Sub ' パレットインデックス指定は無効
[25]63 Else
[303]64 argb = MakeARGB(255, GetRValue(rgb) As Byte, GetGValue(rgb) As Byte, GetBValue(rgb) As Byte)
[25]65 End If
[11]66 End Sub
67
68 Function ToCOLORREF() As COLORREF
69 ToCOLORREF = RGB(R, G, B)
70 End Function
[335]71/*
[11]72 Function ToArgb() As ARGB
[335]73 ToArgb = argb
[11]74 End Function
[335]75*/
[635]76 Static Function FromArgb(argb As System.Drawing.Imaging.ARGB) As Color
[303]77 Return New Color(argb)
[11]78 End Function
79
80 Static Function FromArgb(a As Byte, base As Color) As Color
[303]81 Return New Color(a, base.R, base.G, base.B)
[11]82 End Function
83
[25]84 Static Function FromArgb(r As Byte, g As Byte, b As Byte) As Color
[303]85 Return New Color(r, g, b)
[11]86 End Function
87
[25]88 Static Function FromArgb(a As Byte, r As Byte, g As Byte, b As Byte) As Color
[303]89 Return New Color(a, r, g, b)
[11]90 End Function
91
[166]92 Override Function GetHashCode() As Long
93 Return argb As Long
94 End Function
95
[104]96 Function Equals(c As Color) As Boolean
[11]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
[282]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)
[11]108 d = max - min
109 If g = max Then
[303]110 Return ((b - r) As Double / d * 60.0 + 120.0) As Single
[11]111 ElseIf b = max Then
[303]112 Return ((r - g) As Double / d * 60 + 240) As Single
[11]113 ElseIf g < b Then
[303]114 Return ((g - b) As Double / d * 60 + 360) As Single
[11]115 Else
[303]116 Return ((g - b) As Double / d * 60) As Single
[11]117 EndIf
118 End Function
119
120 Function GetSaturation() As Single
[282]121 Dim r = R
122 Dim g = G
123 Dim b = B
[303]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
[370]126 Return ( (max - min) / max ) As Single
[11]127 End Function
128
129 Function GetBrightness() As Single
[282]130 Dim r = R
131 Dim g = G
132 Dim b = B
[303]133 Dim max = System.Math.Max(System.Math.Max(r, g), b)
[370]134 Return ( max * (1 / 255) ) As Single
[11]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*/
[635]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))
[11]304 End Function
305
306Protected
[635]307 argb As System.Drawing.Imaging.ARGB
[11]308End Class
[635]309
310End Namespace
311End Namespace
Note: See TracBrowser for help on using the repository browser.