throw new ReaderException("Could not find three finder patterns");\r
}\r
\r
- if (size == 3) {\r
- // Found just enough -- hope these are good!\r
- return new FinderPattern[]{\r
- (FinderPattern) possibleCenters.elementAt(0),\r
- (FinderPattern) possibleCenters.elementAt(1),\r
- (FinderPattern) possibleCenters.elementAt(2)\r
- };\r
- }\r
-\r
- possibleCenters.setSize(size);\r
-\r
- // Hmm, multiple found. We need to pick the best three. Find the most\r
- // popular ones whose module size is nearest the average\r
-\r
- float averageModuleSize = 0.0f;\r
- for (int i = 0; i < size; i++) {\r
- averageModuleSize += ((FinderPattern) possibleCenters.elementAt(i)).getEstimatedModuleSize();\r
+ if (size > 3) {\r
+ // Throw away all but those first size candidate points we found.\r
+ possibleCenters.setSize(size);\r
+ // We need to pick the best three. Find the most\r
+ // popular ones whose module size is nearest the average\r
+ float averageModuleSize = 0.0f;\r
+ for (int i = 0; i < size; i++) {\r
+ averageModuleSize += ((FinderPattern) possibleCenters.elementAt(i)).getEstimatedModuleSize();\r
+ }\r
+ averageModuleSize /= (float) size;\r
+ // We don't have java.util.Collections in J2ME\r
+ Collections.insertionSort(possibleCenters, new ClosestToAverageComparator(averageModuleSize));\r
}\r
- averageModuleSize /= (float) size;\r
-\r
- // We don't have java.util.Collections in J2ME\r
- Collections.insertionSort(possibleCenters, new ClosestToAverageComparator(averageModuleSize));\r
\r
return new FinderPattern[]{\r
(FinderPattern) possibleCenters.elementAt(0),\r