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;
+}
+