From 9000ad029c42f56f445bee68559b4aad13468a46 Mon Sep 17 00:00:00 2001 From: alpine9000 Date: Tue, 8 Mar 2016 12:32:16 +1100 Subject: [PATCH] Basic dithering, file refactor --- tools/imagecon/Makefile | 10 +- tools/imagecon/color.c | 187 +++++++++++++ tools/imagecon/color.h | 34 +++ tools/imagecon/dither.c | 125 +++++++++ tools/imagecon/dither.h | 16 ++ tools/imagecon/file.c | 39 +++ tools/imagecon/file.h | 7 + tools/imagecon/ham.c | 111 ++++++++ tools/imagecon/ham.h | 4 + tools/imagecon/imagecon.c | 392 ++------------------------- tools/imagecon/imagecon.h | 44 ++- tools/imagecon/palette.c | 103 +++++++ tools/imagecon/palette.h | 7 + tools/imagecon/png.c | 2 + tools/imagecon/reference/ham-ham.bin | Bin 61440 -> 61440 bytes 15 files changed, 698 insertions(+), 383 deletions(-) create mode 100644 tools/imagecon/color.c create mode 100644 tools/imagecon/color.h create mode 100644 tools/imagecon/dither.c create mode 100644 tools/imagecon/dither.h create mode 100644 tools/imagecon/file.c create mode 100644 tools/imagecon/file.h create mode 100644 tools/imagecon/ham.c create mode 100644 tools/imagecon/ham.h create mode 100644 tools/imagecon/palette.c create mode 100644 tools/imagecon/palette.h diff --git a/tools/imagecon/Makefile b/tools/imagecon/Makefile index e432f56..30d03c7 100644 --- a/tools/imagecon/Makefile +++ b/tools/imagecon/Makefile @@ -1,5 +1,5 @@ IMAGECON=./out/imagecon -OBJS=out/imagecon.o out/png.o +OBJS=out/imagecon.o out/png.o out/color.o out/dither.o out/ham.o out/palette.o out/file.o HOST_WARNINGS=-pedantic-errors -Wfatal-errors -Wall -Werror -Wextra -Wno-unused-parameter -Wshadow -limagequant HOST_CFLAGS=$(HOST_WARNINGS) LIBS=-lpng -limagequant @@ -28,12 +28,14 @@ REFERENCE_HAM_BASE=reference/ham $(IMAGECON): out bin $(OBJS) gcc $(OBJS) -o $(IMAGECON) $(LIBS) - -out/imagecon.o: imagecon.h -out/png.o: imagecon.h +-include $(OBJS:.o=.d) out/%.o: %.c gcc -c $(HOST_CFLAGS) $< -o $@ + @gcc -MM $(HOST_CFLAGS) $*.c > out/$*.d + @mv -f out/$*.d out/$*.d.tmp + @sed -e 's/.*/out\/&/' < out/$*.d.tmp > out/$*.d + @rm -f out/$*.d.tmp out: mkdir out diff --git a/tools/imagecon/color.c b/tools/imagecon/color.c new file mode 100644 index 0000000..8b04fe6 --- /dev/null +++ b/tools/imagecon/color.c @@ -0,0 +1,187 @@ +#include "imagecon.h" + +int +color_delta(amiga_color_t c1, amiga_color_t c2) +{ + int dr = abs((c1.r)-(c2.r)); + int dg = abs((c1.g)-(c2.g)); + int db = abs((c1.b)-(c2.b)); + return sqrt((dr*dr)+(dg*dg)+(db*db)); +} + + +void +color_print(amiga_color_t color) +{ + printf("R = %03d G = %03d B = %03d A = %03d", color.r, color.g, color.b, color.a); +} + + +int +color_findClosestPaletteIndex(imagecon_image_t* ic, amiga_color_t color) +{ + int delta = INT_MAX; + int index = 0; + + for (int i = 0; i < ic->numColors; i++) { + int dc = color_delta(color, ic->palette[i]); + if (dc < delta) { + delta = dc; + index = i; + } + } + return index; +} + +amiga_color_t +color_findClosestPalettePixel(imagecon_image_t* ic, amiga_color_t color) +{ + return ic->palette[color_findClosestPaletteIndex(ic, color)]; +} + +ham_control_t +color_findClosestHamPixel(imagecon_image_t* ic, amiga_color_t color, amiga_color_t last) +{ + int delta = INT_MAX; + + ham_control_t ham = {0}; + + for (int i = 0; i < ic->numColors; i++) { + int dc = color_delta(color, ic->palette[i]); + if (dc < delta) { + delta = dc; + ham.data = i; + ham.pixel = ic->palette[i]; + } + } + + delta = color_delta(color, ham.pixel); + if (last.r != -1) { + for (int c = 0; c <= 0xF; c++) { + amiga_color_t copy = last; + copy.r = c<<4; + int dc = color_delta(color, copy); + if (dc < delta) { + ham.control = 2; + ham.data = c; + ham.pixel = copy; + delta = dc; + } + } + for (int c = 0; c <= 0xF; c++) { + amiga_color_t copy = last; + copy.g = c<<4; + int dc = color_delta(color, copy); + if (dc < delta) { + ham.control = 3; + ham.data = c; + ham.pixel = copy; + delta = dc; + } + } + for (int c = 0; c <= 0xF; c++) { + amiga_color_t copy = last; + copy.b = c<<4; + int dc = color_delta(color, copy); + if (dc < delta) { + ham.control = 1; + ham.data = c; + ham.pixel = copy; + delta = dc; + } + } + } + + return ham; +} + + +amiga_color_t +color_getOriginalPixel(imagecon_image_t* ic, int x, int y) +{ + png_byte* ptr = ic->rowPointers[y] + (x*4); + amiga_color_t color; + color.r = ptr[0]; + color.g = ptr[1]; + color.b = ptr[2]; + color.a = ptr[3]; + return color; +} + + +void +color_setOriginalPixel(imagecon_image_t* ic, int x, int y, amiga_color_t color) +{ + png_byte* ptr = ic->rowPointers[y] + (x*4); + ptr[0] = color.r; + ptr[1] = color.g; + ptr[2] = color.b; + ptr[3] = color.a; +} + + +amiga_color_t +color_getDitheredPixel(imagecon_image_t* ic, int x, int y) +{ + return ic->dithered[(y*ic->width)+x]; +} + +void +color_setDitheredPixel(imagecon_image_t* ic, int x, int y, amiga_color_t color) +{ + amiga_color_t *d = &ic->dithered[(y*ic->width)+x]; + + if (color.r > 255) { + color.r = 255; + } + if (color.r < 0) { + color.r = 0; + } + if (color.g > 255) { + color.g = 255; + } + if (color.g < 0) { + color.g = 0; + } + if (color.b > 255) { + color.b = 255; + } + if (color.b < 0) { + color.b = 0; + } + + d->r = color.r; + d->g = color.g; + d->b = color.b; + d->a = color.a; +} + +amiga_color_t +color_getPalettedPixel(imagecon_image_t* ic, int x, int y) +{ + int paletteIndex = ic->amigaImage[(ic->width*y)+x]; + amiga_color_t color; + color.r = ic->palette[paletteIndex].r; + color.g = ic->palette[paletteIndex].g; + color.b = ic->palette[paletteIndex].b; + color.a = ic->palette[paletteIndex].a; + return color; +} + +void +color_setPalettedPixel(imagecon_image_t* ic, int x, int y, amiga_color_t color) +{ + int paletteIndex = color_findClosestPaletteIndex(ic, color); + ic->amigaImage[(ic->width*y)+x] = paletteIndex; +} + + +void +color_transferPalettedToOriginal(imagecon_image_t* ic) +{ + for (int y = 0; y < ic->height; y++) { + for (int x = 0; x < ic->width; x++) { + color_setOriginalPixel(ic, x, y, color_getPalettedPixel(ic, x, y)); + } + } +} diff --git a/tools/imagecon/color.h b/tools/imagecon/color.h new file mode 100644 index 0000000..7d27e0a --- /dev/null +++ b/tools/imagecon/color.h @@ -0,0 +1,34 @@ +#pragma once + +int +color_delta(amiga_color_t c1, amiga_color_t c2); + +amiga_color_t +color_findClosestPalettePixel(imagecon_image_t* ic, amiga_color_t color); + +int +color_findClosestPaletteIndex(imagecon_image_t* ic, amiga_color_t color); + +ham_control_t +color_findClosestHamPixel(imagecon_image_t* ic, amiga_color_t color, amiga_color_t last); + +amiga_color_t +color_getPalettedPixel(imagecon_image_t* ic, int x, int y); + +void +color_setPalettedPixel(imagecon_image_t* ic, int x, int y, amiga_color_t color); + +void +color_setDitheredPixel(imagecon_image_t* ic, int x, int y, amiga_color_t color); + +amiga_color_t +color_getDitheredPixel(imagecon_image_t* ic, int x, int y); + +amiga_color_t +color_getOriginalPixel(imagecon_image_t* ic, int x, int y); + +void +color_setOriginalPixel(imagecon_image_t* ic, int x, int y, amiga_color_t color); + +void +color_transferPalettedToOriginal(imagecon_image_t* ic); diff --git a/tools/imagecon/dither.c b/tools/imagecon/dither.c new file mode 100644 index 0000000..6918ab1 --- /dev/null +++ b/tools/imagecon/dither.c @@ -0,0 +1,125 @@ +#include "imagecon.h" + +static void +_dither_createDither(imagecon_image_t* ic); + +amiga_color_t +dither_getPalettedColor(imagecon_image_t* ic, amiga_color_t color, amiga_color_t last) +{ + return color_findClosestPalettePixel(ic, color); +} + + +amiga_color_t +dither_getHamColor(imagecon_image_t* ic, amiga_color_t color, amiga_color_t last) +{ + ham_control_t ham = color_findClosestHamPixel(ic, color, last); + return ham.pixel; +} + +void +dither_image(imagecon_image_t* ic, amiga_color_t (*selector)(imagecon_image_t*, amiga_color_t color, amiga_color_t last)) +{ + _dither_createDither(ic); + + for (int y = 0; y < ic->height; y++) { + amiga_color_t last = {-1, -1, -1, -1}; + for (int x = 0; x < ic->width; x++) { + + amiga_color_t old = color_getDitheredPixel(ic, x, y); + amiga_color_t new = selector(ic, old, last); + + amiga_color_t error; + error.r = old.r - new.r; + error.g = old.g - new.g; + error.b = old.b - new.b; + + color_setDitheredPixel(ic, x, y, new); + last = new; + + amiga_color_t color; + float factor; + + if (x+1 < ic->width) { + color = color_getDitheredPixel(ic, x+1, y); + factor = 7.0/16.0; + color.r = color.r + ((float)error.r * factor); + color.g = color.g + ((float)error.g * factor); + color.b = color.b + ((float)error.b * factor); + color_setDitheredPixel(ic, x+1, y, color); + } + + if (x > 0 && y+1 < ic->height) { + color = color_getDitheredPixel(ic, x-1, y+1); + factor = 3.0/16.0; + color.r = color.r + ((float)error.r * factor); + color.g = color.g + ((float)error.g * factor); + color.b = color.b + ((float)error.b * factor); + color_setDitheredPixel(ic, x-1, y+1, color); + } + + if (y+1 < ic->height) { + color = color_getDitheredPixel(ic, x, y+1); + factor = 5.0/16.0; + color.r = color.r + ((float)error.r * factor); + color.g = color.g + ((float)error.g * factor); + color.b = color.b + ((float)error.b * factor); + color_setDitheredPixel(ic, x, y+1, color); + + if (x+1 < ic->width) { + color = color_getDitheredPixel(ic, x+1, y+1); + factor = 1.0/16.0; + color.r = color.r + ((float)error.r * factor); + color.g = color.g + ((float)error.g * factor); + color.b = color.b + ((float)error.b * factor); + color_setDitheredPixel(ic, x+1, y+1, color); + } + } + } + + } + +} + + +void +dither_transferToPaletted(imagecon_image_t* ic) +{ + for (int y = 0; y < ic->height; y++) { + for (int x = 0; x < ic->width; x++) { + color_setPalettedPixel(ic, x, y, color_getDitheredPixel(ic, x, y)); + } + } +} + + +ham_control_t* +dither_createHams(imagecon_image_t* ic) +{ + ham_control_t* hams = malloc(sizeof(ham_control_t)*ic->width*ic->height); + + for (int y = 0; y < ic->height; y++) { + amiga_color_t lastPixel = { -1, -1, -1, -1}; + for (int x = 0; x < ic->width; x++) { + amiga_color_t orig = color_getDitheredPixel(ic, x, y); + ham_control_t ham = color_findClosestHamPixel(ic, orig, lastPixel); + lastPixel = ham.pixel; + hams[(y*ic->width)+x] = ham; + } + } + + return hams; +} + + +static void +_dither_createDither(imagecon_image_t* ic) +{ + ic->dithered = malloc(sizeof(amiga_color_t)*ic->width*ic->height); + + for (int y = 0; y < ic->height; y++) { + for (int x = 0; x < ic->width; x++) { + color_setDitheredPixel(ic, x, y, color_getOriginalPixel(ic, x, y)); + } + } +} diff --git a/tools/imagecon/dither.h b/tools/imagecon/dither.h new file mode 100644 index 0000000..b3d09df --- /dev/null +++ b/tools/imagecon/dither.h @@ -0,0 +1,16 @@ +#pragma once + +amiga_color_t +dither_getPalettedColor(imagecon_image_t* ic, amiga_color_t color, amiga_color_t last); + +amiga_color_t +dither_getHamColor(imagecon_image_t* ic, amiga_color_t color, amiga_color_t last); + +void +dither_image(imagecon_image_t* ic, amiga_color_t (*selector)(imagecon_image_t* ic, amiga_color_t color, amiga_color_t last)); + +void +dither_transferToPaletted(imagecon_image_t* ic); + +ham_control_t* +dither_createHams(imagecon_image_t* ic); diff --git a/tools/imagecon/file.c b/tools/imagecon/file.c new file mode 100644 index 0000000..f774e12 --- /dev/null +++ b/tools/imagecon/file.c @@ -0,0 +1,39 @@ +#include "imagecon.h" + +FILE * +file_openWrite(const char * s, ...) +{ + char buffer[4096]; + va_list args; + va_start(args, s); + vsprintf(buffer, s, args); + va_end(args); + + if (config.verbose) { + printf("Opening %s for writing\n", buffer); + } + + FILE* fp = fopen(buffer, "w+"); + if (!fp) { + abort_("Failed to open %s for writing\n", buffer); + } + return fp; +} + + +FILE * +file_openRead(const char * s, ...) +{ + char buffer[4096]; + va_list args; + va_start(args, s); + vsprintf(buffer, s, args); + va_end(args); + + FILE* fp = fopen(buffer, "r"); + if (!fp) { + abort_("Failed to open %s for reading\n", buffer); + } + return fp; +} + diff --git a/tools/imagecon/file.h b/tools/imagecon/file.h new file mode 100644 index 0000000..f68d4fd --- /dev/null +++ b/tools/imagecon/file.h @@ -0,0 +1,7 @@ +#pragma once + +FILE * +file_openWrite(const char * s, ...); + +FILE * +file_openRead(const char * s, ...); diff --git a/tools/imagecon/ham.c b/tools/imagecon/ham.c new file mode 100644 index 0000000..1508cf5 --- /dev/null +++ b/tools/imagecon/ham.c @@ -0,0 +1,111 @@ +#include "imagecon.h" + +static void +_ham_outputBitplanes(char* outFilename, imagecon_image_t* ic) +{ + if (config.verbose) { + printf("outputHamBitplanes\n"); + } + + int numBitPlanes = 6; + int byteWidth = (ic->width + 7) / 8; + + char** bitplanes = malloc(sizeof(void*)*numBitPlanes); + for (int i = 0; i < numBitPlanes; i++) { + bitplanes[i] = calloc(byteWidth*ic->height, 1); + } + + + ham_control_t* hams; + + if (config.dither) { + dither_image(ic, dither_getHamColor); + hams = dither_createHams(ic); + } else { + hams = malloc(sizeof(ham_control_t)*ic->width*ic->height); + + for (int y = 0; y < ic->height; y++) { + amiga_color_t lastPixel = { -1, -1, -1, -1}; + for (int x = 0; x < ic->width; x++) { + amiga_color_t orig = color_getOriginalPixel(ic, x, y); + ham_control_t ham = color_findClosestHamPixel(ic, orig, lastPixel); + lastPixel = ham.pixel; + hams[(y*ic->width)+x] = ham; + } + } + } + + + for (int y = 0, writeIndex = 0; y < ic->height; y++) { + for (int byte = 0;byte < byteWidth; byte++) { + for (int bit = 0; bit < 8; bit++) { + int x = byte * 8 + 7 - bit; + ham_control_t ham = hams[(y*ic->width)+x]; + int _numBitPlanes = 4; + for (int plane_index = 0; plane_index < _numBitPlanes; plane_index++) { + char* plane = bitplanes[plane_index]; + plane[writeIndex] |= ((ham.data >> plane_index) & 1) << bit; + } + + for (int plane_index = 0; plane_index < 2; plane_index++) { + char* plane = bitplanes[4+plane_index]; + plane[writeIndex] |= ((ham.control >> plane_index) & 1) << bit; + } + + + } + writeIndex++; + } + } + + + FILE* fp = file_openWrite("%s-ham.bin", outFilename); + + for (int y = 0; y < ic->height; y++) { + for (int plane_index = 0; plane_index < numBitPlanes; plane_index++) { + char* plane = bitplanes[plane_index]; + fwrite(&plane[y*byteWidth], byteWidth, 1, fp); + } + } + + fclose(fp); + if (config.verbose) { + printf("done\n\n"); + } +} + +#if 0 +void +ham_process(char* outFilename, imagecon_image_t* ic) +{ + config.maxColors = 256; + generateQuantizedImage(ic, 0); + dither_image(ic, dither_getPalettedColor); + dither_transferToPaletted(ic); + color_transferPalettedToOriginal(ic); + + config.maxColors = 16; + generateQuantizedImage(ic, 0); + + + if (config.outputBitplanes) { + _ham_outputBitplanes(outFilename, ic); + } + + palette_output(outFilename, ic); +} + +#else +void +ham_process(char* outFilename, imagecon_image_t* ic) +{ + config.maxColors = 16; + generateQuantizedImage(ic, 0); + + if (config.outputBitplanes) { + _ham_outputBitplanes(outFilename, ic); + } + + palette_output(outFilename, ic); +} +#endif diff --git a/tools/imagecon/ham.h b/tools/imagecon/ham.h new file mode 100644 index 0000000..962a09d --- /dev/null +++ b/tools/imagecon/ham.h @@ -0,0 +1,4 @@ +#pragma once + +void +ham_process(char* outFilename, imagecon_image_t* ic); diff --git a/tools/imagecon/imagecon.c b/tools/imagecon/imagecon.c index 8662a40..92142bc 100644 --- a/tools/imagecon/imagecon.c +++ b/tools/imagecon/imagecon.c @@ -2,19 +2,8 @@ * Amiga bitplane creation inspired (copied) from https://github.com/vilcans/amiga-startup */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include "imagecon.h" - imagecon_config_t config = { .maxColors = MAX_PALETTE, .outputPalette = 0, @@ -26,6 +15,7 @@ imagecon_config_t config = { .ehbMode = 0, .hamMode = 0, .quantize = 0, + .dither = 0, .overridePalette = 0 }; @@ -47,6 +37,7 @@ usage() " --output-palette\n"\ " --extra-half-brite\n"\ " --ham\n"\ + " --dither\n"\ " --use-palette \n"\ " --verbose\n", config.argv[0]); exit(1); @@ -66,144 +57,8 @@ abort_(const char * s, ...) } -FILE * -openFileWrite(const char * s, ...) -{ - char buffer[4096]; - va_list args; - va_start(args, s); - vsprintf(buffer, s, args); - va_end(args); - - if (config.verbose) { - printf("Opening %s for writing\n", buffer); - } - - FILE* fp = fopen(buffer, "w+"); - if (!fp) { - abort_("Failed to open %s for writing\n", buffer); - } - return fp; -} -FILE * -openFileRead(const char * s, ...) -{ - char buffer[4096]; - va_list args; - va_start(args, s); - vsprintf(buffer, s, args); - va_end(args); - - FILE* fp = fopen(buffer, "r"); - if (!fp) { - abort_("Failed to open %s for reading\n", buffer); - } - return fp; -} - - -void -outputPalette(char* outFilename, imagecon_image_t* ic) -{ - if (config.verbose) { - printf("outputPalette...%d colors\n", ic->numColors); - } - - FILE* fp = 0; - FILE* paletteFP = 0; - FILE* paletteAsmFP = 0; - FILE* paletteGreyFP = 0; - - if (config.outputCopperList) { - fp = openFileWrite("%s-copper-list.s", outFilename); - } - - if (config.outputPalette) { - paletteFP = openFileWrite("%s.pal", outFilename); - } - - if (config.outputPaletteGrey) { - paletteGreyFP = openFileWrite("%s-grey.s", outFilename); - fprintf(paletteGreyFP, "\tmovem.l d0-a6,-(sp)\n\tlea CUSTOM,a6\n"); - } - - if (config.outputPaletteAsm) { - paletteAsmFP = openFileWrite("%s-palette.s", outFilename); - fprintf(paletteAsmFP, "\tmovem.l d0-a6,-(sp)\n\tlea CUSTOM,a6\n"); - } - - if (config.verbose) { - printf("outputPalette:\n"); - } - - for (int i = 0; i < (config.ehbMode ? ic->numColors/2 : ic->numColors); i++) { - if (config.verbose) { - printf("%02d: hex=%03x r=%03d g=%03d b=%03d a=%03d\n", i , ic->palette[i].r << 8 | ic->palette[i].g << 4 | ic->palette[i].b, ic->palette[i].r, ic->palette[i].g, ic->palette[i].b, ic->palette[i].a); - } - if (paletteFP) { - fprintf(paletteFP, "%03x\n", (ic->palette[i].r >> 4) << 8 | (ic->palette[i].g >>4) << 4 | (ic->palette[i].b >>4)); - } - if (paletteAsmFP) { - fprintf(paletteAsmFP, "\tlea COLOR%02d(a6),a0\n\tmove.w #$%03x,(a0)\n", i, (ic->palette[i].r >> 4) << 8 | (ic->palette[i].g >>4) << 4 | (ic->palette[i].b >>4)); - } - if (paletteGreyFP) { - // TODO: this is for compat, can be better - unsigned grey = (((ic->palette[i].r>>4) + (ic->palette[i].g>>4) + (ic->palette[i].b>>4))/3); - fprintf(paletteGreyFP, "\tlea COLOR%02d(a6),a0\n\tmove.w #$%03x,(a0)\n", i, grey << 8 | grey << 4 | grey); - } - - if (fp) { - fprintf(fp, "\tdc.w $%x,$%x\n", 0x180+(i*2), (ic->palette[i].r >> 4) << 8 | (ic->palette[i].g >>4) << 4 | (ic->palette[i].b >>4)); - } - } - - if (paletteFP) { - fclose(paletteFP); - } - - if (paletteGreyFP) { - fprintf(paletteGreyFP, "\tmovem.l (sp)+,d0-a6\n"); - fclose(paletteGreyFP); - } - - if (paletteAsmFP) { - fprintf(paletteAsmFP, "\tmovem.l (sp)+,d0-a6\n"); - fclose(paletteFP); - } - - if (fp) { - fclose(fp); - } - - if (config.verbose) { - printf("done\n\n"); - } -} - -void loadPaletteFile(imagecon_image_t* ic) -{ - FILE* fp = openFileRead(config.overridePalette); - int paletteIndex; - - for (paletteIndex = 0; paletteIndex < MAX_PALETTE; paletteIndex++) { - unsigned int c; - char buffer[255]; - char* line = fgets(buffer, 255, fp); - if (!line) { - break; - } - sscanf(buffer, "%x\n", &c); - - ic->palette[paletteIndex].r = (c >> 8 & 0xF) << 4; - ic->palette[paletteIndex].g = (c >> 4 & 0xF) << 4; - ic->palette[paletteIndex].b = (c >> 0 & 0xF) << 4; - ic->palette[paletteIndex].a = 255; - } - - ic->numColors = paletteIndex; -} void generateQuantizedImage(imagecon_image_t* ic, int usePalette) @@ -227,9 +82,11 @@ generateQuantizedImage(imagecon_image_t* ic, int usePalette) } liq_set_max_colors(attr, config.maxColors); + // no liq_set_quality(attr, 0, 100); + //liq_set_min_posterization(attr, 4); liq_set_speed(attr, 1); liq_result *res = liq_quantize_image(attr, image); - + // liq_set_dithering_level(res, 1.0); liq_write_remapped_image(res, image, ic->amigaImage, ic->width*ic->height); const liq_palette *pal = liq_get_palette(res); @@ -256,35 +113,12 @@ generateQuantizedImage(imagecon_image_t* ic, int usePalette) ic->numColors = pal->count; } -amiga_color_t -getOriginalColor(int x, int y, imagecon_image_t* ic) -{ - png_byte* ptr = ic->rowPointers[y] + (x*4); - amiga_color_t color; - color.r = ptr[0]; - color.g = ptr[1]; - color.b = ptr[2]; - color.a = ptr[3]; - return color; -} - -amiga_color_t -getColor(int x, int y, imagecon_image_t* ic) -{ - int paletteIndex = ic->amigaImage[(ic->width*y)+x]; - amiga_color_t color; - color.r = ic->palette[paletteIndex].r; - color.g = ic->palette[paletteIndex].g; - color.b = ic->palette[paletteIndex].b; - color.a = ic->palette[paletteIndex].a; - return color; -} void -generatePalette(imagecon_image_t* ic) +generatePalettedImage(imagecon_image_t* ic) { if (config.verbose) { - printf("generatePalette...\n"); + printf("generatePalettedImage...\n"); } int paletteIndex = 0; @@ -359,7 +193,7 @@ outputBitplanes(char* outFilename, imagecon_image_t* ic) for (int i = 0; i < numBitPlanes; i++) { bitplanes[i] = calloc(byteWidth*ic->height, 1); } - + for (int y = 0, writeIndex = 0; y < ic->height; y++) { for (int byte = 0;byte < byteWidth; byte++) { for (int bit = 0; bit < 8; bit++) { @@ -391,7 +225,7 @@ outputBitplanes(char* outFilename, imagecon_image_t* ic) } } - FILE* fp = openFileWrite("%s.bin", outFilename); + FILE* fp = file_openWrite("%s.bin", outFilename); for (int y = 0; y < ic->height; y++) { for (int plane_index = 0; plane_index < numBitPlanes; plane_index++) { @@ -425,7 +259,7 @@ outputMask(char* outFilename, imagecon_image_t* ic) for (int byte = 0;byte < byteWidth; byte++) { for (int bit = 0; bit < 8; bit++) { int x = byte * 8 + 7 - bit; - amiga_color_t c = getOriginalColor(x, y, ic); + amiga_color_t c = color_getOriginalPixel(ic, x, y); int bitmask = c.a > 0 ? 0xFF : 0; for (int plane_index = 0; plane_index < numBitPlanes; plane_index++) { char* plane = bitplanes[plane_index]; @@ -436,7 +270,7 @@ outputMask(char* outFilename, imagecon_image_t* ic) } } - FILE* fp = openFileWrite("%s-mask.bin", outFilename); + FILE* fp = file_openWrite("%s-mask.bin", outFilename); for (int y = 0; y < ic->height; y++) { for (int plane_index = 0; plane_index < numBitPlanes; plane_index++) { @@ -472,194 +306,8 @@ generateEHBImage(imagecon_image_t* ic) generateQuantizedImage(ic, 1); } -void -printColor(amiga_color_t color) -{ - printf("R = %03d G = %03d B = %03d A = %03d", color.r, color.g, color.b, color.a); -} - -int -colorDelta(amiga_color_t c1, amiga_color_t c2) -{ - int dr = abs((c1.r)-(c2.r)); - int dg = abs((c1.g)-(c2.g)); - int db = abs((c1.b)-(c2.b)); - return (dr+dg+db) / 3; -} - -typedef struct { - int control; - int data; - amiga_color_t pixel; -} ham_control_t; - -ham_control_t -findBestHamPixel(imagecon_image_t* ic, amiga_color_t color, amiga_color_t orig, amiga_color_t last) -{ - int delta = INT_MAX; - - ham_control_t ham = {0}; - - for (int i = 0; i < ic->numColors; i++) { - int dc = colorDelta(color, ic->palette[i]); - if (dc < delta) { - delta = dc; - ham.data = i; - ham.pixel = ic->palette[i]; - } - } - - delta = colorDelta(orig, ham.pixel); - if (last.r != -1) { - for (int c = 0; c <= 0xF; c++) { - amiga_color_t copy = last; - copy.r = c<<4; - int dc = colorDelta(orig, copy); - if (dc < delta) { - ham.control = 2; - ham.data = c; - ham.pixel = copy; - delta = dc; - } - } - for (int c = 0; c <= 0xF; c++) { - amiga_color_t copy = last; - copy.g = c<<4; - int dc = colorDelta(orig, copy); - if (dc < delta) { - ham.control = 3; - ham.data = c; - ham.pixel = copy; - delta = dc; - } - } - for (int c = 0; c <= 0xF; c++) { - amiga_color_t copy = last; - copy.b = c<<4; - int dc = colorDelta(orig, copy); - if (dc < delta) { - ham.control = 1; - ham.data = c; - ham.pixel = copy; - delta = dc; - } - } - } - - return ham; -} - - -void -outputHamBitplanes(char* outFilename, imagecon_image_t* ic) -{ - if (config.verbose) { - printf("outputHamBitplanes\n"); - } - - int numBitPlanes = 6; - int numColors = 16; - - if (config.verbose) { - printf("ham number of colors = %d\n", numColors); - printf("ham number of bitplanes = %d\n", numBitPlanes); - } - - int byteWidth = (ic->width + 7) / 8; - - char** bitplanes = malloc(sizeof(void*)*numBitPlanes); - for (int i = 0; i < numBitPlanes; i++) { - bitplanes[i] = calloc(byteWidth*ic->height, 1); - } - - ham_control_t* hams = malloc(sizeof(ham_control_t)*ic->width*ic->height); - - for (int y = 0; y < ic->height; y++) { - amiga_color_t lastPixel = { -1, -1, -1, -1}; - for (int x = 0; x < ic->width; x++) { - - amiga_color_t color = getColor(x, y, ic); - amiga_color_t orig = getOriginalColor(x, y, ic); - - ham_control_t ham = findBestHamPixel(ic, color, orig, lastPixel); - lastPixel = ham.pixel; - -#if 0 - printf("Color: "); - printColor(color); - printf("\n"); - printf("Orig: "); - printColor(orig); - printf("\n"); - - printf("Ham:\n"); - printf("Control: %d\n", ham.control); - printf("Data: %d\n", ham.data); - printf("Color: "); - printColor(ham.pixel); - printf("\n\n"); -#endif - - hams[(y*ic->width)+x] = ham; - } - } - - - for (int y = 0, writeIndex = 0; y < ic->height; y++) { - for (int byte = 0;byte < byteWidth; byte++) { - for (int bit = 0; bit < 8; bit++) { - int x = byte * 8 + 7 - bit; - - ham_control_t ham = hams[(y*ic->width)+x]; - - int _numBitPlanes = 4; - for (int plane_index = 0; plane_index < _numBitPlanes; plane_index++) { - char* plane = bitplanes[plane_index]; - plane[writeIndex] |= ((ham.data >> plane_index) & 1) << bit; - } - - for (int plane_index = 0; plane_index < 2; plane_index++) { - char* plane = bitplanes[4+plane_index]; - plane[writeIndex] |= ((ham.control >> plane_index) & 1) << bit; - } - - - } - writeIndex++; - } - } - - - FILE* fp = openFileWrite("%s-ham.bin", outFilename); - - for (int y = 0; y < ic->height; y++) { - for (int plane_index = 0; plane_index < numBitPlanes; plane_index++) { - char* plane = bitplanes[plane_index]; - fwrite(&plane[y*byteWidth], byteWidth, 1, fp); - } - } - fclose(fp); - if (config.verbose) { - printf("done\n\n"); - } -} - -static void -doHamMode(char* outFilename, imagecon_image_t* ic) -{ - config.maxColors = 16; - generateQuantizedImage(ic, 0); - - if (config.outputBitplanes) { - outputHamBitplanes(outFilename, ic); - } - - outputPalette(outFilename, ic); - -} - static void processFile(char* outFilename, imagecon_image_t* ic) { @@ -668,21 +316,26 @@ processFile(char* outFilename, imagecon_image_t* ic) } if (config.hamMode) { - doHamMode(outFilename, ic); + ham_process(outFilename, ic); } else { if (config.quantize || config.overridePalette) { if (config.ehbMode) { generateEHBImage(ic); } else { if (config.overridePalette) { - loadPaletteFile(ic); + palette_loadFile(ic); } generateQuantizedImage(ic, config.overridePalette != 0); } } else { - generatePalette(ic); + generatePalettedImage(ic); } - + + if (config.dither) { + dither_image(ic, dither_getPalettedColor); + dither_transferToPaletted(ic); + } + if (config.outputBitplanes) { outputBitplanes(outFilename, ic); } @@ -691,7 +344,7 @@ processFile(char* outFilename, imagecon_image_t* ic) outputMask(outFilename, ic); } - outputPalette(outFilename, ic); + palette_output(outFilename, ic); } if (config.verbose) { @@ -779,6 +432,7 @@ main(int argc, char **argv) {"output-mask", no_argument, &config.outputMask, 1}, {"extra-half-brite", no_argument, &config.ehbMode, 1}, {"ham", no_argument, &config.hamMode, 1}, + {"dither", no_argument, &config.dither, 1}, {"use-palette", required_argument, 0, 'p'}, {"output", required_argument, 0, 'o'}, {"colors", required_argument, 0, 'c'}, @@ -860,3 +514,5 @@ main(int argc, char **argv) return 0; } + + diff --git a/tools/imagecon/imagecon.h b/tools/imagecon/imagecon.h index bad5512..713deba 100644 --- a/tools/imagecon/imagecon.h +++ b/tools/imagecon/imagecon.h @@ -1,5 +1,16 @@ #pragma once +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + #define MAX_PALETTE 32 typedef struct { @@ -13,20 +24,13 @@ typedef struct { int outputCopperList; int ehbMode; int hamMode; + int dither; char* overridePalette; int quantize; int verbose; char** argv; } imagecon_config_t; -#if 0 -typedef struct { - unsigned char r; - unsigned char g; - unsigned char b; - unsigned char a; -} amiga_color_t; -#else typedef struct { int r; int g; @@ -34,7 +38,11 @@ typedef struct { int a; } amiga_color_t; -#endif +typedef struct { + int control; + int data; + amiga_color_t pixel; +} ham_control_t; typedef struct { @@ -44,9 +52,23 @@ typedef struct { png_bytep* rowPointers; unsigned char* amigaImage; amiga_color_t palette[MAX_PALETTE*2]; // extra half brite mode + amiga_color_t* dithered; } imagecon_image_t; +#include "color.h" +#include "dither.h" +#include "ham.h" +#include "file.h" +#include "palette.h" + extern imagecon_config_t config; -extern void abort_(const char * s, ...); -extern void png_read(char* file_name, imagecon_image_t* ic); + +extern void +abort_(const char * s, ...); + +extern void +png_read(char* file_name, imagecon_image_t* ic); + +void +generateQuantizedImage(imagecon_image_t* ic, int usePalette); diff --git a/tools/imagecon/palette.c b/tools/imagecon/palette.c new file mode 100644 index 0000000..b81865d --- /dev/null +++ b/tools/imagecon/palette.c @@ -0,0 +1,103 @@ +#include "imagecon.h" + +void palette_loadFile(imagecon_image_t* ic) +{ + FILE* fp = file_openRead(config.overridePalette); + int paletteIndex; + + for (paletteIndex = 0; paletteIndex < MAX_PALETTE; paletteIndex++) { + unsigned int c; + char buffer[255]; + char* line = fgets(buffer, 255, fp); + if (!line) { + break; + } + sscanf(buffer, "%x\n", &c); + + ic->palette[paletteIndex].r = (c >> 8 & 0xF) << 4; + ic->palette[paletteIndex].g = (c >> 4 & 0xF) << 4; + ic->palette[paletteIndex].b = (c >> 0 & 0xF) << 4; + ic->palette[paletteIndex].a = 255; + } + + ic->numColors = paletteIndex; +} + + +void +palette_output(char* outFilename, imagecon_image_t* ic) +{ + if (config.verbose) { + printf("outputPalette...%d colors\n", ic->numColors); + } + + FILE* fp = 0; + FILE* paletteFP = 0; + FILE* paletteAsmFP = 0; + FILE* paletteGreyFP = 0; + + if (config.outputCopperList) { + fp = file_openWrite("%s-copper-list.s", outFilename); + } + + if (config.outputPalette) { + paletteFP = file_openWrite("%s.pal", outFilename); + } + + if (config.outputPaletteGrey) { + paletteGreyFP = file_openWrite("%s-grey.s", outFilename); + fprintf(paletteGreyFP, "\tmovem.l d0-a6,-(sp)\n\tlea CUSTOM,a6\n"); + } + + if (config.outputPaletteAsm) { + paletteAsmFP = file_openWrite("%s-palette.s", outFilename); + fprintf(paletteAsmFP, "\tmovem.l d0-a6,-(sp)\n\tlea CUSTOM,a6\n"); + } + + if (config.verbose) { + printf("outputPalette:\n"); + } + + for (int i = 0; i < (config.ehbMode ? ic->numColors/2 : ic->numColors); i++) { + if (config.verbose) { + printf("%02d: hex=%03x r=%03d g=%03d b=%03d a=%03d\n", i , ic->palette[i].r << 8 | ic->palette[i].g << 4 | ic->palette[i].b, ic->palette[i].r, ic->palette[i].g, ic->palette[i].b, ic->palette[i].a); + } + if (paletteFP) { + fprintf(paletteFP, "%03x\n", (ic->palette[i].r >> 4) << 8 | (ic->palette[i].g >>4) << 4 | (ic->palette[i].b >>4)); + } + if (paletteAsmFP) { + fprintf(paletteAsmFP, "\tlea COLOR%02d(a6),a0\n\tmove.w #$%03x,(a0)\n", i, (ic->palette[i].r >> 4) << 8 | (ic->palette[i].g >>4) << 4 | (ic->palette[i].b >>4)); + } + if (paletteGreyFP) { + // TODO: this is for compat, can be better + unsigned grey = (((ic->palette[i].r>>4) + (ic->palette[i].g>>4) + (ic->palette[i].b>>4))/3); + fprintf(paletteGreyFP, "\tlea COLOR%02d(a6),a0\n\tmove.w #$%03x,(a0)\n", i, grey << 8 | grey << 4 | grey); + } + + if (fp) { + fprintf(fp, "\tdc.w $%x,$%x\n", 0x180+(i*2), (ic->palette[i].r >> 4) << 8 | (ic->palette[i].g >>4) << 4 | (ic->palette[i].b >>4)); + } + } + + if (paletteFP) { + fclose(paletteFP); + } + + if (paletteGreyFP) { + fprintf(paletteGreyFP, "\tmovem.l (sp)+,d0-a6\n"); + fclose(paletteGreyFP); + } + + if (paletteAsmFP) { + fprintf(paletteAsmFP, "\tmovem.l (sp)+,d0-a6\n"); + fclose(paletteFP); + } + + if (fp) { + fclose(fp); + } + + if (config.verbose) { + printf("done\n\n"); + } +} diff --git a/tools/imagecon/palette.h b/tools/imagecon/palette.h new file mode 100644 index 0000000..68a3db7 --- /dev/null +++ b/tools/imagecon/palette.h @@ -0,0 +1,7 @@ +#pragma once + +void +palette_output(char* outFilename, imagecon_image_t* ic); + +void +palette_loadFile(imagecon_image_t* ic); diff --git a/tools/imagecon/png.c b/tools/imagecon/png.c index e52a571..b8cdc63 100644 --- a/tools/imagecon/png.c +++ b/tools/imagecon/png.c @@ -117,4 +117,6 @@ png_read(char* file_name, imagecon_image_t* ic) } ic->amigaImage = calloc(ic->width*ic->height, 1); + + } diff --git a/tools/imagecon/reference/ham-ham.bin b/tools/imagecon/reference/ham-ham.bin index f41390a24cb5e782e94e505f56302494c3132909..e50af84c66c8cbb25df712066f8b447309ae80d1 100644 GIT binary patch literal 61440 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 Bnos}$ literal 61440 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≷UaS<8u_z?ac_u|^2R^(br1(Ve)!Kr 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