void test_format(void) { unsigned int format; int version, l, mask; int type; int err = 0; testStart("Format info test"); for(version=1; version<=MQRSPEC_VERSION_MAX; version++) { for(l=QR_ECLEVEL_L; l<=QR_ECLEVEL_Q; l++) { for(mask=0; mask<4; mask++) { format = MQRspec_getFormatInfo(mask, version, (QRecLevel)l); type = typeTable[version - 1][l]; if(type == -1) { if(format != 0) { printf("Error in version %d, level %d, mask %d\n", version, l, mask); err++; } } else { if(format != calcFormatInfo(type, mask)) { printf("Error in version %d, level %d, mask %d\n", version, l, mask); err++; } } } } } testEnd(err); }
__STATIC void MMask_writeFormatInformation(int version, int width, unsigned char *frame, int mask, QRecLevel level) { unsigned int format; unsigned char v; int i; format = MQRspec_getFormatInfo(mask, version, level); for(i=0; i<8; i++) { v = 0x84 | (format & 1); frame[width * (i + 1) + 8] = v; format = format >> 1; } for(i=0; i<7; i++) { v = 0x84 | (format & 1); frame[width * 8 + 7 - i] = v; format = format >> 1; } }