From b513956e7018e2333737bc7c66ad450b522dd51a Mon Sep 17 00:00:00 2001 From: Downforce Agent Date: Wed, 19 Feb 2025 11:46:48 -0600 Subject: [PATCH] Tweak default colors to not fail on transparent images --- main.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/main.c b/main.c index 20cff4a..331ca67 100644 --- a/main.c +++ b/main.c @@ -37,7 +37,7 @@ unsigned int nearest_power_of_2(unsigned int n) { struct options { uint32_t r; int s; - uint8_t c; + uint16_t c; int o; int l; int w; @@ -94,7 +94,7 @@ void printNoFrames() { printf("You need to specify at least one frame to use, go int main(const int argc, char *argv[]) { printf( - "Knowledge Adventure Worlds Easy Avatar Tool, version 1.1\n" + "Knowledge Adventure Worlds Easy Avatar Tool, version 1.1.1\n" "Copyright (c) 2025 Brett \"bonkmaykr\" Bergstrom\n" "This program is free software under the MIT license.\n" "\n" @@ -113,7 +113,7 @@ int main(const int argc, char *argv[]) { struct options opt; opt.r = 0; opt.s = 0; - opt.c = 255; + opt.c = 0xDEAD; opt.o = 0; opt.l = 0; opt.w = 0; @@ -147,7 +147,7 @@ int main(const int argc, char *argv[]) { } else if (strcmp(argv[i], "-c") == 0) { if (i == argc-1) { printf("No parameter for option: -c\n"); return 0; } const int c = trunc(atof(argv[i+1])); - if (c < 1 || c > 256) { printf("Invalid number of colors: %s\n", argv[i+1]); return 0; } + if (c < 1 || c > 256 - (!opt.o)) { printf("Invalid number of colors: %s\nThe maximum palette size is 255 for transparent MOVs and 256 for opaque ones.\n", argv[i+1]); return 0; } opt.c = c - 1; i++; } else if (strcmp(argv[i], "-d") == 0) { @@ -159,6 +159,7 @@ int main(const int argc, char *argv[]) { i++; } if (numFrames == 0) { printNoFrames(); return 0; } + if (opt.c == 0xDEAD) { if (opt.o) opt.c = 254; else opt.c = 255; } if (MagickReadImage(mw, frames[0]) == MagickFalse) { printf("ERROR trying to read %s\n", frames[0]); return 0;} MagickSetImageFormat(mw, "BMP3"); @@ -365,6 +366,7 @@ int main(const int argc, char *argv[]) { i++; } } + remove("segments.txt"); printf("\n\n!!! DONE !!!\n"); if (opt.d)