Mercurial > mercurial > hgweb_searcher03.cgi
diff src/myframe.cpp @ 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 |
line wrap: on
line diff
--- 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") );