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

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

Controlの追加とそれに伴う修正

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