ansilove

ANSI and ASCII art to PNG converter in C
Log | Files | Refs | README | LICENSE

commit 59d70b78d415ed1777d727ecd1255bb75670f2ad
parent 0208cefdc9ca2f09088c50bbebfb2f9c0e1218bd
Author: Frederic Cambus <fcambus@users.sourceforge.net>
Date:   Tue,  8 Sep 2015 23:38:21 +0200

Allow enabling iCE colors using the '-i' option, and use a boolean for storing the value

Diffstat:
Msrc/ansilove.c | 12++++--------
Msrc/ansilove.h | 4++--
Msrc/main.c | 15++++++++-------
3 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/src/ansilove.c b/src/ansilove.c @@ -182,7 +182,7 @@ void alSelectFont(struct fontStruct* fontData, char *font) { } // ANSi -void alAnsiLoader(char *input, char *output, char *retinaout, char *font, int32_t int_bits, char *mode, char *icecolors, char *fext, bool createRetinaRep) +void alAnsiLoader(char *input, char *output, char *retinaout, char *font, int32_t int_bits, char *mode, bool icecolors, char *fext, bool createRetinaRep) { // ladies and gentlemen, it's type declaration time struct fontStruct fontData; @@ -274,9 +274,6 @@ void alAnsiLoader(char *input, char *output, char *retinaout, char *font, int32_ // set transparent color index for the font gdImageColorTransparent(im_Font, 20); - - // convert numeric command line flags to integer values - int32_t int_icecolors = atoi(icecolors); // ANSi processing loops int32_t loop = 0, ansi_sequence_loop, seq_graphics_loop; @@ -588,7 +585,7 @@ void alAnsiLoader(char *input, char *output, char *retinaout, char *font, int32_ { color_background = seqValue - 40; - if (blink && int_icecolors == 1) + if (blink && icecolors) { color_background+=8; } @@ -1269,7 +1266,7 @@ void alPcBoardLoader(char *input, char *output, char *retinaout, char *font, int } // BINARY -void alBinaryLoader(char *input, char *output, char *retinaout, char *columns, char *font, int32_t int_bits, char *icecolors, bool createRetinaRep) +void alBinaryLoader(char *input, char *output, char *retinaout, char *columns, char *font, int32_t int_bits, bool icecolors, bool createRetinaRep) { // some type declarations struct fontStruct fontData; @@ -1312,7 +1309,6 @@ void alBinaryLoader(char *input, char *output, char *retinaout, char *columns, c // convert numeric command line flags to integer values int32_t int_columns = atoi(columns); - int32_t int_icecolors = atoi(icecolors); // allocate buffer image memory im_Binary = gdImageCreate(int_columns * int_bits, @@ -1364,7 +1360,7 @@ void alBinaryLoader(char *input, char *output, char *retinaout, char *columns, c color_foreground = (attribute & 15); - if (color_background > 8 && int_icecolors == 0) + if (color_background > 8 && !icecolors) { color_background -= 8; } diff --git a/src/ansilove.h b/src/ansilove.h @@ -30,9 +30,9 @@ void alDrawChar(gdImagePtr im, const unsigned char *font_data, int32_t int_bits, int32_t font_size_x, int32_t font_size_y, int32_t position_x, int32_t position_y, int32_t color_background, int32_t color_foreground, unsigned char character); -void alAnsiLoader(char *input, char *output, char *retinaout, char *font, int32_t int_bits, char *mode, char *icecolors, char *fext, bool createRetinaRep); +void alAnsiLoader(char *input, char *output, char *retinaout, char *font, int32_t int_bits, char *mode, bool icecolors, char *fext, bool createRetinaRep); void alPcBoardLoader(char *input, char *output, char *retinaout, char *font, int32_t int_bits, bool createRetinaRep); -void alBinaryLoader(char *input, char *output, char *retinaout, char *columns, char *font, int32_t int_bits, char *icecolors, bool createRetinaRep); +void alBinaryLoader(char *input, char *output, char *retinaout, char *columns, char *font, int32_t int_bits, bool icecolors, bool createRetinaRep); void alArtworxLoader(char *input, char *output, char *retinaout, bool createRetinaRep); void alIcedrawLoader(char *input, char *output, char *retinaout, bool fileHasSAUCE, bool createRetinaRep); void alTundraLoader(char *input, char *output, char *retinaout, char *font, int32_t int_bits, bool fileHasSAUCE, bool createRetinaRep); diff --git a/src/main.c b/src/main.c @@ -54,6 +54,7 @@ void listExamples(void) { printf("\nEXAMPLES:\n"); printf(" ansilove file.ans (output path/name identical to input, no options)\n" + " ansilove -i file.ans (enable iCE colors)\n" " ansilove -r file.ans (adds Retina @2x output file)\n" " ansilove -o dir/file file.ans (custom path/name for output)\n" " ansilove -s file.bin (just display SAUCE record, don't generate output)\n" @@ -83,6 +84,7 @@ void synopsis(void) " -e print a list of examples\n" " -f font select font (default: 80x25)\n" " -h show help\n" + " -i enable iCE colors\n" " -m mode set rendering mode for ANS files:\n" " ced black on gray, with 78 columns\n" " transparent render with transparent background\n" @@ -106,6 +108,9 @@ int main(int argc, char *argv[]) // retina output bool type bool createRetinaRep = false; + // iCE colors bool type + bool icecolors = false; + // analyze options and do what has to be done bool fileIsBinary = false; bool fileIsANSi = false; @@ -122,7 +127,6 @@ int main(int argc, char *argv[]) char *mode = NULL; char *columns = NULL; char *font = NULL; - char *icecolors = NULL; char *input = NULL, *output = NULL; char *retinaout = NULL; @@ -145,7 +149,7 @@ int main(int argc, char *argv[]) showHelp(); return EXIT_SUCCESS; case 'i': - // TODO : Implement iCE Colors on/off toggle + icecolors = true; break; case 'm': mode = optarg; @@ -228,9 +232,6 @@ int main(int argc, char *argv[]) font = "80x25"; } - // enabling iCE colors by default (For now) - icecolors = "1"; - // get file extension char *fext = strrchr(input, '.'); fext = fext ? strtolower(fext) : "none"; @@ -282,8 +283,8 @@ int main(int argc, char *argv[]) fileIsPCBoard || fileIsTundra) { printf("Bits: %d\n", int_bits); } - if (fileIsANSi || fileIsBinary || fileIsPCBoard) { - printf("iCE Colors: %s\n", icecolors); + if (icecolors && (fileIsANSi || fileIsBinary)) { + printf("iCE Colors: enabled"); } if (fileIsBinary) { printf("Columns: %s\n", columns);