vector: Add width to struct zint_vector_circle & use for MaxiCode bullseye

**Incompatible change**
This commit is contained in:
gitlost 2021-08-22 13:59:01 +01:00
parent 02c155b6b2
commit 3388f98c00
55 changed files with 171 additions and 238 deletions

View File

@ -1,6 +1,11 @@
Version 2.10.0.9 (dev) not released yet
=======================================
**Incompatible changes**
------------------------
- Add width to struct zint_vector_circle
NOTE: backward incompatible drawing of MaxiCode finder (bullseye)
Changes
-------
- RMQR: add ECI support

View File

@ -68,7 +68,8 @@ static int count_circles(struct zint_symbol *symbol) {
circ = circ->next;
}
return circles;
/* Hack for MaxiCode */
return symbol->symbology == BARCODE_MAXICODE ? circles * 2 : circles;
}
static int count_hexagons(struct zint_symbol *symbol) {
@ -258,9 +259,9 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) {
emr_ellipse_t circle[circle_count ? circle_count : 1];
emr_polygon_t hexagon[hexagon_count ? hexagon_count : 1];
#else
rectangle = (emr_rectangle_t*) _alloca(rectangle_count * sizeof(emr_rectangle_t));
circle = (emr_ellipse_t*) _alloca(circle_count * sizeof(emr_ellipse_t));
hexagon = (emr_polygon_t*) _alloca(hexagon_count * sizeof(emr_polygon_t));
rectangle = (emr_rectangle_t *) _alloca(rectangle_count * sizeof(emr_rectangle_t));
circle = (emr_ellipse_t *) _alloca(circle_count * sizeof(emr_ellipse_t));
hexagon = (emr_polygon_t *) _alloca(hexagon_count * sizeof(emr_polygon_t));
#endif
// Calculate how many coloured rectangles
@ -463,8 +464,10 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) {
circ = symbol->vector->circles;
this_circle = 0;
while (circ) {
if (previous_diameter != circ->diameter) {
previous_diameter = circ->diameter;
/* Note using circle width the proper way, with a non-null pen of specified width and a null brush for fill,
causes various different rendering issues for LibreOffice Draw and Inkscape, so using following hack */
if (previous_diameter != circ->diameter + circ->width) { /* Drawing MaxiCode bullseye using overlayed discs */
previous_diameter = circ->diameter + circ->width;
radius = (float) (0.5 * previous_diameter);
}
circle[this_circle].type = 0x0000002a; // EMR_ELLIPSE
@ -476,6 +479,20 @@ INTERNAL int emf_plot(struct zint_symbol *symbol, int rotate_angle) {
this_circle++;
bytecount += 24;
recordcount++;
if (symbol->symbology == BARCODE_MAXICODE) { /* Drawing MaxiCode bullseye using overlayed discs */
float inner_radius = radius - circ->width;
circle[this_circle].type = 0x0000002a; // EMR_ELLIPSE
circle[this_circle].size = 24;
circle[this_circle].box.top = (int32_t) (circ->y - inner_radius);
circle[this_circle].box.bottom = (int32_t) (circ->y + inner_radius);
circle[this_circle].box.left = (int32_t) (circ->x - inner_radius);
circle[this_circle].box.right = (int32_t) (circ->x + inner_radius);
this_circle++;
bytecount += 24;
recordcount++;
}
circ = circ->next;
}

View File

@ -1,4 +1,4 @@
/* maxicode.c - Handles Maxicode */
/* maxicode.c - Handles MaxiCode */
/*
libzint - the open source barcode library

View File

@ -154,6 +154,7 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
int i, len;
int ps_len = 0;
int iso_latin1 = 0;
int have_circles_with_width = 0, have_circles_without_width = 0;
const int output_to_stdout = symbol->output_options & BARCODE_STDOUT;
#ifdef _MSC_VER
unsigned char *ps_string;
@ -263,6 +264,15 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
ps_string = (unsigned char *) _alloca(ps_len + 1);
#endif
/* Check for circle widths */
for (circle = symbol->vector->circles; circle; circle = circle->next) {
if (circle->width) {
have_circles_with_width = 1;
} else {
have_circles_without_width = 1;
}
}
/* Start writing the header */
fprintf(feps, "%%!PS-Adobe-3.0 EPSF-3.0\n");
if (ZINT_VERSION_BUILD) {
@ -278,11 +288,21 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
fprintf(feps, "%%%%EndComments\n");
/* Definitions */
fprintf(feps, "/TL { setlinewidth moveto lineto stroke } bind def\n");
if (have_circles_without_width) {
/* Disc: x y radius TD */
fprintf(feps, "/TD { newpath 0 360 arc fill } bind def\n");
}
if (have_circles_with_width) {
/* Circle (ring): x y radius width TC (adapted from BWIPP renmaxicode.ps) */
fprintf(feps, "/TC { newpath 4 1 roll 3 copy 0 360 arc closepath 4 -1 roll add 360 0 arcn closepath fill }"
" bind def\n");
}
if (symbol->vector->hexagons) {
fprintf(feps, "/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def\n");
}
fprintf(feps, "/TB { 2 copy } bind def\n");
fprintf(feps, "/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def\n");
fprintf(feps, "/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill }"
" bind def\n");
fprintf(feps, "/TE { pop pop } bind def\n");
fprintf(feps, "newpath\n");
@ -405,8 +425,8 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
previous_diameter = radius = 0.0f;
circle = symbol->vector->circles;
while (circle) {
if (previous_diameter != circle->diameter) {
previous_diameter = circle->diameter;
if (previous_diameter != circle->diameter - circle->width) {
previous_diameter = circle->diameter - circle->width;
radius = (float) (0.5 * previous_diameter);
}
if (circle->colour) {
@ -417,7 +437,12 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
fprintf(feps, "%.2f %.2f %.2f %.2f setcmykcolor\n",
cyan_paper, magenta_paper, yellow_paper, black_paper);
}
if (circle->width) {
fprintf(feps, "%.2f %.2f %.3f %.3f TC\n",
circle->x, (symbol->vector->height - circle->y), radius, circle->width);
} else {
fprintf(feps, "%.2f %.2f %.2f TD\n", circle->x, (symbol->vector->height - circle->y), radius);
}
if (circle->next) {
if ((symbol->output_options & CMYK_COLOUR) == 0) {
fprintf(feps, "%.2f %.2f %.2f setrgbcolor\n", red_ink, green_ink, blue_ink);
@ -427,8 +452,13 @@ INTERNAL int ps_plot(struct zint_symbol *symbol) {
}
} else {
// A 'black' circle
if (circle->width) {
fprintf(feps, "%.2f %.2f %.3f %.3f TC\n",
circle->x, (symbol->vector->height - circle->y), radius, circle->width);
} else {
fprintf(feps, "%.2f %.2f %.2f TD\n", circle->x, (symbol->vector->height - circle->y), radius);
}
}
circle = circle->next;
}

View File

@ -2998,7 +2998,8 @@ INTERNAL int rmqr(struct zint_symbol *symbol, unsigned char source[], int length
autosize = 31;
best_footprint = rmqr_height[31] * rmqr_width[31];
for (version = 30; version >= 0; version--) {
est_binlen = getBinaryLength(RMQR_VERSION + version, mode, jisdata, length, gs1, symbol->eci, debug_print);
est_binlen = getBinaryLength(RMQR_VERSION + version, mode, jisdata, length, gs1, symbol->eci,
debug_print);
footprint = rmqr_height[version] * rmqr_width[version];
if (ecc_level == LEVEL_M) {
if (8 * rmqr_data_codewords_M[version] >= est_binlen) {
@ -3081,8 +3082,8 @@ INTERNAL int rmqr(struct zint_symbol *symbol, unsigned char source[], int length
fullstream = (unsigned char *) _alloca(rmqr_total_codewords[version] + 1);
#endif
qr_binary(datastream, RMQR_VERSION + version, target_codewords, mode, jisdata, length, gs1, symbol->eci, est_binlen,
debug_print);
qr_binary(datastream, RMQR_VERSION + version, target_codewords, mode, jisdata, length, gs1, symbol->eci,
est_binlen, debug_print);
#ifdef ZINT_TEST
if (symbol->debug & ZINT_DEBUG_TEST) debug_test_codeword_dump(symbol, datastream, target_codewords);
#endif

View File

@ -288,15 +288,23 @@ INTERNAL int svg_plot(struct zint_symbol *symbol) {
previous_diameter = circle->diameter;
radius = (float) (0.5 * previous_diameter);
}
fprintf(fsvg, " <circle cx=\"%.2f\" cy=\"%.2f\" r=\"%.2f\"", circle->x, circle->y, radius);
fprintf(fsvg, " <circle cx=\"%.2f\" cy=\"%.2f\" r=\"%.*f\"",
circle->x, circle->y, circle->width ? 3 : 2, radius);
if (circle->colour) {
if (circle->width) {
fprintf(fsvg, " stroke=\"#%s\" stroke-width=\"%.3f\" fill=\"none\"", bgcolour_string, circle->width);
} else {
fprintf(fsvg, " fill=\"#%s\"", bgcolour_string);
}
if (bg_alpha != 0xff) {
// This doesn't work how the user is likely to expect - more work needed!
fprintf(fsvg, " opacity=\"%.3f\"", bg_alpha_opacity);
}
} else {
if (circle->width) {
fprintf(fsvg, " stroke=\"#%s\" stroke-width=\"%.3f\" fill=\"none\"", fgcolour_string, circle->width);
}
if (fg_alpha != 0xff) {
fprintf(fsvg, " opacity=\"%.3f\"", fg_alpha_opacity);
}

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 224 119
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 119 224
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 246 119
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 128 119
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 128 119
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 158 119
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 22 16
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 22 16
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 23 17
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 33 24
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 33 24
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 34 25
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 37 28
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 44 32
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 44 32
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 45 33
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 66 48
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 66 48
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 68 50
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 77 56
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 77 56
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 79 58
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 110 80
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 110 80
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 112 82
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 118 88
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 22 16
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 276 117
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,11 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 72 58
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TC { newpath 4 1 roll 3 copy 0 360 arc closepath 4 -1 roll add 360 0 arcn closepath fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
@ -366,14 +365,6 @@ newpath
21.00 57.58 21.87 57.08 21.87 56.08 21.00 55.58 20.13 56.08 20.13 57.08 TH
15.00 57.58 15.87 57.08 15.87 56.08 15.00 55.58 14.13 56.08 14.13 57.08 TH
11.00 57.58 11.87 57.08 11.87 56.08 11.00 55.58 10.13 56.08 10.13 57.08 TH
37.00 28.87 9.00 TD
0.00 0.00 1.00 setrgbcolor
37.00 28.87 7.43 TD
0.00 0.00 0.00 setrgbcolor
37.00 28.87 5.86 TD
0.00 0.00 1.00 setrgbcolor
37.00 28.87 4.29 TD
0.00 0.00 0.00 setrgbcolor
37.00 28.87 2.72 TD
0.00 0.00 1.00 setrgbcolor
37.00 28.87 1.15 TD
37.00 28.87 7.431 1.569 TC
37.00 28.87 4.293 1.569 TC
37.00 28.87 1.155 1.569 TC

View File

@ -1,11 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 58 60
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TC { newpath 4 1 roll 3 copy 0 360 arc closepath 4 -1 roll add 360 0 arcn closepath fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
@ -369,14 +368,6 @@ TE
55.58 45.00 56.08 45.87 57.08 45.87 57.58 45.00 57.08 44.13 56.08 44.13 TH
55.58 51.00 56.08 51.87 57.08 51.87 57.58 51.00 57.08 50.13 56.08 50.13 TH
55.58 55.00 56.08 55.87 57.08 55.87 57.58 55.00 57.08 54.13 56.08 54.13 TH
28.87 29.00 9.00 TD
0.00 0.00 0.00 0.00 setcmykcolor
28.87 29.00 7.43 TD
0.00 0.00 0.00 1.00 setcmykcolor
28.87 29.00 5.86 TD
0.00 0.00 0.00 0.00 setcmykcolor
28.87 29.00 4.29 TD
0.00 0.00 0.00 1.00 setcmykcolor
28.87 29.00 2.72 TD
0.00 0.00 0.00 0.00 setcmykcolor
28.87 29.00 1.15 TD
28.87 29.00 7.431 1.569 TC
28.87 29.00 4.293 1.569 TC
28.87 29.00 1.155 1.569 TC

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 28 26
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 40 30
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 40 38
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 276 117
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 238 117
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 238 112
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 136 119
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 130 100
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,11 +1,10 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 60 58
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TC { newpath 4 1 roll 3 copy 0 360 arc closepath 4 -1 roll add 360 0 arcn closepath fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
@ -363,14 +362,6 @@ TE
37.00 2.15 37.87 1.65 37.87 0.65 37.00 0.15 36.13 0.65 36.13 1.65 TH
43.00 2.15 43.87 1.65 43.87 0.65 43.00 0.15 42.13 0.65 42.13 1.65 TH
53.00 2.15 53.87 1.65 53.87 0.65 53.00 0.15 52.13 0.65 52.13 1.65 TH
29.00 28.87 9.00 TD
1.00 1.00 1.00 setrgbcolor
29.00 28.87 7.43 TD
0.00 0.00 0.00 setrgbcolor
29.00 28.87 5.86 TD
1.00 1.00 1.00 setrgbcolor
29.00 28.87 4.29 TD
0.00 0.00 0.00 setrgbcolor
29.00 28.87 2.72 TD
1.00 1.00 1.00 setrgbcolor
29.00 28.87 1.15 TD
29.00 28.87 7.431 1.569 TC
29.00 28.87 4.293 1.569 TC
29.00 28.87 1.155 1.569 TC

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 42 42
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -1,12 +1,9 @@
%!PS-Adobe-3.0 EPSF-3.0
%%Creator: Zint 2.9.1.9
%%Creator: Zint 2.10.0.9
%%Title: Zint Generated Symbol
%%Pages: 0
%%BoundingBox: 0 0 26 26
%%EndComments
/TL { setlinewidth moveto lineto stroke } bind def
/TD { newpath 0 360 arc fill } bind def
/TH { 0 setlinewidth moveto lineto lineto lineto lineto lineto closepath fill } bind def
/TB { 2 copy } bind def
/TR { newpath 4 1 roll exch moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath fill } bind def
/TE { pop pop } bind def

View File

@ -356,11 +356,8 @@
<path d="M 37.00 57.58 L 37.87 57.08 L 37.87 56.08 L 37.00 55.58 L 36.13 56.08 L 36.13 57.08 Z" />
<path d="M 43.00 57.58 L 43.87 57.08 L 43.87 56.08 L 43.00 55.58 L 42.13 56.08 L 42.13 57.08 Z" />
<path d="M 53.00 57.58 L 53.87 57.08 L 53.87 56.08 L 53.00 55.58 L 52.13 56.08 L 52.13 57.08 Z" />
<circle cx="29.00" cy="28.87" r="9.00" />
<circle cx="29.00" cy="28.87" r="7.43" fill="#FFFFFF" />
<circle cx="29.00" cy="28.87" r="5.86" />
<circle cx="29.00" cy="28.87" r="4.29" fill="#FFFFFF" />
<circle cx="29.00" cy="28.87" r="2.72" />
<circle cx="29.00" cy="28.87" r="1.15" fill="#FFFFFF" />
<circle cx="29.00" cy="28.87" r="8.215" stroke="#000000" stroke-width="1.569" fill="none" />
<circle cx="29.00" cy="28.87" r="5.077" stroke="#000000" stroke-width="1.569" fill="none" />
<circle cx="29.00" cy="28.87" r="1.939" stroke="#000000" stroke-width="1.569" fill="none" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -374,11 +374,8 @@
<path d="M 43.00 61.58 L 43.87 61.08 L 43.87 60.08 L 43.00 59.58 L 42.13 60.08 L 42.13 61.08 Z" />
<path d="M 55.00 61.58 L 55.87 61.08 L 55.87 60.08 L 55.00 59.58 L 54.13 60.08 L 54.13 61.08 Z" />
<path d="M 63.00 61.58 L 63.87 61.08 L 63.87 60.08 L 63.00 59.58 L 62.13 60.08 L 62.13 61.08 Z" />
<circle cx="33.00" cy="32.87" r="9.00" />
<circle cx="33.00" cy="32.87" r="7.43" fill="#FFFFFF" />
<circle cx="33.00" cy="32.87" r="5.86" />
<circle cx="33.00" cy="32.87" r="4.29" fill="#FFFFFF" />
<circle cx="33.00" cy="32.87" r="2.72" />
<circle cx="33.00" cy="32.87" r="1.15" fill="#FFFFFF" />
<circle cx="33.00" cy="32.87" r="8.215" stroke="#000000" stroke-width="1.569" fill="none" />
<circle cx="33.00" cy="32.87" r="5.077" stroke="#000000" stroke-width="1.569" fill="none" />
<circle cx="33.00" cy="32.87" r="1.939" stroke="#000000" stroke-width="1.569" fill="none" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -370,11 +370,8 @@
<path d="M 0.15 39.00 L 0.65 39.87 L 1.65 39.87 L 2.15 39.00 L 1.65 38.13 L 0.65 38.13 Z" opacity="0.867" />
<path d="M 0.15 51.00 L 0.65 51.87 L 1.65 51.87 L 2.15 51.00 L 1.65 50.13 L 0.65 50.13 Z" opacity="0.867" />
<path d="M 0.15 59.00 L 0.65 59.87 L 1.65 59.87 L 2.15 59.00 L 1.65 58.13 L 0.65 58.13 Z" opacity="0.867" />
<circle cx="28.87" cy="29.00" r="9.00" opacity="0.867" />
<circle cx="28.87" cy="29.00" r="7.43" fill="#EEEEEE" opacity="0.133" />
<circle cx="28.87" cy="29.00" r="5.86" opacity="0.867" />
<circle cx="28.87" cy="29.00" r="4.29" fill="#EEEEEE" opacity="0.133" />
<circle cx="28.87" cy="29.00" r="2.72" opacity="0.867" />
<circle cx="28.87" cy="29.00" r="1.15" fill="#EEEEEE" opacity="0.133" />
<circle cx="28.87" cy="29.00" r="8.215" stroke="#121212" stroke-width="1.569" fill="none" opacity="0.867" />
<circle cx="28.87" cy="29.00" r="5.077" stroke="#121212" stroke-width="1.569" fill="none" opacity="0.867" />
<circle cx="28.87" cy="29.00" r="1.939" stroke="#121212" stroke-width="1.569" fill="none" opacity="0.867" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View File

@ -372,11 +372,8 @@
<path d="M 39.00 61.58 L 39.87 61.08 L 39.87 60.08 L 39.00 59.58 L 38.13 60.08 L 38.13 61.08 Z" />
<path d="M 51.00 61.58 L 51.87 61.08 L 51.87 60.08 L 51.00 59.58 L 50.13 60.08 L 50.13 61.08 Z" />
<path d="M 59.00 61.58 L 59.87 61.08 L 59.87 60.08 L 59.00 59.58 L 58.13 60.08 L 58.13 61.08 Z" />
<circle cx="29.00" cy="32.87" r="9.00" />
<circle cx="29.00" cy="32.87" r="7.43" fill="#FFFFFF" />
<circle cx="29.00" cy="32.87" r="5.86" />
<circle cx="29.00" cy="32.87" r="4.29" fill="#FFFFFF" />
<circle cx="29.00" cy="32.87" r="2.72" />
<circle cx="29.00" cy="32.87" r="1.15" fill="#FFFFFF" />
<circle cx="29.00" cy="32.87" r="8.215" stroke="#000000" stroke-width="1.569" fill="none" />
<circle cx="29.00" cy="32.87" r="5.077" stroke="#000000" stroke-width="1.569" fill="none" />
<circle cx="29.00" cy="32.87" r="1.939" stroke="#000000" stroke-width="1.569" fill="none" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -99,7 +99,8 @@ static int vector_plot_add_hexagon(struct zint_symbol *symbol, struct zint_vecto
return 1;
}
static struct zint_vector_circle *vector_plot_create_circle(float x, float y, float diameter, int colour) {
static struct zint_vector_circle *vector_plot_create_circle(float x, float y, float diameter, float width,
int colour) {
struct zint_vector_circle *circle;
circle = (struct zint_vector_circle *) malloc(sizeof(struct zint_vector_circle));
@ -108,6 +109,7 @@ static struct zint_vector_circle *vector_plot_create_circle(float x, float y, fl
circle->x = x;
circle->y = y;
circle->diameter = diameter;
circle->width = width;
circle->colour = colour;
return circle;
@ -236,6 +238,7 @@ static void vector_scale(struct zint_symbol *symbol, int file_type) {
circle->x *= scale;
circle->y *= scale;
circle->diameter *= scale;
circle->width *= scale;
circle = circle->next;
}
@ -490,7 +493,7 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_
// Plot Maxicode symbols
if (symbol->symbology == BARCODE_MAXICODE) {
struct zint_vector_circle *circle;
float bull_x, bull_y, bull_d_incr;
float bull_x, bull_y, bull_d_incr, bull_width;
const float two_div_sqrt3 = 1.1547f; /* 2 / √3 */
const float sqrt3_div_two = 0.866f; /* √3 / 2 == 1.5 / √3 */
@ -510,19 +513,15 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_
bull_y = vector->height / 2.0f; /* 16Y above bottom-most centre = halfway */
/* Total finder diameter is 9X, so diametric increment for 5 diameters d2 to d6 is (9X - d1) / 5 */
bull_d_incr = (hex_diameter * 9 - hex_ydiameter) / 5.0f;
bull_width = bull_d_incr / 2.0f;
// TODO: Add width to circle so can draw rings instead of overlaying circles
circle = vector_plot_create_circle(bull_x, bull_y, hex_ydiameter + bull_d_incr * 5, 0);
circle = vector_plot_create_circle(bull_x, bull_y, hex_ydiameter + bull_d_incr * 5 - bull_width, bull_width,
0);
vector_plot_add_circle(symbol, circle, &last_circle);
circle = vector_plot_create_circle(bull_x, bull_y, hex_ydiameter + bull_d_incr * 4, 1);
circle = vector_plot_create_circle(bull_x, bull_y, hex_ydiameter + bull_d_incr * 3 - bull_width, bull_width,
0);
vector_plot_add_circle(symbol, circle, &last_circle);
circle = vector_plot_create_circle(bull_x, bull_y, hex_ydiameter + bull_d_incr * 3, 0);
vector_plot_add_circle(symbol, circle, &last_circle);
circle = vector_plot_create_circle(bull_x, bull_y, hex_ydiameter + bull_d_incr * 2, 1);
vector_plot_add_circle(symbol, circle, &last_circle);
circle = vector_plot_create_circle(bull_x, bull_y, hex_ydiameter + bull_d_incr, 0);
vector_plot_add_circle(symbol, circle, &last_circle);
circle = vector_plot_create_circle(bull_x, bull_y, hex_ydiameter, 1);
circle = vector_plot_create_circle(bull_x, bull_y, hex_ydiameter + bull_d_incr - bull_width, bull_width, 0);
vector_plot_add_circle(symbol, circle, &last_circle);
/* Hexagons */
@ -546,7 +545,7 @@ INTERNAL int plot_vector(struct zint_symbol *symbol, int rotate_angle, int file_
struct zint_vector_circle *circle = vector_plot_create_circle(
i + dot_offset + xoffset,
r + dot_offset + yoffset,
symbol->dot_size, 0);
symbol->dot_size, 0, 0);
vector_plot_add_circle(symbol, circle, &last_circle);
}
}

View File

@ -54,7 +54,8 @@ extern "C" {
};
struct zint_vector_string {
float x, y, fsize; /* x, y position relative to halign; font size */
float x, y; /* x, y position relative to halign */
float fsize; /* Font size */
float width; /* Suggested string width, may be 0 if none recommended */
int length; /* Number of characters */
int rotation; /* 0, 90, 180, 270 degrees */
@ -64,7 +65,9 @@ extern "C" {
};
struct zint_vector_circle {
float x, y, diameter;
float x, y;
float diameter; /* Circle diameter. Does not include width (if any) */
float width; /* Width of circle perimeter. 0 for fill (disc) */
int colour; /* Non-zero for draw with background colour */
struct zint_vector_circle *next; /* Pointer to next circle */
};

View File

@ -567,14 +567,14 @@ namespace Zint {
}
if (circle->colour) { // Set means use background colour
p.setColor(m_bgColor);
p.setWidth(0);
p.setWidthF(circle->width);
painter.setPen(p);
painter.setBrush(bgBrush);
painter.setBrush(circle->width ? Qt::NoBrush : bgBrush);
} else {
p.setColor(m_fgColor);
p.setWidth(0);
p.setWidthF(circle->width);
painter.setPen(p);
painter.setBrush(fgBrush);
painter.setBrush(circle->width ? Qt::NoBrush : bgBrush);
}
painter.drawEllipse(QPointF(circle->x, circle->y), radius, radius);
circle = circle->next;

View File

@ -1019,20 +1019,21 @@ while (rect) {
hexagon = symbol->vector->hexagons;
while (hexagon) {
draw_hexagon(hexagon->x, hexagon->y, hexagon->diameter, hexagon->rotation):
draw_hexagon(hexagon->x, hexagon->y, hexagon->diameter, hexagon->rotation);
hexagon = hexagon->next;
}
string = symbol->vector->strings;
while (string) {
draw_string(string->x, string->y, string->fsize, string->rotation,
string->halign, string->text, string->length):
string->halign, string->text, string->length);
string = string->next;
}
circle = symbol->vector->circles;
while (circle) {
draw_circle(circle->x, circle->y, circle->diameter, circle->colour):
draw_circle(circle->x, circle->y, circle->diameter, circle->width,
circle->colour);
circle = circle->next;
}