mirror of
https://git.code.sf.net/p/zint/code
synced 2025-05-27 13:34:19 -04:00
- zint_symbol->fgcolour
& bgcolour
buffer lengths extended 10
-> 16 to allow for "C,M,Y,K" comma-separated decimal percentage strings - API/CLI/GUI: allow foreground/background colours to be specified as comma-separated decimal "C,M,Y,K" strings where "C", "M" etc. are percentages (0-100) (ticket #281, 3rd point) - output.c: new funcs `out_colour_get_rgb()` & `out_colour_get_cmyk()` and use in bmp/emf/gif etc. - PCX: add alpha support - GUI: fix fg/gbcolor icon background not being reset on zap - GUI: Rearrange some Appearance tab inputs (Border Type <-> Width, Show Text <-> Font, Text/Font <-> Printing Scale/Size) to flow more naturally (hopefully) - GUI: save button "Save As..." -> "Save..." and add icon - CLI: add --bgcolor/colour & --fgcolor/colour synonyms
This commit is contained in:
parent
48eaa0cc4e
commit
ab2abccdb6
55 changed files with 1439 additions and 886 deletions
|
@ -1,7 +1,7 @@
|
|||
/* gif.c - Handles output to gif file */
|
||||
/*
|
||||
libzint - the open source barcode library
|
||||
Copyright (C) 2009-2022 Robin Stuart <rstuart114@gmail.com>
|
||||
Copyright (C) 2009-2023 Robin Stuart <rstuart114@gmail.com>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
|
@ -44,7 +44,7 @@
|
|||
|
||||
typedef struct s_statestruct {
|
||||
unsigned char *pOut;
|
||||
unsigned char *pIn;
|
||||
const unsigned char *pIn;
|
||||
unsigned int InLen;
|
||||
unsigned int OutLength;
|
||||
unsigned int OutPosCur;
|
||||
|
@ -297,6 +297,10 @@ INTERNAL int gif_pixel_plot(struct zint_symbol *symbol, unsigned char *pixelbuf)
|
|||
unsigned char backgroundColourIndex;
|
||||
unsigned char RGBCur[3];
|
||||
unsigned char RGBUnused[3] = {0,0,0};
|
||||
unsigned char RGBfg[3];
|
||||
unsigned char RGBbg[3];
|
||||
unsigned char fgalpha;
|
||||
unsigned char bgalpha;
|
||||
|
||||
int colourIndex;
|
||||
|
||||
|
@ -311,6 +315,9 @@ INTERNAL int gif_pixel_plot(struct zint_symbol *symbol, unsigned char *pixelbuf)
|
|||
lzoutbufSize = GIF_LZW_PAGE_SIZE;
|
||||
}
|
||||
|
||||
(void) out_colour_get_rgb(symbol->fgcolour, &RGBfg[0], &RGBfg[1], &RGBfg[2], &fgalpha);
|
||||
(void) out_colour_get_rgb(symbol->bgcolour, &RGBbg[0], &RGBbg[1], &RGBbg[2], &bgalpha);
|
||||
|
||||
/*
|
||||
* Build a table of the used palette items.
|
||||
* Currently, there are the following 10 colour codes:
|
||||
|
@ -364,14 +371,10 @@ INTERNAL int gif_pixel_plot(struct zint_symbol *symbol, unsigned char *pixelbuf)
|
|||
/* Get RGB value */
|
||||
switch (pixelColour) {
|
||||
case '0': /* standard background */
|
||||
RGBCur[0] = (unsigned char) (16 * ctoi(symbol->bgcolour[0])) + ctoi(symbol->bgcolour[1]);
|
||||
RGBCur[1] = (unsigned char) (16 * ctoi(symbol->bgcolour[2])) + ctoi(symbol->bgcolour[3]);
|
||||
RGBCur[2] = (unsigned char) (16 * ctoi(symbol->bgcolour[4])) + ctoi(symbol->bgcolour[5]);
|
||||
RGBCur[0] = RGBbg[0]; RGBCur[1] = RGBbg[1]; RGBCur[2] = RGBbg[2];
|
||||
break;
|
||||
case '1': /* standard foreground */
|
||||
RGBCur[0] = (unsigned char) (16 * ctoi(symbol->fgcolour[0])) + ctoi(symbol->fgcolour[1]);
|
||||
RGBCur[1] = (unsigned char) (16 * ctoi(symbol->fgcolour[2])) + ctoi(symbol->fgcolour[3]);
|
||||
RGBCur[2] = (unsigned char) (16 * ctoi(symbol->fgcolour[4])) + ctoi(symbol->fgcolour[5]);
|
||||
RGBCur[0] = RGBfg[0]; RGBCur[1] = RGBfg[1]; RGBCur[2] = RGBfg[2];
|
||||
break;
|
||||
case 'W': /* white */
|
||||
RGBCur[0] = 255; RGBCur[1] = 255; RGBCur[2] = 255;
|
||||
|
@ -436,17 +439,12 @@ INTERNAL int gif_pixel_plot(struct zint_symbol *symbol, unsigned char *pixelbuf)
|
|||
/* Note: does not allow both transparent foreground and background -
|
||||
* background takes priority */
|
||||
transparent_index = -1;
|
||||
if (strlen(symbol->fgcolour) > 6) {
|
||||
if ((symbol->fgcolour[6] == '0') && (symbol->fgcolour[7] == '0')) {
|
||||
/* Transparent foreground */
|
||||
transparent_index = fgindex;
|
||||
}
|
||||
}
|
||||
if (strlen(symbol->bgcolour) > 6) {
|
||||
if ((symbol->bgcolour[6] == '0') && (symbol->bgcolour[7] == '0')) {
|
||||
/* Transparent background */
|
||||
transparent_index = bgindex;
|
||||
}
|
||||
if (bgalpha == 0) {
|
||||
/* Transparent background */
|
||||
transparent_index = bgindex;
|
||||
} else if (fgalpha == 0) {
|
||||
/* Transparent foreground */
|
||||
transparent_index = fgindex;
|
||||
}
|
||||
|
||||
/* find palette bit size from palette size*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue