Ultra: Extend colour support to PNG PCX BMP and TIF

Implementation needs improvement, but colour output is now achieved in most formats
This commit is contained in:
Robin Stuart 2020-01-06 20:01:48 +00:00
parent 6181885e2e
commit 5861ad3c3b
6 changed files with 310 additions and 101 deletions

View file

@ -123,24 +123,69 @@ int pcx_pixel_plot(struct zint_symbol *symbol, char *pixelbuf) {
for (column = 0; column < symbol->bitmap_width; column++) {
switch (colour) {
case 0:
if (pixelbuf[(row * symbol->bitmap_width) + column] == '1') {
rle_row[column] = fgred;
} else {
rle_row[column] = bgred;
switch(pixelbuf[(row * symbol->bitmap_width) + column]) {
case 'W': // White
case 'M': // Magenta
case 'R': // Red
case 'Y': // Yellow
rle_row[column] = 255;
break;
case 'C': // Cyan
case 'B': // Blue
case 'G': // Green
case 'K': // Black
rle_row[column] = 0;
break;
case '1':
rle_row[column] = fgred;
break;
default:
rle_row[column] = bgred;
break;
}
break;
case 1:
if (pixelbuf[(row * symbol->bitmap_width) + column] == '1') {
rle_row[column] = fggrn;
} else {
rle_row[column] = bggrn;
switch(pixelbuf[(row * symbol->bitmap_width) + column]) {
case 'W': // White
case 'C': // Cyan
case 'Y': // Yellow
case 'G': // Green
rle_row[column] = 255;
break;
case 'B': // Blue
case 'M': // Magenta
case 'R': // Red
case 'K': // Black
rle_row[column] = 0;
break;
case '1':
rle_row[column] = fggrn;
break;
default:
rle_row[column] = bggrn;
break;
}
break;
case 2:
if (pixelbuf[(row * symbol->bitmap_width) + column] == '1') {
rle_row[column] = fgblu;
} else {
rle_row[column] = bgblu;
switch(pixelbuf[(row * symbol->bitmap_width) + column]) {
case 'W': // White
case 'C': // Cyan
case 'B': // Blue
case 'M': // Magenta
rle_row[column] = 255;
break;
case 'R': // Red
case 'Y': // Yellow
case 'G': // Green
case 'K': // Black
rle_row[column] = 0;
break;
case '1':
rle_row[column] = fgblu;
break;
default:
rle_row[column] = bgblu;
break;
}
break;
}