Mercurial > mercurial > hgweb_searcher03.cgi
changeset 4:fdba695b99f1
More fast ( read from DB ).
Improve the precision of marksheet judgement.
author | pyon@macmini |
---|---|
date | Wed, 11 Sep 2013 19:09:14 +0900 |
parents | 1a64119ab257 |
children | bc2e2b304095 |
files | Changes Makefile include/db.h include/dndfile.h include/marksheet.h include/mask.h include/myframe.h include/param.h src/bprint.cpp src/db.cpp src/marksheet.cpp src/mask.cpp src/myframe.cpp src/param.cpp |
diffstat | 14 files changed, 588 insertions(+), 625 deletions(-) [+] |
line wrap: on
line diff
--- a/Changes Tue Aug 27 18:50:00 2013 +0900 +++ b/Changes Wed Sep 11 19:09:14 2013 +0900 @@ -1,3 +1,9 @@ +version 03.05 +2013-09-11 + More fast ( read from DB ). + Improve the precision of marksheet judgement. + +---- version 03.04 2013-08-27 Regist print targets by Drag & Drop.
--- a/Makefile Tue Aug 27 18:50:00 2013 +0900 +++ b/Makefile Wed Sep 11 19:09:14 2013 +0900 @@ -1,5 +1,5 @@ # Makefile for wxWidgets Application -# Last Change: 27-Aug-2013. +# Last Change: 11-Sep-2013. # by Takayuki Mutoh # @@ -36,7 +36,7 @@ $(OBJDIR)/kana.o \ $(OBJDIR)/hist.o \ $(OBJDIR)/index.o \ - $(OBJDIR)/mask.o \ + $(OBJDIR)/param.o \ $(OBJDIR)/bprint.o \ $(OBJDIR)/db.o \ $(OBJDIR)/marksheet.o \ @@ -80,7 +80,7 @@ $(OBJDIR)/index.o: index.cpp index.h common.h db.h $(CXX) -c $< -o $@ $(CXXFLAGS) -$(OBJDIR)/mask.o: mask.cpp mask.h common.h +$(OBJDIR)/param.o: param.cpp param.h common.h $(CXX) -c $< -o $@ $(CXXFLAGS) $(OBJDIR)/bprint.o: bprint.cpp bprint.h marksheet.h common.h dndfile.h
--- a/include/db.h Tue Aug 27 18:50:00 2013 +0900 +++ b/include/db.h Wed Sep 11 19:09:14 2013 +0900 @@ -1,5 +1,5 @@ // Filename : db.h -// Last Change: 23-Aug-2013. +// Last Change: 11-Sep-2013. // #ifndef __DB_H__ #define __DB_H__ @@ -12,6 +12,8 @@ wxArrayString GetHhsInfoByKana( wxString kana, bool fuzzy ); // 被保険者番号からファイルパスを取得 wxArrayString GetPathByHhsNo( wxString hhsno ); +// 被保険者番号リストから氏名と最新ファイルパスを取得 +wxArrayString GetHhsInfoAndPathByHhsNoList( wxArrayString hhsno ); /* 被保険者が審査会にかかったかどうか */ bool IsHhsJudged( wxString hhsno ); // 合議体開催日を取得
--- a/include/dndfile.h Tue Aug 27 18:50:00 2013 +0900 +++ b/include/dndfile.h Wed Sep 11 19:09:14 2013 +0900 @@ -1,5 +1,5 @@ // Filename : dndfile.h -// Last Change: 27-Aug-2013. +// Last Change: 11-Sep-2013. // #include "db.h" @@ -17,6 +17,55 @@ if ( nFiles != 1 ) return false; m_grid->ClearGrid(); + + // t@C۔ԃXg + wxTextFile csv; + csv.Open( filenames[0] ); + + wxRegEx reHhs( wxT("^0[1238][0-9]{8}$") ); + wxArrayString hhs; + for ( int n = 0; n < csv.GetLineCount(); n++ ) { + wxString hhsno = csv.GetLine( n ).BeforeFirst( ',', NULL ); + if ( ! reHhs.Matches( hhsno ) ) + continue; + hhs.Add( hhsno ); + } + csv.Close(); + + // + int d = hhs.GetCount() - m_grid->GetNumberRows(); + if ( d > 0 ) + m_grid->AppendRows( d, true ); + + // ObhɏǍ + wxArrayString res = GetHhsInfoAndPathByHhsNoList( hhs ); + for ( int r = 0; r < res.GetCount(); r++ ) { + wxArrayString data = wxSplit( res[r], '_', '\\' ); + m_grid->SetCellValue( r, 0, data[0] ); + m_grid->SetCellValue( r, 1, data[1] ); + m_grid->SetCellValue( r, 2, data[2] ); + } + + return true; + } + + private: + wxGrid* m_grid; +}; + +class DnDFile2 : public wxFileDropTarget +{ + public: + DnDFile2( wxGrid *grid ) + { + m_grid = grid; + } + virtual bool OnDropFiles( wxCoord x, wxCoord y, const wxArrayString& filenames ) + { + size_t nFiles = filenames.GetCount(); + if ( nFiles != 1 ) return false; + + m_grid->ClearGrid(); wxTextFile csv; csv.Open( filenames[0] );
--- a/include/marksheet.h Tue Aug 27 18:50:00 2013 +0900 +++ b/include/marksheet.h Wed Sep 11 19:09:14 2013 +0900 @@ -1,5 +1,5 @@ // Filename : marksheet.h -// Last Change: 23-Aug-2013. +// Last Change: 11-Sep-2013. // #ifndef __MARKSHEET_H__ #define __MARKSHEET_H__ @@ -8,187 +8,10 @@ bool IsBlack( int r, int g, int b ); wxString GuessHhs( wxString& file ); -bool IsMarksheet( wxString& file, float* brate, long* len, double zmin, double zmax, long lmin, long lmax ); -bool _IsMarksheet( wxString& file, float* brate, long* len ); +bool IsMarksheet( wxString& file, double zmin, double zmax, long lmin, long lmax ); wxString GetHhsName( wxString& hhsno ); int IsHhsno( wxString& hhsno, wxString& name ); int GetMarksheetVersion( wxString file ); -/* -bool IsBlack( int r, int g, int b ) -{ - if ( r == 0 && g == 0 && b == 0 ) { - return true; - } - return false; -}; - -wxString GuessHhs( wxString& file ) -{ - wxString hhs; - wxImage img( file, wxBITMAP_TYPE_JPEG ); - int sx = 1800; // start x - int sy = 315;; // start y - int bw = 60; // block width - int bh = 50; // block height - int area = bw * bh; - int black = 0; - int x, y; - unsigned char r, g, b; - - int max_n; - float max; - float bk; - for ( int c=0; c<10; c++ ) { - max = 0.0; - max_n = -1; - for ( int n=0; n<10; n++ ) { - - for ( x=sx+bw*c; x<sx+bw*(c+1); x++ ) { - for ( y=sy+bh*n; y<sy+bh*(n+1); y++ ) { - r = img.GetRed( x, y ); - g = img.GetGreen( x, y ); - b = img.GetBlue( x, y ); - if( IsBlack( (int)r, (int)g, (int)b ) ) black++; - } - } - - bk = (float)black / area; - if ( max < bk ) { - max = bk; - max_n = n; - } - //wxPuts(wxString::Format(wxT("%d %f"),n,bk)); - black = 0; - } - hhs.Append( wxString::Format( wxT("%d"), max_n ) ); - } - - return hhs; -}; - -bool IsMarksheet( wxString& file, float* brate, long* len, double zmin, double zmax, long lmin, long lmax ) -{ - wxImage img( file, wxBITMAP_TYPE_JPEG ); - int black = 0; - int x = 2465; - int h = 3500; - unsigned char r, g, b; - - for ( int y=0; y<h; y++ ) { - r = img.GetRed( x, y ); - g = img.GetGreen( x, y ); - b = img.GetBlue( x, y ); - if( IsBlack( (int)r, (int)g, (int)b ) ) black++; - } - float z = (float)black / h; - - wxFile f( file ); - long l = f.Length(); - - *brate = z; - *len = l; - //wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,len)); - if ( zmin < z && z < zmax - && lmin < l && l < lmax ) { - return true; - } - return false; -}; - -bool _IsMarksheet( wxString& file, float* brate, long* len ) -{ - wxImage img( file, wxBITMAP_TYPE_JPEG ); - int black = 0; - int x = 2465; - int h = 3500; - unsigned char r, g, b; - - for ( int y=0; y<h; y++ ) { - r = img.GetRed( x, y ); - g = img.GetGreen( x, y ); - b = img.GetBlue( x, y ); - if( IsBlack( (int)r, (int)g, (int)b ) ) black++; - } - float z = (float)black / h; - float zmin = 0.095713; float zmax = 0.108600; - - wxFile f( file ); - long l = f.Length(); - float lmin = 2072393; float lmax = 2346082; - - *brate = z; - *len = l; - //wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,len)); - if ( zmin < z && z < zmax - && lmin < l && l < lmax ) { - return true; - } - return false; -}; - -wxString GetHhsName( wxString& hhsno ) -{ - wxString name; - - wxString gszFile = wxGetCwd() + wxFILE_SEP_PATH + wxT("db") + wxFILE_SEP_PATH + wxT("hhs.db"); - wxSQLite3Database hhsdb; - hhsdb.Open( gszFile ); - - wxSQLite3Statement stmt = hhsdb.PrepareStatement("SELECT name FROM hhs_master WHERE hhsno = ?"); - stmt.Bind( 1, hhsno ); - wxSQLite3ResultSet q = stmt.ExecuteQuery(); - if ( !q.IsNull(0) ) { - while ( q.NextRow() ) { - name = q.GetString(0); - } - } - stmt.Finalize(); - hhsdb.Close(); - - return name; -}; - -int IsHhsno( wxString& hhsno, wxString& name ) -{ - wxRegEx reHhs(wxT("^0[1238][0-9]{8}$")); // $BHoJ]HV%A%'%C%/(B - - if ( reHhs.Matches( hhsno) ) { - name = GetHhsName( hhsno ); - if ( name.IsEmpty() ) { // DB$B$K$J$$(B - return 1; - } - return 2; - } - else { - return 0; - } -}; - -int GetMarksheetVersion( wxString file ) -{ - wxImage img( file, wxBITMAP_TYPE_JPEG ); - int black = 0; - int x = 2465; - int h = 3500; - unsigned char r, g, b; - - for ( int y=0; y<h; y++ ) { - r = img.GetRed( x, y ); - g = img.GetGreen( x, y ); - b = img.GetBlue( x, y ); - if( IsBlack( (int)r, (int)g, (int)b ) ) black++; - } - float z = (float)black / h; - - if ( z > 0.120 ) { - return 2; // 0.130 - 0.140 - } - else { - return 1; // 0.099 - 0.110 - } -}; -*/ - #endif // __MARKSHEET_H__
--- a/include/mask.h Tue Aug 27 18:50:00 2013 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -// Filename : mask.h -// Last Change: 14-Aug-2013. -// - -#ifndef __MASK_H__ -#define __MASK_H__ - -#include "common.h" -#include "wx/config.h" -#include "wx/fileconf.h" - -class MaskDialog : public wxDialog -{ - DECLARE_EVENT_TABLE() - private: - long x, y, w, h; - wxRect m_mask1; - wxRect m_mask2; - wxRect m_mask3; - wxRect m_mask1old; - wxRect m_mask2old; - wxRect m_mask3old; - - protected: - wxNotebook* m_notebook; - wxPanel* m_panel; - wxPanel* m_panelold; - - wxStaticText* m_staticTextDummy0; - wxStaticText* m_staticTextX; - wxStaticText* m_staticTextY; - wxStaticText* m_staticTextW; - wxStaticText* m_staticTextH; - - wxStaticText* m_staticTextMask1; - wxTextCtrl* m_textCtrlM1x; - wxTextCtrl* m_textCtrlM1y; - wxTextCtrl* m_textCtrlM1w; - wxTextCtrl* m_textCtrlM1h; - - wxStaticText* m_staticTextMask2; - wxTextCtrl* m_textCtrlM2x; - wxTextCtrl* m_textCtrlM2y; - wxTextCtrl* m_textCtrlM2w; - wxTextCtrl* m_textCtrlM2h; - - wxStaticText* m_staticTextMask3; - wxTextCtrl* m_textCtrlM3x; - wxTextCtrl* m_textCtrlM3y; - wxTextCtrl* m_textCtrlM3w; - wxTextCtrl* m_textCtrlM3h; - - wxStaticText* m_staticTextDummy0Old; - wxStaticText* m_staticTextXOld; - wxStaticText* m_staticTextYOld; - wxStaticText* m_staticTextWOld; - wxStaticText* m_staticTextHOld; - - wxStaticText* m_staticTextMask1Old; - wxTextCtrl* m_textCtrlM1xOld; - wxTextCtrl* m_textCtrlM1yOld; - wxTextCtrl* m_textCtrlM1wOld; - wxTextCtrl* m_textCtrlM1hOld; - - wxStaticText* m_staticTextMask2Old; - wxTextCtrl* m_textCtrlM2xOld; - wxTextCtrl* m_textCtrlM2yOld; - wxTextCtrl* m_textCtrlM2wOld; - wxTextCtrl* m_textCtrlM2hOld; - - wxStaticText* m_staticTextMask3Old; - wxTextCtrl* m_textCtrlM3xOld; - wxTextCtrl* m_textCtrlM3yOld; - wxTextCtrl* m_textCtrlM3wOld; - wxTextCtrl* m_textCtrlM3hOld; - - wxButton* m_buttonCancel; - wxButton* m_buttonSet; - - public: - - MaskDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ); - ~MaskDialog(); - - void OnSet( wxCommandEvent& WXUNUSED(event) ); - void LoadParams( void ); - - // Accessor - void SetMask1( wxRect rect ) { m_mask1 = rect; } - void SetMask2( wxRect rect ) { m_mask2 = rect; } - void SetMask3( wxRect rect ) { m_mask3 = rect; } - void SetMask1Old( wxRect rect ) { m_mask1old = rect; } - void SetMask2Old( wxRect rect ) { m_mask2old = rect; } - void SetMask3Old( wxRect rect ) { m_mask3old = rect; } - wxRect GetMask1() const { return m_mask1; } - wxRect GetMask2() const { return m_mask2; } - wxRect GetMask3() const { return m_mask3; } - wxRect GetMask1Old() const { return m_mask1old; } - wxRect GetMask2Old() const { return m_mask2old; } - wxRect GetMask3Old() const { return m_mask3old; } -}; - -enum { - ID_SETPARAM = wxID_HIGHEST + 70, -}; - -#endif //__MASK_H__ -
--- a/include/myframe.h Tue Aug 27 18:50:00 2013 +0900 +++ b/include/myframe.h Wed Sep 11 19:09:14 2013 +0900 @@ -1,5 +1,5 @@ // Filename : myframe.h -// Last Change: 23-Aug-2013. +// Last Change: 11-Sep-2013. // #ifndef __MYFRAME_H__ #define __MYFRAME_H__ @@ -41,6 +41,7 @@ protected: wxMenuBar* m_menubar; wxMenu* m_menuFile; + wxMenu* m_menuParam; wxSplitterWindow* m_splitter; wxPanel* m_panelMain; wxPanel* m_panelView; @@ -64,9 +65,10 @@ void OnBPrintMode( wxCommandEvent& WXUNUSED(event) ); void OnViewStyle( wxCommandEvent& event ); void OnIndex( wxCommandEvent& WXUNUSED(event) ); - void LoadMaskParam( void ); + void LoadParam( void ); void OnDBBackup( wxCommandEvent& WXUNUSED(event) ); void OnMaskParam( wxCommandEvent& WXUNUSED(event) ); + void OnMarkParam( wxCommandEvent& WXUNUSED(event) ); void OnOpenAppDir( wxCommandEvent& WXUNUSED(event) ); void OnSelectHhsDir( wxListEvent& event ); void OpenHhsDir( int n ); @@ -91,6 +93,7 @@ ID_MNINDEX, ID_MNDBBKUP, ID_MNMASKPARAM, + ID_MNMARKPARAM, ID_MNAPPDIR, ID_MNABOUT, ID_LIST,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/param.h Wed Sep 11 19:09:14 2013 +0900 @@ -0,0 +1,121 @@ +// Filename : param.h +// Last Change: 11-Sep-2013. +// + +#ifndef __PARAM_H__ +#define __PARAM_H__ + +#include "common.h" +#include "wx/config.h" +#include "wx/fileconf.h" + +class ParamDialog : public wxDialog +{ + DECLARE_EVENT_TABLE() + private: + long x, y, w, h; + wxRect m_mask1; + wxRect m_mask2; + wxRect m_mask3; + wxRect m_mask1old; + wxRect m_mask2old; + wxRect m_mask3old; + + protected: + wxNotebook* m_notebook; + wxPanel* m_panel; + wxPanel* m_panelold; + wxPanel* m_paneljudge; + + // Tab 1 + wxStaticText* m_staticTextDummy0; + wxStaticText* m_staticTextX; + wxStaticText* m_staticTextY; + wxStaticText* m_staticTextW; + wxStaticText* m_staticTextH; + + wxStaticText* m_staticTextMask1; + wxTextCtrl* m_textCtrlM1x; + wxTextCtrl* m_textCtrlM1y; + wxTextCtrl* m_textCtrlM1w; + wxTextCtrl* m_textCtrlM1h; + + wxStaticText* m_staticTextMask2; + wxTextCtrl* m_textCtrlM2x; + wxTextCtrl* m_textCtrlM2y; + wxTextCtrl* m_textCtrlM2w; + wxTextCtrl* m_textCtrlM2h; + + wxStaticText* m_staticTextMask3; + wxTextCtrl* m_textCtrlM3x; + wxTextCtrl* m_textCtrlM3y; + wxTextCtrl* m_textCtrlM3w; + wxTextCtrl* m_textCtrlM3h; + + // Tab 2 + wxStaticText* m_staticTextDummy0Old; + wxStaticText* m_staticTextXOld; + wxStaticText* m_staticTextYOld; + wxStaticText* m_staticTextWOld; + wxStaticText* m_staticTextHOld; + + wxStaticText* m_staticTextMask1Old; + wxTextCtrl* m_textCtrlM1xOld; + wxTextCtrl* m_textCtrlM1yOld; + wxTextCtrl* m_textCtrlM1wOld; + wxTextCtrl* m_textCtrlM1hOld; + + wxStaticText* m_staticTextMask2Old; + wxTextCtrl* m_textCtrlM2xOld; + wxTextCtrl* m_textCtrlM2yOld; + wxTextCtrl* m_textCtrlM2wOld; + wxTextCtrl* m_textCtrlM2hOld; + + wxStaticText* m_staticTextMask3Old; + wxTextCtrl* m_textCtrlM3xOld; + wxTextCtrl* m_textCtrlM3yOld; + wxTextCtrl* m_textCtrlM3wOld; + wxTextCtrl* m_textCtrlM3hOld; + + // Tab 3 + wxTextCtrl* m_textCtrlLMin; + wxStaticText* m_staticTextLen; + wxTextCtrl* m_textCtrlLMax; + + wxTextCtrl* m_textCtrlZMin; + wxStaticText* m_staticTextZ; + wxTextCtrl* m_textCtrlZmax; + + // + wxButton* m_buttonCancel; + wxButton* m_buttonSet; + + public: + + ParamDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ); + ~ParamDialog(); + + void OnSet( wxCommandEvent& WXUNUSED(event) ); + void LoadParams( void ); + + // Accessor + void SetMask1( wxRect rect ) { m_mask1 = rect; } + void SetMask2( wxRect rect ) { m_mask2 = rect; } + void SetMask3( wxRect rect ) { m_mask3 = rect; } + void SetMask1Old( wxRect rect ) { m_mask1old = rect; } + void SetMask2Old( wxRect rect ) { m_mask2old = rect; } + void SetMask3Old( wxRect rect ) { m_mask3old = rect; } + wxRect GetMask1() const { return m_mask1; } + wxRect GetMask2() const { return m_mask2; } + wxRect GetMask3() const { return m_mask3; } + wxRect GetMask1Old() const { return m_mask1old; } + wxRect GetMask2Old() const { return m_mask2old; } + wxRect GetMask3Old() const { return m_mask3old; } +}; + +enum { + ID_SETPARAM = wxID_HIGHEST + 70, +}; + +#endif //__PARAM_H__ +
--- a/src/bprint.cpp Tue Aug 27 18:50:00 2013 +0900 +++ b/src/bprint.cpp Wed Sep 11 19:09:14 2013 +0900 @@ -1,5 +1,5 @@ // Filename : bprint.cpp -// Last Change: 27-Aug-2013. +// Last Change: 11-Sep-2013. // #include "bprint.h" @@ -135,6 +135,7 @@ wxString file; bool cout = dir.GetFirst( &file, wxT("*.jpg"), wxDIR_FILES ); + bool notyet_mask = true; int n = 0; wxString tmpdir = wxGetCwd() + wxFILE_SEP_PATH + wxT("tmp") + wxFILE_SEP_PATH; while ( cout ) { @@ -142,7 +143,12 @@ file.Replace( wxFILE_SEP_PATH, wxT("/") ); wxString tmpjpg = wxString::Format( wxT("%stmp%d.jpg"), tmpdir, n ); - if ( n == 0 ) { // 1枚目はマスクする + double zmin = 0.095713; + double zmax = 0.147142; + long lmin = 2072393; + long lmax = 2472318; + + if ( notyet_mask && IsMarksheet( file, zmin, zmax, lmin, lmax ) ) { // マークシート表面をマスクする wxImage img_org( file, wxBITMAP_TYPE_JPEG ); int ver = GetMarksheetVersion( file ); if ( ver == 2 ) {
--- a/src/db.cpp Tue Aug 27 18:50:00 2013 +0900 +++ b/src/db.cpp Wed Sep 11 19:09:14 2013 +0900 @@ -1,5 +1,5 @@ // Filename : db.cpp -// Last Change: 23-Aug-2013. +// Last Change: 11-Sep-2013. // #include "db.h" @@ -243,6 +243,7 @@ ccndb.Close(); } +//********** HHS-DB & CCN-DB **********// /* DB整合性チェック */ wxArrayString CheckDBs( void ) { @@ -269,3 +270,47 @@ return result; } +// 被保険者番号リストから氏名と最新ファイルパスを取得 +wxArrayString GetHhsInfoAndPathByHhsNoList( wxArrayString hhsno ) +{ + wxString gszFile = wxGetCwd() + wxFILE_SEP_PATH + wxT("db") + wxFILE_SEP_PATH + wxT("ccn.db"); + wxSQLite3Database ccndb; + ccndb.Open( gszFile ); + + wxString sql = wxT( "ATTACH 'db/hhs.db' AS hhs;" ); + wxSQLite3Statement stmt = ccndb.PrepareStatement( sql ); + wxSQLite3ResultSet q = stmt.ExecuteQuery(); + + wxArrayString result; + for ( int i = 0; i < hhsno.GetCount(); i++ ) { + wxString str = hhsno[i]; + str.Append( wxT("_") ); + + sql = wxT( "SELECT name FROM hhs.hhs_master WHERE hhsno = ?;" ); + stmt = ccndb.PrepareStatement( sql ); + stmt.Bind( 1, hhsno[i] ); + q = stmt.ExecuteQuery(); + if ( !q.IsNull(0) ) { + while ( q.NextRow() ) { + str.Append( q.GetString(0) ); + } + } + str.Append( wxT("_") ); + + sql = wxT( "SELECT path FROM path WHERE hhsno = ? ORDER BY path DESC LIMIT 1;" ); + stmt = ccndb.PrepareStatement( sql ); + stmt.Bind( 1, hhsno[i] ); + q = stmt.ExecuteQuery(); + if ( !q.IsNull(0) ) { + while ( q.NextRow() ) { + str.Append( q.GetString(0) ); + } + } + + result.Add( str ); + } + stmt.Finalize(); + ccndb.Close(); + + return result; +}
--- a/src/marksheet.cpp Tue Aug 27 18:50:00 2013 +0900 +++ b/src/marksheet.cpp Wed Sep 11 19:09:14 2013 +0900 @@ -1,5 +1,5 @@ // Filename : marksheet.cpp -// Last Change: 23-Aug-2013. +// Last Change: 11-Sep-2013. // #include "common.h" @@ -57,7 +57,7 @@ return hhs; } -bool IsMarksheet( wxString& file, float* brate, long* len, double zmin, double zmax, long lmin, long lmax ) +bool IsMarksheet( wxString& file, double zmin, double zmax, long lmin, long lmax ) { wxImage img( file, wxBITMAP_TYPE_JPEG ); int black = 0; @@ -76,9 +76,7 @@ wxFile f( file ); long l = f.Length(); - *brate = z; - *len = l; - //wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,len)); + //wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,l)); if ( zmin < z && z < zmax && lmin < l && l < lmax ) { return true; @@ -86,36 +84,6 @@ return false; } -bool _IsMarksheet( wxString& file, float* brate, long* len ) -{ - wxImage img( file, wxBITMAP_TYPE_JPEG ); - int black = 0; - int x = 2465; - int h = 3500; - unsigned char r, g, b; - - for ( int y=0; y<h; y++ ) { - r = img.GetRed( x, y ); - g = img.GetGreen( x, y ); - b = img.GetBlue( x, y ); - if( IsBlack( (int)r, (int)g, (int)b ) ) black++; - } - float z = (float)black / h; - float zmin = 0.095713; float zmax = 0.108600; - - wxFile f( file ); - long l = f.Length(); - float lmin = 2072393; float lmax = 2346082; - - *brate = z; - *len = l; - //wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,len)); - if ( zmin < z && z < zmax - && lmin < l && l < lmax ) { - return true; - } - return false; -} wxString GetHhsName( wxString& hhsno ) {
--- a/src/mask.cpp Tue Aug 27 18:50:00 2013 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,269 +0,0 @@ -// Filename : mask.cpp -// Last Change: 14-Aug-2013. -// - -#include "mask.h" - -MaskDialog::MaskDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) - : wxDialog( parent, id, title, pos, size, style ) -{ - this->SetSizeHints( wxDefaultSize, wxDefaultSize ); - - wxBoxSizer* bSizerTop = new wxBoxSizer( wxVERTICAL ); - - m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); - m_panel = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxSize( 310, -1 ), wxTAB_TRAVERSAL ); - m_panelold = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); - - // 現マークシートパネル - wxFlexGridSizer* fgSizer = new wxFlexGridSizer( 0, 5, 0, 0 ); - fgSizer->SetFlexibleDirection( wxBOTH ); - fgSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - - m_staticTextDummy0 = new wxStaticText( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer->Add( m_staticTextDummy0, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextX = new wxStaticText( m_panel, wxID_ANY, wxT("(x)"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer->Add( m_staticTextX, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_staticTextY = new wxStaticText( m_panel, wxID_ANY, wxT("(y)"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer->Add( m_staticTextY, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_staticTextW = new wxStaticText( m_panel, wxID_ANY, wxT("(w)"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer->Add( m_staticTextW, 0, wxALL|wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_staticTextH = new wxStaticText( m_panel, wxID_ANY, wxT("(h)"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer->Add( m_staticTextH, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_staticTextMask1 = new wxStaticText( m_panel, wxID_ANY, wxT("マスク1"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer->Add( m_staticTextMask1, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM1x = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizer->Add( m_textCtrlM1x, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM1y = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizer->Add( m_textCtrlM1y, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_textCtrlM1w = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizer->Add( m_textCtrlM1w, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM1h = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizer->Add( m_textCtrlM1h, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextMask2 = new wxStaticText( m_panel, wxID_ANY, wxT("マスク2"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer->Add( m_staticTextMask2, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM2x = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizer->Add( m_textCtrlM2x, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM2y = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizer->Add( m_textCtrlM2y, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_textCtrlM2w = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizer->Add( m_textCtrlM2w, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM2h = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizer->Add( m_textCtrlM2h, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextMask3 = new wxStaticText( m_panel, wxID_ANY, wxT("マスク3"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizer->Add( m_staticTextMask3, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM3x = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizer->Add( m_textCtrlM3x, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM3y = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizer->Add( m_textCtrlM3y, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_textCtrlM3w = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizer->Add( m_textCtrlM3w, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM3h = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizer->Add( m_textCtrlM3h, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_panel->SetSizer( fgSizer ); - m_panel->Layout(); - fgSizer->Fit( m_panel ); - m_notebook->AddPage( m_panel, wxT("現マークシート"), false ); - - // 旧マークシートパネル - wxFlexGridSizer* fgSizerOld = new wxFlexGridSizer( 0, 5, 0, 0 ); - fgSizerOld->SetFlexibleDirection( wxBOTH ); - fgSizerOld->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); - - m_staticTextDummy0Old = new wxStaticText( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerOld->Add( m_staticTextDummy0Old, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextXOld = new wxStaticText( m_panelold, wxID_ANY, wxT("(x)"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerOld->Add( m_staticTextXOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_staticTextYOld = new wxStaticText( m_panelold, wxID_ANY, wxT("(y)"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerOld->Add( m_staticTextYOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_staticTextWOld = new wxStaticText( m_panelold, wxID_ANY, wxT("(w)"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerOld->Add( m_staticTextWOld, 0, wxALL|wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_staticTextHOld = new wxStaticText( m_panelold, wxID_ANY, wxT("(h)"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerOld->Add( m_staticTextHOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - m_staticTextMask1Old = new wxStaticText( m_panelold, wxID_ANY, wxT("マスク1"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerOld->Add( m_staticTextMask1Old, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM1xOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizerOld->Add( m_textCtrlM1xOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM1yOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizerOld->Add( m_textCtrlM1yOld, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_textCtrlM1wOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizerOld->Add( m_textCtrlM1wOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM1hOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizerOld->Add( m_textCtrlM1hOld, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextMask2Old = new wxStaticText( m_panelold, wxID_ANY, wxT("マスク2"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerOld->Add( m_staticTextMask2Old, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM2xOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizerOld->Add( m_textCtrlM2xOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM2yOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizerOld->Add( m_textCtrlM2yOld, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_textCtrlM2wOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizerOld->Add( m_textCtrlM2wOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM2hOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizerOld->Add( m_textCtrlM2hOld, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_staticTextMask3Old = new wxStaticText( m_panelold, wxID_ANY, wxT("マスク3"), wxDefaultPosition, wxDefaultSize, 0 ); - fgSizerOld->Add( m_staticTextMask3Old, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM3xOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizerOld->Add( m_textCtrlM3xOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM3yOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizerOld->Add( m_textCtrlM3yOld, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_textCtrlM3wOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizerOld->Add( m_textCtrlM3wOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); - - m_textCtrlM3hOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); - fgSizerOld->Add( m_textCtrlM3hOld, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); - - m_panelold->SetSizer( fgSizerOld ); - m_panelold->Layout(); - fgSizerOld->Fit( m_panelold ); - m_notebook->AddPage( m_panelold, wxT("旧マークシート"), false ); - - bSizerTop->Add( m_notebook, 1, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); - - // - wxBoxSizer* bSizerBtn = new wxBoxSizer( wxHORIZONTAL ); - - m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("キャンセル"), wxDefaultPosition, wxDefaultSize, 0 ); - m_buttonCancel->SetDefault(); - bSizerBtn->Add( m_buttonCancel, 0, wxALL, 5 ); - - m_buttonSet = new wxButton( this, ID_SETPARAM, wxT("セット"), wxDefaultPosition, wxDefaultSize, 0 ); - bSizerBtn->Add( m_buttonSet, 0, wxALL, 5 ); - - bSizerTop->Add( bSizerBtn, 0, wxALIGN_RIGHT|wxALL, 5 ); - - this->SetSizer( bSizerTop ); - this->Layout(); - - this->Centre( wxBOTH ); -} - -MaskDialog::~MaskDialog() -{ -} - -// Event Table -BEGIN_EVENT_TABLE( MaskDialog, wxDialog ) - EVT_BUTTON( ID_SETPARAM, MaskDialog::OnSet ) -END_EVENT_TABLE() - -// Event Handlers & Functions -void MaskDialog::OnSet( wxCommandEvent& WXUNUSED(event) ) -{ - wxString buf; - buf = m_textCtrlM1x->GetValue(); buf.ToLong( &x, 10 ); - buf = m_textCtrlM1y->GetValue(); buf.ToLong( &y, 10 ); - buf = m_textCtrlM1w->GetValue(); buf.ToLong( &w, 10 ); - buf = m_textCtrlM1h->GetValue(); buf.ToLong( &h, 10 ); - m_mask1.SetPosition( wxPoint( x, y ) ); - m_mask1.SetSize( wxSize( w, h ) ); - - buf = m_textCtrlM2x->GetValue(); buf.ToLong( &x, 10 ); - buf = m_textCtrlM2y->GetValue(); buf.ToLong( &y, 10 ); - buf = m_textCtrlM2w->GetValue(); buf.ToLong( &w, 10 ); - buf = m_textCtrlM2h->GetValue(); buf.ToLong( &h, 10 ); - m_mask2.SetPosition( wxPoint( x, y ) ); - m_mask2.SetSize( wxSize( w, h ) ); - - buf = m_textCtrlM3x->GetValue(); buf.ToLong( &x, 10 ); - buf = m_textCtrlM3y->GetValue(); buf.ToLong( &y, 10 ); - buf = m_textCtrlM3w->GetValue(); buf.ToLong( &w, 10 ); - buf = m_textCtrlM3h->GetValue(); buf.ToLong( &h, 10 ); - m_mask3.SetPosition( wxPoint( x, y ) ); - m_mask3.SetSize( wxSize( w, h ) ); - - buf = m_textCtrlM1xOld->GetValue(); buf.ToLong( &x, 10 ); - buf = m_textCtrlM1yOld->GetValue(); buf.ToLong( &y, 10 ); - buf = m_textCtrlM1wOld->GetValue(); buf.ToLong( &w, 10 ); - buf = m_textCtrlM1hOld->GetValue(); buf.ToLong( &h, 10 ); - m_mask1old.SetPosition( wxPoint( x, y ) ); - m_mask1old.SetSize( wxSize( w, h ) ); - - buf = m_textCtrlM2xOld->GetValue(); buf.ToLong( &x, 10 ); - buf = m_textCtrlM2yOld->GetValue(); buf.ToLong( &y, 10 ); - buf = m_textCtrlM2wOld->GetValue(); buf.ToLong( &w, 10 ); - buf = m_textCtrlM2hOld->GetValue(); buf.ToLong( &h, 10 ); - m_mask2old.SetPosition( wxPoint( x, y ) ); - m_mask2old.SetSize( wxSize( w, h ) ); - - buf = m_textCtrlM3xOld->GetValue(); buf.ToLong( &x, 10 ); - buf = m_textCtrlM3yOld->GetValue(); buf.ToLong( &y, 10 ); - buf = m_textCtrlM3wOld->GetValue(); buf.ToLong( &w, 10 ); - buf = m_textCtrlM3hOld->GetValue(); buf.ToLong( &h, 10 ); - m_mask3old.SetPosition( wxPoint( x, y ) ); - m_mask3old.SetSize( wxSize( w, h ) ); - - if ( IsModal() ) - EndModal( wxID_OK ); - else { - SetReturnCode( wxID_OK ); - Show( false ); - } -} - -void MaskDialog::LoadParams( void ) -{ - m_textCtrlM1x->SetValue( wxString::Format( wxT("%d"), m_mask1.GetX() ) ); - m_textCtrlM1y->SetValue( wxString::Format( wxT("%d"), m_mask1.GetY() ) ); - m_textCtrlM1w->SetValue( wxString::Format( wxT("%d"), m_mask1.GetWidth() ) ); - m_textCtrlM1h->SetValue( wxString::Format( wxT("%d"), m_mask1.GetHeight() ) ); - m_textCtrlM2x->SetValue( wxString::Format( wxT("%d"), m_mask2.GetX() ) ); - m_textCtrlM2y->SetValue( wxString::Format( wxT("%d"), m_mask2.GetY() ) ); - m_textCtrlM2w->SetValue( wxString::Format( wxT("%d"), m_mask2.GetWidth() ) ); - m_textCtrlM2h->SetValue( wxString::Format( wxT("%d"), m_mask2.GetHeight() ) ); - m_textCtrlM3x->SetValue( wxString::Format( wxT("%d"), m_mask3.GetX() ) ); - m_textCtrlM3y->SetValue( wxString::Format( wxT("%d"), m_mask3.GetY() ) ); - m_textCtrlM3w->SetValue( wxString::Format( wxT("%d"), m_mask3.GetWidth() ) ); - m_textCtrlM3h->SetValue( wxString::Format( wxT("%d"), m_mask3.GetHeight() ) ); - - m_textCtrlM1xOld->SetValue( wxString::Format( wxT("%d"), m_mask1old.GetX() ) ); - m_textCtrlM1yOld->SetValue( wxString::Format( wxT("%d"), m_mask1old.GetY() ) ); - m_textCtrlM1wOld->SetValue( wxString::Format( wxT("%d"), m_mask1old.GetWidth() ) ); - m_textCtrlM1hOld->SetValue( wxString::Format( wxT("%d"), m_mask1old.GetHeight() ) ); - m_textCtrlM2xOld->SetValue( wxString::Format( wxT("%d"), m_mask2old.GetX() ) ); - m_textCtrlM2yOld->SetValue( wxString::Format( wxT("%d"), m_mask2old.GetY() ) ); - m_textCtrlM2wOld->SetValue( wxString::Format( wxT("%d"), m_mask2old.GetWidth() ) ); - m_textCtrlM2hOld->SetValue( wxString::Format( wxT("%d"), m_mask2old.GetHeight() ) ); - m_textCtrlM3xOld->SetValue( wxString::Format( wxT("%d"), m_mask3old.GetX() ) ); - m_textCtrlM3yOld->SetValue( wxString::Format( wxT("%d"), m_mask3old.GetY() ) ); - m_textCtrlM3wOld->SetValue( wxString::Format( wxT("%d"), m_mask3old.GetWidth() ) ); - m_textCtrlM3hOld->SetValue( wxString::Format( wxT("%d"), m_mask3old.GetHeight() ) ); -} -
--- a/src/myframe.cpp Tue Aug 27 18:50:00 2013 +0900 +++ b/src/myframe.cpp Wed Sep 11 19:09:14 2013 +0900 @@ -1,5 +1,5 @@ // Filename : myframe.cpp -// Last Change: 27-Aug-2013. +// Last Change: 11-Sep-2013. // #include "main.h" #include "db.h" @@ -7,7 +7,7 @@ #include "kana.h" #include "hist.h" #include "index.h" -#include "mask.h" +#include "param.h" #include "marksheet.h" #include "myframe.h" #include "bprint.h" @@ -97,9 +97,17 @@ wxMenuItem* m_menuItemBkup = new wxMenuItem( m_menuFile, ID_MNDBBKUP, wxString( wxT("DBバックアップ(&B)") ) , wxT("Backup databases"), wxITEM_NORMAL ); m_menuFile->Append( m_menuItemBkup ); - wxMenuItem* m_menuItemMask = new wxMenuItem( m_menuFile, ID_MNMASKPARAM, wxString( wxT("マスクパラメータ(&M)") ) , wxT("Setup mask parameters"), wxITEM_NORMAL ); - m_menuFile->Append( m_menuItemMask ); + // params + m_menuParam = new wxMenu(); + wxMenuItem* m_menuItemMask = new wxMenuItem( m_menuParam, ID_MNMASKPARAM, wxString( wxT("マスク(&M)") ) , wxT("Setup mask parameters"), wxITEM_NORMAL ); + m_menuParam->Append( m_menuItemMask ); + wxMenuItem* m_menuItemMark = new wxMenuItem( m_menuParam, ID_MNMARKPARAM, wxString( wxT("マークシート(&S)") ) , wxT("Setup marksheet parameters"), wxITEM_NORMAL ); + m_menuParam->Append( m_menuItemMark ); + + m_menuFile->Append( -1, wxT("パラメータ(&P)"), m_menuParam ); + + // wxMenuItem* m_menuItemAppDir = new wxMenuItem( m_menuFile, ID_MNAPPDIR, wxString( wxT("アプリケーションフォルダを開く(&O)") ) , wxT("Open application directory"), wxITEM_NORMAL ); m_menuFile->Append( m_menuItemAppDir ); @@ -200,7 +208,7 @@ SetStatusText( wxT("被保番を入力してスタート!") ); this->Centre( wxBOTH ); - LoadMaskParam(); + LoadParam(); } MyFrame::~MyFrame() @@ -216,6 +224,7 @@ EVT_MENU( ID_MNINDEX, MyFrame::OnIndex ) EVT_MENU( ID_MNDBBKUP, MyFrame::OnDBBackup ) EVT_MENU( ID_MNMASKPARAM, MyFrame::OnMaskParam ) + EVT_MENU( ID_MNMASKPARAM, MyFrame::OnMarkParam ) EVT_MENU( ID_MNAPPDIR, MyFrame::OnOpenAppDir ) EVT_LIST_ITEM_ACTIVATED( ID_LIST, MyFrame::OnSelectHhsDir ) EVT_BUTTON( ID_KANA, MyFrame::OnKana ) @@ -263,8 +272,8 @@ event.Skip(); } -/* マスクパラメータを設定ファイルから読み込む */ -void MyFrame::LoadMaskParam( void ) +/* パラメータを設定ファイルから読み込む */ +void MyFrame::LoadParam( void ) { conf_file = wxGetCwd() + wxFILE_SEP_PATH + wxT("app.conf"); config = new wxFileConfig( wxT("MyApp"), wxT("T.Mutoh"), conf_file, wxEmptyString, wxCONFIG_USE_LOCAL_FILE ); @@ -330,14 +339,20 @@ wxString file; bool cout = dir.GetFirst( &file, wxT("*.jpg"), wxDIR_FILES ); + bool notyet_mask = true; int n = 0; wxString tmpdir = wxGetCwd() + wxFILE_SEP_PATH + wxT("tmp") + wxFILE_SEP_PATH; while ( cout ) { file = path[0] + wxFILE_SEP_PATH + file; file.Replace( wxFILE_SEP_PATH, wxT("/") ); wxString tmpjpg = wxString::Format( wxT("%stmp%d.jpg"), tmpdir, n ); + + double zmin = 0.095713; + double zmax = 0.147142; + long lmin = 2072393; + long lmax = 2472318; - if ( n == 0 ) { // 1枚目はマスクする + if ( notyet_mask && IsMarksheet( file, zmin, zmax, lmin, lmax ) ) { // マークシート表面をマスクする wxImage img_org( file, wxBITMAP_TYPE_JPEG ); int ver = GetMarksheetVersion( file ); if ( ver == 2 ) { @@ -351,6 +366,7 @@ img_org.SetRGB( m_mask3old, 255, 255, 255 ); // barcode } img_org.SaveFile( tmpjpg ); + notyet_mask = false; } else { wxCopyFile( file, tmpjpg, true ); @@ -397,26 +413,31 @@ index->SetRootdir( rootdir ); index->ShowModal(); } +/* マークシートパラメータ設定ダイアログ */ +void MyFrame::OnMarkParam( wxCommandEvent& WXUNUSED(event) ) +{ + ParamDialog* param = new ParamDialog( this, wxID_ANY, wxT("マークシート判定パラメータの指定"), wxDefaultPosition, wxSize( 350, 250 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); +} /* マスクパラメータ設定ダイアログ */ void MyFrame::OnMaskParam( wxCommandEvent& WXUNUSED(event) ) { - MaskDialog* mask = new MaskDialog( this, wxID_ANY, wxT("マスク位置とサイズの指定"), wxDefaultPosition, wxSize( 350, 250 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); - mask->SetMask1( m_mask1 ); - mask->SetMask2( m_mask2 ); - mask->SetMask3( m_mask3 ); - mask->SetMask1Old( m_mask1old ); - mask->SetMask2Old( m_mask2old ); - mask->SetMask3Old( m_mask3old ); - mask->LoadParams(); - mask->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); + ParamDialog* param = new ParamDialog( this, wxID_ANY, wxT("マスク位置とサイズの指定"), wxDefaultPosition, wxSize( 350, 250 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); + param->SetMask1( m_mask1 ); + param->SetMask2( m_mask2 ); + param->SetMask3( m_mask3 ); + param->SetMask1Old( m_mask1old ); + param->SetMask2Old( m_mask2old ); + param->SetMask3Old( m_mask3old ); + param->LoadParams(); + param->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); - if ( mask->ShowModal() == wxID_OK ) { - m_mask1 = mask->GetMask1(); - m_mask2 = mask->GetMask2(); - m_mask3 = mask->GetMask3(); - m_mask1old = mask->GetMask1Old(); - m_mask2old = mask->GetMask2Old(); - m_mask3old = mask->GetMask3Old(); + if ( param->ShowModal() == wxID_OK ) { + m_mask1 = param->GetMask1(); + m_mask2 = param->GetMask2(); + m_mask3 = param->GetMask3(); + m_mask1old = param->GetMask1Old(); + m_mask2old = param->GetMask2Old(); + m_mask3old = param->GetMask3Old(); config->SetPath( wxT("/Mask") );
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/param.cpp Wed Sep 11 19:09:14 2013 +0900 @@ -0,0 +1,296 @@ +// Filename : param.cpp +// Last Change: 11-Sep-2013. +// + +#include "param.h" + +ParamDialog::ParamDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) + : wxDialog( parent, id, title, pos, size, style ) +{ + this->SetSizeHints( wxDefaultSize, wxDefaultSize ); + + wxBoxSizer* bSizerTop = new wxBoxSizer( wxVERTICAL ); + + m_notebook = new wxNotebook( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0 ); + m_panel = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxSize( 310, -1 ), wxTAB_TRAVERSAL ); + m_panelold = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + m_paneljudge = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); + + // Tab 1 : 現マークシートマスクパネル + wxFlexGridSizer* fgSizer = new wxFlexGridSizer( 0, 5, 0, 0 ); + fgSizer->SetFlexibleDirection( wxBOTH ); + fgSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_staticTextDummy0 = new wxStaticText( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer->Add( m_staticTextDummy0, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextX = new wxStaticText( m_panel, wxID_ANY, wxT("(x)"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer->Add( m_staticTextX, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_staticTextY = new wxStaticText( m_panel, wxID_ANY, wxT("(y)"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer->Add( m_staticTextY, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_staticTextW = new wxStaticText( m_panel, wxID_ANY, wxT("(w)"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer->Add( m_staticTextW, 0, wxALL|wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_staticTextH = new wxStaticText( m_panel, wxID_ANY, wxT("(h)"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer->Add( m_staticTextH, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_staticTextMask1 = new wxStaticText( m_panel, wxID_ANY, wxT("マスク1"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer->Add( m_staticTextMask1, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM1x = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizer->Add( m_textCtrlM1x, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM1y = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizer->Add( m_textCtrlM1y, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_textCtrlM1w = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizer->Add( m_textCtrlM1w, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM1h = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizer->Add( m_textCtrlM1h, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextMask2 = new wxStaticText( m_panel, wxID_ANY, wxT("マスク2"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer->Add( m_staticTextMask2, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM2x = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizer->Add( m_textCtrlM2x, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM2y = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizer->Add( m_textCtrlM2y, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_textCtrlM2w = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizer->Add( m_textCtrlM2w, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM2h = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizer->Add( m_textCtrlM2h, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextMask3 = new wxStaticText( m_panel, wxID_ANY, wxT("マスク3"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizer->Add( m_staticTextMask3, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM3x = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizer->Add( m_textCtrlM3x, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM3y = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizer->Add( m_textCtrlM3y, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_textCtrlM3w = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizer->Add( m_textCtrlM3w, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM3h = new wxTextCtrl( m_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizer->Add( m_textCtrlM3h, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_panel->SetSizer( fgSizer ); + m_panel->Layout(); + fgSizer->Fit( m_panel ); + m_notebook->AddPage( m_panel, wxT("現マークシート"), false ); + + // Tab 2 : 旧マークシートマスクパネル + wxFlexGridSizer* fgSizerOld = new wxFlexGridSizer( 0, 5, 0, 0 ); + fgSizerOld->SetFlexibleDirection( wxBOTH ); + fgSizerOld->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED ); + + m_staticTextDummy0Old = new wxStaticText( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerOld->Add( m_staticTextDummy0Old, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextXOld = new wxStaticText( m_panelold, wxID_ANY, wxT("(x)"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerOld->Add( m_staticTextXOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_staticTextYOld = new wxStaticText( m_panelold, wxID_ANY, wxT("(y)"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerOld->Add( m_staticTextYOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_staticTextWOld = new wxStaticText( m_panelold, wxID_ANY, wxT("(w)"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerOld->Add( m_staticTextWOld, 0, wxALL|wxALIGN_BOTTOM|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_staticTextHOld = new wxStaticText( m_panelold, wxID_ANY, wxT("(h)"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerOld->Add( m_staticTextHOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_staticTextMask1Old = new wxStaticText( m_panelold, wxID_ANY, wxT("マスク1"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerOld->Add( m_staticTextMask1Old, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM1xOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizerOld->Add( m_textCtrlM1xOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM1yOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizerOld->Add( m_textCtrlM1yOld, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_textCtrlM1wOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizerOld->Add( m_textCtrlM1wOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM1hOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizerOld->Add( m_textCtrlM1hOld, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextMask2Old = new wxStaticText( m_panelold, wxID_ANY, wxT("マスク2"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerOld->Add( m_staticTextMask2Old, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM2xOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizerOld->Add( m_textCtrlM2xOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM2yOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizerOld->Add( m_textCtrlM2yOld, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_textCtrlM2wOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizerOld->Add( m_textCtrlM2wOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM2hOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizerOld->Add( m_textCtrlM2hOld, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_staticTextMask3Old = new wxStaticText( m_panelold, wxID_ANY, wxT("マスク3"), wxDefaultPosition, wxDefaultSize, 0 ); + fgSizerOld->Add( m_staticTextMask3Old, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM3xOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizerOld->Add( m_textCtrlM3xOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM3yOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizerOld->Add( m_textCtrlM3yOld, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_textCtrlM3wOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizerOld->Add( m_textCtrlM3wOld, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_RIGHT, 5 ); + + m_textCtrlM3hOld = new wxTextCtrl( m_panelold, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( 60, -1 ), wxTE_RIGHT ); + fgSizerOld->Add( m_textCtrlM3hOld, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_panelold->SetSizer( fgSizerOld ); + m_panelold->Layout(); + fgSizerOld->Fit( m_panelold ); + m_notebook->AddPage( m_panelold, wxT("旧マークシート"), false ); + + // Tab 3 : マークシート判定パネル + wxGridSizer* gSizer = new wxGridSizer( 2, 3, 0, 0 ); + + m_textCtrlLMin = new wxTextCtrl( m_paneljudge, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_RIGHT ); + gSizer->Add( m_textCtrlLMin, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxLEFT, 20 ); + + m_staticTextLen = new wxStaticText( m_paneljudge, wxID_ANY, wxT("< レングス(l) <"), wxDefaultPosition, wxDefaultSize, 0 ); + gSizer->Add( m_staticTextLen, 0, wxALL|wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_textCtrlLMax = new wxTextCtrl( m_paneljudge, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_RIGHT ); + gSizer->Add( m_textCtrlLMax, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL|wxRIGHT, 20 ); + + m_textCtrlZMin = new wxTextCtrl( m_paneljudge, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_RIGHT ); + gSizer->Add( m_textCtrlZMin, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxLEFT, 20 ); + + m_staticTextZ = new wxStaticText( m_paneljudge, wxID_ANY, wxT("< 黒色比率(z) <"), wxDefaultPosition, wxDefaultSize, 0 ); + gSizer->Add( m_staticTextZ, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5 ); + + m_textCtrlZmax = new wxTextCtrl( m_paneljudge, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_RIGHT ); + gSizer->Add( m_textCtrlZmax, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxRIGHT, 20 ); + + bSizerTop->Add( m_notebook, 1, wxALL|wxALIGN_CENTER_HORIZONTAL, 5 ); + + m_paneljudge->SetSizer( gSizer ); + m_paneljudge->Layout(); + gSizer->Fit( m_paneljudge ); + m_notebook->AddPage( m_paneljudge, wxT("マークシート判定"), false ); + + // + wxBoxSizer* bSizerBtn = new wxBoxSizer( wxHORIZONTAL ); + + m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("キャンセル"), wxDefaultPosition, wxDefaultSize, 0 ); + m_buttonCancel->SetDefault(); + bSizerBtn->Add( m_buttonCancel, 0, wxALL, 5 ); + + m_buttonSet = new wxButton( this, ID_SETPARAM, wxT("セット"), wxDefaultPosition, wxDefaultSize, 0 ); + bSizerBtn->Add( m_buttonSet, 0, wxALL, 5 ); + + bSizerTop->Add( bSizerBtn, 0, wxALIGN_RIGHT|wxALL, 5 ); + + this->SetSizer( bSizerTop ); + this->Layout(); + + this->Centre( wxBOTH ); +} + +ParamDialog::~ParamDialog() +{ +} + +// Event Table +BEGIN_EVENT_TABLE( ParamDialog, wxDialog ) + EVT_BUTTON( ID_SETPARAM, ParamDialog::OnSet ) +END_EVENT_TABLE() + +// Event Handlers & Functions +void ParamDialog::OnSet( wxCommandEvent& WXUNUSED(event) ) +{ + wxString buf; + buf = m_textCtrlM1x->GetValue(); buf.ToLong( &x, 10 ); + buf = m_textCtrlM1y->GetValue(); buf.ToLong( &y, 10 ); + buf = m_textCtrlM1w->GetValue(); buf.ToLong( &w, 10 ); + buf = m_textCtrlM1h->GetValue(); buf.ToLong( &h, 10 ); + m_mask1.SetPosition( wxPoint( x, y ) ); + m_mask1.SetSize( wxSize( w, h ) ); + + buf = m_textCtrlM2x->GetValue(); buf.ToLong( &x, 10 ); + buf = m_textCtrlM2y->GetValue(); buf.ToLong( &y, 10 ); + buf = m_textCtrlM2w->GetValue(); buf.ToLong( &w, 10 ); + buf = m_textCtrlM2h->GetValue(); buf.ToLong( &h, 10 ); + m_mask2.SetPosition( wxPoint( x, y ) ); + m_mask2.SetSize( wxSize( w, h ) ); + + buf = m_textCtrlM3x->GetValue(); buf.ToLong( &x, 10 ); + buf = m_textCtrlM3y->GetValue(); buf.ToLong( &y, 10 ); + buf = m_textCtrlM3w->GetValue(); buf.ToLong( &w, 10 ); + buf = m_textCtrlM3h->GetValue(); buf.ToLong( &h, 10 ); + m_mask3.SetPosition( wxPoint( x, y ) ); + m_mask3.SetSize( wxSize( w, h ) ); + + buf = m_textCtrlM1xOld->GetValue(); buf.ToLong( &x, 10 ); + buf = m_textCtrlM1yOld->GetValue(); buf.ToLong( &y, 10 ); + buf = m_textCtrlM1wOld->GetValue(); buf.ToLong( &w, 10 ); + buf = m_textCtrlM1hOld->GetValue(); buf.ToLong( &h, 10 ); + m_mask1old.SetPosition( wxPoint( x, y ) ); + m_mask1old.SetSize( wxSize( w, h ) ); + + buf = m_textCtrlM2xOld->GetValue(); buf.ToLong( &x, 10 ); + buf = m_textCtrlM2yOld->GetValue(); buf.ToLong( &y, 10 ); + buf = m_textCtrlM2wOld->GetValue(); buf.ToLong( &w, 10 ); + buf = m_textCtrlM2hOld->GetValue(); buf.ToLong( &h, 10 ); + m_mask2old.SetPosition( wxPoint( x, y ) ); + m_mask2old.SetSize( wxSize( w, h ) ); + + buf = m_textCtrlM3xOld->GetValue(); buf.ToLong( &x, 10 ); + buf = m_textCtrlM3yOld->GetValue(); buf.ToLong( &y, 10 ); + buf = m_textCtrlM3wOld->GetValue(); buf.ToLong( &w, 10 ); + buf = m_textCtrlM3hOld->GetValue(); buf.ToLong( &h, 10 ); + m_mask3old.SetPosition( wxPoint( x, y ) ); + m_mask3old.SetSize( wxSize( w, h ) ); + + if ( IsModal() ) + EndModal( wxID_OK ); + else { + SetReturnCode( wxID_OK ); + Show( false ); + } +} + +void ParamDialog::LoadParams( void ) +{ + m_textCtrlM1x->SetValue( wxString::Format( wxT("%d"), m_mask1.GetX() ) ); + m_textCtrlM1y->SetValue( wxString::Format( wxT("%d"), m_mask1.GetY() ) ); + m_textCtrlM1w->SetValue( wxString::Format( wxT("%d"), m_mask1.GetWidth() ) ); + m_textCtrlM1h->SetValue( wxString::Format( wxT("%d"), m_mask1.GetHeight() ) ); + m_textCtrlM2x->SetValue( wxString::Format( wxT("%d"), m_mask2.GetX() ) ); + m_textCtrlM2y->SetValue( wxString::Format( wxT("%d"), m_mask2.GetY() ) ); + m_textCtrlM2w->SetValue( wxString::Format( wxT("%d"), m_mask2.GetWidth() ) ); + m_textCtrlM2h->SetValue( wxString::Format( wxT("%d"), m_mask2.GetHeight() ) ); + m_textCtrlM3x->SetValue( wxString::Format( wxT("%d"), m_mask3.GetX() ) ); + m_textCtrlM3y->SetValue( wxString::Format( wxT("%d"), m_mask3.GetY() ) ); + m_textCtrlM3w->SetValue( wxString::Format( wxT("%d"), m_mask3.GetWidth() ) ); + m_textCtrlM3h->SetValue( wxString::Format( wxT("%d"), m_mask3.GetHeight() ) ); + + m_textCtrlM1xOld->SetValue( wxString::Format( wxT("%d"), m_mask1old.GetX() ) ); + m_textCtrlM1yOld->SetValue( wxString::Format( wxT("%d"), m_mask1old.GetY() ) ); + m_textCtrlM1wOld->SetValue( wxString::Format( wxT("%d"), m_mask1old.GetWidth() ) ); + m_textCtrlM1hOld->SetValue( wxString::Format( wxT("%d"), m_mask1old.GetHeight() ) ); + m_textCtrlM2xOld->SetValue( wxString::Format( wxT("%d"), m_mask2old.GetX() ) ); + m_textCtrlM2yOld->SetValue( wxString::Format( wxT("%d"), m_mask2old.GetY() ) ); + m_textCtrlM2wOld->SetValue( wxString::Format( wxT("%d"), m_mask2old.GetWidth() ) ); + m_textCtrlM2hOld->SetValue( wxString::Format( wxT("%d"), m_mask2old.GetHeight() ) ); + m_textCtrlM3xOld->SetValue( wxString::Format( wxT("%d"), m_mask3old.GetX() ) ); + m_textCtrlM3yOld->SetValue( wxString::Format( wxT("%d"), m_mask3old.GetY() ) ); + m_textCtrlM3wOld->SetValue( wxString::Format( wxT("%d"), m_mask3old.GetWidth() ) ); + m_textCtrlM3hOld->SetValue( wxString::Format( wxT("%d"), m_mask3old.GetHeight() ) ); +} +