Mercurial > mercurial > hgweb_rubikcolor.cgi
view main.cpp @ 1:a14406960539
Run on windows.
author | pyon@macmini |
---|---|
date | Tue, 30 Jul 2013 05:51:47 +0900 |
parents | 47f1298cc11d |
children | 9675e40f5b76 |
line wrap: on
line source
// Filename : main.cpp // Last Change: 29-Jul-2013. // #include "wx/wxprec.h" #ifndef WX_PRECOMP #include "wx/wx.h" #endif #include "wx/cmdline.h" #include <wx/string.h> #include <wx/bitmap.h> #include <wx/image.h> // private classes // Define a new application type, each program should derive a class from wxApp class MyApp : public wxApp { DECLARE_CLASS( MyApp ) public: MyApp(); ~MyApp(); virtual bool OnInit(); virtual int OnExit(); virtual int OnRun(); virtual void OnInitCmdLine( wxCmdLineParser& parser ); virtual bool OnCmdLineParsed( wxCmdLineParser& parser ); private: void InitImageData(); void SetImageData1( wxString color ); void SetImageData2( wxString color ); void SetImageData3( wxString color ); void SetImageData4( wxString color ); void SetImageData5( wxString color ); void SetImageData6( wxString color ); void SetImageData7( wxString color ); void SetImageData8( wxString color ); void SetImageData9( wxString color ); void SetImageDataA( wxString color ); void SetImageDataB( wxString color ); void SetImageDataC( wxString color ); void SetImageDataD( wxString color ); void SetImageDataE( wxString color ); void SetImageDataF( wxString color ); void SetImageDataG( wxString color ); void SetImageDataH( wxString color ); void SetImageDataI( wxString color ); void SetImageDataJ( wxString color ); void SetImageDataK( wxString color ); void SetImageDataL( wxString color ); void SetImageData( int x, int y, int w, int h, wxString color ); wxString ColorName( wxString color ); wxImage image; wxString color1; wxString color2; wxString color3; wxString color4; wxString color5; wxString color6; wxString color7; wxString color8; wxString color9; wxString colorA; wxString colorB; wxString colorC; wxString colorD; wxString colorE; wxString colorF; wxString colorG; wxString colorH; wxString colorI; wxString colorJ; wxString colorK; wxString colorL; }; static const wxCmdLineEntryDesc g_cmdLineDesc [] = { { wxCMD_LINE_SWITCH, "v", "version", "display version" , wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP }, { wxCMD_LINE_OPTION, "1", "color1", "1 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "2", "color2", "2 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "3", "color3", "3 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "4", "color4", "4 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "5", "color5", "5 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "6", "color6", "6 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "7", "color7", "7 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "8", "color8", "8 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "9", "color9", "9 color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "a", "colora", "A color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "b", "colorb", "B color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "c", "colorc", "C color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "d", "colord", "D color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "e", "colore", "E color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "f", "colorf", "F color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "g", "colorg", "G color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "h", "colorh", "H color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "i", "colori", "I color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "j", "colorj", "J color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "k", "colork", "K color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_OPTION, "l", "colorl", "L color", wxCMD_LINE_VAL_STRING, wxCMD_LINE_OPTION_MANDATORY }, { wxCMD_LINE_NONE } }; unsigned char *data; DECLARE_APP(MyApp) IMPLEMENT_APP(MyApp) IMPLEMENT_CLASS( MyApp, wxApp ) // constructor MyApp::MyApp() { } MyApp::~MyApp() { } bool MyApp::OnInit() { if ( !wxApp::OnInit() ) return false; wxCmdLineParser( g_cmdLineDesc, argc, argv ); image.Create( 19, 19, false ); image.SetRGB( wxRect( 0, 0, 19, 19 ), -1, -1, -1 ); wxImage::AddHandler( new wxPNGHandler ); return true; } int MyApp::OnExit() { return 0; } int MyApp::OnRun() { /* int exitcode = wxApp::OnRun(); if ( exitcode != 0 ) return exitcode; */ InitImageData(); SetImageData1( ColorName( color1 ) ); SetImageData2( ColorName( color2 ) ); SetImageData3( ColorName( color3 ) ); SetImageData4( ColorName( color4 ) ); SetImageData5( ColorName( color5 ) ); SetImageData6( ColorName( color6 ) ); SetImageData7( ColorName( color7 ) ); SetImageData8( ColorName( color8 ) ); SetImageData9( ColorName( color9 ) ); SetImageDataA( ColorName( colorA ) ); SetImageDataB( ColorName( colorB ) ); SetImageDataC( ColorName( colorC ) ); SetImageDataD( ColorName( colorD ) ); SetImageDataE( ColorName( colorE ) ); SetImageDataF( ColorName( colorF ) ); SetImageDataG( ColorName( colorG ) ); SetImageDataH( ColorName( colorH ) ); SetImageDataI( ColorName( colorI ) ); SetImageDataJ( ColorName( colorJ ) ); SetImageDataK( ColorName( colorK ) ); SetImageDataL( ColorName( colorL ) ); image.SaveFile( wxT("output.png"), wxBITMAP_TYPE_PNG ); } void MyApp::OnInitCmdLine( wxCmdLineParser& parser ) { parser.SetDesc( g_cmdLineDesc ); parser.SetSwitchChars( wxT("-") ); parser.AddUsageText( wxT("\n[overview]") ); parser.AddUsageText( wxT(" A B C" ) ); parser.AddUsageText( wxT(" --- --- ---" ) ); parser.AddUsageText( wxT(" L | 1 | 2 | 3 | D") ); parser.AddUsageText( wxT(" --- --- ---" ) ); parser.AddUsageText( wxT(" K | 4 | 5 | 6 | E") ); parser.AddUsageText( wxT(" --- --- ---" ) ); parser.AddUsageText( wxT(" J | 7 | 8 | 9 | F") ); parser.AddUsageText( wxT(" --- --- --- ") ); parser.AddUsageText( wxT(" I H G ") ); parser.AddUsageText( wxT("\n[color]") ); parser.AddUsageText( wxT(" w: white y: yellow o: orange r: red b: blue g: gree") ); } bool MyApp::OnCmdLineParsed( wxCmdLineParser& parser ) { parser.Found( wxT("1"), &color1 ); parser.Found( wxT("2"), &color2 ); parser.Found( wxT("3"), &color3 ); parser.Found( wxT("4"), &color4 ); parser.Found( wxT("5"), &color5 ); parser.Found( wxT("6"), &color6 ); parser.Found( wxT("7"), &color7 ); parser.Found( wxT("8"), &color8 ); parser.Found( wxT("9"), &color9 ); parser.Found( wxT("a"), &colorA ); parser.Found( wxT("b"), &colorB ); parser.Found( wxT("c"), &colorC ); parser.Found( wxT("d"), &colorD ); parser.Found( wxT("e"), &colorE ); parser.Found( wxT("f"), &colorF ); parser.Found( wxT("g"), &colorG ); parser.Found( wxT("h"), &colorH ); parser.Found( wxT("i"), &colorI ); parser.Found( wxT("j"), &colorJ ); parser.Found( wxT("k"), &colorK ); parser.Found( wxT("l"), &colorL ); return true; } void MyApp::InitImageData() { SetImageData( 3, 3, 13, 13, wxT("black") ); } void MyApp::SetImageData1( wxString color ) { SetImageData( 4, 4, 3, 3, color ); } void MyApp::SetImageData2( wxString color ) { SetImageData( 8, 4, 3, 3, color ); } void MyApp::SetImageData3( wxString color ) { SetImageData( 12, 4, 3, 3, color ); } void MyApp::SetImageData4( wxString color ) { SetImageData( 4, 8, 3, 3, color ); } void MyApp::SetImageData5( wxString color ) { SetImageData( 8, 8, 3, 3, color ); } void MyApp::SetImageData6( wxString color ) { SetImageData( 12, 8, 3, 3, color ); } void MyApp::SetImageData7( wxString color ) { SetImageData( 4, 12, 3, 3, color ); } void MyApp::SetImageData8( wxString color ) { SetImageData( 8, 12, 3, 3, color ); } void MyApp::SetImageData9( wxString color ) { SetImageData( 12, 12, 3, 3, color ); } void MyApp::SetImageDataA( wxString color ) { SetImageData( 4, 1, 3, 1, color ); } void MyApp::SetImageDataB( wxString color ) { SetImageData( 8, 1, 3, 1, color ); } void MyApp::SetImageDataC( wxString color ) { SetImageData( 12, 1, 3, 1, color ); } void MyApp::SetImageDataD( wxString color ) { SetImageData( 17, 4, 1, 3, color ); } void MyApp::SetImageDataE( wxString color ) { SetImageData( 17, 8, 1, 3, color ); } void MyApp::SetImageDataF( wxString color ) { SetImageData( 17, 12, 1, 3, color ); } void MyApp::SetImageDataG( wxString color ) { SetImageData( 12, 17, 3, 1, color ); } void MyApp::SetImageDataH( wxString color ) { SetImageData( 8, 17, 3, 1, color ); } void MyApp::SetImageDataI( wxString color ) { SetImageData( 4, 17, 3, 1, color ); } void MyApp::SetImageDataJ( wxString color ) { SetImageData( 1, 12, 1, 3, color ); } void MyApp::SetImageDataK( wxString color ) { SetImageData( 1, 8, 1, 3, color ); } void MyApp::SetImageDataL( wxString color ) { SetImageData( 1, 4, 1, 3, color ); } void MyApp::SetImageData( int x, int y, int w, int h, wxString color ) { wxRect rect( x, y, w, h ); if ( color.IsSameAs( wxT("black"), true ) ) image.SetRGB( rect, 0, 0, 0 ); else if ( color.IsSameAs( wxT("white"), true ) ) image.SetRGB( rect, 255, 255, 255 ); else if ( color.IsSameAs( wxT("yellow"), true ) ) image.SetRGB( rect, 255, 255, 0 ); else if ( color.IsSameAs( wxT("orange"), true ) ) image.SetRGB( rect, 255, 127, 0 ); else if ( color.IsSameAs( wxT("red"), true ) ) image.SetRGB( rect, 255, 0, 0 ); else if ( color.IsSameAs( wxT("blue"), true ) ) image.SetRGB( rect, 0, 0, 255 ); else if ( color.IsSameAs( wxT("green"), true ) ) image.SetRGB( rect, 0, 255, 0 ); } wxString MyApp::ColorName( wxString color ) { wxString name; if ( color.IsSameAs( wxT("w"), false ) ) name = wxT( "white" ); else if ( color.IsSameAs( wxT("r"), false ) ) name = wxT( "red" ); else if ( color.IsSameAs( wxT("b"), false ) ) name = wxT( "blue" ); else if ( color.IsSameAs( wxT("y"), false ) ) name = wxT( "yellow" ); else if ( color.IsSameAs( wxT("o"), false ) ) name = wxT( "orange" ); else if ( color.IsSameAs( wxT("g"), false ) ) name = wxT( "green" ); return name; }