Mercurial > mercurial > hgweb_searcher03.cgi
view include/marksheet.h @ 3:1a64119ab257
Equipment Regist print-target by Drag & Drop.
author | pyon@macmini |
---|---|
date | Tue, 27 Aug 2013 18:50:00 +0900 |
parents | c066fde99517 |
children | fdba695b99f1 |
line wrap: on
line source
// Filename : marksheet.h // Last Change: 23-Aug-2013. // #ifndef __MARKSHEET_H__ #define __MARKSHEET_H__ #include "wx/wxsqlite3.h" 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 ); 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}$")); // 被保番チェック if ( reHhs.Matches( hhsno) ) { name = GetHhsName( hhsno ); if ( name.IsEmpty() ) { // DBにない 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__