Mercurial > mercurial > hgweb_searcher03.cgi
comparison 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 |
comparison
equal
deleted
inserted
replaced
3:1a64119ab257 | 4:fdba695b99f1 |
---|---|
1 // Filename : myframe.cpp | 1 // Filename : myframe.cpp |
2 // Last Change: 27-Aug-2013. | 2 // Last Change: 11-Sep-2013. |
3 // | 3 // |
4 #include "main.h" | 4 #include "main.h" |
5 #include "db.h" | 5 #include "db.h" |
6 #include "about.h" | 6 #include "about.h" |
7 #include "kana.h" | 7 #include "kana.h" |
8 #include "hist.h" | 8 #include "hist.h" |
9 #include "index.h" | 9 #include "index.h" |
10 #include "mask.h" | 10 #include "param.h" |
11 #include "marksheet.h" | 11 #include "marksheet.h" |
12 #include "myframe.h" | 12 #include "myframe.h" |
13 #include "bprint.h" | 13 #include "bprint.h" |
14 | 14 |
15 /////////////////////////////////////////////////////////////// | 15 /////////////////////////////////////////////////////////////// |
95 m_menuFile->AppendSeparator(); // ---- | 95 m_menuFile->AppendSeparator(); // ---- |
96 | 96 |
97 wxMenuItem* m_menuItemBkup = new wxMenuItem( m_menuFile, ID_MNDBBKUP, wxString( wxT("DBバックアップ(&B)") ) , wxT("Backup databases"), wxITEM_NORMAL ); | 97 wxMenuItem* m_menuItemBkup = new wxMenuItem( m_menuFile, ID_MNDBBKUP, wxString( wxT("DBバックアップ(&B)") ) , wxT("Backup databases"), wxITEM_NORMAL ); |
98 m_menuFile->Append( m_menuItemBkup ); | 98 m_menuFile->Append( m_menuItemBkup ); |
99 | 99 |
100 wxMenuItem* m_menuItemMask = new wxMenuItem( m_menuFile, ID_MNMASKPARAM, wxString( wxT("マスクパラメータ(&M)") ) , wxT("Setup mask parameters"), wxITEM_NORMAL ); | 100 // params |
101 m_menuFile->Append( m_menuItemMask ); | 101 m_menuParam = new wxMenu(); |
102 | 102 wxMenuItem* m_menuItemMask = new wxMenuItem( m_menuParam, ID_MNMASKPARAM, wxString( wxT("マスク(&M)") ) , wxT("Setup mask parameters"), wxITEM_NORMAL ); |
103 m_menuParam->Append( m_menuItemMask ); | |
104 | |
105 wxMenuItem* m_menuItemMark = new wxMenuItem( m_menuParam, ID_MNMARKPARAM, wxString( wxT("マークシート(&S)") ) , wxT("Setup marksheet parameters"), wxITEM_NORMAL ); | |
106 m_menuParam->Append( m_menuItemMark ); | |
107 | |
108 m_menuFile->Append( -1, wxT("パラメータ(&P)"), m_menuParam ); | |
109 | |
110 // | |
103 wxMenuItem* m_menuItemAppDir = new wxMenuItem( m_menuFile, ID_MNAPPDIR, wxString( wxT("アプリケーションフォルダを開く(&O)") ) , wxT("Open application directory"), wxITEM_NORMAL ); | 111 wxMenuItem* m_menuItemAppDir = new wxMenuItem( m_menuFile, ID_MNAPPDIR, wxString( wxT("アプリケーションフォルダを開く(&O)") ) , wxT("Open application directory"), wxITEM_NORMAL ); |
104 m_menuFile->Append( m_menuItemAppDir ); | 112 m_menuFile->Append( m_menuItemAppDir ); |
105 | 113 |
106 m_menuFile->AppendSeparator(); // ---- | 114 m_menuFile->AppendSeparator(); // ---- |
107 | 115 |
198 m_statusBar->SetFieldsCount( 4, widths ); | 206 m_statusBar->SetFieldsCount( 4, widths ); |
199 this->SetStatusBar( m_statusBar ); | 207 this->SetStatusBar( m_statusBar ); |
200 SetStatusText( wxT("被保番を入力してスタート!") ); | 208 SetStatusText( wxT("被保番を入力してスタート!") ); |
201 | 209 |
202 this->Centre( wxBOTH ); | 210 this->Centre( wxBOTH ); |
203 LoadMaskParam(); | 211 LoadParam(); |
204 } | 212 } |
205 | 213 |
206 MyFrame::~MyFrame() | 214 MyFrame::~MyFrame() |
207 { | 215 { |
208 } | 216 } |
214 EVT_MENU( ID_MNBPNT, MyFrame::OnBPrintMode ) | 222 EVT_MENU( ID_MNBPNT, MyFrame::OnBPrintMode ) |
215 EVT_MENU( ID_MNVIEW, MyFrame::OnViewStyle ) | 223 EVT_MENU( ID_MNVIEW, MyFrame::OnViewStyle ) |
216 EVT_MENU( ID_MNINDEX, MyFrame::OnIndex ) | 224 EVT_MENU( ID_MNINDEX, MyFrame::OnIndex ) |
217 EVT_MENU( ID_MNDBBKUP, MyFrame::OnDBBackup ) | 225 EVT_MENU( ID_MNDBBKUP, MyFrame::OnDBBackup ) |
218 EVT_MENU( ID_MNMASKPARAM, MyFrame::OnMaskParam ) | 226 EVT_MENU( ID_MNMASKPARAM, MyFrame::OnMaskParam ) |
227 EVT_MENU( ID_MNMASKPARAM, MyFrame::OnMarkParam ) | |
219 EVT_MENU( ID_MNAPPDIR, MyFrame::OnOpenAppDir ) | 228 EVT_MENU( ID_MNAPPDIR, MyFrame::OnOpenAppDir ) |
220 EVT_LIST_ITEM_ACTIVATED( ID_LIST, MyFrame::OnSelectHhsDir ) | 229 EVT_LIST_ITEM_ACTIVATED( ID_LIST, MyFrame::OnSelectHhsDir ) |
221 EVT_BUTTON( ID_KANA, MyFrame::OnKana ) | 230 EVT_BUTTON( ID_KANA, MyFrame::OnKana ) |
222 EVT_BUTTON( ID_HIST, MyFrame::OnHistory ) | 231 EVT_BUTTON( ID_HIST, MyFrame::OnHistory ) |
223 EVT_SIZE( MyFrame::OnWinSize ) | 232 EVT_SIZE( MyFrame::OnWinSize ) |
261 SetStatusMessage( wxT("不適切な入力です."), 0 ); | 270 SetStatusMessage( wxT("不適切な入力です."), 0 ); |
262 return; | 271 return; |
263 | 272 |
264 event.Skip(); | 273 event.Skip(); |
265 } | 274 } |
266 /* マスクパラメータを設定ファイルから読み込む */ | 275 /* パラメータを設定ファイルから読み込む */ |
267 void MyFrame::LoadMaskParam( void ) | 276 void MyFrame::LoadParam( void ) |
268 { | 277 { |
269 conf_file = wxGetCwd() + wxFILE_SEP_PATH + wxT("app.conf"); | 278 conf_file = wxGetCwd() + wxFILE_SEP_PATH + wxT("app.conf"); |
270 config = new wxFileConfig( wxT("MyApp"), wxT("T.Mutoh"), conf_file, wxEmptyString, wxCONFIG_USE_LOCAL_FILE ); | 279 config = new wxFileConfig( wxT("MyApp"), wxT("T.Mutoh"), conf_file, wxEmptyString, wxCONFIG_USE_LOCAL_FILE ); |
271 | 280 |
272 int x, y, w, h; | 281 int x, y, w, h; |
328 wxString html; | 337 wxString html; |
329 html = html + wxT("<html><body>\n"); | 338 html = html + wxT("<html><body>\n"); |
330 | 339 |
331 wxString file; | 340 wxString file; |
332 bool cout = dir.GetFirst( &file, wxT("*.jpg"), wxDIR_FILES ); | 341 bool cout = dir.GetFirst( &file, wxT("*.jpg"), wxDIR_FILES ); |
342 bool notyet_mask = true; | |
333 int n = 0; | 343 int n = 0; |
334 wxString tmpdir = wxGetCwd() + wxFILE_SEP_PATH + wxT("tmp") + wxFILE_SEP_PATH; | 344 wxString tmpdir = wxGetCwd() + wxFILE_SEP_PATH + wxT("tmp") + wxFILE_SEP_PATH; |
335 while ( cout ) { | 345 while ( cout ) { |
336 file = path[0] + wxFILE_SEP_PATH + file; | 346 file = path[0] + wxFILE_SEP_PATH + file; |
337 file.Replace( wxFILE_SEP_PATH, wxT("/") ); | 347 file.Replace( wxFILE_SEP_PATH, wxT("/") ); |
338 wxString tmpjpg = wxString::Format( wxT("%stmp%d.jpg"), tmpdir, n ); | 348 wxString tmpjpg = wxString::Format( wxT("%stmp%d.jpg"), tmpdir, n ); |
349 | |
350 double zmin = 0.095713; | |
351 double zmax = 0.147142; | |
352 long lmin = 2072393; | |
353 long lmax = 2472318; | |
339 | 354 |
340 if ( n == 0 ) { // 1枚目はマスクする | 355 if ( notyet_mask && IsMarksheet( file, zmin, zmax, lmin, lmax ) ) { // マークシート表面をマスクする |
341 wxImage img_org( file, wxBITMAP_TYPE_JPEG ); | 356 wxImage img_org( file, wxBITMAP_TYPE_JPEG ); |
342 int ver = GetMarksheetVersion( file ); | 357 int ver = GetMarksheetVersion( file ); |
343 if ( ver == 2 ) { | 358 if ( ver == 2 ) { |
344 img_org.SetRGB( m_mask1, 255, 255, 255 ); // cm name | 359 img_org.SetRGB( m_mask1, 255, 255, 255 ); // cm name |
345 img_org.SetRGB( m_mask2, 255, 255, 255 ); // cm no. | 360 img_org.SetRGB( m_mask2, 255, 255, 255 ); // cm no. |
349 img_org.SetRGB( m_mask1old, 255, 255, 255 ); // cm name | 364 img_org.SetRGB( m_mask1old, 255, 255, 255 ); // cm name |
350 img_org.SetRGB( m_mask2old, 255, 255, 255 ); // cm no. | 365 img_org.SetRGB( m_mask2old, 255, 255, 255 ); // cm no. |
351 img_org.SetRGB( m_mask3old, 255, 255, 255 ); // barcode | 366 img_org.SetRGB( m_mask3old, 255, 255, 255 ); // barcode |
352 } | 367 } |
353 img_org.SaveFile( tmpjpg ); | 368 img_org.SaveFile( tmpjpg ); |
369 notyet_mask = false; | |
354 } | 370 } |
355 else { | 371 else { |
356 wxCopyFile( file, tmpjpg, true ); | 372 wxCopyFile( file, tmpjpg, true ); |
357 } | 373 } |
358 html = html + wxT("<img src=\"") + tmpjpg + wxT("\" width=\"750\" height=\"1060\"/>"); | 374 html = html + wxT("<img src=\"") + tmpjpg + wxT("\" width=\"750\" height=\"1060\"/>"); |
395 IndexDialog* index = new IndexDialog( this, wxID_ANY, wxT("インデックス作成"), wxDefaultPosition, wxSize( 700, 600 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); | 411 IndexDialog* index = new IndexDialog( this, wxID_ANY, wxT("インデックス作成"), wxDefaultPosition, wxSize( 700, 600 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); |
396 index->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); | 412 index->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); |
397 index->SetRootdir( rootdir ); | 413 index->SetRootdir( rootdir ); |
398 index->ShowModal(); | 414 index->ShowModal(); |
399 } | 415 } |
416 /* マークシートパラメータ設定ダイアログ */ | |
417 void MyFrame::OnMarkParam( wxCommandEvent& WXUNUSED(event) ) | |
418 { | |
419 ParamDialog* param = new ParamDialog( this, wxID_ANY, wxT("マークシート判定パラメータの指定"), wxDefaultPosition, wxSize( 350, 250 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); | |
420 } | |
400 /* マスクパラメータ設定ダイアログ */ | 421 /* マスクパラメータ設定ダイアログ */ |
401 void MyFrame::OnMaskParam( wxCommandEvent& WXUNUSED(event) ) | 422 void MyFrame::OnMaskParam( wxCommandEvent& WXUNUSED(event) ) |
402 { | 423 { |
403 MaskDialog* mask = new MaskDialog( this, wxID_ANY, wxT("マスク位置とサイズの指定"), wxDefaultPosition, wxSize( 350, 250 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); | 424 ParamDialog* param = new ParamDialog( this, wxID_ANY, wxT("マスク位置とサイズの指定"), wxDefaultPosition, wxSize( 350, 250 ), wxCAPTION|wxFRAME_NO_TASKBAR|wxSTAY_ON_TOP|wxTAB_TRAVERSAL ); |
404 mask->SetMask1( m_mask1 ); | 425 param->SetMask1( m_mask1 ); |
405 mask->SetMask2( m_mask2 ); | 426 param->SetMask2( m_mask2 ); |
406 mask->SetMask3( m_mask3 ); | 427 param->SetMask3( m_mask3 ); |
407 mask->SetMask1Old( m_mask1old ); | 428 param->SetMask1Old( m_mask1old ); |
408 mask->SetMask2Old( m_mask2old ); | 429 param->SetMask2Old( m_mask2old ); |
409 mask->SetMask3Old( m_mask3old ); | 430 param->SetMask3Old( m_mask3old ); |
410 mask->LoadParams(); | 431 param->LoadParams(); |
411 mask->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); | 432 param->ShowWithEffect( wxSHOW_EFFECT_SLIDE_TO_BOTTOM ); |
412 | 433 |
413 if ( mask->ShowModal() == wxID_OK ) { | 434 if ( param->ShowModal() == wxID_OK ) { |
414 m_mask1 = mask->GetMask1(); | 435 m_mask1 = param->GetMask1(); |
415 m_mask2 = mask->GetMask2(); | 436 m_mask2 = param->GetMask2(); |
416 m_mask3 = mask->GetMask3(); | 437 m_mask3 = param->GetMask3(); |
417 m_mask1old = mask->GetMask1Old(); | 438 m_mask1old = param->GetMask1Old(); |
418 m_mask2old = mask->GetMask2Old(); | 439 m_mask2old = param->GetMask2Old(); |
419 m_mask3old = mask->GetMask3Old(); | 440 m_mask3old = param->GetMask3Old(); |
420 | 441 |
421 config->SetPath( wxT("/Mask") ); | 442 config->SetPath( wxT("/Mask") ); |
422 | 443 |
423 config->Write( wxT("x1"), m_mask1.GetX() ); | 444 config->Write( wxT("x1"), m_mask1.GetX() ); |
424 config->Write( wxT("y1"), m_mask1.GetY() ); | 445 config->Write( wxT("y1"), m_mask1.GetY() ); |