Mercurial > mercurial > hgweb_searcher03.cgi
comparison include/marksheet.h @ 2:c066fde99517
Added Batch Print Mode.
author | pyon@macmini |
---|---|
date | Fri, 23 Aug 2013 18:32:09 +0900 |
parents | |
children | fdba695b99f1 |
comparison
equal
deleted
inserted
replaced
1:7b6dab24f4b8 | 2:c066fde99517 |
---|---|
1 // Filename : marksheet.h | |
2 // Last Change: 23-Aug-2013. | |
3 // | |
4 #ifndef __MARKSHEET_H__ | |
5 #define __MARKSHEET_H__ | |
6 | |
7 #include "wx/wxsqlite3.h" | |
8 | |
9 bool IsBlack( int r, int g, int b ); | |
10 wxString GuessHhs( wxString& file ); | |
11 bool IsMarksheet( wxString& file, float* brate, long* len, double zmin, double zmax, long lmin, long lmax ); | |
12 bool _IsMarksheet( wxString& file, float* brate, long* len ); | |
13 wxString GetHhsName( wxString& hhsno ); | |
14 int IsHhsno( wxString& hhsno, wxString& name ); | |
15 int GetMarksheetVersion( wxString file ); | |
16 | |
17 /* | |
18 bool IsBlack( int r, int g, int b ) | |
19 { | |
20 if ( r == 0 && g == 0 && b == 0 ) { | |
21 return true; | |
22 } | |
23 return false; | |
24 }; | |
25 | |
26 wxString GuessHhs( wxString& file ) | |
27 { | |
28 wxString hhs; | |
29 wxImage img( file, wxBITMAP_TYPE_JPEG ); | |
30 int sx = 1800; // start x | |
31 int sy = 315;; // start y | |
32 int bw = 60; // block width | |
33 int bh = 50; // block height | |
34 int area = bw * bh; | |
35 int black = 0; | |
36 int x, y; | |
37 unsigned char r, g, b; | |
38 | |
39 int max_n; | |
40 float max; | |
41 float bk; | |
42 for ( int c=0; c<10; c++ ) { | |
43 max = 0.0; | |
44 max_n = -1; | |
45 for ( int n=0; n<10; n++ ) { | |
46 | |
47 for ( x=sx+bw*c; x<sx+bw*(c+1); x++ ) { | |
48 for ( y=sy+bh*n; y<sy+bh*(n+1); y++ ) { | |
49 r = img.GetRed( x, y ); | |
50 g = img.GetGreen( x, y ); | |
51 b = img.GetBlue( x, y ); | |
52 if( IsBlack( (int)r, (int)g, (int)b ) ) black++; | |
53 } | |
54 } | |
55 | |
56 bk = (float)black / area; | |
57 if ( max < bk ) { | |
58 max = bk; | |
59 max_n = n; | |
60 } | |
61 //wxPuts(wxString::Format(wxT("%d %f"),n,bk)); | |
62 black = 0; | |
63 } | |
64 hhs.Append( wxString::Format( wxT("%d"), max_n ) ); | |
65 } | |
66 | |
67 return hhs; | |
68 }; | |
69 | |
70 bool IsMarksheet( wxString& file, float* brate, long* len, double zmin, double zmax, long lmin, long lmax ) | |
71 { | |
72 wxImage img( file, wxBITMAP_TYPE_JPEG ); | |
73 int black = 0; | |
74 int x = 2465; | |
75 int h = 3500; | |
76 unsigned char r, g, b; | |
77 | |
78 for ( int y=0; y<h; y++ ) { | |
79 r = img.GetRed( x, y ); | |
80 g = img.GetGreen( x, y ); | |
81 b = img.GetBlue( x, y ); | |
82 if( IsBlack( (int)r, (int)g, (int)b ) ) black++; | |
83 } | |
84 float z = (float)black / h; | |
85 | |
86 wxFile f( file ); | |
87 long l = f.Length(); | |
88 | |
89 *brate = z; | |
90 *len = l; | |
91 //wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,len)); | |
92 if ( zmin < z && z < zmax | |
93 && lmin < l && l < lmax ) { | |
94 return true; | |
95 } | |
96 return false; | |
97 }; | |
98 | |
99 bool _IsMarksheet( wxString& file, float* brate, long* len ) | |
100 { | |
101 wxImage img( file, wxBITMAP_TYPE_JPEG ); | |
102 int black = 0; | |
103 int x = 2465; | |
104 int h = 3500; | |
105 unsigned char r, g, b; | |
106 | |
107 for ( int y=0; y<h; y++ ) { | |
108 r = img.GetRed( x, y ); | |
109 g = img.GetGreen( x, y ); | |
110 b = img.GetBlue( x, y ); | |
111 if( IsBlack( (int)r, (int)g, (int)b ) ) black++; | |
112 } | |
113 float z = (float)black / h; | |
114 float zmin = 0.095713; float zmax = 0.108600; | |
115 | |
116 wxFile f( file ); | |
117 long l = f.Length(); | |
118 float lmin = 2072393; float lmax = 2346082; | |
119 | |
120 *brate = z; | |
121 *len = l; | |
122 //wxPuts(wxString::Format(wxT("z = %f, len = %d"),z,len)); | |
123 if ( zmin < z && z < zmax | |
124 && lmin < l && l < lmax ) { | |
125 return true; | |
126 } | |
127 return false; | |
128 }; | |
129 | |
130 wxString GetHhsName( wxString& hhsno ) | |
131 { | |
132 wxString name; | |
133 | |
134 wxString gszFile = wxGetCwd() + wxFILE_SEP_PATH + wxT("db") + wxFILE_SEP_PATH + wxT("hhs.db"); | |
135 wxSQLite3Database hhsdb; | |
136 hhsdb.Open( gszFile ); | |
137 | |
138 wxSQLite3Statement stmt = hhsdb.PrepareStatement("SELECT name FROM hhs_master WHERE hhsno = ?"); | |
139 stmt.Bind( 1, hhsno ); | |
140 wxSQLite3ResultSet q = stmt.ExecuteQuery(); | |
141 if ( !q.IsNull(0) ) { | |
142 while ( q.NextRow() ) { | |
143 name = q.GetString(0); | |
144 } | |
145 } | |
146 stmt.Finalize(); | |
147 hhsdb.Close(); | |
148 | |
149 return name; | |
150 }; | |
151 | |
152 int IsHhsno( wxString& hhsno, wxString& name ) | |
153 { | |
154 wxRegEx reHhs(wxT("^0[1238][0-9]{8}$")); // 被保番チェック | |
155 | |
156 if ( reHhs.Matches( hhsno) ) { | |
157 name = GetHhsName( hhsno ); | |
158 if ( name.IsEmpty() ) { // DBにない | |
159 return 1; | |
160 } | |
161 return 2; | |
162 } | |
163 else { | |
164 return 0; | |
165 } | |
166 }; | |
167 | |
168 int GetMarksheetVersion( wxString file ) | |
169 { | |
170 wxImage img( file, wxBITMAP_TYPE_JPEG ); | |
171 int black = 0; | |
172 int x = 2465; | |
173 int h = 3500; | |
174 unsigned char r, g, b; | |
175 | |
176 for ( int y=0; y<h; y++ ) { | |
177 r = img.GetRed( x, y ); | |
178 g = img.GetGreen( x, y ); | |
179 b = img.GetBlue( x, y ); | |
180 if( IsBlack( (int)r, (int)g, (int)b ) ) black++; | |
181 } | |
182 float z = (float)black / h; | |
183 | |
184 if ( z > 0.120 ) { | |
185 return 2; // 0.130 - 0.140 | |
186 } | |
187 else { | |
188 return 1; // 0.099 - 0.110 | |
189 } | |
190 }; | |
191 */ | |
192 | |
193 #endif // __MARKSHEET_H__ | |
194 |