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