buildFunctionPattern method
See ISO 18004:2006 Annex E
Implementation
BitMatrix buildFunctionPattern() {
final dimension = dimensionForVersion;
final bitMatrix = BitMatrix(dimension);
// Top left finder pattern + separator + format
bitMatrix.setRegion(0, 0, 9, 9);
// Top right finder pattern + separator + format
bitMatrix.setRegion(dimension - 8, 0, 8, 9);
// Bottom left finder pattern + separator + format
bitMatrix.setRegion(0, dimension - 8, 9, 8);
// Alignment patterns
final max = _alignmentPatternCenters.length;
for (int x = 0; x < max; x++) {
final i = _alignmentPatternCenters[x] - 2;
for (int y = 0; y < max; y++) {
if ((x != 0 || (y != 0 && y != max - 1)) && (x != max - 1 || y != 0)) {
bitMatrix.setRegion(_alignmentPatternCenters[y] - 2, i, 5, 5);
}
// else no o alignment patterns near the three finder patterns
}
}
// Vertical timing pattern
bitMatrix.setRegion(6, 9, 1, dimension - 17);
// Horizontal timing pattern
bitMatrix.setRegion(9, 6, dimension - 17, 1);
if (_versionNumber > 6) {
// Version info, top right
bitMatrix.setRegion(dimension - 11, 0, 3, 6);
// Version info, bottom left
bitMatrix.setRegion(0, dimension - 11, 6, 3);
}
return bitMatrix;
}