mirror of
https://github.com/zint/zint
synced 2024-11-16 20:57:25 +13:00
Allow Unicode in SVG output text
This commit is contained in:
parent
aa9edfb320
commit
636a18c74f
@ -65,7 +65,7 @@ int matrix_two_of_five(struct zint_symbol *symbol, unsigned char source[])
|
||||
concat (dest, "41111");
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -99,7 +99,7 @@ int industrial_two_of_five(struct zint_symbol *symbol, unsigned char source[])
|
||||
concat (dest, "31113");
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -132,7 +132,7 @@ int iata_two_of_five(struct zint_symbol *symbol, unsigned char source[])
|
||||
concat (dest, "311");
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -166,7 +166,7 @@ int logic_two_of_five(struct zint_symbol *symbol, unsigned char source[])
|
||||
concat (dest, "311");
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -234,7 +234,7 @@ int interleaved_two_of_five(struct zint_symbol *symbol, unsigned char source[])
|
||||
concat (dest, "311");
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
return error_number;
|
||||
|
||||
}
|
||||
@ -287,7 +287,7 @@ int itf14(struct zint_symbol *symbol, unsigned char source[])
|
||||
checkstr[1] = '\0';
|
||||
concat(localstr, checkstr);
|
||||
error_number = interleaved_two_of_five(symbol, (unsigned char *)localstr);
|
||||
strcpy(symbol->text, localstr);
|
||||
ustrcpy(symbol->text, (unsigned char*)localstr);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -332,7 +332,7 @@ int dpleit(struct zint_symbol *symbol, unsigned char source[])
|
||||
checkstr[1] = '\0';
|
||||
concat(localstr, checkstr);
|
||||
error_number = interleaved_two_of_five(symbol, (unsigned char *)localstr);
|
||||
strcpy(symbol->text, localstr);
|
||||
ustrcpy(symbol->text, (unsigned char*)localstr);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -375,6 +375,6 @@ int dpident(struct zint_symbol *symbol, unsigned char source[])
|
||||
checkstr[1] = '\0';
|
||||
concat(localstr, checkstr);
|
||||
error_number = interleaved_two_of_five(symbol, (unsigned char *)localstr);
|
||||
strcpy(symbol->text, localstr);
|
||||
ustrcpy(symbol->text, (unsigned char*)localstr);
|
||||
return error_number;
|
||||
}
|
||||
|
@ -147,8 +147,8 @@ int code_11(struct zint_symbol *symbol, unsigned char source[])
|
||||
|
||||
expand(symbol, dest);
|
||||
|
||||
strcpy(symbol->text, (char*)source);
|
||||
concat(symbol->text, checkstr);
|
||||
ustrcpy(symbol->text, source);
|
||||
uconcat(symbol->text, (unsigned char*)checkstr);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -235,11 +235,11 @@ int c39(struct zint_symbol *symbol, unsigned char source[])
|
||||
expand(symbol, dest);
|
||||
|
||||
if(symbol->symbology == BARCODE_CODE39) {
|
||||
strcpy(symbol->text, "*");
|
||||
concat(symbol->text, (char*)source);
|
||||
concat(symbol->text, "*");
|
||||
ustrcpy(symbol->text, (unsigned char*)"*");
|
||||
uconcat(symbol->text, source);
|
||||
uconcat(symbol->text, (unsigned char*)"*");
|
||||
} else {
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
}
|
||||
return error_number;
|
||||
}
|
||||
@ -287,8 +287,8 @@ int pharmazentral(struct zint_symbol *symbol, unsigned char source[])
|
||||
}
|
||||
concat(localstr, checkstr);
|
||||
error_number = c39(symbol, (unsigned char *)localstr);
|
||||
strcpy(symbol->text, "PZN");
|
||||
concat(symbol->text, localstr);
|
||||
ustrcpy(symbol->text, (unsigned char *)"PZN");
|
||||
uconcat(symbol->text, (unsigned char *)localstr);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -336,8 +336,8 @@ int ec39(struct zint_symbol *symbol, unsigned char source[])
|
||||
/* Then sends the buffer to the C39 function */
|
||||
error_number = c39(symbol, buffer);
|
||||
|
||||
strcpy(symbol->text, (char*)source);
|
||||
for(i = 0; i < strlen(symbol->text); i++) {
|
||||
ustrcpy(symbol->text, source);
|
||||
for(i = 0; i < ustrlen(symbol->text); i++) {
|
||||
if(symbol->text[i] == symbol->nullchar) {
|
||||
symbol->text[i] = ' ';
|
||||
}
|
||||
@ -458,8 +458,8 @@ int c93(struct zint_symbol *symbol, unsigned char source[])
|
||||
source[h + 1] = set_copy[k];
|
||||
source[h + 2] = '\0';
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
for(i = 0; i < strlen(symbol->text); i++) {
|
||||
ustrcpy(symbol->text, source);
|
||||
for(i = 0; i < ustrlen(symbol->text); i++) {
|
||||
if(symbol->text[i] == symbol->nullchar) {
|
||||
symbol->text[i] = ' ';
|
||||
}
|
||||
|
@ -543,8 +543,8 @@ int code_128(struct zint_symbol *symbol, unsigned char source[])
|
||||
/* Stop character */
|
||||
concat(dest, C128Table[106]);
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
for(i = 0; i < strlen(symbol->text); i++) {
|
||||
ustrcpy(symbol->text, source);
|
||||
for(i = 0; i < ustrlen(symbol->text); i++) {
|
||||
if(symbol->text[i] == symbol->nullchar) {
|
||||
symbol->text[i] = ' ';
|
||||
}
|
||||
|
@ -33,6 +33,17 @@ int ustrlen(unsigned char data[]) {
|
||||
return i;
|
||||
}
|
||||
|
||||
void ustrcpy(unsigned char target[], unsigned char source[]) {
|
||||
/* Local replacement for strcpy() with unsigned char strings */
|
||||
int i, len;
|
||||
|
||||
len = ustrlen(source);
|
||||
for(i = 0; i < len; i++) {
|
||||
target[i] = source[i];
|
||||
}
|
||||
target[i] = '\0';
|
||||
}
|
||||
|
||||
void concat(char dest[], char source[])
|
||||
{ /* Concatinates dest[] with the contents of source[], copying /0 as well */
|
||||
unsigned int i, j;
|
||||
@ -42,6 +53,16 @@ void concat(char dest[], char source[])
|
||||
dest[i + j] = source[i]; }
|
||||
}
|
||||
|
||||
void uconcat(unsigned char dest[], unsigned char source[])
|
||||
{ /* Concatinates dest[] with the contents of source[], copying /0 as well */
|
||||
unsigned int i, j;
|
||||
|
||||
j = ustrlen(dest);
|
||||
for(i = 0; i <= ustrlen(source); i++) {
|
||||
dest[i + j] = source[i]; }
|
||||
}
|
||||
|
||||
|
||||
int ctoi(char source)
|
||||
{ /* Converts a character 0-9 to its equivalent integer value */
|
||||
if((source >= '0') && (source <= '9'))
|
||||
|
@ -29,7 +29,9 @@
|
||||
#include "zint.h"
|
||||
|
||||
int ustrlen(unsigned char source[]);
|
||||
void ustrcpy(unsigned char target[], unsigned char source[]);
|
||||
void concat(char dest[], char source[]);
|
||||
void uconcat(unsigned char dest[], unsigned char source[]);
|
||||
int ctoi(char source);
|
||||
char itoc(int source);
|
||||
void to_upper(unsigned char source[]);
|
||||
@ -39,3 +41,4 @@ int posn(char set_string[], char data);
|
||||
void expand(struct zint_symbol *symbol, char data[]);
|
||||
int is_stackable(int symbology);
|
||||
int roundup(float input);
|
||||
|
||||
|
@ -1866,7 +1866,7 @@ int composite(struct zint_symbol *symbol, unsigned char source[])
|
||||
symbol->width += top_shift;
|
||||
}
|
||||
symbol->rows += linear->rows;
|
||||
strcpy(symbol->text, linear->text);
|
||||
ustrcpy(symbol->text, (unsigned char *)linear->text);
|
||||
|
||||
|
||||
ZBarcode_Delete(linear);
|
||||
|
@ -197,16 +197,16 @@ int hibc(struct zint_symbol *symbol, unsigned char source[])
|
||||
switch(symbol->symbology) {
|
||||
case BARCODE_HIBC_128:
|
||||
error_number = code_128(symbol, (unsigned char *)to_process);
|
||||
strcpy(symbol->text, "*");
|
||||
concat(symbol->text, to_process);
|
||||
concat(symbol->text, "*");
|
||||
ustrcpy(symbol->text, (unsigned char*)"*");
|
||||
uconcat(symbol->text, (unsigned char*)to_process);
|
||||
uconcat(symbol->text, (unsigned char*)"*");
|
||||
break;
|
||||
case BARCODE_HIBC_39:
|
||||
symbol->option_2 = 0;
|
||||
error_number = c39(symbol, (unsigned char *)to_process);
|
||||
strcpy(symbol->text, "*");
|
||||
concat(symbol->text, to_process);
|
||||
concat(symbol->text, "*");
|
||||
ustrcpy(symbol->text, (unsigned char*)"*");
|
||||
uconcat(symbol->text, (unsigned char*)to_process);
|
||||
uconcat(symbol->text, (unsigned char*)"*");
|
||||
break;
|
||||
case BARCODE_HIBC_DM:
|
||||
error_number = dmatrix(symbol, (unsigned char *)to_process);
|
||||
@ -300,16 +300,6 @@ int gs1_compliant(int symbology)
|
||||
return result;
|
||||
}
|
||||
|
||||
void ustrcpy(unsigned char dest[], unsigned char source[]) {
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
do {
|
||||
dest[i] = source[i];
|
||||
i++;
|
||||
} while (source[i - 1] != '\0');
|
||||
}
|
||||
|
||||
int ZBarcode_Encode(struct zint_symbol *symbol, unsigned char *source)
|
||||
{
|
||||
int error_number, error_buffer;
|
||||
@ -489,6 +479,10 @@ int ZBarcode_Encode(struct zint_symbol *symbol, unsigned char *source)
|
||||
case BARCODE_HIBC_MICPDF: error_number = hibc(symbol, preprocessed); break;
|
||||
case BARCODE_HIBC_BLOCKF: error_number = hibc(symbol, preprocessed); break;
|
||||
}
|
||||
|
||||
if((symbol->symbology == BARCODE_CODE128) || (symbol->symbology == BARCODE_CODE128B)) {
|
||||
ustrcpy(symbol->text, source);
|
||||
}
|
||||
if(error_number == 0) {
|
||||
error_number = error_buffer;
|
||||
}
|
||||
|
@ -96,7 +96,7 @@ int pharma_one(struct zint_symbol *symbol, unsigned char source[])
|
||||
}
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, "");
|
||||
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -190,7 +190,7 @@ int pharma_two(struct zint_symbol *symbol, unsigned char source[])
|
||||
symbol->rows = 2;
|
||||
symbol->width = writer - 1;
|
||||
|
||||
strcpy(symbol->text, "");
|
||||
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -235,7 +235,7 @@ int codabar(struct zint_symbol *symbol, unsigned char source[])
|
||||
}
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -315,8 +315,8 @@ int code32(struct zint_symbol *symbol, unsigned char source[])
|
||||
if(error_number != 0) { return error_number; }
|
||||
|
||||
/* Override the normal text output with the Pharmacode number */
|
||||
strcpy(symbol->text, "A");
|
||||
concat(symbol->text, localstr);
|
||||
ustrcpy(symbol->text, (unsigned char*)"A");
|
||||
uconcat(symbol->text, (unsigned char*)localstr);
|
||||
|
||||
return error_number;
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ int plessey(struct zint_symbol *symbol, unsigned char source[])
|
||||
concat(dest, "331311313");
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
free(checkptr);
|
||||
return error_number;
|
||||
}
|
||||
@ -130,7 +130,7 @@ int msi_plessey(struct zint_symbol *symbol, unsigned char source[])
|
||||
concat (dest, "121");
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -228,7 +228,7 @@ int msi_plessey_mod10(struct zint_symbol *symbol, unsigned char source[])
|
||||
source[h] = itoc(pump);
|
||||
source[h + 1] = '\0';
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -383,7 +383,7 @@ int msi_plessey_mod1010(struct zint_symbol *symbol, unsigned char source[])
|
||||
source[h + 1] = itoc(chwech);
|
||||
source[h + 2] = '\0';
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -453,7 +453,7 @@ int msi_plessey_mod11(struct zint_symbol *symbol, unsigned char source[])
|
||||
concat (dest, "121");
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -579,7 +579,7 @@ int msi_plessey_mod1110(struct zint_symbol *symbol, unsigned char source[])
|
||||
source[h + 1] = '\0';
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
|
@ -426,6 +426,38 @@ int maxi_png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
return error_number;
|
||||
}
|
||||
|
||||
void to_latin1(unsigned char source[], unsigned char preprocessed[])
|
||||
{
|
||||
int j, i, next, input_length;
|
||||
|
||||
input_length = ustrlen(source);
|
||||
|
||||
j = 0;
|
||||
i = 0;
|
||||
do {
|
||||
if(source[i] < 128) {
|
||||
preprocessed[j] = source[i];
|
||||
j++;
|
||||
next = i + 1;
|
||||
} else {
|
||||
if(source[i] == 0xC2) {
|
||||
preprocessed[j] = source[i + 1];
|
||||
j++;
|
||||
next = i + 2;
|
||||
}
|
||||
if(source[i] == 0xC3) {
|
||||
preprocessed[j] = source[i + 1] + 64;
|
||||
j++;
|
||||
next = i + 2;
|
||||
}
|
||||
}
|
||||
i = next;
|
||||
} while(i < input_length);
|
||||
preprocessed[j] = '\0';
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
{
|
||||
int textdone, main_width, comp_offset, large_bar_count;
|
||||
@ -438,6 +470,10 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
float row_height, row_posn;
|
||||
int error_number;
|
||||
int scaler = (int)(2 * symbol->scale);
|
||||
int default_text_posn;
|
||||
unsigned char local_text[ustrlen(symbol->text)];
|
||||
|
||||
to_latin1(symbol->text, local_text);
|
||||
|
||||
textdone = 0;
|
||||
main_width = symbol->width;
|
||||
@ -470,7 +506,7 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
|
||||
/* Certain symbols need whitespace otherwise characters get chopped off the sides */
|
||||
if (((symbol->symbology == BARCODE_EANX) && (symbol->rows == 1)) || (symbol->symbology == BARCODE_EANX_CC)) {
|
||||
switch(strlen(symbol->text)) {
|
||||
switch(ustrlen(local_text)) {
|
||||
case 13: /* EAN 13 */
|
||||
case 16:
|
||||
case 19:
|
||||
@ -501,9 +537,9 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
latch = 0;
|
||||
r = 0;
|
||||
/* Isolate add-on text */
|
||||
for(i = 0; i < strlen(symbol->text); i++) {
|
||||
for(i = 0; i < ustrlen(local_text); i++) {
|
||||
if (latch == 1) {
|
||||
addon[r] = symbol->text[i];
|
||||
addon[r] = local_text[i];
|
||||
r++;
|
||||
}
|
||||
if (symbol->text[i] == '+') {
|
||||
@ -512,7 +548,7 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
}
|
||||
addon[r] = '\0';
|
||||
|
||||
if(strcmp(symbol->text, "")) {
|
||||
if(ustrlen(local_text) != 0) {
|
||||
textoffset = 9;
|
||||
} else {
|
||||
textoffset = 0;
|
||||
@ -531,6 +567,12 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
}
|
||||
}
|
||||
|
||||
if(((symbol->output_options & BARCODE_BOX) != 0) || ((symbol->output_options & BARCODE_BIND) != 0)) {
|
||||
default_text_posn = image_height - 17;
|
||||
} else {
|
||||
default_text_posn = image_height - 17 - symbol->border_width - symbol->border_width;
|
||||
}
|
||||
|
||||
/* Plot the body of the symbol to the pixel buffer */
|
||||
for(r = 0; r < symbol->rows; r++) {
|
||||
this_row = symbol->rows - r - 1; /* invert r otherwise plots upside down */
|
||||
@ -587,7 +629,7 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
|
||||
if (((symbol->symbology == BARCODE_EANX) && (symbol->rows == 1)) || (symbol->symbology == BARCODE_EANX_CC)) {
|
||||
/* guard bar extensions and text formatting for EAN8 and EAN13 */
|
||||
switch(strlen(symbol->text)) {
|
||||
switch(ustrlen(local_text)) {
|
||||
case 8: /* EAN-8 */
|
||||
case 11:
|
||||
case 14:
|
||||
@ -602,13 +644,14 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
}
|
||||
textpart[4] = '\0';
|
||||
textpos = scaler * (17 + xoffset);
|
||||
draw_string(pixelbuf, textpart, textpos, (image_height - 17), image_width, image_height);
|
||||
|
||||
draw_string(pixelbuf, textpart, textpos, default_text_posn, image_width, image_height);
|
||||
for(i = 0; i < 4; i++) {
|
||||
textpart[i] = symbol->text[i + 4];
|
||||
}
|
||||
textpart[4] = '\0';
|
||||
textpos = scaler * (50 + xoffset);
|
||||
draw_string(pixelbuf, textpart, textpos, (image_height - 17), image_width, image_height);
|
||||
draw_string(pixelbuf, textpart, textpos, default_text_posn, image_width, image_height);
|
||||
textdone = 1;
|
||||
switch(strlen(addon)) {
|
||||
case 2:
|
||||
@ -635,19 +678,19 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
textpart[0] = symbol->text[0];
|
||||
textpart[1] = '\0';
|
||||
textpos = scaler * (-7 + xoffset);
|
||||
draw_string(pixelbuf, textpart, textpos, (image_height - 17), image_width, image_height);
|
||||
draw_string(pixelbuf, textpart, textpos, default_text_posn, image_width, image_height);
|
||||
for(i = 0; i < 6; i++) {
|
||||
textpart[i] = symbol->text[i + 1];
|
||||
}
|
||||
textpart[6] = '\0';
|
||||
textpos = scaler * (24 + xoffset);
|
||||
draw_string(pixelbuf, textpart, textpos, (image_height - 17), image_width, image_height);
|
||||
draw_string(pixelbuf, textpart, textpos, default_text_posn, image_width, image_height);
|
||||
for(i = 0; i < 6; i++) {
|
||||
textpart[i] = symbol->text[i + 7];
|
||||
}
|
||||
textpart[6] = '\0';
|
||||
textpos = scaler * (71 + xoffset);
|
||||
draw_string(pixelbuf, textpart, textpos, (image_height - 17), image_width, image_height);
|
||||
draw_string(pixelbuf, textpart, textpos, default_text_posn, image_width, image_height);
|
||||
textdone = 1;
|
||||
switch(strlen(addon)) {
|
||||
case 2:
|
||||
@ -706,23 +749,23 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
textpart[0] = symbol->text[0];
|
||||
textpart[1] = '\0';
|
||||
textpos = scaler * (-5 + xoffset);
|
||||
draw_string(pixelbuf, textpart, textpos, (image_height - 17), image_width, image_height);
|
||||
draw_string(pixelbuf, textpart, textpos, default_text_posn, image_width, image_height);
|
||||
for(i = 0; i < 5; i++) {
|
||||
textpart[i] = symbol->text[i + 1];
|
||||
}
|
||||
textpart[5] = '\0';
|
||||
textpos = scaler * (27 + xoffset);
|
||||
draw_string(pixelbuf, textpart, textpos, (image_height - 17), image_width, image_height);
|
||||
draw_string(pixelbuf, textpart, textpos, default_text_posn, image_width, image_height);
|
||||
for(i = 0; i < 5; i++) {
|
||||
textpart[i] = symbol->text[i + 6];
|
||||
}
|
||||
textpart[6] = '\0';
|
||||
textpos = scaler * (68 + xoffset);
|
||||
draw_string(pixelbuf, textpart, textpos, (image_height - 17), image_width, image_height);
|
||||
draw_string(pixelbuf, textpart, textpos, default_text_posn, image_width, image_height);
|
||||
textpart[0] = symbol->text[11];
|
||||
textpart[1] = '\0';
|
||||
textpos = scaler * (100 + xoffset);
|
||||
draw_string(pixelbuf, textpart, textpos, (image_height - 17), image_width, image_height);
|
||||
draw_string(pixelbuf, textpart, textpos, default_text_posn, image_width, image_height);
|
||||
textdone = 1;
|
||||
switch(strlen(addon)) {
|
||||
case 2:
|
||||
@ -748,17 +791,17 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
textpart[0] = symbol->text[0];
|
||||
textpart[1] = '\0';
|
||||
textpos = scaler * (-5 + xoffset);
|
||||
draw_string(pixelbuf, textpart, textpos, (image_height - 17), image_width, image_height);
|
||||
draw_string(pixelbuf, textpart, textpos, default_text_posn, image_width, image_height);
|
||||
for(i = 0; i < 6; i++) {
|
||||
textpart[i] = symbol->text[i + 1];
|
||||
}
|
||||
textpart[6] = '\0';
|
||||
textpos = scaler * (24 + xoffset);
|
||||
draw_string(pixelbuf, textpart, textpos, (image_height - 17), image_width, image_height);
|
||||
draw_string(pixelbuf, textpart, textpos, default_text_posn, image_width, image_height);
|
||||
textpart[0] = symbol->text[7];
|
||||
textpart[1] = '\0';
|
||||
textpos = scaler * (55 + xoffset);
|
||||
draw_string(pixelbuf, textpart, textpos, (image_height - 17), image_width, image_height);
|
||||
draw_string(pixelbuf, textpart, textpos, default_text_posn, image_width, image_height);
|
||||
textdone = 1;
|
||||
switch(strlen(addon)) {
|
||||
case 2:
|
||||
@ -809,9 +852,9 @@ int png_plot(struct zint_symbol *symbol, int rotate_angle)
|
||||
}
|
||||
|
||||
/* Put the human readable text at the bottom */
|
||||
if((textdone == 0) && (strlen(symbol->text) != 0)) {
|
||||
if((textdone == 0) && (ustrlen(local_text) != 0)) {
|
||||
textpos = (image_width / 2);
|
||||
draw_string(pixelbuf, symbol->text, textpos, (image_height - 17), image_width, image_height);
|
||||
draw_string(pixelbuf, (char*)local_text, textpos, default_text_posn, image_width, image_height);
|
||||
}
|
||||
|
||||
error_number=png_to_file(symbol, image_height, image_width, pixelbuf, rotate_angle);
|
||||
|
@ -55,7 +55,7 @@ int postnet(struct zint_symbol *symbol, unsigned char source[], char dest[])
|
||||
{
|
||||
/* Handles the PostNet system used for Zip codes in the US */
|
||||
unsigned int i, sum, check_digit;
|
||||
int error_number, h;
|
||||
int error_number;
|
||||
|
||||
error_number = 0;
|
||||
|
||||
@ -85,11 +85,6 @@ int postnet(struct zint_symbol *symbol, unsigned char source[], char dest[])
|
||||
/* stop character */
|
||||
concat (dest, "L");
|
||||
|
||||
h = ustrlen(source);
|
||||
source[h] = itoc(check_digit);
|
||||
source[h + 1] = '\0';
|
||||
strcpy(symbol->text, "");
|
||||
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -131,7 +126,7 @@ int planet(struct zint_symbol *symbol, unsigned char source[], char dest[])
|
||||
{
|
||||
/* Handles the PLANET system used for item tracking in the US */
|
||||
unsigned int i, sum, check_digit;
|
||||
int error_number, h;
|
||||
int error_number;
|
||||
|
||||
error_number = 0;
|
||||
|
||||
@ -161,11 +156,6 @@ int planet(struct zint_symbol *symbol, unsigned char source[], char dest[])
|
||||
/* stop character */
|
||||
concat (dest, "L");
|
||||
|
||||
h = ustrlen(source);
|
||||
source[h] = itoc(check_digit);
|
||||
source[h + 1] = '\0';
|
||||
strcpy(symbol->text, "");
|
||||
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -241,7 +231,7 @@ int korea_post(struct zint_symbol *symbol, unsigned char source[])
|
||||
}
|
||||
lookup(NESET, KoreaTable, localstr[6], dest);
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, localstr);
|
||||
ustrcpy(symbol->text, (unsigned char*)localstr);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -269,7 +259,6 @@ int fim(struct zint_symbol *symbol, unsigned char source[])
|
||||
lookup(BESET, FIMTable, source[0], dest);
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, "");
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -314,7 +303,7 @@ int royal_plot(struct zint_symbol *symbol, unsigned char source[])
|
||||
char height_pattern[200], check;
|
||||
unsigned int loopey;
|
||||
int writer;
|
||||
int error_number, h;
|
||||
int error_number;
|
||||
strcpy(height_pattern, "");
|
||||
|
||||
error_number = 0;
|
||||
@ -352,11 +341,6 @@ int royal_plot(struct zint_symbol *symbol, unsigned char source[])
|
||||
symbol->rows = 3;
|
||||
symbol->width = writer - 1;
|
||||
|
||||
h = ustrlen(source);
|
||||
source[h] = check;
|
||||
source[h + 1] = '\0';
|
||||
strcpy(symbol->text, "");
|
||||
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -417,8 +401,6 @@ int kix_code(struct zint_symbol *symbol, unsigned char source[])
|
||||
symbol->rows = 3;
|
||||
symbol->width = writer - 1;
|
||||
|
||||
strcpy(symbol->text, "");
|
||||
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -468,8 +450,6 @@ int daft_code(struct zint_symbol *symbol, unsigned char source[])
|
||||
symbol->rows = 3;
|
||||
symbol->width = writer - 1;
|
||||
|
||||
strcpy(symbol->text, "");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -497,6 +477,5 @@ int flattermarken(struct zint_symbol *symbol, unsigned char source[])
|
||||
}
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, "");
|
||||
return error_number;
|
||||
}
|
||||
|
44
backend/ps.c
44
backend/ps.c
@ -43,6 +43,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
int large_bar_count, comp_offset;
|
||||
float addon_text_posn;
|
||||
float scaler = symbol->scale;
|
||||
float default_text_posn;
|
||||
|
||||
row_height=0;
|
||||
textdone = 0;
|
||||
@ -121,7 +122,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
|
||||
/* Certain symbols need whitespace otherwise characters get chopped off the sides */
|
||||
if (((symbol->symbology == BARCODE_EANX) && (symbol->rows == 1)) || (symbol->symbology == BARCODE_EANX_CC)) {
|
||||
switch(strlen(symbol->text)) {
|
||||
switch(ustrlen(symbol->text)) {
|
||||
case 13: /* EAN 13 */
|
||||
case 16:
|
||||
case 19:
|
||||
@ -152,7 +153,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
latch = 0;
|
||||
r = 0;
|
||||
/* Isolate add-on text */
|
||||
for(i = 0; i < strlen(symbol->text); i++) {
|
||||
for(i = 0; i < ustrlen(symbol->text); i++) {
|
||||
if (latch == 1) {
|
||||
addon[r] = symbol->text[i];
|
||||
r++;
|
||||
@ -163,7 +164,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
}
|
||||
addon[r] = '\0';
|
||||
|
||||
if(strcmp(symbol->text, "")) {
|
||||
if(ustrlen(symbol->text) != 0) {
|
||||
textoffset = 9;
|
||||
} else {
|
||||
textoffset = 0;
|
||||
@ -174,7 +175,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
/* Start writing the header */
|
||||
fprintf(feps, "%%!PS-Adobe-3.0 EPSF-3.0\n");
|
||||
fprintf(feps, "%%%%Creator: Zint %s\n", ZINT_VERSION);
|
||||
if(strlen(symbol->text) != 0) {
|
||||
if(ustrlen(symbol->text) != 0) {
|
||||
fprintf(feps, "%%%%Title: %s\n",symbol->text);
|
||||
} else {
|
||||
fprintf(feps, "%%%%Title: Zint Generated Symbol\n");
|
||||
@ -202,6 +203,11 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_paper, green_paper, blue_paper);
|
||||
fprintf(feps, "%.2f 0.00 TB 0.00 %.2f TR\n", (symbol->height + textoffset + yoffset + yoffset) * scaler, (symbol->width + xoffset + xoffset) * scaler);
|
||||
|
||||
if(((symbol->output_options & BARCODE_BOX) != 0) || ((symbol->output_options & BARCODE_BIND) != 0)) {
|
||||
default_text_posn = 0.5 * scaler;
|
||||
} else {
|
||||
default_text_posn = (symbol->border_width + 0.5) * scaler;
|
||||
}
|
||||
|
||||
if(symbol->symbology == BARCODE_MAXICODE) {
|
||||
/* Maxicode uses hexagons */
|
||||
@ -320,7 +326,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
|
||||
if (((symbol->symbology == BARCODE_EANX) && (symbol->rows == 1)) || (symbol->symbology == BARCODE_EANX_CC)) {
|
||||
/* guard bar extensions and text formatting for EAN8 and EAN13 */
|
||||
switch(strlen(symbol->text)) {
|
||||
switch(ustrlen(symbol->text)) {
|
||||
case 8: /* EAN-8 */
|
||||
case 11:
|
||||
case 14:
|
||||
@ -343,7 +349,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 11.0 * scaler);
|
||||
textpos = 17;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 0.50 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", textpart);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
@ -357,7 +363,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 11.0 * scaler);
|
||||
textpos = 50;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 0.5 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", textpart);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
@ -412,7 +418,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 11.0 * scaler);
|
||||
textpos = -7;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 0.50 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", textpart);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
@ -426,7 +432,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 11.0 * scaler);
|
||||
textpos = 24;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 0.50 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", textpart);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
@ -440,7 +446,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 11.0 * scaler);
|
||||
textpos = 71;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 0.5 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", textpart);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
@ -528,7 +534,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 8.0 * scaler);
|
||||
textpos = -5;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 0.5 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", textpart);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
@ -542,7 +548,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 11.0 * scaler);
|
||||
textpos = 27;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 0.5 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", textpart);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
@ -556,7 +562,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 11.0 * scaler);
|
||||
textpos = 68;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 0.5 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", textpart);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
@ -568,7 +574,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 8.0 * scaler);
|
||||
textpos = 100;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 0.5 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", textpart);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
@ -622,7 +628,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 8.0 * scaler);
|
||||
textpos = -5;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 0.5 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", textpart);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
@ -636,7 +642,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 11.0 * scaler);
|
||||
textpos = 24;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 0.5 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", textpart);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
@ -648,7 +654,7 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 8.0 * scaler);
|
||||
textpos = 55;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 0.5 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", textpart);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
@ -733,14 +739,14 @@ int ps_plot(struct zint_symbol *symbol)
|
||||
}
|
||||
|
||||
/* Put the human readable text at the bottom */
|
||||
if((textdone == 0) && (strlen(symbol->text) != 0)) {
|
||||
if((textdone == 0) && (ustrlen(symbol->text) != 0)) {
|
||||
fprintf(feps, "TE\n");
|
||||
fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_ink, green_ink, blue_ink);
|
||||
fprintf(feps, "matrix currentmatrix\n");
|
||||
fprintf(feps, "/Helvetica findfont\n");
|
||||
fprintf(feps, "%.2f scalefont setfont\n", 8.0 * scaler);
|
||||
textpos = symbol->width / 2.0;
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, 1.67 * scaler);
|
||||
fprintf(feps, " 0 0 moveto %.2f %.2f translate 0.00 rotate 0 0 moveto\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(feps, " (%s) stringwidth\n", symbol->text);
|
||||
fprintf(feps, "pop\n");
|
||||
fprintf(feps, "-2 div 0 rmoveto\n");
|
||||
|
@ -423,7 +423,7 @@ int rss14(struct zint_symbol *symbol, unsigned char source[])
|
||||
check_digit = 0;
|
||||
|
||||
/* Calculate check digit from Annex A and place human readable text */
|
||||
strcpy(symbol->text, "(01)");
|
||||
ustrcpy(symbol->text, (unsigned char*)"(01)");
|
||||
for(i = 0; i < 14; i++) {
|
||||
hrt[i] = '0';
|
||||
}
|
||||
@ -446,7 +446,7 @@ int rss14(struct zint_symbol *symbol, unsigned char source[])
|
||||
if (check_digit == 10) { check_digit = 0; }
|
||||
hrt[13] = itoc(check_digit);
|
||||
|
||||
concat(symbol->text, hrt);
|
||||
uconcat(symbol->text, (unsigned char*)hrt);
|
||||
}
|
||||
|
||||
if((symbol->symbology == BARCODE_RSS14STACK) || (symbol->symbology == BARCODE_RSS14STACK_CC)) {
|
||||
@ -872,7 +872,7 @@ int rsslimited(struct zint_symbol *symbol, unsigned char source[])
|
||||
check_digit = 0;
|
||||
count = 0;
|
||||
|
||||
strcpy(symbol->text, "(01)");
|
||||
ustrcpy(symbol->text, (unsigned char*)"(01)");
|
||||
for(i = 0; i < 14; i++) {
|
||||
hrt[i] = '0';
|
||||
}
|
||||
@ -896,7 +896,7 @@ int rsslimited(struct zint_symbol *symbol, unsigned char source[])
|
||||
hrt[13] = itoc(check_digit);
|
||||
hrt[14] = '\0';
|
||||
|
||||
concat(symbol->text, hrt);
|
||||
uconcat(symbol->text, (unsigned char*)hrt);
|
||||
|
||||
return error_number;
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
int large_bar_count, comp_offset;
|
||||
float addon_text_posn;
|
||||
float scaler = symbol->scale;
|
||||
float default_text_posn;
|
||||
|
||||
row_height=0;
|
||||
textdone = 0;
|
||||
@ -117,7 +118,7 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
|
||||
/* Certain symbols need whitespace otherwise characters get chopped off the sides */
|
||||
if (((symbol->symbology == BARCODE_EANX) && (symbol->rows == 1)) || (symbol->symbology == BARCODE_EANX_CC)) {
|
||||
switch(strlen(symbol->text)) {
|
||||
switch(ustrlen(symbol->text)) {
|
||||
case 13: /* EAN 13 */
|
||||
case 16:
|
||||
case 19:
|
||||
@ -148,7 +149,7 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
latch = 0;
|
||||
r = 0;
|
||||
/* Isolate add-on text */
|
||||
for(i = 0; i < strlen(symbol->text); i++) {
|
||||
for(i = 0; i < ustrlen(symbol->text); i++) {
|
||||
if (latch == 1) {
|
||||
addon[r] = symbol->text[i];
|
||||
r++;
|
||||
@ -159,7 +160,7 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
}
|
||||
addon[r] = '\0';
|
||||
|
||||
if(strcmp(symbol->text, "")) {
|
||||
if(ustrlen(symbol->text) != 0) {
|
||||
textoffset = 9;
|
||||
} else {
|
||||
textoffset = 0;
|
||||
@ -177,7 +178,7 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
fprintf(fsvg, "<svg width=\"%d\" height=\"%d\" version=\"1.1\"\n", roundup((74.0 + xoffset + xoffset) * scaler), roundup((72.0 + yoffset + yoffset) * scaler));
|
||||
}
|
||||
fprintf(fsvg, " xmlns=\"http://www.w3.org/2000/svg\">\n");
|
||||
if(strlen(symbol->text) != 0) {
|
||||
if(ustrlen(symbol->text) != 0) {
|
||||
fprintf(fsvg, " <desc>%s\n", symbol->text);
|
||||
} else {
|
||||
fprintf(fsvg, " <desc>Zint Generated Symbol\n");
|
||||
@ -191,6 +192,12 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
fprintf(fsvg, " <rect x=\"0\" y=\"0\" width=\"%d\" height=\"%d\" fill=\"#%s\" />\n", roundup((74.0 + xoffset + xoffset) * scaler), roundup((72.0 + yoffset + yoffset) * scaler), symbol->bgcolour);
|
||||
}
|
||||
|
||||
if(((symbol->output_options & BARCODE_BOX) != 0) || ((symbol->output_options & BARCODE_BIND) != 0)) {
|
||||
default_text_posn = (symbol->height + textoffset + symbol->border_width + symbol->border_width) * scaler;
|
||||
} else {
|
||||
default_text_posn = (symbol->height + textoffset + symbol->border_width) * scaler;
|
||||
}
|
||||
|
||||
if(symbol->symbology == BARCODE_MAXICODE) {
|
||||
/* Maxicode uses hexagons */
|
||||
float ax, ay, bx, by, cx, cy, dx, dy, ex, ey, fx, fy, mx, my;
|
||||
@ -275,7 +282,7 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
block_width++;
|
||||
} while (symbol->encoded_data[this_row][i + block_width] == symbol->encoded_data[this_row][i]);
|
||||
if((addon_latch == 0) && (r == 0) && (i > main_width)) {
|
||||
addon_text_posn = 9.0;
|
||||
addon_text_posn = 9.0 + symbol->border_width;
|
||||
addon_latch = 1;
|
||||
}
|
||||
if(latch == 1) {
|
||||
@ -298,11 +305,11 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
/* That's done the actual data area, everything else is human-friendly */
|
||||
|
||||
xoffset += comp_offset;
|
||||
row_posn = (yoffset + large_bar_height) * scaler;
|
||||
row_posn = (row_posn + large_bar_height) * scaler;
|
||||
|
||||
if (((symbol->symbology == BARCODE_EANX) && (symbol->rows == 1)) || (symbol->symbology == BARCODE_EANX_CC)) {
|
||||
/* guard bar extensions and text formatting for EAN8 and EAN13 */
|
||||
switch(strlen(symbol->text)) {
|
||||
switch(ustrlen(symbol->text)) {
|
||||
case 8: /* EAN-8 */
|
||||
case 11:
|
||||
case 14:
|
||||
@ -317,7 +324,7 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
}
|
||||
textpart[4] = '\0';
|
||||
textpos = 17;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 11.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
@ -326,7 +333,7 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
}
|
||||
textpart[4] = '\0';
|
||||
textpos = 50;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 11.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
@ -361,7 +368,7 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
textpart[0] = symbol->text[0];
|
||||
textpart[1] = '\0';
|
||||
textpos = -7;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 11.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
@ -370,7 +377,7 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
}
|
||||
textpart[6] = '\0';
|
||||
textpos = 24;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 11.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
@ -379,7 +386,7 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
}
|
||||
textpart[6] = '\0';
|
||||
textpos = 71;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 11.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
@ -447,16 +454,16 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
textpart[0] = symbol->text[0];
|
||||
textpart[1] = '\0';
|
||||
textpos = -5;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 8.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 8.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
for(i = 0; i < 5; i++) {
|
||||
textpart[i] = symbol->text[i + 1];
|
||||
}
|
||||
textpart[5] = '\0';
|
||||
textpos = 27;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 11.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
@ -465,14 +472,14 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
}
|
||||
textpart[6] = '\0';
|
||||
textpos = 68;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 11.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
textpart[0] = symbol->text[11];
|
||||
textpart[1] = '\0';
|
||||
textpos = 100;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 8.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
@ -506,7 +513,7 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
textpart[0] = symbol->text[0];
|
||||
textpart[1] = '\0';
|
||||
textpos = -5;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 8.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
@ -515,14 +522,14 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
}
|
||||
textpart[6] = '\0';
|
||||
textpos = 24;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 11.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
textpart[0] = symbol->text[7];
|
||||
textpart[1] = '\0';
|
||||
textpos = 55;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 8.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", textpart);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
@ -585,9 +592,9 @@ int svg_plot(struct zint_symbol *symbol)
|
||||
}
|
||||
|
||||
/* Put the human readable text at the bottom */
|
||||
if((textdone == 0) && (strlen(symbol->text) != 0)) {
|
||||
if((textdone == 0) && (ustrlen(symbol->text) != 0)) {
|
||||
textpos = symbol->width / 2.0;
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, (symbol->height + textoffset) * scaler);
|
||||
fprintf(fsvg, " <text x=\"%.2f\" y=\"%.2f\" text-anchor=\"middle\"\n", (textpos + xoffset) * scaler, default_text_posn);
|
||||
fprintf(fsvg, " font-family=\"Helvetica\" font-size=\"%.1f\" fill=\"#%s\" >\n", 8.0 * scaler, symbol->fgcolour);
|
||||
fprintf(fsvg, " %s\n", symbol->text);
|
||||
fprintf(fsvg, " </text>\n");
|
||||
|
@ -95,7 +95,7 @@ int telepen(struct zint_symbol *symbol, unsigned char source[])
|
||||
concat(dest, TeleTable['z']);
|
||||
|
||||
expand(symbol, dest);
|
||||
strcpy(symbol->text, (char*)source);
|
||||
ustrcpy(symbol->text, source);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
@ -168,7 +168,7 @@ int telepen_num(struct zint_symbol *symbol, unsigned char source[])
|
||||
concat((char*)dest, TeleTable['z']);
|
||||
|
||||
expand(symbol, (char*)dest);
|
||||
strcpy(symbol->text, (char*)local_source);
|
||||
ustrcpy(symbol->text, local_source);
|
||||
return error_number;
|
||||
}
|
||||
|
||||
|
@ -99,7 +99,7 @@ void upca(struct zint_symbol *symbol, unsigned char source[], char dest[])
|
||||
gtin[length] = upc_check(gtin);
|
||||
gtin[length + 1] = '\0';
|
||||
upca_draw(gtin, dest);
|
||||
strcpy(symbol->text, gtin);
|
||||
ustrcpy(symbol->text, (unsigned char*)gtin);
|
||||
}
|
||||
|
||||
void upce(struct zint_symbol *symbol, unsigned char source[], char dest[])
|
||||
@ -209,7 +209,7 @@ void upce(struct zint_symbol *symbol, unsigned char source[], char dest[])
|
||||
|
||||
hrt[7] = check_digit;
|
||||
hrt[8] = '\0';
|
||||
strcpy(symbol->text, hrt);
|
||||
ustrcpy(symbol->text, (unsigned char*)hrt);
|
||||
}
|
||||
|
||||
|
||||
@ -348,7 +348,7 @@ void ean13(struct zint_symbol *symbol, unsigned char source[], char dest[])
|
||||
/* stop character */
|
||||
concat (dest, "111");
|
||||
|
||||
strcpy(symbol->text, gtin);
|
||||
ustrcpy(symbol->text, (unsigned char*)gtin);
|
||||
}
|
||||
|
||||
void ean8(struct zint_symbol *symbol, unsigned char source[], char dest[])
|
||||
@ -362,7 +362,7 @@ void ean8(struct zint_symbol *symbol, unsigned char source[], char dest[])
|
||||
gtin[length] = upc_check(gtin);
|
||||
gtin[length + 1] = '\0';
|
||||
upca_draw(gtin, dest);
|
||||
strcpy(symbol->text, gtin);
|
||||
ustrcpy(symbol->text, (unsigned char*)gtin);
|
||||
}
|
||||
|
||||
char isbn13_check(unsigned char source[]) /* For ISBN(13) only */
|
||||
@ -557,8 +557,8 @@ int eanx(struct zint_symbol *symbol, unsigned char source[])
|
||||
case BARCODE_EANX:
|
||||
switch(ustrlen(first_part))
|
||||
{
|
||||
case 2: add_on(first_part, (char*)dest, 0); strcpy(symbol->text, (char*)first_part); break;
|
||||
case 5: add_on(first_part, (char*)dest, 0); strcpy(symbol->text, (char*)first_part); break;
|
||||
case 2: add_on(first_part, (char*)dest, 0); ustrcpy(symbol->text, first_part); break;
|
||||
case 5: add_on(first_part, (char*)dest, 0); ustrcpy(symbol->text, first_part); break;
|
||||
case 7: ean8(symbol, first_part, (char*)dest); break;
|
||||
case 12: ean13(symbol, first_part, (char*)dest); break;
|
||||
default: strcpy(symbol->errtxt, "Invalid length input [133]"); return ERROR_TOO_LONG; break;
|
||||
@ -656,13 +656,13 @@ int eanx(struct zint_symbol *symbol, unsigned char source[])
|
||||
case 0: break;
|
||||
case 2:
|
||||
add_on(second_part, (char*)dest, 1);
|
||||
concat(symbol->text, "+");
|
||||
concat(symbol->text, (char*)second_part);
|
||||
uconcat(symbol->text, (unsigned char*)"+");
|
||||
uconcat(symbol->text, second_part);
|
||||
break;
|
||||
case 5:
|
||||
add_on(second_part, (char*)dest, 1);
|
||||
concat(symbol->text, "+");
|
||||
concat(symbol->text, (char*)second_part);
|
||||
uconcat(symbol->text, (unsigned char*)"+");
|
||||
uconcat(symbol->text, second_part);
|
||||
break;
|
||||
default:
|
||||
strcpy(symbol->errtxt, "Invalid length input [139]");
|
||||
|
@ -40,7 +40,7 @@ struct zint_symbol {
|
||||
int option_2;
|
||||
int option_3;
|
||||
int input_mode;
|
||||
char text[100];
|
||||
unsigned char text[100];
|
||||
int rows;
|
||||
int width;
|
||||
char primary[100];
|
||||
|
Loading…
Reference in New Issue
Block a user