OSDN Git Service

Change icon.ico. And fix icon bug, write ChangeLog.txt.
[ckw/ckw.git] / option.cpp
1 /*-----------------------------------------------------------------------------
2  * File: option.cpp
3  *-----------------------------------------------------------------------------
4  * Copyright (c) 2004-2005  Kazuo Ishii <k-ishii@wb4.so-net.ne.jp>
5  *                              - original version
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
20  *---------------------------------------------------------------------------*/
21 #include "option.h"
22 #include "version.h"
23 #include <shlwapi.h>
24
25 static bool lookupColor(const char *str, COLORREF& ret)
26 {
27         typedef struct {
28                 COLORREF        color;
29                 char            *name;
30         } COLOR;
31         static const COLOR colors[] = {
32                 { RGB(0xF0,0xF8,0xFF), "alice blue" },
33                 { RGB(0xF0,0xF8,0xFF), "AliceBlue" },
34                 { RGB(0xFA,0xEB,0xD7), "antique white" },
35                 { RGB(0xFA,0xEB,0xD7), "AntiqueWhite" },
36                 { RGB(0xFF,0xEF,0xDB), "AntiqueWhite1" },
37                 { RGB(0xEE,0xDF,0xCC), "AntiqueWhite2" },
38                 { RGB(0xCD,0xC0,0xB0), "AntiqueWhite3" },
39                 { RGB(0x8B,0x83,0x78), "AntiqueWhite4" },
40                 { RGB(0x7F,0xFF,0xD4), "aquamarine" },
41                 { RGB(0x7F,0xFF,0xD4), "aquamarine1" },
42                 { RGB(0x76,0xEE,0xC6), "aquamarine2" },
43                 { RGB(0x66,0xCD,0xAA), "aquamarine3" },
44                 { RGB(0x45,0x8B,0x74), "aquamarine4" },
45                 { RGB(0xF0,0xFF,0xFF), "azure" },
46                 { RGB(0xF0,0xFF,0xFF), "azure1" },
47                 { RGB(0xE0,0xEE,0xEE), "azure2" },
48                 { RGB(0xC1,0xCD,0xCD), "azure3" },
49                 { RGB(0x83,0x8B,0x8B), "azure4" },
50                 { RGB(0xF5,0xF5,0xDC), "beige" },
51                 { RGB(0xFF,0xE4,0xC4), "bisque" },
52                 { RGB(0xFF,0xE4,0xC4), "bisque1" },
53                 { RGB(0xEE,0xD5,0xB7), "bisque2" },
54                 { RGB(0xCD,0xB7,0x9E), "bisque3" },
55                 { RGB(0x8B,0x7D,0x6B), "bisque4" },
56                 { RGB(0x00,0x00,0x01), "black" },
57                 { RGB(0xFF,0xEB,0xCD), "blanched almond" },
58                 { RGB(0xFF,0xEB,0xCD), "BlanchedAlmond" },
59                 { RGB(0x00,0x00,0xFF), "blue" },
60                 { RGB(0x8A,0x2B,0xE2), "blue violet" },
61                 { RGB(0x00,0x00,0xFF), "blue1" },
62                 { RGB(0x00,0x00,0xEE), "blue2" },
63                 { RGB(0x00,0x00,0xCD), "blue3" },
64                 { RGB(0x00,0x00,0x8B), "blue4" },
65                 { RGB(0x8A,0x2B,0xE2), "BlueViolet" },
66                 { RGB(0xA5,0x2A,0x2A), "brown" },
67                 { RGB(0xFF,0x40,0x40), "brown1" },
68                 { RGB(0xEE,0x3B,0x3B), "brown2" },
69                 { RGB(0xCD,0x33,0x33), "brown3" },
70                 { RGB(0x8B,0x23,0x23), "brown4" },
71                 { RGB(0xDE,0xB8,0x87), "burlywood" },
72                 { RGB(0xFF,0xD3,0x9B), "burlywood1" },
73                 { RGB(0xEE,0xC5,0x91), "burlywood2" },
74                 { RGB(0xCD,0xAA,0x7D), "burlywood3" },
75                 { RGB(0x8B,0x73,0x55), "burlywood4" },
76                 { RGB(0x5F,0x9E,0xA0), "cadet blue" },
77                 { RGB(0x5F,0x9E,0xA0), "CadetBlue" },
78                 { RGB(0x98,0xF5,0xFF), "CadetBlue1" },
79                 { RGB(0x8E,0xE5,0xEE), "CadetBlue2" },
80                 { RGB(0x7A,0xC5,0xCD), "CadetBlue3" },
81                 { RGB(0x53,0x86,0x8B), "CadetBlue4" },
82                 { RGB(0x7F,0xFF,0x00), "chartreuse" },
83                 { RGB(0x7F,0xFF,0x00), "chartreuse1" },
84                 { RGB(0x76,0xEE,0x00), "chartreuse2" },
85                 { RGB(0x66,0xCD,0x00), "chartreuse3" },
86                 { RGB(0x45,0x8B,0x00), "chartreuse4" },
87                 { RGB(0xD2,0x69,0x1E), "chocolate" },
88                 { RGB(0xFF,0x7F,0x24), "chocolate1" },
89                 { RGB(0xEE,0x76,0x21), "chocolate2" },
90                 { RGB(0xCD,0x66,0x1D), "chocolate3" },
91                 { RGB(0x8B,0x45,0x13), "chocolate4" },
92                 { RGB(0xFF,0x7F,0x50), "coral" },
93                 { RGB(0xFF,0x72,0x56), "coral1" },
94                 { RGB(0xEE,0x6A,0x50), "coral2" },
95                 { RGB(0xCD,0x5B,0x45), "coral3" },
96                 { RGB(0x8B,0x3E,0x2F), "coral4" },
97                 { RGB(0x64,0x95,0xED), "cornflower blue" },
98                 { RGB(0x64,0x95,0xED), "CornflowerBlue" },
99                 { RGB(0xFF,0xF8,0xDC), "cornsilk" },
100                 { RGB(0xFF,0xF8,0xDC), "cornsilk1" },
101                 { RGB(0xEE,0xE8,0xCD), "cornsilk2" },
102                 { RGB(0xCD,0xC8,0xB1), "cornsilk3" },
103                 { RGB(0x8B,0x88,0x78), "cornsilk4" },
104                 { RGB(0x00,0xFF,0xFF), "cyan" },
105                 { RGB(0x00,0xFF,0xFF), "cyan1" },
106                 { RGB(0x00,0xEE,0xEE), "cyan2" },
107                 { RGB(0x00,0xCD,0xCD), "cyan3" },
108                 { RGB(0x00,0x8B,0x8B), "cyan4" },
109                 { RGB(0xB8,0x86,0x0B), "dark goldenrod" },
110                 { RGB(0x00,0x64,0x00), "dark green" },
111                 { RGB(0xBD,0xB7,0x6B), "dark khaki" },
112                 { RGB(0x55,0x6B,0x2F), "dark olive green" },
113                 { RGB(0xFF,0x8C,0x00), "dark orange" },
114                 { RGB(0x99,0x32,0xCC), "dark orchid" },
115                 { RGB(0xE9,0x96,0x7A), "dark salmon" },
116                 { RGB(0x8F,0xBC,0x8F), "dark sea green" },
117                 { RGB(0x48,0x3D,0x8B), "dark slate blue" },
118                 { RGB(0x2F,0x4F,0x4F), "dark slate gray" },
119                 { RGB(0x2F,0x4F,0x4F), "dark slate grey" },
120                 { RGB(0x00,0xCE,0xD1), "dark turquoise" },
121                 { RGB(0x94,0x00,0xD3), "dark violet" },
122                 { RGB(0xB8,0x86,0x0B), "DarkGoldenrod" },
123                 { RGB(0xFF,0xB9,0x0F), "DarkGoldenrod1" },
124                 { RGB(0xEE,0xAD,0x0E), "DarkGoldenrod2" },
125                 { RGB(0xCD,0x95,0x0C), "DarkGoldenrod3" },
126                 { RGB(0x8B,0x65,0x08), "DarkGoldenrod4" },
127                 { RGB(0x00,0x64,0x00), "DarkGreen" },
128                 { RGB(0xBD,0xB7,0x6B), "DarkKhaki" },
129                 { RGB(0x55,0x6B,0x2F), "DarkOliveGreen" },
130                 { RGB(0xCA,0xFF,0x70), "DarkOliveGreen1" },
131                 { RGB(0xBC,0xEE,0x68), "DarkOliveGreen2" },
132                 { RGB(0xA2,0xCD,0x5A), "DarkOliveGreen3" },
133                 { RGB(0x6E,0x8B,0x3D), "DarkOliveGreen4" },
134                 { RGB(0xFF,0x8C,0x00), "DarkOrange" },
135                 { RGB(0xFF,0x7F,0x00), "DarkOrange1" },
136                 { RGB(0xEE,0x76,0x00), "DarkOrange2" },
137                 { RGB(0xCD,0x66,0x00), "DarkOrange3" },
138                 { RGB(0x8B,0x45,0x00), "DarkOrange4" },
139                 { RGB(0x99,0x32,0xCC), "DarkOrchid" },
140                 { RGB(0xBF,0x3E,0xFF), "DarkOrchid1" },
141                 { RGB(0xB2,0x3A,0xEE), "DarkOrchid2" },
142                 { RGB(0x9A,0x32,0xCD), "DarkOrchid3" },
143                 { RGB(0x68,0x22,0x8B), "DarkOrchid4" },
144                 { RGB(0xE9,0x96,0x7A), "DarkSalmon" },
145                 { RGB(0x8F,0xBC,0x8F), "DarkSeaGreen" },
146                 { RGB(0xC1,0xFF,0xC1), "DarkSeaGreen1" },
147                 { RGB(0xB4,0xEE,0xB4), "DarkSeaGreen2" },
148                 { RGB(0x9B,0xCD,0x9B), "DarkSeaGreen3" },
149                 { RGB(0x69,0x8B,0x69), "DarkSeaGreen4" },
150                 { RGB(0x48,0x3D,0x8B), "DarkSlateBlue" },
151                 { RGB(0x2F,0x4F,0x4F), "DarkSlateGray" },
152                 { RGB(0x97,0xFF,0xFF), "DarkSlateGray1" },
153                 { RGB(0x8D,0xEE,0xEE), "DarkSlateGray2" },
154                 { RGB(0x79,0xCD,0xCD), "DarkSlateGray3" },
155                 { RGB(0x52,0x8B,0x8B), "DarkSlateGray4" },
156                 { RGB(0x2F,0x4F,0x4F), "DarkSlateGrey" },
157                 { RGB(0x00,0xCE,0xD1), "DarkTurquoise" },
158                 { RGB(0x94,0x00,0xD3), "DarkViolet" },
159                 { RGB(0xFF,0x14,0x93), "deep pink" },
160                 { RGB(0x00,0xBF,0xFF), "deep sky blue" },
161                 { RGB(0xFF,0x14,0x93), "DeepPink" },
162                 { RGB(0xFF,0x14,0x93), "DeepPink1" },
163                 { RGB(0xEE,0x12,0x89), "DeepPink2" },
164                 { RGB(0xCD,0x10,0x76), "DeepPink3" },
165                 { RGB(0x8B,0x0A,0x50), "DeepPink4" },
166                 { RGB(0x00,0xBF,0xFF), "DeepSkyBlue" },
167                 { RGB(0x00,0xBF,0xFF), "DeepSkyBlue1" },
168                 { RGB(0x00,0xB2,0xEE), "DeepSkyBlue2" },
169                 { RGB(0x00,0x9A,0xCD), "DeepSkyBlue3" },
170                 { RGB(0x00,0x68,0x8B), "DeepSkyBlue4" },
171                 { RGB(0x69,0x69,0x69), "dim gray" },
172                 { RGB(0x69,0x69,0x69), "dim grey" },
173                 { RGB(0x69,0x69,0x69), "DimGray" },
174                 { RGB(0x69,0x69,0x69), "DimGrey" },
175                 { RGB(0x1E,0x90,0xFF), "dodger blue" },
176                 { RGB(0x1E,0x90,0xFF), "DodgerBlue" },
177                 { RGB(0x1E,0x90,0xFF), "DodgerBlue1" },
178                 { RGB(0x1C,0x86,0xEE), "DodgerBlue2" },
179                 { RGB(0x18,0x74,0xCD), "DodgerBlue3" },
180                 { RGB(0x10,0x4E,0x8B), "DodgerBlue4" },
181                 { RGB(0xB2,0x22,0x22), "firebrick" },
182                 { RGB(0xFF,0x30,0x30), "firebrick1" },
183                 { RGB(0xEE,0x2C,0x2C), "firebrick2" },
184                 { RGB(0xCD,0x26,0x26), "firebrick3" },
185                 { RGB(0x8B,0x1A,0x1A), "firebrick4" },
186                 { RGB(0xFF,0xFA,0xF0), "floral white" },
187                 { RGB(0xFF,0xFA,0xF0), "FloralWhite" },
188                 { RGB(0x22,0x8B,0x22), "forest green" },
189                 { RGB(0x22,0x8B,0x22), "ForestGreen" },
190                 { RGB(0xDC,0xDC,0xDC), "gainsboro" },
191                 { RGB(0xF8,0xF8,0xFF), "ghost white" },
192                 { RGB(0xF8,0xF8,0xFF), "GhostWhite" },
193                 { RGB(0xFF,0xD7,0x00), "gold" },
194                 { RGB(0xFF,0xD7,0x00), "gold1" },
195                 { RGB(0xEE,0xC9,0x00), "gold2" },
196                 { RGB(0xCD,0xAD,0x00), "gold3" },
197                 { RGB(0x8B,0x75,0x00), "gold4" },
198                 { RGB(0xDA,0xA5,0x20), "goldenrod" },
199                 { RGB(0xFF,0xC1,0x25), "goldenrod1" },
200                 { RGB(0xEE,0xB4,0x22), "goldenrod2" },
201                 { RGB(0xCD,0x9B,0x1D), "goldenrod3" },
202                 { RGB(0x8B,0x69,0x14), "goldenrod4" },
203                 { RGB(0xBE,0xBE,0xBE), "gray" },
204                 { RGB(0x00,0x00,0x01), "gray0" },
205                 { RGB(0x03,0x03,0x03), "gray1" },
206                 { RGB(0x1A,0x1A,0x1A), "gray10" },
207                 { RGB(0xFF,0xFF,0xFF), "gray100" },
208                 { RGB(0x1C,0x1C,0x1C), "gray11" },
209                 { RGB(0x1F,0x1F,0x1F), "gray12" },
210                 { RGB(0x21,0x21,0x21), "gray13" },
211                 { RGB(0x24,0x24,0x24), "gray14" },
212                 { RGB(0x26,0x26,0x26), "gray15" },
213                 { RGB(0x29,0x29,0x29), "gray16" },
214                 { RGB(0x2B,0x2B,0x2B), "gray17" },
215                 { RGB(0x2E,0x2E,0x2E), "gray18" },
216                 { RGB(0x30,0x30,0x30), "gray19" },
217                 { RGB(0x05,0x05,0x05), "gray2" },
218                 { RGB(0x33,0x33,0x33), "gray20" },
219                 { RGB(0x36,0x36,0x36), "gray21" },
220                 { RGB(0x38,0x38,0x38), "gray22" },
221                 { RGB(0x3B,0x3B,0x3B), "gray23" },
222                 { RGB(0x3D,0x3D,0x3D), "gray24" },
223                 { RGB(0x40,0x40,0x40), "gray25" },
224                 { RGB(0x42,0x42,0x42), "gray26" },
225                 { RGB(0x45,0x45,0x45), "gray27" },
226                 { RGB(0x47,0x47,0x47), "gray28" },
227                 { RGB(0x4A,0x4A,0x4A), "gray29" },
228                 { RGB(0x08,0x08,0x08), "gray3" },
229                 { RGB(0x4D,0x4D,0x4D), "gray30" },
230                 { RGB(0x4F,0x4F,0x4F), "gray31" },
231                 { RGB(0x52,0x52,0x52), "gray32" },
232                 { RGB(0x54,0x54,0x54), "gray33" },
233                 { RGB(0x57,0x57,0x57), "gray34" },
234                 { RGB(0x59,0x59,0x59), "gray35" },
235                 { RGB(0x5C,0x5C,0x5C), "gray36" },
236                 { RGB(0x5E,0x5E,0x5E), "gray37" },
237                 { RGB(0x61,0x61,0x61), "gray38" },
238                 { RGB(0x63,0x63,0x63), "gray39" },
239                 { RGB(0x0A,0x0A,0x0A), "gray4" },
240                 { RGB(0x66,0x66,0x66), "gray40" },
241                 { RGB(0x69,0x69,0x69), "gray41" },
242                 { RGB(0x6B,0x6B,0x6B), "gray42" },
243                 { RGB(0x6E,0x6E,0x6E), "gray43" },
244                 { RGB(0x70,0x70,0x70), "gray44" },
245                 { RGB(0x73,0x73,0x73), "gray45" },
246                 { RGB(0x75,0x75,0x75), "gray46" },
247                 { RGB(0x78,0x78,0x78), "gray47" },
248                 { RGB(0x7A,0x7A,0x7A), "gray48" },
249                 { RGB(0x7D,0x7D,0x7D), "gray49" },
250                 { RGB(0x0D,0x0D,0x0D), "gray5" },
251                 { RGB(0x7F,0x7F,0x7F), "gray50" },
252                 { RGB(0x82,0x82,0x82), "gray51" },
253                 { RGB(0x85,0x85,0x85), "gray52" },
254                 { RGB(0x87,0x87,0x87), "gray53" },
255                 { RGB(0x8A,0x8A,0x8A), "gray54" },
256                 { RGB(0x8C,0x8C,0x8C), "gray55" },
257                 { RGB(0x8F,0x8F,0x8F), "gray56" },
258                 { RGB(0x91,0x91,0x91), "gray57" },
259                 { RGB(0x94,0x94,0x94), "gray58" },
260                 { RGB(0x96,0x96,0x96), "gray59" },
261                 { RGB(0x0F,0x0F,0x0F), "gray6" },
262                 { RGB(0x99,0x99,0x99), "gray60" },
263                 { RGB(0x9C,0x9C,0x9C), "gray61" },
264                 { RGB(0x9E,0x9E,0x9E), "gray62" },
265                 { RGB(0xA1,0xA1,0xA1), "gray63" },
266                 { RGB(0xA3,0xA3,0xA3), "gray64" },
267                 { RGB(0xA6,0xA6,0xA6), "gray65" },
268                 { RGB(0xA8,0xA8,0xA8), "gray66" },
269                 { RGB(0xAB,0xAB,0xAB), "gray67" },
270                 { RGB(0xAD,0xAD,0xAD), "gray68" },
271                 { RGB(0xB0,0xB0,0xB0), "gray69" },
272                 { RGB(0x12,0x12,0x12), "gray7" },
273                 { RGB(0xB3,0xB3,0xB3), "gray70" },
274                 { RGB(0xB5,0xB5,0xB5), "gray71" },
275                 { RGB(0xB8,0xB8,0xB8), "gray72" },
276                 { RGB(0xBA,0xBA,0xBA), "gray73" },
277                 { RGB(0xBD,0xBD,0xBD), "gray74" },
278                 { RGB(0xBF,0xBF,0xBF), "gray75" },
279                 { RGB(0xC2,0xC2,0xC2), "gray76" },
280                 { RGB(0xC4,0xC4,0xC4), "gray77" },
281                 { RGB(0xC7,0xC7,0xC7), "gray78" },
282                 { RGB(0xC9,0xC9,0xC9), "gray79" },
283                 { RGB(0x14,0x14,0x14), "gray8" },
284                 { RGB(0xCC,0xCC,0xCC), "gray80" },
285                 { RGB(0xCF,0xCF,0xCF), "gray81" },
286                 { RGB(0xD1,0xD1,0xD1), "gray82" },
287                 { RGB(0xD4,0xD4,0xD4), "gray83" },
288                 { RGB(0xD6,0xD6,0xD6), "gray84" },
289                 { RGB(0xD9,0xD9,0xD9), "gray85" },
290                 { RGB(0xDB,0xDB,0xDB), "gray86" },
291                 { RGB(0xDE,0xDE,0xDE), "gray87" },
292                 { RGB(0xE0,0xE0,0xE0), "gray88" },
293                 { RGB(0xE3,0xE3,0xE3), "gray89" },
294                 { RGB(0x17,0x17,0x17), "gray9" },
295                 { RGB(0xE5,0xE5,0xE5), "gray90" },
296                 { RGB(0xE8,0xE8,0xE8), "gray91" },
297                 { RGB(0xEB,0xEB,0xEB), "gray92" },
298                 { RGB(0xED,0xED,0xED), "gray93" },
299                 { RGB(0xF0,0xF0,0xF0), "gray94" },
300                 { RGB(0xF2,0xF2,0xF2), "gray95" },
301                 { RGB(0xF5,0xF5,0xF5), "gray96" },
302                 { RGB(0xF7,0xF7,0xF7), "gray97" },
303                 { RGB(0xFA,0xFA,0xFA), "gray98" },
304                 { RGB(0xFC,0xFC,0xFC), "gray99" },
305                 { RGB(0x00,0xFF,0x00), "green" },
306                 { RGB(0xAD,0xFF,0x2F), "green yellow" },
307                 { RGB(0x00,0xFF,0x00), "green1" },
308                 { RGB(0x00,0xEE,0x00), "green2" },
309                 { RGB(0x00,0xCD,0x00), "green3" },
310                 { RGB(0x00,0x8B,0x00), "green4" },
311                 { RGB(0xAD,0xFF,0x2F), "GreenYellow" },
312                 { RGB(0xBE,0xBE,0xBE), "grey" },
313                 { RGB(0x00,0x00,0x01), "grey0" },
314                 { RGB(0x03,0x03,0x03), "grey1" },
315                 { RGB(0x1A,0x1A,0x1A), "grey10" },
316                 { RGB(0xFF,0xFF,0xFF), "grey100" },
317                 { RGB(0x1C,0x1C,0x1C), "grey11" },
318                 { RGB(0x1F,0x1F,0x1F), "grey12" },
319                 { RGB(0x21,0x21,0x21), "grey13" },
320                 { RGB(0x24,0x24,0x24), "grey14" },
321                 { RGB(0x26,0x26,0x26), "grey15" },
322                 { RGB(0x29,0x29,0x29), "grey16" },
323                 { RGB(0x2B,0x2B,0x2B), "grey17" },
324                 { RGB(0x2E,0x2E,0x2E), "grey18" },
325                 { RGB(0x30,0x30,0x30), "grey19" },
326                 { RGB(0x05,0x05,0x05), "grey2" },
327                 { RGB(0x33,0x33,0x33), "grey20" },
328                 { RGB(0x36,0x36,0x36), "grey21" },
329                 { RGB(0x38,0x38,0x38), "grey22" },
330                 { RGB(0x3B,0x3B,0x3B), "grey23" },
331                 { RGB(0x3D,0x3D,0x3D), "grey24" },
332                 { RGB(0x40,0x40,0x40), "grey25" },
333                 { RGB(0x42,0x42,0x42), "grey26" },
334                 { RGB(0x45,0x45,0x45), "grey27" },
335                 { RGB(0x47,0x47,0x47), "grey28" },
336                 { RGB(0x4A,0x4A,0x4A), "grey29" },
337                 { RGB(0x08,0x08,0x08), "grey3" },
338                 { RGB(0x4D,0x4D,0x4D), "grey30" },
339                 { RGB(0x4F,0x4F,0x4F), "grey31" },
340                 { RGB(0x52,0x52,0x52), "grey32" },
341                 { RGB(0x54,0x54,0x54), "grey33" },
342                 { RGB(0x57,0x57,0x57), "grey34" },
343                 { RGB(0x59,0x59,0x59), "grey35" },
344                 { RGB(0x5C,0x5C,0x5C), "grey36" },
345                 { RGB(0x5E,0x5E,0x5E), "grey37" },
346                 { RGB(0x61,0x61,0x61), "grey38" },
347                 { RGB(0x63,0x63,0x63), "grey39" },
348                 { RGB(0x0A,0x0A,0x0A), "grey4" },
349                 { RGB(0x66,0x66,0x66), "grey40" },
350                 { RGB(0x69,0x69,0x69), "grey41" },
351                 { RGB(0x6B,0x6B,0x6B), "grey42" },
352                 { RGB(0x6E,0x6E,0x6E), "grey43" },
353                 { RGB(0x70,0x70,0x70), "grey44" },
354                 { RGB(0x73,0x73,0x73), "grey45" },
355                 { RGB(0x75,0x75,0x75), "grey46" },
356                 { RGB(0x78,0x78,0x78), "grey47" },
357                 { RGB(0x7A,0x7A,0x7A), "grey48" },
358                 { RGB(0x7D,0x7D,0x7D), "grey49" },
359                 { RGB(0x0D,0x0D,0x0D), "grey5" },
360                 { RGB(0x7F,0x7F,0x7F), "grey50" },
361                 { RGB(0x82,0x82,0x82), "grey51" },
362                 { RGB(0x85,0x85,0x85), "grey52" },
363                 { RGB(0x87,0x87,0x87), "grey53" },
364                 { RGB(0x8A,0x8A,0x8A), "grey54" },
365                 { RGB(0x8C,0x8C,0x8C), "grey55" },
366                 { RGB(0x8F,0x8F,0x8F), "grey56" },
367                 { RGB(0x91,0x91,0x91), "grey57" },
368                 { RGB(0x94,0x94,0x94), "grey58" },
369                 { RGB(0x96,0x96,0x96), "grey59" },
370                 { RGB(0x0F,0x0F,0x0F), "grey6" },
371                 { RGB(0x99,0x99,0x99), "grey60" },
372                 { RGB(0x9C,0x9C,0x9C), "grey61" },
373                 { RGB(0x9E,0x9E,0x9E), "grey62" },
374                 { RGB(0xA1,0xA1,0xA1), "grey63" },
375                 { RGB(0xA3,0xA3,0xA3), "grey64" },
376                 { RGB(0xA6,0xA6,0xA6), "grey65" },
377                 { RGB(0xA8,0xA8,0xA8), "grey66" },
378                 { RGB(0xAB,0xAB,0xAB), "grey67" },
379                 { RGB(0xAD,0xAD,0xAD), "grey68" },
380                 { RGB(0xB0,0xB0,0xB0), "grey69" },
381                 { RGB(0x12,0x12,0x12), "grey7" },
382                 { RGB(0xB3,0xB3,0xB3), "grey70" },
383                 { RGB(0xB5,0xB5,0xB5), "grey71" },
384                 { RGB(0xB8,0xB8,0xB8), "grey72" },
385                 { RGB(0xBA,0xBA,0xBA), "grey73" },
386                 { RGB(0xBD,0xBD,0xBD), "grey74" },
387                 { RGB(0xBF,0xBF,0xBF), "grey75" },
388                 { RGB(0xC2,0xC2,0xC2), "grey76" },
389                 { RGB(0xC4,0xC4,0xC4), "grey77" },
390                 { RGB(0xC7,0xC7,0xC7), "grey78" },
391                 { RGB(0xC9,0xC9,0xC9), "grey79" },
392                 { RGB(0x14,0x14,0x14), "grey8" },
393                 { RGB(0xCC,0xCC,0xCC), "grey80" },
394                 { RGB(0xCF,0xCF,0xCF), "grey81" },
395                 { RGB(0xD1,0xD1,0xD1), "grey82" },
396                 { RGB(0xD4,0xD4,0xD4), "grey83" },
397                 { RGB(0xD6,0xD6,0xD6), "grey84" },
398                 { RGB(0xD9,0xD9,0xD9), "grey85" },
399                 { RGB(0xDB,0xDB,0xDB), "grey86" },
400                 { RGB(0xDE,0xDE,0xDE), "grey87" },
401                 { RGB(0xE0,0xE0,0xE0), "grey88" },
402                 { RGB(0xE3,0xE3,0xE3), "grey89" },
403                 { RGB(0x17,0x17,0x17), "grey9" },
404                 { RGB(0xE5,0xE5,0xE5), "grey90" },
405                 { RGB(0xE8,0xE8,0xE8), "grey91" },
406                 { RGB(0xEB,0xEB,0xEB), "grey92" },
407                 { RGB(0xED,0xED,0xED), "grey93" },
408                 { RGB(0xF0,0xF0,0xF0), "grey94" },
409                 { RGB(0xF2,0xF2,0xF2), "grey95" },
410                 { RGB(0xF5,0xF5,0xF5), "grey96" },
411                 { RGB(0xF7,0xF7,0xF7), "grey97" },
412                 { RGB(0xFA,0xFA,0xFA), "grey98" },
413                 { RGB(0xFC,0xFC,0xFC), "grey99" },
414                 { RGB(0xF0,0xFF,0xF0), "honeydew" },
415                 { RGB(0xF0,0xFF,0xF0), "honeydew1" },
416                 { RGB(0xE0,0xEE,0xE0), "honeydew2" },
417                 { RGB(0xC1,0xCD,0xC1), "honeydew3" },
418                 { RGB(0x83,0x8B,0x83), "honeydew4" },
419                 { RGB(0xFF,0x69,0xB4), "hot pink" },
420                 { RGB(0xFF,0x69,0xB4), "HotPink" },
421                 { RGB(0xFF,0x6E,0xB4), "HotPink1" },
422                 { RGB(0xEE,0x6A,0xA7), "HotPink2" },
423                 { RGB(0xCD,0x60,0x90), "HotPink3" },
424                 { RGB(0x8B,0x3A,0x62), "HotPink4" },
425                 { RGB(0xCD,0x5C,0x5C), "indian red" },
426                 { RGB(0xCD,0x5C,0x5C), "IndianRed" },
427                 { RGB(0xFF,0x6A,0x6A), "IndianRed1" },
428                 { RGB(0xEE,0x63,0x63), "IndianRed2" },
429                 { RGB(0xCD,0x55,0x55), "IndianRed3" },
430                 { RGB(0x8B,0x3A,0x3A), "IndianRed4" },
431                 { RGB(0xFF,0xFF,0xF0), "ivory" },
432                 { RGB(0xFF,0xFF,0xF0), "ivory1" },
433                 { RGB(0xEE,0xEE,0xE0), "ivory2" },
434                 { RGB(0xCD,0xCD,0xC1), "ivory3" },
435                 { RGB(0x8B,0x8B,0x83), "ivory4" },
436                 { RGB(0xF0,0xE6,0x8C), "khaki" },
437                 { RGB(0xFF,0xF6,0x8F), "khaki1" },
438                 { RGB(0xEE,0xE6,0x85), "khaki2" },
439                 { RGB(0xCD,0xC6,0x73), "khaki3" },
440                 { RGB(0x8B,0x86,0x4E), "khaki4" },
441                 { RGB(0xE6,0xE6,0xFA), "lavender" },
442                 { RGB(0xFF,0xF0,0xF5), "lavender blush" },
443                 { RGB(0xFF,0xF0,0xF5), "LavenderBlush" },
444                 { RGB(0xFF,0xF0,0xF5), "LavenderBlush1" },
445                 { RGB(0xEE,0xE0,0xE5), "LavenderBlush2" },
446                 { RGB(0xCD,0xC1,0xC5), "LavenderBlush3" },
447                 { RGB(0x8B,0x83,0x86), "LavenderBlush4" },
448                 { RGB(0x7C,0xFC,0x00), "lawn green" },
449                 { RGB(0x7C,0xFC,0x00), "LawnGreen" },
450                 { RGB(0xFF,0xFA,0xCD), "lemon chiffon" },
451                 { RGB(0xFF,0xFA,0xCD), "LemonChiffon" },
452                 { RGB(0xFF,0xFA,0xCD), "LemonChiffon1" },
453                 { RGB(0xEE,0xE9,0xBF), "LemonChiffon2" },
454                 { RGB(0xCD,0xC9,0xA5), "LemonChiffon3" },
455                 { RGB(0x8B,0x89,0x70), "LemonChiffon4" },
456                 { RGB(0xAD,0xD8,0xE6), "light blue" },
457                 { RGB(0xF0,0x80,0x80), "light coral" },
458                 { RGB(0xE0,0xFF,0xFF), "light cyan" },
459                 { RGB(0xEE,0xDD,0x82), "light goldenrod" },
460                 { RGB(0xFA,0xFA,0xD2), "light goldenrod yellow" },
461                 { RGB(0xD3,0xD3,0xD3), "light gray" },
462                 { RGB(0xD3,0xD3,0xD3), "light grey" },
463                 { RGB(0xFF,0xB6,0xC1), "light pink" },
464                 { RGB(0xFF,0xA0,0x7A), "light salmon" },
465                 { RGB(0x20,0xB2,0xAA), "light sea green" },
466                 { RGB(0x87,0xCE,0xFA), "light sky blue" },
467                 { RGB(0x84,0x70,0xFF), "light slate blue" },
468                 { RGB(0x77,0x88,0x99), "light slate gray" },
469                 { RGB(0x77,0x88,0x99), "light slate grey" },
470                 { RGB(0xB0,0xC4,0xDE), "light steel blue" },
471                 { RGB(0xFF,0xFF,0xE0), "light yellow" },
472                 { RGB(0xAD,0xD8,0xE6), "LightBlue" },
473                 { RGB(0xBF,0xEF,0xFF), "LightBlue1" },
474                 { RGB(0xB2,0xDF,0xEE), "LightBlue2" },
475                 { RGB(0x9A,0xC0,0xCD), "LightBlue3" },
476                 { RGB(0x68,0x83,0x8B), "LightBlue4" },
477                 { RGB(0xF0,0x80,0x80), "LightCoral" },
478                 { RGB(0xE0,0xFF,0xFF), "LightCyan" },
479                 { RGB(0xE0,0xFF,0xFF), "LightCyan1" },
480                 { RGB(0xD1,0xEE,0xEE), "LightCyan2" },
481                 { RGB(0xB4,0xCD,0xCD), "LightCyan3" },
482                 { RGB(0x7A,0x8B,0x8B), "LightCyan4" },
483                 { RGB(0xEE,0xDD,0x82), "LightGoldenrod" },
484                 { RGB(0xFF,0xEC,0x8B), "LightGoldenrod1" },
485                 { RGB(0xEE,0xDC,0x82), "LightGoldenrod2" },
486                 { RGB(0xCD,0xBE,0x70), "LightGoldenrod3" },
487                 { RGB(0x8B,0x81,0x4C), "LightGoldenrod4" },
488                 { RGB(0xFA,0xFA,0xD2), "LightGoldenrodYellow" },
489                 { RGB(0xD3,0xD3,0xD3), "LightGray" },
490                 { RGB(0xD3,0xD3,0xD3), "LightGrey" },
491                 { RGB(0xFF,0xB6,0xC1), "LightPink" },
492                 { RGB(0xFF,0xAE,0xB9), "LightPink1" },
493                 { RGB(0xEE,0xA2,0xAD), "LightPink2" },
494                 { RGB(0xCD,0x8C,0x95), "LightPink3" },
495                 { RGB(0x8B,0x5F,0x65), "LightPink4" },
496                 { RGB(0xFF,0xA0,0x7A), "LightSalmon" },
497                 { RGB(0xFF,0xA0,0x7A), "LightSalmon1" },
498                 { RGB(0xEE,0x95,0x72), "LightSalmon2" },
499                 { RGB(0xCD,0x81,0x62), "LightSalmon3" },
500                 { RGB(0x8B,0x57,0x42), "LightSalmon4" },
501                 { RGB(0x20,0xB2,0xAA), "LightSeaGreen" },
502                 { RGB(0x87,0xCE,0xFA), "LightSkyBlue" },
503                 { RGB(0xB0,0xE2,0xFF), "LightSkyBlue1" },
504                 { RGB(0xA4,0xD3,0xEE), "LightSkyBlue2" },
505                 { RGB(0x8D,0xB6,0xCD), "LightSkyBlue3" },
506                 { RGB(0x60,0x7B,0x8B), "LightSkyBlue4" },
507                 { RGB(0x84,0x70,0xFF), "LightSlateBlue" },
508                 { RGB(0x77,0x88,0x99), "LightSlateGray" },
509                 { RGB(0x77,0x88,0x99), "LightSlateGrey" },
510                 { RGB(0xB0,0xC4,0xDE), "LightSteelBlue" },
511                 { RGB(0xCA,0xE1,0xFF), "LightSteelBlue1" },
512                 { RGB(0xBC,0xD2,0xEE), "LightSteelBlue2" },
513                 { RGB(0xA2,0xB5,0xCD), "LightSteelBlue3" },
514                 { RGB(0x6E,0x7B,0x8B), "LightSteelBlue4" },
515                 { RGB(0xFF,0xFF,0xE0), "LightYellow" },
516                 { RGB(0xFF,0xFF,0xE0), "LightYellow1" },
517                 { RGB(0xEE,0xEE,0xD1), "LightYellow2" },
518                 { RGB(0xCD,0xCD,0xB4), "LightYellow3" },
519                 { RGB(0x8B,0x8B,0x7A), "LightYellow4" },
520                 { RGB(0x32,0xCD,0x32), "lime green" },
521                 { RGB(0x32,0xCD,0x32), "LimeGreen" },
522                 { RGB(0xFA,0xF0,0xE6), "linen" },
523                 { RGB(0xFF,0x00,0xFF), "magenta" },
524                 { RGB(0xFF,0x00,0xFF), "magenta1" },
525                 { RGB(0xEE,0x00,0xEE), "magenta2" },
526                 { RGB(0xCD,0x00,0xCD), "magenta3" },
527                 { RGB(0x8B,0x00,0x8B), "magenta4" },
528                 { RGB(0xB0,0x30,0x60), "maroon" },
529                 { RGB(0xFF,0x34,0xB3), "maroon1" },
530                 { RGB(0xEE,0x30,0xA7), "maroon2" },
531                 { RGB(0xCD,0x29,0x90), "maroon3" },
532                 { RGB(0x8B,0x1C,0x62), "maroon4" },
533                 { RGB(0x66,0xCD,0xAA), "medium aquamarine" },
534                 { RGB(0x00,0x00,0xCD), "medium blue" },
535                 { RGB(0xBA,0x55,0xD3), "medium orchid" },
536                 { RGB(0x93,0x70,0xDB), "medium purple" },
537                 { RGB(0x3C,0xB3,0x71), "medium sea green" },
538                 { RGB(0x7B,0x68,0xEE), "medium slate blue" },
539                 { RGB(0x00,0xFA,0x9A), "medium spring green" },
540                 { RGB(0x48,0xD1,0xCC), "medium turquoise" },
541                 { RGB(0xC7,0x15,0x85), "medium violet red" },
542                 { RGB(0x66,0xCD,0xAA), "MediumAquamarine" },
543                 { RGB(0x00,0x00,0xCD), "MediumBlue" },
544                 { RGB(0xBA,0x55,0xD3), "MediumOrchid" },
545                 { RGB(0xE0,0x66,0xFF), "MediumOrchid1" },
546                 { RGB(0xD1,0x5F,0xEE), "MediumOrchid2" },
547                 { RGB(0xB4,0x52,0xCD), "MediumOrchid3" },
548                 { RGB(0x7A,0x37,0x8B), "MediumOrchid4" },
549                 { RGB(0x93,0x70,0xDB), "MediumPurple" },
550                 { RGB(0xAB,0x82,0xFF), "MediumPurple1" },
551                 { RGB(0x9F,0x79,0xEE), "MediumPurple2" },
552                 { RGB(0x89,0x68,0xCD), "MediumPurple3" },
553                 { RGB(0x5D,0x47,0x8B), "MediumPurple4" },
554                 { RGB(0x3C,0xB3,0x71), "MediumSeaGreen" },
555                 { RGB(0x7B,0x68,0xEE), "MediumSlateBlue" },
556                 { RGB(0x00,0xFA,0x9A), "MediumSpringGreen" },
557                 { RGB(0x48,0xD1,0xCC), "MediumTurquoise" },
558                 { RGB(0xC7,0x15,0x85), "MediumVioletRed" },
559                 { RGB(0x19,0x19,0x70), "midnight blue" },
560                 { RGB(0x19,0x19,0x70), "MidnightBlue" },
561                 { RGB(0xF5,0xFF,0xFA), "mint cream" },
562                 { RGB(0xF5,0xFF,0xFA), "MintCream" },
563                 { RGB(0xFF,0xE4,0xE1), "misty rose" },
564                 { RGB(0xFF,0xE4,0xE1), "MistyRose" },
565                 { RGB(0xFF,0xE4,0xE1), "MistyRose1" },
566                 { RGB(0xEE,0xD5,0xD2), "MistyRose2" },
567                 { RGB(0xCD,0xB7,0xB5), "MistyRose3" },
568                 { RGB(0x8B,0x7D,0x7B), "MistyRose4" },
569                 { RGB(0xFF,0xE4,0xB5), "moccasin" },
570                 { RGB(0xFF,0xDE,0xAD), "navajo white" },
571                 { RGB(0xFF,0xDE,0xAD), "NavajoWhite" },
572                 { RGB(0xFF,0xDE,0xAD), "NavajoWhite1" },
573                 { RGB(0xEE,0xCF,0xA1), "NavajoWhite2" },
574                 { RGB(0xCD,0xB3,0x8B), "NavajoWhite3" },
575                 { RGB(0x8B,0x79,0x5E), "NavajoWhite4" },
576                 { RGB(0x00,0x00,0x80), "navy" },
577                 { RGB(0x00,0x00,0x80), "navy blue" },
578                 { RGB(0x00,0x00,0x80), "NavyBlue" },
579                 { RGB(0xFD,0xF5,0xE6), "old lace" },
580                 { RGB(0xFD,0xF5,0xE6), "OldLace" },
581                 { RGB(0x6B,0x8E,0x23), "olive drab" },
582                 { RGB(0x6B,0x8E,0x23), "OliveDrab" },
583                 { RGB(0xC0,0xFF,0x3E), "OliveDrab1" },
584                 { RGB(0xB3,0xEE,0x3A), "OliveDrab2" },
585                 { RGB(0x9A,0xCD,0x32), "OliveDrab3" },
586                 { RGB(0x69,0x8B,0x22), "OliveDrab4" },
587                 { RGB(0xFF,0xA5,0x00), "orange" },
588                 { RGB(0xFF,0x45,0x00), "orange red" },
589                 { RGB(0xFF,0xA5,0x00), "orange1" },
590                 { RGB(0xEE,0x9A,0x00), "orange2" },
591                 { RGB(0xCD,0x85,0x00), "orange3" },
592                 { RGB(0x8B,0x5A,0x00), "orange4" },
593                 { RGB(0xFF,0x45,0x00), "OrangeRed" },
594                 { RGB(0xFF,0x45,0x00), "OrangeRed1" },
595                 { RGB(0xEE,0x40,0x00), "OrangeRed2" },
596                 { RGB(0xCD,0x37,0x00), "OrangeRed3" },
597                 { RGB(0x8B,0x25,0x00), "OrangeRed4" },
598                 { RGB(0xDA,0x70,0xD6), "orchid" },
599                 { RGB(0xFF,0x83,0xFA), "orchid1" },
600                 { RGB(0xEE,0x7A,0xE9), "orchid2" },
601                 { RGB(0xCD,0x69,0xC9), "orchid3" },
602                 { RGB(0x8B,0x47,0x89), "orchid4" },
603                 { RGB(0xEE,0xE8,0xAA), "pale goldenrod" },
604                 { RGB(0x98,0xFB,0x98), "pale green" },
605                 { RGB(0xAF,0xEE,0xEE), "pale turquoise" },
606                 { RGB(0xDB,0x70,0x93), "pale violet red" },
607                 { RGB(0xEE,0xE8,0xAA), "PaleGoldenrod" },
608                 { RGB(0x98,0xFB,0x98), "PaleGreen" },
609                 { RGB(0x9A,0xFF,0x9A), "PaleGreen1" },
610                 { RGB(0x90,0xEE,0x90), "PaleGreen2" },
611                 { RGB(0x7C,0xCD,0x7C), "PaleGreen3" },
612                 { RGB(0x54,0x8B,0x54), "PaleGreen4" },
613                 { RGB(0xAF,0xEE,0xEE), "PaleTurquoise" },
614                 { RGB(0xBB,0xFF,0xFF), "PaleTurquoise1" },
615                 { RGB(0xAE,0xEE,0xEE), "PaleTurquoise2" },
616                 { RGB(0x96,0xCD,0xCD), "PaleTurquoise3" },
617                 { RGB(0x66,0x8B,0x8B), "PaleTurquoise4" },
618                 { RGB(0xDB,0x70,0x93), "PaleVioletRed" },
619                 { RGB(0xFF,0x82,0xAB), "PaleVioletRed1" },
620                 { RGB(0xEE,0x79,0x9F), "PaleVioletRed2" },
621                 { RGB(0xCD,0x68,0x89), "PaleVioletRed3" },
622                 { RGB(0x8B,0x47,0x5D), "PaleVioletRed4" },
623                 { RGB(0xFF,0xEF,0xD5), "papaya whip" },
624                 { RGB(0xFF,0xEF,0xD5), "PapayaWhip" },
625                 { RGB(0xFF,0xDA,0xB9), "peach puff" },
626                 { RGB(0xFF,0xDA,0xB9), "PeachPuff" },
627                 { RGB(0xFF,0xDA,0xB9), "PeachPuff1" },
628                 { RGB(0xEE,0xCB,0xAD), "PeachPuff2" },
629                 { RGB(0xCD,0xAF,0x95), "PeachPuff3" },
630                 { RGB(0x8B,0x77,0x65), "PeachPuff4" },
631                 { RGB(0xCD,0x85,0x3F), "peru" },
632                 { RGB(0xFF,0xC0,0xCB), "pink" },
633                 { RGB(0xFF,0xB5,0xC5), "pink1" },
634                 { RGB(0xEE,0xA9,0xB8), "pink2" },
635                 { RGB(0xCD,0x91,0x9E), "pink3" },
636                 { RGB(0x8B,0x63,0x6C), "pink4" },
637                 { RGB(0xDD,0xA0,0xDD), "plum" },
638                 { RGB(0xFF,0xBB,0xFF), "plum1" },
639                 { RGB(0xEE,0xAE,0xEE), "plum2" },
640                 { RGB(0xCD,0x96,0xCD), "plum3" },
641                 { RGB(0x8B,0x66,0x8B), "plum4" },
642                 { RGB(0xB0,0xE0,0xE6), "powder blue" },
643                 { RGB(0xB0,0xE0,0xE6), "PowderBlue" },
644                 { RGB(0xA0,0x20,0xF0), "purple" },
645                 { RGB(0x9B,0x30,0xFF), "purple1" },
646                 { RGB(0x91,0x2C,0xEE), "purple2" },
647                 { RGB(0x7D,0x26,0xCD), "purple3" },
648                 { RGB(0x55,0x1A,0x8B), "purple4" },
649                 { RGB(0xFF,0x00,0x00), "red" },
650                 { RGB(0xFF,0x00,0x00), "red1" },
651                 { RGB(0xEE,0x00,0x00), "red2" },
652                 { RGB(0xCD,0x00,0x00), "red3" },
653                 { RGB(0x8B,0x00,0x00), "red4" },
654                 { RGB(0xBC,0x8F,0x8F), "rosy brown" },
655                 { RGB(0xBC,0x8F,0x8F), "RosyBrown" },
656                 { RGB(0xFF,0xC1,0xC1), "RosyBrown1" },
657                 { RGB(0xEE,0xB4,0xB4), "RosyBrown2" },
658                 { RGB(0xCD,0x9B,0x9B), "RosyBrown3" },
659                 { RGB(0x8B,0x69,0x69), "RosyBrown4" },
660                 { RGB(0x41,0x69,0xE1), "royal blue" },
661                 { RGB(0x41,0x69,0xE1), "RoyalBlue" },
662                 { RGB(0x48,0x76,0xFF), "RoyalBlue1" },
663                 { RGB(0x43,0x6E,0xEE), "RoyalBlue2" },
664                 { RGB(0x3A,0x5F,0xCD), "RoyalBlue3" },
665                 { RGB(0x27,0x40,0x8B), "RoyalBlue4" },
666                 { RGB(0x8B,0x45,0x13), "saddle brown" },
667                 { RGB(0x8B,0x45,0x13), "SaddleBrown" },
668                 { RGB(0xFA,0x80,0x72), "salmon" },
669                 { RGB(0xFF,0x8C,0x69), "salmon1" },
670                 { RGB(0xEE,0x82,0x62), "salmon2" },
671                 { RGB(0xCD,0x70,0x54), "salmon3" },
672                 { RGB(0x8B,0x4C,0x39), "salmon4" },
673                 { RGB(0xF4,0xA4,0x60), "sandy brown" },
674                 { RGB(0xF4,0xA4,0x60), "SandyBrown" },
675                 { RGB(0x2E,0x8B,0x57), "sea green" },
676                 { RGB(0x2E,0x8B,0x57), "SeaGreen" },
677                 { RGB(0x54,0xFF,0x9F), "SeaGreen1" },
678                 { RGB(0x4E,0xEE,0x94), "SeaGreen2" },
679                 { RGB(0x43,0xCD,0x80), "SeaGreen3" },
680                 { RGB(0x2E,0x8B,0x57), "SeaGreen4" },
681                 { RGB(0xFF,0xF5,0xEE), "seashell" },
682                 { RGB(0xFF,0xF5,0xEE), "seashell1" },
683                 { RGB(0xEE,0xE5,0xDE), "seashell2" },
684                 { RGB(0xCD,0xC5,0xBF), "seashell3" },
685                 { RGB(0x8B,0x86,0x82), "seashell4" },
686                 { RGB(0xA0,0x52,0x2D), "sienna" },
687                 { RGB(0xFF,0x82,0x47), "sienna1" },
688                 { RGB(0xEE,0x79,0x42), "sienna2" },
689                 { RGB(0xCD,0x68,0x39), "sienna3" },
690                 { RGB(0x8B,0x47,0x26), "sienna4" },
691                 { RGB(0x87,0xCE,0xEB), "sky blue" },
692                 { RGB(0x87,0xCE,0xEB), "SkyBlue" },
693                 { RGB(0x87,0xCE,0xFF), "SkyBlue1" },
694                 { RGB(0x7E,0xC0,0xEE), "SkyBlue2" },
695                 { RGB(0x6C,0xA6,0xCD), "SkyBlue3" },
696                 { RGB(0x4A,0x70,0x8B), "SkyBlue4" },
697                 { RGB(0x6A,0x5A,0xCD), "slate blue" },
698                 { RGB(0x70,0x80,0x90), "slate gray" },
699                 { RGB(0x70,0x80,0x90), "slate grey" },
700                 { RGB(0x6A,0x5A,0xCD), "SlateBlue" },
701                 { RGB(0x83,0x6F,0xFF), "SlateBlue1" },
702                 { RGB(0x7A,0x67,0xEE), "SlateBlue2" },
703                 { RGB(0x69,0x59,0xCD), "SlateBlue3" },
704                 { RGB(0x47,0x3C,0x8B), "SlateBlue4" },
705                 { RGB(0x70,0x80,0x90), "SlateGray" },
706                 { RGB(0xC6,0xE2,0xFF), "SlateGray1" },
707                 { RGB(0xB9,0xD3,0xEE), "SlateGray2" },
708                 { RGB(0x9F,0xB6,0xCD), "SlateGray3" },
709                 { RGB(0x6C,0x7B,0x8B), "SlateGray4" },
710                 { RGB(0x70,0x80,0x90), "SlateGrey" },
711                 { RGB(0xFF,0xFA,0xFA), "snow" },
712                 { RGB(0xFF,0xFA,0xFA), "snow1" },
713                 { RGB(0xEE,0xE9,0xE9), "snow2" },
714                 { RGB(0xCD,0xC9,0xC9), "snow3" },
715                 { RGB(0x8B,0x89,0x89), "snow4" },
716                 { RGB(0x00,0xFF,0x7F), "spring green" },
717                 { RGB(0x00,0xFF,0x7F), "SpringGreen" },
718                 { RGB(0x00,0xFF,0x7F), "SpringGreen1" },
719                 { RGB(0x00,0xEE,0x76), "SpringGreen2" },
720                 { RGB(0x00,0xCD,0x66), "SpringGreen3" },
721                 { RGB(0x00,0x8B,0x45), "SpringGreen4" },
722                 { RGB(0x46,0x82,0xB4), "steel blue" },
723                 { RGB(0x46,0x82,0xB4), "SteelBlue" },
724                 { RGB(0x63,0xB8,0xFF), "SteelBlue1" },
725                 { RGB(0x5C,0xAC,0xEE), "SteelBlue2" },
726                 { RGB(0x4F,0x94,0xCD), "SteelBlue3" },
727                 { RGB(0x36,0x64,0x8B), "SteelBlue4" },
728                 { RGB(0xD2,0xB4,0x8C), "tan" },
729                 { RGB(0xFF,0xA5,0x4F), "tan1" },
730                 { RGB(0xEE,0x9A,0x49), "tan2" },
731                 { RGB(0xCD,0x85,0x3F), "tan3" },
732                 { RGB(0x8B,0x5A,0x2B), "tan4" },
733                 { RGB(0xD8,0xBF,0xD8), "thistle" },
734                 { RGB(0xFF,0xE1,0xFF), "thistle1" },
735                 { RGB(0xEE,0xD2,0xEE), "thistle2" },
736                 { RGB(0xCD,0xB5,0xCD), "thistle3" },
737                 { RGB(0x8B,0x7B,0x8B), "thistle4" },
738                 { RGB(0xFF,0x63,0x47), "tomato" },
739                 { RGB(0xFF,0x63,0x47), "tomato1" },
740                 { RGB(0xEE,0x5C,0x42), "tomato2" },
741                 { RGB(0xCD,0x4F,0x39), "tomato3" },
742                 { RGB(0x8B,0x36,0x26), "tomato4" },
743                 { RGB(0x40,0xE0,0xD0), "turquoise" },
744                 { RGB(0x00,0xF5,0xFF), "turquoise1" },
745                 { RGB(0x00,0xE5,0xEE), "turquoise2" },
746                 { RGB(0x00,0xC5,0xCD), "turquoise3" },
747                 { RGB(0x00,0x86,0x8B), "turquoise4" },
748                 { RGB(0xEE,0x82,0xEE), "violet" },
749                 { RGB(0xD0,0x20,0x90), "violet red" },
750                 { RGB(0xD0,0x20,0x90), "VioletRed" },
751                 { RGB(0xFF,0x3E,0x96), "VioletRed1" },
752                 { RGB(0xEE,0x3A,0x8C), "VioletRed2" },
753                 { RGB(0xCD,0x32,0x78), "VioletRed3" },
754                 { RGB(0x8B,0x22,0x52), "VioletRed4" },
755                 { RGB(0xF5,0xDE,0xB3), "wheat" },
756                 { RGB(0xFF,0xE7,0xBA), "wheat1" },
757                 { RGB(0xEE,0xD8,0xAE), "wheat2" },
758                 { RGB(0xCD,0xBA,0x96), "wheat3" },
759                 { RGB(0x8B,0x7E,0x66), "wheat4" },
760                 { RGB(0xFF,0xFF,0xFF), "white" },
761                 { RGB(0xF5,0xF5,0xF5), "white smoke" },
762                 { RGB(0xF5,0xF5,0xF5), "WhiteSmoke" },
763                 { RGB(0xFF,0xFF,0x00), "yellow" },
764                 { RGB(0x9A,0xCD,0x32), "yellow green" },
765                 { RGB(0xFF,0xFF,0x00), "yellow1" },
766                 { RGB(0xEE,0xEE,0x00), "yellow2" },
767                 { RGB(0xCD,0xCD,0x00), "yellow3" },
768                 { RGB(0x8B,0x8B,0x00), "yellow4" },
769                 { RGB(0x9A,0xCD,0x32), "YellowGreen" },
770         };
771
772         if(*str == '#') {
773                 char    format[256];
774                 int     span = (int)(strlen(str)-1) / 3;
775                 int     r, g, b;
776                 sprintf_s(format, "%%%dx%%%dx%%%dx", span, span, span);
777                 if(sscanf_s(str+1, format, &r, &g, &b) == 3) {
778                         if(span < 2) {
779                                 r <<= 4;
780                                 g <<= 4;
781                                 b <<= 4;
782                         }
783                         else if(span > 2) {
784                                 r >>= 4 * (span-2);
785                                 g >>= 4 * (span-2);
786                                 b >>= 4 * (span-2);
787                         }
788                         if(r < 1 && g < 1 && b < 1) b++;
789                         ret = RGB(r,g,b);
790                         return(true);
791                 }
792         }
793         else {
794                 unsigned int    i;
795                 for(i = 0 ; i < sizeof(colors) / sizeof(colors[0]) ; i++) {
796                         if(!strcasecmp(colors[i].name, str)) {
797                                 ret = colors[i].color;
798                                 return(true);
799                         }
800                 }
801         }
802
803         fprintf(stderr, "ERROR: invalid color. \"%s\"\n", str);
804         fflush(stderr);
805         return(false);
806 }
807
808 static void extract(char *str, std::string& app, std::string& name, std::string& value)
809 {
810         char    *c1, *c2, *c3, *c4;
811         app.erase();
812         name.erase();
813         value.erase();
814         c1 = strchr(str, '*');
815         if(!c1) return;
816         c2 = strchr(c1, ':');
817         if(!c2) return;
818         *c1++ = 0;
819         *c2++ = 0;
820         for(c3 = c2-2 ; c3 > c1 && *c3 <= ' ' ; c3--);
821         if(*++c3 <= ' ') *c3 = 0;
822         app = str;
823         name = c1;
824         c4 = c2 + strlen(c2)-1;
825         for(        ; c2 < c4 && *c2<=' ' && *c2>0 ; c2++);
826         for(c3 = c4 ; c3 > c2 && *c3<=' ' && *c2>0 ; c3--);
827         if(*++c3 <= ' ' && *c3 > 0) *c3 = 0;
828         value = c2;
829 }
830
831 static bool lookupBoolean(const char *value)
832 {
833         if(!strcasecmp(value, "true") ||
834            !strcasecmp(value, "yes") ||
835            !strcasecmp(value, "on") ||
836            !strcasecmp(value, "1"))
837                 return(true);
838         return(false);
839 }
840
841 static void usage_fmtL(const char *name, const char *type)
842 {
843         if(!name) return;
844         size_t  i;
845         fprintf(stdout, "  %s:", name);
846         i = 3 + strlen(name);
847         for( ; i < 23 ; fputc(' ', stdout), i++);
848         fprintf(stdout, "%s\n", type ? type : "");
849 }
850
851 static void usage_fmtS(const char *name, const char *type, const char *desc)
852 {
853         if(!name) return;
854         size_t  i;
855         if(type && !strcmp(type, "boolean")) {
856                 fprintf(stdout, "  -/+%s", name);
857                 i = 5 + strlen(name);
858         }
859         else if(type) {
860                 fprintf(stdout, "  -%s <%s>", name, type);
861                 i = 6 + strlen(name) + strlen(type);
862         }
863         else {
864                 fprintf(stdout, "  -%s", name);
865                 i = 3 + strlen(name);
866         }
867         for( ; i < 22 ; fputc(' ', stdout), i++);
868         fprintf(stdout, " : %s\n", desc ? desc : "");
869 }
870
871
872 /*****************************************************************************/
873
874
875 void    ckOpt::cmdsMake(int argc, char *argv[])
876 {
877         m_cmd.erase();
878         char *chk;
879         for(int i = 0 ; i < argc ; i++) {
880                 chk = argv[i];
881                 while(!strchr(" &()[]{}^=;!'+,`~", *chk)) chk++;
882                 if(*chk) {
883                         m_cmd += "\"";
884                         m_cmd += argv[i];
885                         m_cmd += "\" ";
886                 }
887                 else {
888                         m_cmd += argv[i];
889                         m_cmd += " ";
890                 }
891         }
892 }
893
894 void    ckOpt::geometry(const char *str)
895 {
896         const char      *c = str;
897         int     w = 0;
898         int     h = 0;
899         int     x = 0;
900         int     y = 0;
901         bool    minusX = false;
902         bool    minusY = false;
903
904         if(!c || *c == 0)
905                 return;
906         for( ; *c != 0 && '0' <= *c && *c <= '9' ; c++)
907                 w = w * 10 + (*c - '0');
908         if(*c == 'x') {
909                 for(c++ ; *c != 0 && '0' <= *c && *c <= '9' ; c++)
910                         h = h * 10 + (*c - '0');
911         }
912         if(*c != 0) {
913                 if(*c == '-') { minusX = true; c++; }
914                 else if(*c == '+') { c++; }
915                 for( ; *c != 0 && '0' <= *c && *c <= '9' ; c++)
916                         x = x * 10 + (*c - '0');
917                 if(minusX) x = -x-1;
918
919                 if(*c == '-') { minusY = true; c++; }
920                 else if(*c == '+') { c++; }
921                 for( ; *c != 0 && '0' <= *c && *c <= '9' ; c++)
922                         y = y * 10 + (*c - '0');
923                 if(minusY) y = -y-1;
924
925                 m_isWinPos = true;
926                 m_winPosX = x;
927                 m_winPosY = y;
928         }
929         m_winCharW = (w>0) ? w : 1;
930         m_winCharH = (h>0) ? h : 1;
931 }
932
933 /*****************************************************************************/
934
935 ckOpt::ckOpt()
936 {
937         m_isWinPos = false;
938         m_winPosX = 0;
939         m_winPosY = 0;
940         m_winCharW = 80;
941         m_winCharH = 24;
942         m_isIconic = false;
943         m_fontSize = 14;
944         m_colors[0]  = RGB(0x00, 0x00, 0x01);
945         m_colors[1]  = RGB(0x00, 0x00, 0x80);
946         m_colors[2]  = RGB(0x00, 0x80, 0x00);
947         m_colors[3]  = RGB(0x00, 0x80, 0x80);
948         m_colors[4]  = RGB(0x80, 0x00, 0x00);
949         m_colors[5]  = RGB(0x80, 0x00, 0x80);
950         m_colors[6]  = RGB(0x80, 0x80, 0x00);
951         m_colors[7]  = RGB(0xC0, 0xC0, 0xC0);
952         m_colors[8]  = RGB(0x80, 0x80, 0x80);
953         m_colors[9]  = RGB(0x00, 0x00, 0xFF);
954         m_colors[10] = RGB(0x00, 0xFF, 0x00);
955         m_colors[11] = RGB(0x00, 0xFF, 0xFF);
956         m_colors[12] = RGB(0xFF, 0x00, 0x00);
957         m_colors[13] = RGB(0xFF, 0x00, 0xFF);
958         m_colors[14] = RGB(0xFF, 0xFF, 0x00);
959         m_colors[15] = RGB(0xFF, 0xFF, 0xFF);
960         m_colorFg    = RGB(0xC0, 0xC0, 0xC0); // cursor fg
961         m_colorBg    = RGB(0x00, 0x00, 0x01); // cursor bg
962         m_colorCursor = RGB(0xC0, 0xC0, 0x80);
963         m_colorCursorIme = RGB(0xC0, 0x00, 0x00);
964         m_scrollHide = false;
965         m_scrollRight = true;
966         m_saveLines = 500;
967         m_borderSize = 1;
968         m_lineSpace = 0;
969         m_transp = 255;
970         m_isTranspColor = false;
971         m_transpColor = 0;
972         m_isTopMost = false;
973         m_config_file[0] = '\0';
974 }
975
976 ckOpt::~ckOpt()
977 {
978 }
979
980 #define _CHK_L(longName)  (longName && !strcmp(name, longName))
981 #define _CHK_S(shortName) (!rsrc && shortName && !strcmp(name, shortName))
982
983 #define CHK_MISC(longName, shortName, func) \
984         if(_CHK_L(longName) || _CHK_S(shortName)) { \
985                 if(!value) return(0); \
986                 func; \
987                 return(2); \
988         }
989 #define CHK_BOOL(longName, shortName, var) \
990         if(_CHK_L(longName)) { \
991                 if(!value) return(0); \
992                 var = lookupBoolean(value); \
993                 return(2); \
994         } \
995         if(_CHK_S(shortName)) { \
996                 var = flagSW; \
997                 return(1); \
998         }
999
1000 int     ckOpt::setOption(const char *name, const char *value, bool rsrc)
1001 {
1002         bool    flagSW = true;
1003
1004         if(!rsrc) {
1005                 if(*name == '-')
1006                         ;
1007                 else if(*name == '+')
1008                         flagSW = false;
1009                 else
1010                         return(0);
1011                 for( ; *name=='-' || *name=='+' ; name++);
1012         }
1013
1014         CHK_MISC("foreground",          "fg",           lookupColor(value, m_colorFg));
1015         CHK_MISC("background",          "bg",           lookupColor(value, m_colorBg));
1016         CHK_MISC("cursorColor",         "cr",           lookupColor(value, m_colorCursor));
1017         CHK_MISC("cursorImeColor",      "cri",          lookupColor(value, m_colorCursorIme));
1018         CHK_MISC("backgroundBitmap",    "bitmap",       m_bgBmp = value);
1019         CHK_MISC("geometry",            "g",            geometry(value));
1020         CHK_BOOL(NULL,                  "iconic",       m_isIconic);
1021         CHK_MISC("font",                "fn",           m_font = value);
1022         CHK_MISC("fontSize",            "fs",           m_fontSize = atoi(value));
1023         CHK_BOOL("scrollHide",          "sh",           m_scrollHide);
1024         CHK_BOOL("scrollRight",         "sr",           m_scrollRight);
1025         CHK_MISC("saveLines",           "sl",           m_saveLines = atoi(value));
1026         CHK_MISC("internalBorder",      "b",            m_borderSize = atoi(value));
1027         CHK_MISC("lineSpace",           "lsp",          m_lineSpace = atoi(value));
1028         CHK_MISC("transp",              "tr",           m_transp = atoi(value));
1029         CHK_MISC("transpColor",         "trc",          m_isTranspColor = lookupColor(value,m_transpColor));
1030         CHK_BOOL("topmost",             "top",          m_isTopMost);
1031         CHK_MISC("chdir",               "cd",           m_curDir = value);
1032         CHK_MISC("exec",                "x",            m_cmd = value);
1033         CHK_MISC("title",               "tl",           m_title = value);
1034         CHK_MISC("config",              "c",            setFile(value);loadXdefaults() );
1035
1036
1037         unsigned int i;
1038         if(sscanf_s(name, "color%u", &i)==1 && 0<=i && i<=15) {
1039                 if(!value) return(0);
1040                 lookupColor(value, m_colors[i]);
1041                 return(2);
1042         }
1043         return(0);
1044 }
1045
1046 static void usage(bool isLong)
1047 {
1048         static const char* str[] = {
1049         "foreground",           "fg",           "color",        "foreground color",
1050         "background",           "bg",           "color",        "background color",
1051         "cursorColor",          "cr",           "color",        "cursor color",
1052         "cursorImeColor",       "cri",          "color",        "cursor color IME-on",
1053         "color0",               NULL,           "color",        "",
1054         "color1",               NULL,           "color",        "",
1055         "color2",               NULL,           "color",        "",
1056         "color3",               NULL,           "color",        "",
1057         "color4",               NULL,           "color",        "",
1058         "color5",               NULL,           "color",        "",
1059         "color6",               NULL,           "color",        "",
1060         "color7",               NULL,           "color",        "",
1061         "color8",               NULL,           "color",        "",
1062         "color9",               NULL,           "color",        "",
1063         "color10",              NULL,           "color",        "",
1064         "color11",              NULL,           "color",        "",
1065         "color12",              NULL,           "color",        "",
1066         "color13",              NULL,           "color",        "",
1067         "color14",              NULL,           "color",        "",
1068         "color15",              NULL,           "color",        "",
1069         "backgroundBitmap",     "bitmap",       "string",       "background bmp file",
1070         "geometry",             "g",            "string",       "window layout. ( ex. 80x24+0+0 )",
1071         NULL,                   "iconic",       "boolean",      "start iconic",
1072         "font",                 "fn",           "string",       "text font name",
1073         "fontSize",             "fs",           "number",       "text font size",
1074         "scrollHide",           "sh",           "boolean",      "turn on/off scrollbar hide",
1075         "scrollRight",          "sr",           "boolean",      "turn on/off scrollbar right",
1076         "saveLines",            "sl",           "number",       "save lines",
1077         "internalBorder",       "b",            "number",       "internal border in pixels",
1078         "lineSpace",            "lsp",          "number",       "number of extra pixels between rows",
1079         "transp",               "tr",           "number",       "alpha 0 ~ 255",
1080         "transpColor",          "trc",          "color",        "color key",
1081         "topmost",              "top",          "boolean",      "always on top",
1082         "chdir",                "cd",           "string",       "set current dir",
1083         "exec",                 "x",            "string",       "exec shell",
1084         "title",                "tl",           "string",       "window title",
1085         "config",               "c",            "string",       "configration file",
1086         };
1087         unsigned int    i;
1088
1089         fprintf(stdout, "%s",
1090                 "ckw version " VERSION_STRING " , build " BUILDDATE_STRING "\n"
1091                 COPYRIGHT_STRING "\n"
1092                 "\n"
1093                 "Usage: ckw [options] [-c configration file] [-e command args]\n"
1094                 "\n");
1095
1096         if(isLong) {
1097                 fprintf(stdout, "%s", "where resources (long-options) include:\n");
1098                 for(i = 0 ; i < sizeof(str)/sizeof(str[0]) ; i+=4)
1099                         usage_fmtL(str[i+0], str[i+2]);
1100                 fprintf(stdout, "\n%s\n", "  -help to list options\n");
1101         }
1102         else {
1103                 fprintf(stdout, "%s", "where options include:\n");
1104                 for(i = 0 ; i < sizeof(str)/sizeof(str[0]) ; i+=4)
1105                         usage_fmtS(str[i+1], str[i+2], str[i+3]);
1106                 fprintf(stdout, "\n%s\n", "  --help to list long-options\n");
1107         }
1108 }
1109
1110 void    ckOpt::_loadXdefaults(const char *path)
1111 {
1112         char    buf[512];
1113         FILE    *fp;
1114         std::string app, name, value;
1115
1116         fopen_s(&fp, path, "r");
1117         if(!fp) return;
1118
1119         do {
1120                 buf[0] = buf[sizeof(buf)-1] = 0;
1121                 fgets(buf, sizeof(buf)-2, fp);
1122                 if(!buf[0] || buf[0] == '!')
1123                         continue;
1124
1125                 extract(buf, app, name, value);
1126
1127                 if(name.size() < 1 || value.size() < 1)
1128                         continue;
1129                 if(app.size() > 0 && strcasecmp(app.c_str(), "Ckw"))
1130                         continue;
1131
1132                 setOption(name.c_str(), value.c_str(), true);
1133         } while(!feof(fp));
1134         fclose(fp);
1135 }
1136
1137 void    ckOpt::setFile(const char *path /*=NULL*/)
1138 {
1139     if(path)
1140     {
1141         strcpy_s(m_config_file, path);
1142     } else
1143     {
1144         m_config_file[0] = '\0';
1145     }
1146 }
1147
1148 static bool getconfigfile(const char* env, char *cfgfile, char *path, int size)
1149 {
1150         if(GetEnvironmentVariableA(env, path, size)) {
1151                 sprintf_s(path, size, "%s\\%s", path, cfgfile);
1152                 if(PathFileExistsA(path) && !PathIsDirectoryA(path)) {
1153                         return true;
1154                 }
1155         }
1156         return false;
1157 }
1158
1159 void ckOpt::loadXdefaults()
1160 {
1161   char path[MAX_PATH+1];
1162
1163   if(m_config_file[0] == '\0')
1164   {
1165     char cfgfile[MAX_PATH] = "_";
1166
1167     if (0 != GetModuleFileNameA(NULL, path, MAX_PATH)) {
1168                 char szDrive[MAX_PATH];
1169                 char szDir[MAX_PATH];
1170                 char szFile[MAX_PATH];
1171                 char szBuf[MAX_PATH];
1172                 _splitpath_s(path, szDrive, szDir, szFile, szBuf);
1173                 strcat_s(cfgfile, szFile);
1174
1175                 path[0] = '\0';
1176                 // HOME or USERPROFILE
1177                 if (!getconfigfile("HOME", cfgfile, path, MAX_PATH)) {
1178                   getconfigfile("USERPROFILE", cfgfile, path, MAX_PATH);
1179                 }
1180                 if (path[0] != '\0') _loadXdefaults(path);
1181
1182                 // directory execute exists
1183                 _makepath_s(path, szDrive, szDir, cfgfile, NULL);
1184                 _loadXdefaults(path);
1185                 _makepath_s(path, szDrive, szDir, szFile, ".cfg");
1186                 _loadXdefaults(path);
1187     }
1188   }
1189   else
1190   {
1191     path[0] = '\0';
1192     strcpy_s(path, m_config_file);
1193     _loadXdefaults(path);
1194   }
1195
1196   if(GetEnvironmentVariableA("HOME", path, MAX_PATH)) {
1197     strcat_s(path, "\\.Xdefaults");
1198     _loadXdefaults(path);
1199   }
1200 }
1201
1202 bool    ckOpt::set(int argc, char *argv[])
1203 {
1204         int     skip;
1205         int     i = 1;
1206
1207         while(i < argc) {
1208                 if(strcmp("-e", argv[i]) == 0) {
1209                         if(++i >= argc) {
1210                                 usage(false);
1211                                 return(false);
1212                         }
1213                         cmdsMake(argc-i, argv+i);
1214                         return(true);
1215                 }
1216                 if(strcmp("-help", argv[i]) == 0) {
1217                         usage(false);
1218                         return(false);
1219                 }
1220                 if(strcmp("--help", argv[i]) == 0) {
1221                         usage(true);
1222                         return(false);
1223                 }
1224
1225                 skip = setOption(argv[i], (i+1<argc) ? argv[i+1] : NULL, false);
1226                 if(skip < 1) {
1227                         usage(false);
1228                         return(false);
1229                 }
1230                 i += skip;
1231         }
1232         return(true);
1233 }
1234
1235 /* EOF */