示例#1
0
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);
}
示例#2
0
__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;
	}
}