Mercurial > mercurial > hgweb_rubikcolor.cgi
changeset 0:47f1298cc11d
first release.
author | pyon@macmini |
---|---|
date | Sun, 28 Jul 2013 23:01:57 +0900 |
parents | |
children | a14406960539 |
files | Makefile main.cpp |
diffstat | 2 files changed, 317 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Makefile Sun Jul 28 23:01:57 2013 +0900 @@ -0,0 +1,52 @@ +# Makefile for wxWidgets Application +# Last Change: 28-Jul-2013. +# by Takayuki Mutoh +# + +PROGNAME = rubikcolor + +### Variables ### +CXX = g++ + +# For Microsoft Windows +ifdef COMSPEC +WXCXXFLAGS = -I/local/lib/wx/include/msw-unicode-static-2.9 -I/local/include/wx-2.9 -D_LARGEFILE_SOURCE=unknown -D__WXMSW__ -mthreads +WXLIBS = -L/local/lib -Wl,--subsystem,windows -mwindows /local/lib/libwx_mswu_richtext-2.9.a /local/lib/libwx_mswu_xrc-2.9.a /local/lib/libwx_mswu_webview-2.9.a /local/lib/libwx_mswu_qa-2.9.a /local/lib/libwx_baseu_net-2.9.a /local/lib/libwx_mswu_html-2.9.a /local/lib/libwx_mswu_adv-2.9.a /local/lib/libwx_mswu_core-2.9.a /local/lib/libwx_baseu_xml-2.9.a /local/lib/libwx_baseu-2.9.a -lwxregexu-2.9 -lwxexpat-2.9 -lwxtiff-2.9 -lwxjpeg-2.9 -lwxpng-2.9 -lwxzlib-2.9 -lrpcrt4 -loleaut32 -lole32 -luuid -lwinspool -lwinmm -lshell32 -lcomctl32 -lcomdlg32 -ladvapi32 -lwsock32 -lgdi32 +EXECUTABLE = $(PROGNAME).exe + +# For Apple OSX +else +WXCXXFLAGS = -I/opt/local/lib/wx/include/osx_cocoa-unicode-2.9 -I/opt/local/include/wx-2.9 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXMAC__ -D__WXOSX__ -D__WXOSX_COCOA__ +WXLIBS = -L/opt/local/lib -lwx_osx_cocoau_core-2.9 -lwx_baseu-2.9 + +EXECUTABLE = $(PROGNAME).app/Contents/Pkginfo + +endif + +CXXFLAGS = $(WXCXXFLAGS) +LIBS = $(WXLIBS) -static-libgcc -static-libstdc++ + + +OBJ = main.o + + +### Targets ### + +all: $(EXECUTABLE) + + +$(PROGNAME): main.cpp + $(CXX) $< -o $@ $(CXXFLAGS) $(LIBS) + + +$(EXECUTABLE): $(PROGNAME) +ifdef COMSPEC + strip --strip-all $(EXECUTABLE) + ./$(PROGNAME).exe +endif + +clean: + rm -f $(PROGNAME) $(PROGNAME).exe + +.PHONY: all clean +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Jul 28 23:01:57 2013 +0900 @@ -0,0 +1,265 @@ +// Filename : main.cpp +// Last Change: 28-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, true ); + 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; +} +