Esempio n. 1
0
void test_struct_semilong(void)
{
	QRcode_List *codes, *list;
	const char *str = "asdfasdfasdfasdfasdfASDFASDASDFASDFAsdfasdfasdfasdASDFASDFADSADadsfasdf";
	int num, size;

	testStart("Testing semi-long structured-append symbols");
	codes = QRcode_encodeString8bitStructured(str, 1, QR_ECLEVEL_L);
	list = codes;
	num = 0;
	while(list != NULL) {
		num++;
		assert_equal(list->code->version, 1, "version number is %d (1 expected)\n", list->code->version);
		list = list->next;
	}
	size = QRcode_List_size(codes);
	assert_equal(num, size, "QRcode_List_size returns wrong size?");
	QRcode_List_free(codes);

	codes = QRcode_encodeStringStructured(str, 1, QR_ECLEVEL_L, QR_MODE_8, 1);
	list = codes;
	num = 0;
	while(list != NULL) {
		num++;
		assert_equal(list->code->version, 1, "version number is %d (1 expected)\n", list->code->version);
		list = list->next;
	}
	size = QRcode_List_size(codes);
	assert_equal(num, size, "QRcode_List_size returns wrong size?");
	QRcode_List_free(codes);

	testFinish();
}
Esempio n. 2
0
static QRcode_List *encodeStructured(const unsigned char *intext, int length)
{
	QRcode_List *list;

	if(eightbit) {
		list = QRcode_encodeDataStructured(length, intext, version, level);
	} else {
		list = QRcode_encodeStringStructured((char *)intext, version, level, hint, casesensitive);
	}

	return list;
}
Esempio n. 3
0
static QRcode_List *encodeStructured(const char *intext)
{
	QRcode_List *list;

	if(eightbit) {
		list = QRcode_encodeString8bitStructured(intext, version, level);
	} else {
		list = QRcode_encodeStringStructured(intext, version, level, hint, casesensitive);
	}

	return list;
}
Esempio n. 4
0
void
orcqrencode(char *ctx)
{
	int version;
	int level;
	int hint;
	int size;
	int margin;
	int i;
	int doEncodeStructured;
	char buf[MAX_DATA_SIZE];
	char buf2[MAX_DATA_SIZE];
	char qrfile[SIZE_QRFILE];
	char qrfile_suffix[SIZE_QRFILE + 10];
	char *p;
	QRcode *code;
	QRcode_List *head, *entry;

OPENLOG;
	if((p = strchr(CTX(ctx, OFFSET_INFILE), ' ')) != NULL) *p = '\0';
	if((p = strchr(CTX(ctx, OFFSET_QRFILE), ' ')) != NULL) *p = '\0';

	memset(CTX(ctx, OFFSET_RET_CODE), QRENCODE_OK, SIZE_RET_CODE);

	if(euc2sjis(CTX(ctx, OFFSET_INFILE), buf) != 0){
		memset(CTX(ctx, OFFSET_RET_CODE), CHAR_CONV_ERROR, SIZE_RET_CODE);
		return;
	}

	hint = ctx_string2int(ctx, OFFSET_HINT, SIZE_HINT);

	if (hint < 2) {
		if(parse_csv(buf, buf2) !=0){
			memset(CTX(ctx, OFFSET_RET_CODE), KANA_CONV_ERROR, SIZE_RET_CODE);
			return;
		}
	} else {
		lf2crlf(buf,buf2);
	}

	snprintf(qrfile, SIZE_QRFILE, "%s", CTX(ctx, OFFSET_QRFILE));
	version = ctx_string2int(ctx, OFFSET_VERSION, SIZE_VERSION);
	if(version <= 0 || version > 40){
		memset(CTX(ctx, OFFSET_RET_CODE), PARAM_ERROR, SIZE_RET_CODE);
		return;	
	}
	switch(*CTX(ctx, OFFSET_LEVEL)){
		case 'L':
			level = QR_ECLEVEL_L;
			break;
		case 'M':
			level = QR_ECLEVEL_M;
			break;
		case 'Q':
			level = QR_ECLEVEL_Q;
			break;
		case 'H':
			level = QR_ECLEVEL_H;
			break;
		default:
			level = QR_ECLEVEL_L;
	}

	p = strrchr(qrfile, '.');
	if(p != NULL)*p = '\0';
	doEncodeStructured = ctx_string2int(ctx, OFFSET_STRUCTURED, SIZE_STRUCTURED);
	hint = (hint % 2) == 0 ? QR_MODE_KANJI : QR_MODE_8;
	size = ctx_string2int(ctx, OFFSET_PIXEL, SIZE_PIXEL);
	margin = ctx_string2int(ctx, OFFSET_MARGIN, SIZE_MARGIN);

	code = QRcode_encodeString(buf2, version, level, hint, 1);
	if (code != NULL) {
		if (code->version <= version) {
			snprintf(qrfile_suffix, sizeof(qrfile_suffix), 
				"%s_%02d.png", qrfile, 1);
			if(writePNG(code, qrfile_suffix, size, margin) != 0){
				memset(CTX(ctx, OFFSET_RET_CODE), WRITE_PNG_ERROR, SIZE_RET_CODE);
				QRcode_free(code);
				return;
			}
		SYSLOG("write single image");
			sprintf(buf, "%02d" , code->version);
			memcpy(CTX(ctx, OFFSET_RET_VERSION), buf, SIZE_RET_VERSION);
			sprintf(buf, "%02d" , 1);
			memcpy(CTX(ctx, OFFSET_RET_SYMBOLS), "01", SIZE_RET_SYMBOLS);
			QRcode_free(code);
			return;
		}
		QRcode_free(code);
	}
	if (doEncodeStructured) {
		head = QRcode_encodeStringStructured(buf2, version, level, hint ,1);
		if(head) {
			entry = head;
			i = 0;
			while(entry != NULL) {
				code = entry->code;
				snprintf(qrfile_suffix, 
					sizeof(qrfile_suffix), "%s_%02d.png", qrfile, i + 1);
				if(writePNG(code, qrfile_suffix, size, margin) != 0){
					memset(CTX(ctx, OFFSET_RET_CODE), WRITE_PNG_ERROR, SIZE_RET_CODE);
					break;
				}
				entry = entry->next;	
				i++;
			}
		SYSLOG("write multi images");
			QRcode_List_free(entry);
		}
		else {
			memset(CTX(ctx, OFFSET_RET_CODE), QRENCODE_ERROR, SIZE_RET_CODE);
		 	return;
		}
		sprintf(buf, "%02d" , head->code->version);
		memcpy(CTX(ctx, OFFSET_RET_VERSION), buf, SIZE_RET_VERSION);
		sprintf(buf, "%02d" , i);
		memcpy(CTX(ctx, OFFSET_RET_SYMBOLS), buf, SIZE_RET_SYMBOLS);
		QRcode_List_free(head);
	}
#if 1
	print_ctx(ctx);
#endif
SYSLOG("end");
	return;
}