mirror of
https://git.code.sf.net/p/zint/code
synced 2025-12-23 12:57:07 +00:00
Updated form master
This commit is contained in:
215
backend/rss.c
215
backend/rss.c
@@ -112,7 +112,7 @@ void getRSSwidths(int val, int n, int elements, int maxWidth, int noNarrow)
|
|||||||
/* get all combinations */
|
/* get all combinations */
|
||||||
subVal = combins(n-elmWidth-1, elements-bar-2);
|
subVal = combins(n-elmWidth-1, elements-bar-2);
|
||||||
/* less combinations with no single-module element */
|
/* less combinations with no single-module element */
|
||||||
if ((!noNarrow) && (narrowMask == 0) &&
|
if ((!noNarrow) && (!narrowMask) &&
|
||||||
(n-elmWidth-(elements-bar-1) >= elements-bar-1))
|
(n-elmWidth-(elements-bar-1) >= elements-bar-1))
|
||||||
{
|
{
|
||||||
subVal -= combins(n-elmWidth-(elements-bar), elements-bar-2);
|
subVal -= combins(n-elmWidth-(elements-bar), elements-bar-2);
|
||||||
@@ -157,10 +157,10 @@ int rss14(struct zint_symbol *symbol, unsigned char source[], int src_len)
|
|||||||
|
|
||||||
if(src_len > 13) {
|
if(src_len > 13) {
|
||||||
strcpy(symbol->errtxt, "Input too long");
|
strcpy(symbol->errtxt, "Input too long");
|
||||||
return ERROR_TOO_LONG;
|
return ZERROR_TOO_LONG;
|
||||||
}
|
}
|
||||||
error_number = is_sane(NEON, source, src_len);
|
error_number = is_sane(NEON, source, src_len);
|
||||||
if(error_number == ERROR_INVALID_DATA) {
|
if(error_number == ZERROR_INVALID_DATA) {
|
||||||
strcpy(symbol->errtxt, "Invalid characters in data");
|
strcpy(symbol->errtxt, "Invalid characters in data");
|
||||||
return error_number;
|
return error_number;
|
||||||
}
|
}
|
||||||
@@ -440,12 +440,10 @@ int rss14(struct zint_symbol *symbol, unsigned char source[], int src_len)
|
|||||||
}
|
}
|
||||||
hrt[14] = '\0';
|
hrt[14] = '\0';
|
||||||
|
|
||||||
for (i = 0; i < 13; i++)
|
for (i = 0; i < 13; i++) {
|
||||||
{
|
|
||||||
count += ctoi(hrt[i]);
|
count += ctoi(hrt[i]);
|
||||||
|
|
||||||
if ((i%2) == 0)
|
if (!(i & 1)) {
|
||||||
{
|
|
||||||
count += 2 * (ctoi(hrt[i]));
|
count += 2 * (ctoi(hrt[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -550,11 +548,7 @@ int rss14(struct zint_symbol *symbol, unsigned char source[], int src_len)
|
|||||||
if(latch == '1') { set_module(symbol, symbol->rows, writer); } else { unset_module(symbol, symbol->rows, writer); }
|
if(latch == '1') { set_module(symbol, symbol->rows, writer); } else { unset_module(symbol, symbol->rows, writer); }
|
||||||
writer++;
|
writer++;
|
||||||
}
|
}
|
||||||
if(latch == '1') {
|
latch = (latch == '1' ? '0' : '1');
|
||||||
latch = '0';
|
|
||||||
} else {
|
|
||||||
latch = '1';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
set_module(symbol, symbol->rows, writer);
|
set_module(symbol, symbol->rows, writer);
|
||||||
unset_module(symbol, symbol->rows, writer + 1);
|
unset_module(symbol, symbol->rows, writer + 1);
|
||||||
@@ -669,17 +663,17 @@ int rsslimited(struct zint_symbol *symbol, unsigned char source[], int src_len)
|
|||||||
|
|
||||||
if(src_len > 13) {
|
if(src_len > 13) {
|
||||||
strcpy(symbol->errtxt, "Input too long");
|
strcpy(symbol->errtxt, "Input too long");
|
||||||
return ERROR_TOO_LONG;
|
return ZERROR_TOO_LONG;
|
||||||
}
|
}
|
||||||
error_number = is_sane(NEON, source, src_len);
|
error_number = is_sane(NEON, source, src_len);
|
||||||
if(error_number == ERROR_INVALID_DATA) {
|
if(error_number == ZERROR_INVALID_DATA) {
|
||||||
strcpy(symbol->errtxt, "Invalid characters in data");
|
strcpy(symbol->errtxt, "Invalid characters in data");
|
||||||
return error_number;
|
return error_number;
|
||||||
}
|
}
|
||||||
if(src_len == 13) {
|
if(src_len == 13) {
|
||||||
if((source[0] != '0') && (source[0] != '1')) {
|
if((source[0] != '0') && (source[0] != '1')) {
|
||||||
strcpy(symbol->errtxt, "Input out of range");
|
strcpy(symbol->errtxt, "Input out of range");
|
||||||
return ERROR_INVALID_DATA;
|
return ZERROR_INVALID_DATA;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -901,11 +895,7 @@ int rsslimited(struct zint_symbol *symbol, unsigned char source[], int src_len)
|
|||||||
if(latch == '1') { set_module(symbol, symbol->rows, writer); } else { unset_module(symbol, symbol->rows, writer); }
|
if(latch == '1') { set_module(symbol, symbol->rows, writer); } else { unset_module(symbol, symbol->rows, writer); }
|
||||||
writer++;
|
writer++;
|
||||||
}
|
}
|
||||||
if(latch == '1') {
|
latch = (latch == '1' ? '0' : '1');
|
||||||
latch = '0';
|
|
||||||
} else {
|
|
||||||
latch = '1';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if(symbol->width < writer) { symbol->width = writer; }
|
if(symbol->width < writer) { symbol->width = writer; }
|
||||||
symbol->rows = symbol->rows + 1;
|
symbol->rows = symbol->rows + 1;
|
||||||
@@ -932,12 +922,10 @@ int rsslimited(struct zint_symbol *symbol, unsigned char source[], int src_len)
|
|||||||
hrt[12 - i] = source[src_len - i - 1];
|
hrt[12 - i] = source[src_len - i - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 13; i++)
|
for (i = 0; i < 13; i++) {
|
||||||
{
|
|
||||||
count += ctoi(hrt[i]);
|
count += ctoi(hrt[i]);
|
||||||
|
|
||||||
if ((i%2) == 0)
|
if (!(i & 1)) {
|
||||||
{
|
|
||||||
count += 2 * (ctoi(hrt[i]));
|
count += 2 * (ctoi(hrt[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -959,6 +947,8 @@ int general_rules(char field[], char type[])
|
|||||||
int block[2][200], block_count, i, j, k;
|
int block[2][200], block_count, i, j, k;
|
||||||
char current, next, last;
|
char current, next, last;
|
||||||
|
|
||||||
|
current = field[0]; /* to silence compiler warning */
|
||||||
|
|
||||||
block_count = 0;
|
block_count = 0;
|
||||||
|
|
||||||
block[0][block_count] = 1;
|
block[0][block_count] = 1;
|
||||||
@@ -1045,7 +1035,7 @@ int general_rules(char field[], char type[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
for(i = 0; i < block_count - 1; i++) {
|
for(i = 0; i < block_count - 1; i++) {
|
||||||
if((block[1][i] == NUMERIC) && (block[0][i] % 2 == 1)) {
|
if((block[1][i] == NUMERIC) && (block[0][i] & 1)) {
|
||||||
/* Odd size numeric block */
|
/* Odd size numeric block */
|
||||||
block[0][i] = block[0][i] - 1;
|
block[0][i] = block[0][i] - 1;
|
||||||
block[0][i + 1] = block[0][i + 1] + 1;
|
block[0][i + 1] = block[0][i + 1] + 1;
|
||||||
@@ -1060,7 +1050,7 @@ int general_rules(char field[], char type[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if((block[1][block_count - 1] == NUMERIC) && (block[0][block_count - 1] % 2 == 1)) {
|
if((block[1][block_count - 1] == NUMERIC) && (block[0][block_count - 1] & 1)) {
|
||||||
/* If the last block is numeric and an odd size, further
|
/* If the last block is numeric and an odd size, further
|
||||||
processing needs to be done outside this procedure */
|
processing needs to be done outside this procedure */
|
||||||
return 1;
|
return 1;
|
||||||
@@ -1255,7 +1245,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
if((source[i] != '[') && (source[i] != ']')) {
|
if((source[i] != '[') && (source[i] != ']')) {
|
||||||
/* Something is wrong */
|
/* Something is wrong */
|
||||||
strcpy(symbol->errtxt, "Invalid characters in input data");
|
strcpy(symbol->errtxt, "Invalid characters in input data");
|
||||||
return ERROR_INVALID_DATA;
|
return ZERROR_INVALID_DATA;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1274,11 +1264,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x08;
|
mask = 0x08;
|
||||||
for(j = 0; j < 4; j++) {
|
for(j = 0; j < 4; j++) {
|
||||||
if((group_val & mask) == 0x00) {
|
concat(binary_string, (group_val & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1291,11 +1277,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x200;
|
mask = 0x200;
|
||||||
for(j = 0; j < 10; j++) {
|
for(j = 0; j < 10; j++) {
|
||||||
if((group_val & mask) == 0x00) {
|
concat(binary_string, (group_val & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1320,11 +1302,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x200;
|
mask = 0x200;
|
||||||
for(j = 0; j < 10; j++) {
|
for(j = 0; j < 10; j++) {
|
||||||
if((group_val & mask) == 0x00) {
|
concat(binary_string, (group_val & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1337,11 +1315,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x4000;
|
mask = 0x4000;
|
||||||
for(j = 0; j < 15; j++) {
|
for(j = 0; j < 15; j++) {
|
||||||
if((group_val & mask) == 0x00) {
|
concat(binary_string, (group_val & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1364,11 +1338,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x200;
|
mask = 0x200;
|
||||||
for(j = 0; j < 10; j++) {
|
for(j = 0; j < 10; j++) {
|
||||||
if((group_val & mask) == 0x00) {
|
concat(binary_string, (group_val & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1385,11 +1355,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x4000;
|
mask = 0x4000;
|
||||||
for(j = 0; j < 15; j++) {
|
for(j = 0; j < 15; j++) {
|
||||||
if((group_val & mask) == 0x00) {
|
concat(binary_string, (group_val & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1413,11 +1379,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x200;
|
mask = 0x200;
|
||||||
for(j = 0; j < 10; j++) {
|
for(j = 0; j < 10; j++) {
|
||||||
if((group_val & mask) == 0x00) {
|
concat(binary_string, (group_val & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1432,11 +1394,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x80000;
|
mask = 0x80000;
|
||||||
for(j = 0; j < 20; j++) {
|
for(j = 0; j < 20; j++) {
|
||||||
if((group_val & mask) == 0x00) {
|
concat(binary_string, (group_val & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1460,11 +1418,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x8000;
|
mask = 0x8000;
|
||||||
for(j = 0; j < 16; j++) {
|
for(j = 0; j < 16; j++) {
|
||||||
if((group_val & mask) == 0x00) {
|
concat(binary_string, (group_val & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1484,11 +1438,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x200;
|
mask = 0x200;
|
||||||
for(j = 0; j < 10; j++) {
|
for(j = 0; j < 10; j++) {
|
||||||
if((group_val & mask) == 0x00) {
|
concat(binary_string, (group_val & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1518,11 +1468,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x200;
|
mask = 0x200;
|
||||||
for(j = 0; j < 10; j++) {
|
for(j = 0; j < 10; j++) {
|
||||||
if((group_val & mask) == 0x00) {
|
concat(binary_string, (group_val & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1542,11 +1488,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x200;
|
mask = 0x200;
|
||||||
for(j = 0; j < 10; j++) {
|
for(j = 0; j < 10; j++) {
|
||||||
if((group_val & mask) == 0x00) {
|
concat(binary_string, (group_val & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1629,7 +1571,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
if(latch == 1) {
|
if(latch == 1) {
|
||||||
/* Invalid characters in input data */
|
/* Invalid characters in input data */
|
||||||
strcpy(symbol->errtxt, "Invalid characters in input data");
|
strcpy(symbol->errtxt, "Invalid characters in input data");
|
||||||
return ERROR_INVALID_DATA;
|
return ZERROR_INVALID_DATA;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = 0; i < strlen(general_field); i++) {
|
for(i = 0; i < strlen(general_field); i++) {
|
||||||
@@ -1689,12 +1631,9 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x40;
|
mask = 0x40;
|
||||||
for(j = 0; j < 7; j++) {
|
for(j = 0; j < 7; j++) {
|
||||||
if((value & mask) == 0x00) {
|
concat(binary_string, (value & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
if (debug) {
|
||||||
if(debug) printf("0");
|
printf("%d", !!(value & mask));
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
if(debug) printf("1");
|
|
||||||
}
|
}
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
@@ -1721,11 +1660,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x10;
|
mask = 0x10;
|
||||||
for(j = 0; j < 5; j++) {
|
for(j = 0; j < 5; j++) {
|
||||||
if((value & mask) == 0x00) {
|
concat(binary_string, (value & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1736,11 +1671,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x20;
|
mask = 0x20;
|
||||||
for(j = 0; j < 6; j++) {
|
for(j = 0; j < 6; j++) {
|
||||||
if((value & mask) == 0x00) {
|
concat(binary_string, (value & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1774,11 +1705,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x10;
|
mask = 0x10;
|
||||||
for(j = 0; j < 5; j++) {
|
for(j = 0; j < 5; j++) {
|
||||||
if((value & mask) == 0x00) {
|
concat(binary_string, (value & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1789,11 +1716,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x40;
|
mask = 0x40;
|
||||||
for(j = 0; j < 7; j++) {
|
for(j = 0; j < 7; j++) {
|
||||||
if((value & mask) == 0x00) {
|
concat(binary_string, (value & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1804,11 +1727,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x40;
|
mask = 0x40;
|
||||||
for(j = 0; j < 7; j++) {
|
for(j = 0; j < 7; j++) {
|
||||||
if((value & mask) == 0x00) {
|
concat(binary_string, (value & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1859,11 +1778,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x08;
|
mask = 0x08;
|
||||||
for(j = 0; j < 4; j++) {
|
for(j = 0; j < 4; j++) {
|
||||||
if((value & mask) == 0x00) {
|
concat(binary_string, (value & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -1874,11 +1789,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x40;
|
mask = 0x40;
|
||||||
for(j = 0; j < 7; j++) {
|
for(j = 0; j < 7; j++) {
|
||||||
if((value & mask) == 0x00) {
|
concat(binary_string, (value & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1887,11 +1798,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
mask = 0x10;
|
mask = 0x10;
|
||||||
for(j = 0; j < 5; j++) {
|
for(j = 0; j < 5; j++) {
|
||||||
if((value & mask) == 0x00) {
|
concat(binary_string, (value & mask) ? "1" : "0");
|
||||||
concat(binary_string, "0");
|
|
||||||
} else {
|
|
||||||
concat(binary_string, "1");
|
|
||||||
}
|
|
||||||
mask = mask >> 1;
|
mask = mask >> 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1905,7 +1812,7 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
|
|
||||||
if(strlen(binary_string) > 252) {
|
if(strlen(binary_string) > 252) {
|
||||||
strcpy(symbol->errtxt, "Input too long");
|
strcpy(symbol->errtxt, "Input too long");
|
||||||
return ERROR_TOO_LONG;
|
return ZERROR_TOO_LONG;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now add padding to binary string (7.2.5.5.4) */
|
/* Now add padding to binary string (7.2.5.5.4) */
|
||||||
@@ -1924,20 +1831,20 @@ int rss_binary_string(struct zint_symbol *symbol, char source[], char binary_str
|
|||||||
concat(binary_string, padstring);
|
concat(binary_string, padstring);
|
||||||
|
|
||||||
/* Patch variable length symbol bit field */
|
/* Patch variable length symbol bit field */
|
||||||
d1 = ((strlen(binary_string) / 12) + 1) % 2;
|
d1 = ((strlen(binary_string) / 12) + 1) & 1;
|
||||||
if(strlen(binary_string) <= 156) { d2 = 0; } else { d2 = 1; }
|
if(strlen(binary_string) <= 156) { d2 = 0; } else { d2 = 1; }
|
||||||
|
|
||||||
if(encoding_method == 1) {
|
if(encoding_method == 1) {
|
||||||
if(d1 == 0) { binary_string[2] = '0'; } else { binary_string[2] = '1'; }
|
binary_string[2] = d1 ? '1' : '0';
|
||||||
if(d2 == 0) { binary_string[3] = '0'; } else { binary_string[3] = '1'; }
|
binary_string[3] = d2 ? '1' : '0';
|
||||||
}
|
}
|
||||||
if(encoding_method == 2) {
|
if(encoding_method == 2) {
|
||||||
if(d1 == 0) { binary_string[3] = '0'; } else { binary_string[3] = '1'; }
|
binary_string[3] = d1 ? '1' : '0';
|
||||||
if(d2 == 0) { binary_string[4] = '0'; } else { binary_string[4] = '1'; }
|
binary_string[4] = d2 ? '1' : '0';
|
||||||
}
|
}
|
||||||
if((encoding_method == 5) || (encoding_method == 6)) {
|
if((encoding_method == 5) || (encoding_method == 6)) {
|
||||||
if(d1 == 0) { binary_string[6] = '0'; } else { binary_string[6] = '1'; }
|
binary_string[6] = d1 ? '1' : '0';
|
||||||
if(d2 == 0) { binary_string[7] = '0'; } else { binary_string[7] = '1'; }
|
binary_string[7] = d2 ? '1' : '0';
|
||||||
}
|
}
|
||||||
if(debug) printf("Resultant binary = %s\n", binary_string);
|
if(debug) printf("Resultant binary = %s\n", binary_string);
|
||||||
if(debug) printf("\tLength: %d\n", (int)strlen(binary_string));
|
if(debug) printf("\tLength: %d\n", (int)strlen(binary_string));
|
||||||
@@ -2070,7 +1977,7 @@ int rssexpanded(struct zint_symbol *symbol, unsigned char source[], int src_len)
|
|||||||
check_widths[7] = widths[3];
|
check_widths[7] = widths[3];
|
||||||
|
|
||||||
/* Initialise element array */
|
/* Initialise element array */
|
||||||
pattern_width = ((((data_chars + 1) / 2) + ((data_chars + 1) % 2)) * 5) + ((data_chars + 1) * 8) + 4;
|
pattern_width = ((((data_chars + 1) / 2) + ((data_chars + 1) & 1)) * 5) + ((data_chars + 1) * 8) + 4;
|
||||||
for(i = 0; i < pattern_width; i++) {
|
for(i = 0; i < pattern_width; i++) {
|
||||||
elements[i] = 0;
|
elements[i] = 0;
|
||||||
}
|
}
|
||||||
@@ -2081,8 +1988,8 @@ int rssexpanded(struct zint_symbol *symbol, unsigned char source[], int src_len)
|
|||||||
elements[pattern_width - 1] = 1;
|
elements[pattern_width - 1] = 1;
|
||||||
|
|
||||||
/* Put finder patterns in element array */
|
/* Put finder patterns in element array */
|
||||||
for(i = 0; i < (((data_chars + 1) / 2) + ((data_chars + 1) % 2)); i++) {
|
for(i = 0; i < (((data_chars + 1) / 2) + ((data_chars + 1) & 1)); i++) {
|
||||||
k = ((((((data_chars + 1) - 2) / 2) + ((data_chars + 1) % 2)) - 1) * 11) + i;
|
k = ((((((data_chars + 1) - 2) / 2) + ((data_chars + 1) & 1)) - 1) * 11) + i;
|
||||||
for(j = 0; j < 5; j++) {
|
for(j = 0; j < 5; j++) {
|
||||||
elements[(21 * i) + j + 10] = finder_pattern_exp[((finder_sequence[k] - 1) * 5) + j];
|
elements[(21 * i) + j + 10] = finder_pattern_exp[((finder_sequence[k] - 1) * 5) + j];
|
||||||
}
|
}
|
||||||
@@ -2194,9 +2101,9 @@ int rssexpanded(struct zint_symbol *symbol, unsigned char source[], int src_len)
|
|||||||
/* Row Data */
|
/* Row Data */
|
||||||
reader = 0;
|
reader = 0;
|
||||||
do {
|
do {
|
||||||
if(((symbol->option_2 % 2 == 1) || (current_row % 2 == 1)) ||
|
if(((symbol->option_2 & 1) || (current_row & 1)) ||
|
||||||
((current_row == stack_rows) && (codeblocks != (current_row * symbol->option_2)) &&
|
((current_row == stack_rows) && (codeblocks != (current_row * symbol->option_2)) &&
|
||||||
((((current_row * symbol->option_2) - codeblocks) % 2) == 1) )) {
|
(((current_row * symbol->option_2) - codeblocks) & 1))) {
|
||||||
/* left to right */
|
/* left to right */
|
||||||
left_to_right = 1;
|
left_to_right = 1;
|
||||||
i = 2 + (current_block * 21);
|
i = 2 + (current_block * 21);
|
||||||
@@ -2234,14 +2141,10 @@ int rssexpanded(struct zint_symbol *symbol, unsigned char source[], int src_len)
|
|||||||
sub_elements[elements_in_sub + 1] = 1;
|
sub_elements[elements_in_sub + 1] = 1;
|
||||||
elements_in_sub += 2;
|
elements_in_sub += 2;
|
||||||
|
|
||||||
if(current_row % 2 == 1) {
|
latch = current_row & 1 ? '0' : '1';
|
||||||
latch = '0';
|
|
||||||
} else {
|
|
||||||
latch = '1';
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((current_row == stack_rows) && (codeblocks != (current_row * symbol->option_2)) &&
|
if ((current_row == stack_rows) && (codeblocks != (current_row * symbol->option_2)) &&
|
||||||
((((current_row * symbol->option_2) - codeblocks) % 2) == 1) ) {
|
(((current_row * symbol->option_2) - codeblocks) & 1) ) {
|
||||||
/* Special case bottom row */
|
/* Special case bottom row */
|
||||||
special_case_row = 1;
|
special_case_row = 1;
|
||||||
sub_elements[0] = 2;
|
sub_elements[0] = 2;
|
||||||
@@ -2279,11 +2182,7 @@ int rssexpanded(struct zint_symbol *symbol, unsigned char source[], int src_len)
|
|||||||
symbol->row_height[symbol->rows - 1] = 1;
|
symbol->row_height[symbol->rows - 1] = 1;
|
||||||
/* finder bar adjustment */
|
/* finder bar adjustment */
|
||||||
for(j = 0; j < reader; j++) {
|
for(j = 0; j < reader; j++) {
|
||||||
if(special_case_row == 0) {
|
k = (49 * j) + (special_case_row ? 19 : 18);
|
||||||
k = (49 * j) + 18;
|
|
||||||
} else {
|
|
||||||
k = (49 * j) + 19;
|
|
||||||
}
|
|
||||||
if(left_to_right) {
|
if(left_to_right) {
|
||||||
for(i = 0; i < 15; i++) {
|
for(i = 0; i < 15; i++) {
|
||||||
if((!(module_is_set(symbol, symbol->rows, i + k - 1))) &&
|
if((!(module_is_set(symbol, symbol->rows, i + k - 1))) &&
|
||||||
|
|||||||
Reference in New Issue
Block a user