Mercurial > mercurial > hgweb_rubikcolor.cgi
comparison main.cpp @ 0:47f1298cc11d
first release.
author | pyon@macmini |
---|---|
date | Sun, 28 Jul 2013 23:01:57 +0900 |
parents | |
children | a14406960539 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:47f1298cc11d |
---|---|
1 // Filename : main.cpp | |
2 // Last Change: 28-Jul-2013. | |
3 // | |
4 #include "wx/wxprec.h" | |
5 #ifndef WX_PRECOMP | |
6 #include "wx/wx.h" | |
7 #endif | |
8 #include "wx/cmdline.h" | |
9 #include <wx/string.h> | |
10 #include <wx/bitmap.h> | |
11 #include <wx/image.h> | |
12 | |
13 | |
14 // private classes | |
15 // Define a new application type, each program should derive a class from wxApp | |
16 class MyApp : public wxApp | |
17 { | |
18 DECLARE_CLASS( MyApp ) | |
19 public: | |
20 MyApp(); | |
21 ~MyApp(); | |
22 | |
23 virtual bool OnInit(); | |
24 virtual int OnExit(); | |
25 virtual int OnRun(); | |
26 virtual void OnInitCmdLine( wxCmdLineParser& parser ); | |
27 virtual bool OnCmdLineParsed( wxCmdLineParser& parser ); | |
28 | |
29 private: | |
30 void InitImageData(); | |
31 void SetImageData1( wxString color ); | |
32 void SetImageData2( wxString color ); | |
33 void SetImageData3( wxString color ); | |
34 void SetImageData4( wxString color ); | |
35 void SetImageData5( wxString color ); | |
36 void SetImageData6( wxString color ); | |
37 void SetImageData7( wxString color ); | |
38 void SetImageData8( wxString color ); | |
39 void SetImageData9( wxString color ); | |
40 void SetImageDataA( wxString color ); | |
41 void SetImageDataB( wxString color ); | |
42 void SetImageDataC( wxString color ); | |
43 void SetImageDataD( wxString color ); | |
44 void SetImageDataE( wxString color ); | |
45 void SetImageDataF( wxString color ); | |
46 void SetImageDataG( wxString color ); | |
47 void SetImageDataH( wxString color ); | |
48 void SetImageDataI( wxString color ); | |
49 void SetImageDataJ( wxString color ); | |
50 void SetImageDataK( wxString color ); | |
51 void SetImageDataL( wxString color ); | |
52 void SetImageData( int x, int y, int w, int h, wxString color ); | |
53 wxString ColorName( wxString color ); | |
54 | |
55 wxImage image; | |
56 wxString color1; | |
57 wxString color2; | |
58 wxString color3; | |
59 wxString color4; | |
60 wxString color5; | |
61 wxString color6; | |
62 wxString color7; | |
63 wxString color8; | |
64 wxString color9; | |
65 wxString colorA; | |
66 wxString colorB; | |
67 wxString colorC; | |
68 wxString colorD; | |
69 wxString colorE; | |
70 wxString colorF; | |
71 wxString colorG; | |
72 wxString colorH; | |
73 wxString colorI; | |
74 wxString colorJ; | |
75 wxString colorK; | |
76 wxString colorL; | |
77 }; | |
78 | |
79 static const wxCmdLineEntryDesc g_cmdLineDesc [] = | |
80 { | |
81 { wxCMD_LINE_SWITCH, "v", "version", "display version" , wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP }, | |
82 { wxCMD_LINE_OPTION, "1", "color1", "1 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
83 { wxCMD_LINE_OPTION, "2", "color2", "2 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
84 { wxCMD_LINE_OPTION, "3", "color3", "3 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
85 { wxCMD_LINE_OPTION, "4", "color4", "4 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
86 { wxCMD_LINE_OPTION, "5", "color5", "5 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
87 { wxCMD_LINE_OPTION, "6", "color6", "6 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
88 { wxCMD_LINE_OPTION, "7", "color7", "7 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
89 { wxCMD_LINE_OPTION, "8", "color8", "8 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
90 { wxCMD_LINE_OPTION, "9", "color9", "9 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
91 { wxCMD_LINE_OPTION, "a", "colora", "A color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
92 { wxCMD_LINE_OPTION, "b", "colorb", "B color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
93 { wxCMD_LINE_OPTION, "c", "colorc", "C color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
94 { wxCMD_LINE_OPTION, "d", "colord", "D color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
95 { wxCMD_LINE_OPTION, "e", "colore", "E color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
96 { wxCMD_LINE_OPTION, "f", "colorf", "F color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
97 { wxCMD_LINE_OPTION, "g", "colorg", "G color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
98 { wxCMD_LINE_OPTION, "h", "colorh", "H color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
99 { wxCMD_LINE_OPTION, "i", "colori", "I color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
100 { wxCMD_LINE_OPTION, "j", "colorj", "J color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
101 { wxCMD_LINE_OPTION, "k", "colork", "K color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
102 { wxCMD_LINE_OPTION, "l", "colorl", "L color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, | |
103 { wxCMD_LINE_NONE } | |
104 | |
105 }; | |
106 | |
107 unsigned char *data; | |
108 | |
109 DECLARE_APP(MyApp) | |
110 | |
111 | |
112 IMPLEMENT_APP(MyApp) | |
113 | |
114 IMPLEMENT_CLASS( MyApp, wxApp ) | |
115 | |
116 // constructor | |
117 MyApp::MyApp() | |
118 { | |
119 } | |
120 MyApp::~MyApp() | |
121 { | |
122 } | |
123 | |
124 bool MyApp::OnInit() | |
125 { | |
126 if ( !wxApp::OnInit() ) return false; | |
127 | |
128 wxCmdLineParser( g_cmdLineDesc, argc, argv ); | |
129 | |
130 image.Create( 19, 19, true ); | |
131 wxImage::AddHandler( new wxPNGHandler ); | |
132 | |
133 return true; | |
134 } | |
135 | |
136 int MyApp::OnExit() | |
137 { | |
138 return 0; | |
139 } | |
140 | |
141 int MyApp::OnRun() | |
142 { | |
143 /* | |
144 int exitcode = wxApp::OnRun(); | |
145 if ( exitcode != 0 ) return exitcode; | |
146 */ | |
147 InitImageData(); | |
148 SetImageData1( ColorName( color1 ) ); | |
149 SetImageData2( ColorName( color2 ) ); | |
150 SetImageData3( ColorName( color3 ) ); | |
151 SetImageData4( ColorName( color4 ) ); | |
152 SetImageData5( ColorName( color5 ) ); | |
153 SetImageData6( ColorName( color6 ) ); | |
154 SetImageData7( ColorName( color7 ) ); | |
155 SetImageData8( ColorName( color8 ) ); | |
156 SetImageData9( ColorName( color9 ) ); | |
157 SetImageDataA( ColorName( colorA ) ); | |
158 SetImageDataB( ColorName( colorB ) ); | |
159 SetImageDataC( ColorName( colorC ) ); | |
160 SetImageDataD( ColorName( colorD ) ); | |
161 SetImageDataE( ColorName( colorE ) ); | |
162 SetImageDataF( ColorName( colorF ) ); | |
163 SetImageDataG( ColorName( colorG ) ); | |
164 SetImageDataH( ColorName( colorH ) ); | |
165 SetImageDataI( ColorName( colorI ) ); | |
166 SetImageDataJ( ColorName( colorJ ) ); | |
167 SetImageDataK( ColorName( colorK ) ); | |
168 SetImageDataL( ColorName( colorL ) ); | |
169 image.SaveFile( wxT("output.png"), wxBITMAP_TYPE_PNG ); | |
170 } | |
171 | |
172 void MyApp::OnInitCmdLine( wxCmdLineParser& parser ) | |
173 { | |
174 parser.SetDesc( g_cmdLineDesc ); | |
175 parser.SetSwitchChars( wxT("-") ); | |
176 | |
177 parser.AddUsageText( wxT("\n[overview]") ); | |
178 parser.AddUsageText( wxT(" A B C" ) ); | |
179 parser.AddUsageText( wxT(" --- --- ---" ) ); | |
180 parser.AddUsageText( wxT(" L | 1 | 2 | 3 | D") ); | |
181 parser.AddUsageText( wxT(" --- --- ---" ) ); | |
182 parser.AddUsageText( wxT(" K | 4 | 5 | 6 | E") ); | |
183 parser.AddUsageText( wxT(" --- --- ---" ) ); | |
184 parser.AddUsageText( wxT(" J | 7 | 8 | 9 | F") ); | |
185 parser.AddUsageText( wxT(" --- --- --- ") ); | |
186 parser.AddUsageText( wxT(" I H G ") ); | |
187 parser.AddUsageText( wxT("\n[color]") ); | |
188 parser.AddUsageText( wxT(" w: white y: yellow o: orange r: red b: blue g: gree") ); | |
189 } | |
190 | |
191 bool MyApp::OnCmdLineParsed( wxCmdLineParser& parser ) | |
192 { | |
193 parser.Found( wxT("1"), &color1 ); | |
194 parser.Found( wxT("2"), &color2 ); | |
195 parser.Found( wxT("3"), &color3 ); | |
196 parser.Found( wxT("4"), &color4 ); | |
197 parser.Found( wxT("5"), &color5 ); | |
198 parser.Found( wxT("6"), &color6 ); | |
199 parser.Found( wxT("7"), &color7 ); | |
200 parser.Found( wxT("8"), &color8 ); | |
201 parser.Found( wxT("9"), &color9 ); | |
202 parser.Found( wxT("a"), &colorA ); | |
203 parser.Found( wxT("b"), &colorB ); | |
204 parser.Found( wxT("c"), &colorC ); | |
205 parser.Found( wxT("d"), &colorD ); | |
206 parser.Found( wxT("e"), &colorE ); | |
207 parser.Found( wxT("f"), &colorF ); | |
208 parser.Found( wxT("g"), &colorG ); | |
209 parser.Found( wxT("h"), &colorH ); | |
210 parser.Found( wxT("i"), &colorI ); | |
211 parser.Found( wxT("j"), &colorJ ); | |
212 parser.Found( wxT("k"), &colorK ); | |
213 parser.Found( wxT("l"), &colorL ); | |
214 return true; | |
215 } | |
216 | |
217 void MyApp::InitImageData() { SetImageData( 3, 3, 13, 13, wxT("black") ); } | |
218 void MyApp::SetImageData1( wxString color ) { SetImageData( 4, 4, 3, 3, color ); } | |
219 void MyApp::SetImageData2( wxString color ) { SetImageData( 8, 4, 3, 3, color ); } | |
220 void MyApp::SetImageData3( wxString color ) { SetImageData( 12, 4, 3, 3, color ); } | |
221 void MyApp::SetImageData4( wxString color ) { SetImageData( 4, 8, 3, 3, color ); } | |
222 void MyApp::SetImageData5( wxString color ) { SetImageData( 8, 8, 3, 3, color ); } | |
223 void MyApp::SetImageData6( wxString color ) { SetImageData( 12, 8, 3, 3, color ); } | |
224 void MyApp::SetImageData7( wxString color ) { SetImageData( 4, 12, 3, 3, color ); } | |
225 void MyApp::SetImageData8( wxString color ) { SetImageData( 8, 12, 3, 3, color ); } | |
226 void MyApp::SetImageData9( wxString color ) { SetImageData( 12, 12, 3, 3, color ); } | |
227 void MyApp::SetImageDataA( wxString color ) { SetImageData( 4, 1, 3, 1, color ); } | |
228 void MyApp::SetImageDataB( wxString color ) { SetImageData( 8, 1, 3, 1, color ); } | |
229 void MyApp::SetImageDataC( wxString color ) { SetImageData( 12, 1, 3, 1, color ); } | |
230 void MyApp::SetImageDataD( wxString color ) { SetImageData( 17, 4, 1, 3, color ); } | |
231 void MyApp::SetImageDataE( wxString color ) { SetImageData( 17, 8, 1, 3, color ); } | |
232 void MyApp::SetImageDataF( wxString color ) { SetImageData( 17, 12, 1, 3, color ); } | |
233 void MyApp::SetImageDataG( wxString color ) { SetImageData( 12, 17, 3, 1, color ); } | |
234 void MyApp::SetImageDataH( wxString color ) { SetImageData( 8, 17, 3, 1, color ); } | |
235 void MyApp::SetImageDataI( wxString color ) { SetImageData( 4, 17, 3, 1, color ); } | |
236 void MyApp::SetImageDataJ( wxString color ) { SetImageData( 1, 12, 1, 3, color ); } | |
237 void MyApp::SetImageDataK( wxString color ) { SetImageData( 1, 8, 1, 3, color ); } | |
238 void MyApp::SetImageDataL( wxString color ) { SetImageData( 1, 4, 1, 3, color ); } | |
239 | |
240 void MyApp::SetImageData( int x, int y, int w, int h, wxString color ) | |
241 { | |
242 wxRect rect( x, y, w, h ); | |
243 if ( color.IsSameAs( wxT("black"), true ) ) image.SetRGB( rect, 0, 0, 0 ); | |
244 else if ( color.IsSameAs( wxT("white"), true ) ) image.SetRGB( rect, 255, 255, 255 ); | |
245 else if ( color.IsSameAs( wxT("yellow"), true ) ) image.SetRGB( rect, 255, 255, 0 ); | |
246 else if ( color.IsSameAs( wxT("orange"), true ) ) image.SetRGB( rect, 255, 127, 0 ); | |
247 else if ( color.IsSameAs( wxT("red"), true ) ) image.SetRGB( rect, 255, 0, 0 ); | |
248 else if ( color.IsSameAs( wxT("blue"), true ) ) image.SetRGB( rect, 0, 0, 255 ); | |
249 else if ( color.IsSameAs( wxT("green"), true ) ) image.SetRGB( rect, 0, 255, 0 ); | |
250 } | |
251 | |
252 wxString MyApp::ColorName( wxString color ) | |
253 { | |
254 wxString name; | |
255 | |
256 if ( color.IsSameAs( wxT("w"), false ) ) name = wxT( "white" ); | |
257 else if ( color.IsSameAs( wxT("r"), false ) ) name = wxT( "red" ); | |
258 else if ( color.IsSameAs( wxT("b"), false ) ) name = wxT( "blue" ); | |
259 else if ( color.IsSameAs( wxT("y"), false ) ) name = wxT( "yellow" ); | |
260 else if ( color.IsSameAs( wxT("o"), false ) ) name = wxT( "orange" ); | |
261 else if ( color.IsSameAs( wxT("g"), false ) ) name = wxT( "green" ); | |
262 | |
263 return name; | |
264 } | |
265 |