@@ -163,11 +163,58 @@ public static int Score(QRCodeData qrCode)
163
163
for ( var x = 0 ; x < size - 10 ; x ++ )
164
164
{
165
165
// Horizontal pattern matching
166
- if ( MatchesPattern1 ( qrCode . ModuleMatrix , x , y ) )
166
+ if ( ( qrCode . ModuleMatrix [ y ] [ x ] &&
167
+ ! qrCode . ModuleMatrix [ y ] [ x + 1 ] &&
168
+ qrCode . ModuleMatrix [ y ] [ x + 2 ] &&
169
+ qrCode . ModuleMatrix [ y ] [ x + 3 ] &&
170
+ qrCode . ModuleMatrix [ y ] [ x + 4 ] &&
171
+ ! qrCode . ModuleMatrix [ y ] [ x + 5 ] &&
172
+ qrCode . ModuleMatrix [ y ] [ x + 6 ] &&
173
+ ! qrCode . ModuleMatrix [ y ] [ x + 7 ] &&
174
+ ! qrCode . ModuleMatrix [ y ] [ x + 8 ] &&
175
+ ! qrCode . ModuleMatrix [ y ] [ x + 9 ] &&
176
+ ! qrCode . ModuleMatrix [ y ] [ x + 10 ] ) ||
177
+ ( ! qrCode . ModuleMatrix [ y ] [ x ] &&
178
+ ! qrCode . ModuleMatrix [ y ] [ x + 1 ] &&
179
+ ! qrCode . ModuleMatrix [ y ] [ x + 2 ] &&
180
+ ! qrCode . ModuleMatrix [ y ] [ x + 3 ] &&
181
+ qrCode . ModuleMatrix [ y ] [ x + 4 ] &&
182
+ ! qrCode . ModuleMatrix [ y ] [ x + 5 ] &&
183
+ qrCode . ModuleMatrix [ y ] [ x + 6 ] &&
184
+ qrCode . ModuleMatrix [ y ] [ x + 7 ] &&
185
+ qrCode . ModuleMatrix [ y ] [ x + 8 ] &&
186
+ ! qrCode . ModuleMatrix [ y ] [ x + 9 ] &&
187
+ qrCode . ModuleMatrix [ y ] [ x + 10 ] ) )
188
+ {
167
189
score3 += 40 ;
190
+ }
191
+
168
192
// Vertical pattern matching
169
- if ( MatchesPattern1 ( qrCode . ModuleMatrix , y , x ) )
193
+ if ( ( qrCode . ModuleMatrix [ x ] [ y ] &&
194
+ ! qrCode . ModuleMatrix [ x + 1 ] [ y ] &&
195
+ qrCode . ModuleMatrix [ x + 2 ] [ y ] &&
196
+ qrCode . ModuleMatrix [ x + 3 ] [ y ] &&
197
+ qrCode . ModuleMatrix [ x + 4 ] [ y ] &&
198
+ ! qrCode . ModuleMatrix [ x + 5 ] [ y ] &&
199
+ qrCode . ModuleMatrix [ x + 6 ] [ y ] &&
200
+ ! qrCode . ModuleMatrix [ x + 7 ] [ y ] &&
201
+ ! qrCode . ModuleMatrix [ x + 8 ] [ y ] &&
202
+ ! qrCode . ModuleMatrix [ x + 9 ] [ y ] &&
203
+ ! qrCode . ModuleMatrix [ x + 10 ] [ y ] ) ||
204
+ ( ! qrCode . ModuleMatrix [ x ] [ y ] &&
205
+ ! qrCode . ModuleMatrix [ x + 1 ] [ y ] &&
206
+ ! qrCode . ModuleMatrix [ x + 2 ] [ y ] &&
207
+ ! qrCode . ModuleMatrix [ x + 3 ] [ y ] &&
208
+ qrCode . ModuleMatrix [ x + 4 ] [ y ] &&
209
+ ! qrCode . ModuleMatrix [ x + 5 ] [ y ] &&
210
+ qrCode . ModuleMatrix [ x + 6 ] [ y ] &&
211
+ qrCode . ModuleMatrix [ x + 7 ] [ y ] &&
212
+ qrCode . ModuleMatrix [ x + 8 ] [ y ] &&
213
+ ! qrCode . ModuleMatrix [ x + 9 ] [ y ] &&
214
+ qrCode . ModuleMatrix [ x + 10 ] [ y ] ) )
215
+ {
170
216
score3 += 40 ;
217
+ }
171
218
}
172
219
}
173
220
@@ -186,35 +233,6 @@ public static int Score(QRCodeData qrCode)
186
233
// Return the sum of all four penalties
187
234
return ( score1 + score2 ) + ( score3 + score4 ) ;
188
235
}
189
-
190
- /// <summary>
191
- /// Matches the specified pattern in QR code evaluation rules (1:1:3:1:1 ratio).
192
- /// </summary>
193
- private static bool MatchesPattern1 ( List < BitArray > matrix , int x , int y )
194
- {
195
- return ( matrix [ y ] [ x ] &&
196
- ! matrix [ y ] [ x + 1 ] &&
197
- matrix [ y ] [ x + 2 ] &&
198
- matrix [ y ] [ x + 3 ] &&
199
- matrix [ y ] [ x + 4 ] &&
200
- ! matrix [ y ] [ x + 5 ] &&
201
- matrix [ y ] [ x + 6 ] &&
202
- ! matrix [ y ] [ x + 7 ] &&
203
- ! matrix [ y ] [ x + 8 ] &&
204
- ! matrix [ y ] [ x + 9 ] &&
205
- ! matrix [ y ] [ x + 10 ] ) ||
206
- ( ! matrix [ y ] [ x ] &&
207
- ! matrix [ y ] [ x + 1 ] &&
208
- ! matrix [ y ] [ x + 2 ] &&
209
- ! matrix [ y ] [ x + 3 ] &&
210
- matrix [ y ] [ x + 4 ] &&
211
- ! matrix [ y ] [ x + 5 ] &&
212
- matrix [ y ] [ x + 6 ] &&
213
- matrix [ y ] [ x + 7 ] &&
214
- matrix [ y ] [ x + 8 ] &&
215
- ! matrix [ y ] [ x + 9 ] &&
216
- matrix [ y ] [ x + 10 ] ) ;
217
- }
218
236
}
219
237
}
220
238
}
0 commit comments