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 |
