0
|
1 // Filename : main.cpp
|
1
|
2 // Last Change: 29-Jul-2013.
|
0
|
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
|
1
|
130 image.Create( 19, 19, false );
|
|
131 image.SetRGB( wxRect( 0, 0, 19, 19 ), -1, -1, -1 );
|
0
|
132 wxImage::AddHandler( new wxPNGHandler );
|
|
133
|
|
134 return true;
|
|
135 }
|
|
136
|
|
137 int MyApp::OnExit()
|
|
138 {
|
|
139 return 0;
|
|
140 }
|
|
141
|
|
142 int MyApp::OnRun()
|
|
143 {
|
|
144 /*
|
|
145 int exitcode = wxApp::OnRun();
|
|
146 if ( exitcode != 0 ) return exitcode;
|
|
147 */
|
|
148 InitImageData();
|
|
149 SetImageData1( ColorName( color1 ) );
|
|
150 SetImageData2( ColorName( color2 ) );
|
|
151 SetImageData3( ColorName( color3 ) );
|
|
152 SetImageData4( ColorName( color4 ) );
|
|
153 SetImageData5( ColorName( color5 ) );
|
|
154 SetImageData6( ColorName( color6 ) );
|
|
155 SetImageData7( ColorName( color7 ) );
|
|
156 SetImageData8( ColorName( color8 ) );
|
|
157 SetImageData9( ColorName( color9 ) );
|
|
158 SetImageDataA( ColorName( colorA ) );
|
|
159 SetImageDataB( ColorName( colorB ) );
|
|
160 SetImageDataC( ColorName( colorC ) );
|
|
161 SetImageDataD( ColorName( colorD ) );
|
|
162 SetImageDataE( ColorName( colorE ) );
|
|
163 SetImageDataF( ColorName( colorF ) );
|
|
164 SetImageDataG( ColorName( colorG ) );
|
|
165 SetImageDataH( ColorName( colorH ) );
|
|
166 SetImageDataI( ColorName( colorI ) );
|
|
167 SetImageDataJ( ColorName( colorJ ) );
|
|
168 SetImageDataK( ColorName( colorK ) );
|
|
169 SetImageDataL( ColorName( colorL ) );
|
|
170 image.SaveFile( wxT("output.png"), wxBITMAP_TYPE_PNG );
|
|
171 }
|
|
172
|
|
173 void MyApp::OnInitCmdLine( wxCmdLineParser& parser )
|
|
174 {
|
|
175 parser.SetDesc( g_cmdLineDesc );
|
|
176 parser.SetSwitchChars( wxT("-") );
|
|
177
|
|
178 parser.AddUsageText( wxT("\n[overview]") );
|
|
179 parser.AddUsageText( wxT(" A B C" ) );
|
|
180 parser.AddUsageText( wxT(" --- --- ---" ) );
|
|
181 parser.AddUsageText( wxT(" L | 1 | 2 | 3 | D") );
|
|
182 parser.AddUsageText( wxT(" --- --- ---" ) );
|
|
183 parser.AddUsageText( wxT(" K | 4 | 5 | 6 | E") );
|
|
184 parser.AddUsageText( wxT(" --- --- ---" ) );
|
|
185 parser.AddUsageText( wxT(" J | 7 | 8 | 9 | F") );
|
|
186 parser.AddUsageText( wxT(" --- --- --- ") );
|
|
187 parser.AddUsageText( wxT(" I H G ") );
|
|
188 parser.AddUsageText( wxT("\n[color]") );
|
|
189 parser.AddUsageText( wxT(" w: white y: yellow o: orange r: red b: blue g: gree") );
|
|
190 }
|
|
191
|
|
192 bool MyApp::OnCmdLineParsed( wxCmdLineParser& parser )
|
|
193 {
|
|
194 parser.Found( wxT("1"), &color1 );
|
|
195 parser.Found( wxT("2"), &color2 );
|
|
196 parser.Found( wxT("3"), &color3 );
|
|
197 parser.Found( wxT("4"), &color4 );
|
|
198 parser.Found( wxT("5"), &color5 );
|
|
199 parser.Found( wxT("6"), &color6 );
|
|
200 parser.Found( wxT("7"), &color7 );
|
|
201 parser.Found( wxT("8"), &color8 );
|
|
202 parser.Found( wxT("9"), &color9 );
|
|
203 parser.Found( wxT("a"), &colorA );
|
|
204 parser.Found( wxT("b"), &colorB );
|
|
205 parser.Found( wxT("c"), &colorC );
|
|
206 parser.Found( wxT("d"), &colorD );
|
|
207 parser.Found( wxT("e"), &colorE );
|
|
208 parser.Found( wxT("f"), &colorF );
|
|
209 parser.Found( wxT("g"), &colorG );
|
|
210 parser.Found( wxT("h"), &colorH );
|
|
211 parser.Found( wxT("i"), &colorI );
|
|
212 parser.Found( wxT("j"), &colorJ );
|
|
213 parser.Found( wxT("k"), &colorK );
|
|
214 parser.Found( wxT("l"), &colorL );
|
|
215 return true;
|
|
216 }
|
|
217
|
|
218 void MyApp::InitImageData() { SetImageData( 3, 3, 13, 13, wxT("black") ); }
|
|
219 void MyApp::SetImageData1( wxString color ) { SetImageData( 4, 4, 3, 3, color ); }
|
|
220 void MyApp::SetImageData2( wxString color ) { SetImageData( 8, 4, 3, 3, color ); }
|
|
221 void MyApp::SetImageData3( wxString color ) { SetImageData( 12, 4, 3, 3, color ); }
|
|
222 void MyApp::SetImageData4( wxString color ) { SetImageData( 4, 8, 3, 3, color ); }
|
|
223 void MyApp::SetImageData5( wxString color ) { SetImageData( 8, 8, 3, 3, color ); }
|
|
224 void MyApp::SetImageData6( wxString color ) { SetImageData( 12, 8, 3, 3, color ); }
|
|
225 void MyApp::SetImageData7( wxString color ) { SetImageData( 4, 12, 3, 3, color ); }
|
|
226 void MyApp::SetImageData8( wxString color ) { SetImageData( 8, 12, 3, 3, color ); }
|
|
227 void MyApp::SetImageData9( wxString color ) { SetImageData( 12, 12, 3, 3, color ); }
|
|
228 void MyApp::SetImageDataA( wxString color ) { SetImageData( 4, 1, 3, 1, color ); }
|
|
229 void MyApp::SetImageDataB( wxString color ) { SetImageData( 8, 1, 3, 1, color ); }
|
|
230 void MyApp::SetImageDataC( wxString color ) { SetImageData( 12, 1, 3, 1, color ); }
|
|
231 void MyApp::SetImageDataD( wxString color ) { SetImageData( 17, 4, 1, 3, color ); }
|
|
232 void MyApp::SetImageDataE( wxString color ) { SetImageData( 17, 8, 1, 3, color ); }
|
|
233 void MyApp::SetImageDataF( wxString color ) { SetImageData( 17, 12, 1, 3, color ); }
|
|
234 void MyApp::SetImageDataG( wxString color ) { SetImageData( 12, 17, 3, 1, color ); }
|
|
235 void MyApp::SetImageDataH( wxString color ) { SetImageData( 8, 17, 3, 1, color ); }
|
|
236 void MyApp::SetImageDataI( wxString color ) { SetImageData( 4, 17, 3, 1, color ); }
|
|
237 void MyApp::SetImageDataJ( wxString color ) { SetImageData( 1, 12, 1, 3, color ); }
|
|
238 void MyApp::SetImageDataK( wxString color ) { SetImageData( 1, 8, 1, 3, color ); }
|
|
239 void MyApp::SetImageDataL( wxString color ) { SetImageData( 1, 4, 1, 3, color ); }
|
|
240
|
|
241 void MyApp::SetImageData( int x, int y, int w, int h, wxString color )
|
|
242 {
|
|
243 wxRect rect( x, y, w, h );
|
|
244 if ( color.IsSameAs( wxT("black"), true ) ) image.SetRGB( rect, 0, 0, 0 );
|
|
245 else if ( color.IsSameAs( wxT("white"), true ) ) image.SetRGB( rect, 255, 255, 255 );
|
|
246 else if ( color.IsSameAs( wxT("yellow"), true ) ) image.SetRGB( rect, 255, 255, 0 );
|
|
247 else if ( color.IsSameAs( wxT("orange"), true ) ) image.SetRGB( rect, 255, 127, 0 );
|
|
248 else if ( color.IsSameAs( wxT("red"), true ) ) image.SetRGB( rect, 255, 0, 0 );
|
|
249 else if ( color.IsSameAs( wxT("blue"), true ) ) image.SetRGB( rect, 0, 0, 255 );
|
|
250 else if ( color.IsSameAs( wxT("green"), true ) ) image.SetRGB( rect, 0, 255, 0 );
|
|
251 }
|
|
252
|
|
253 wxString MyApp::ColorName( wxString color )
|
|
254 {
|
|
255 wxString name;
|
|
256
|
|
257 if ( color.IsSameAs( wxT("w"), false ) ) name = wxT( "white" );
|
|
258 else if ( color.IsSameAs( wxT("r"), false ) ) name = wxT( "red" );
|
|
259 else if ( color.IsSameAs( wxT("b"), false ) ) name = wxT( "blue" );
|
|
260 else if ( color.IsSameAs( wxT("y"), false ) ) name = wxT( "yellow" );
|
|
261 else if ( color.IsSameAs( wxT("o"), false ) ) name = wxT( "orange" );
|
|
262 else if ( color.IsSameAs( wxT("g"), false ) ) name = wxT( "green" );
|
|
263
|
|
264 return name;
|
|
265 }
|
|
266
|