libansilove 1.2.8 (2020-10-25)
- Add LibFuzzer-based fuzzers for each supported format
- Do not hardcode CMAKE_BUILD_TYPE to "Release" in CMakeLists.txt
- Only enable FORTIFY_SOURCE level 2 for release builds
- Add #ifdef __cplusplus extern "C" to allow calling library functions from C++
- Constify input and output arguments of ansilove_loadfile() and
ansilove_savefile()
libansilove 1.2.7 (2020-10-21)
- Error out early with ANSILOVE_FORMAT_ERROR in case ctx->length is 0
- Enable FORTIFY_SOURCE level 2
- Set CMAKE_BUILD_TYPE to "Release" in CMakeLists.txt
- Move variables declaration to the top of each loader function
- Initialize ansi_buffer and pcboard_buffer to NULL
- Refactor the IceDraw loader to use a state machine
- Check strndup() return value and error out on failed allocations
- Add some file format integrity checks in the IceDraw loader
- Add range integrity checks for scale_factor values in the output() function
- Return error code directly if ctx->length is 0 in the ANSI and PCBoard loaders
- Add range integrity checks for columns value in relevant loaders
- Add range integrity checks for bits value in relevant loaders
- Add additional file format integrity check in the XBin loader
libansilove 1.2.6 (2020-09-30)
- Introduce canvas' width/height variables and refactor canvas creation
- Refactor calls to drawchar() in the ANSI loader
- Refactor the ANSI loader to use a state machine
- Remove systematic filtering of Form Feed characters in Amiga mode
- Correct values for TUNDRA_COLOR_FOREGROUND and TUNDRA_COLOR_BACKGROUND
- Switch to using reallocarray(3) in the ANSI and PCBoard loaders
- Add a compat layer for systems which do not have reallocarray(3)
- Refactor canvas allocation for retina output
- Introduce the ANSILOVE_RANGE_ERROR macro, for values out of allowed range
- Error gracefully if canvas' width or height is equal to zero
- Remove an useless comparison in drawchar()
- Add some file format integrity checks in the Tundra loader
- Refactor error handling in several loaders
libansilove 1.2.5 (2020-09-24)
- Add missing parentheses in an if statement in output()
- Define CR, LF, TAB, SUB, and ESC macros only once
- Refactor error handling in the PCBoard loader
- Stop parsing for PCBoard cursor position sequences
- Add bound checks for {back,fore}ground color values in the PCBoard loader
- Fix default background and foreground colors in the PCBoard loader
- Refactor the PCBoard loader to use a state machine
- Refactor the Binary loader to use a state machine
- Refactor the Artworx loader to use a state machine
- Add some file format integrity checks in the XBin loader
libansilove 1.2.4 (2020-06-21)
- Use size_t in for loops setting color palettes
- Remove unneeded gdImageFill() call when using Workbench mode
- Define _GNU_SOURCE in CMakeLists.txt to avoid cluttering source files
- Use size_t type for variables used to loop over arrays
- Separate RGB values for palettes, makes color allocation code more
readable and efficient
- Move ADF color mapping array to config.h
ChangeLog:
libansilove 1.2.3 (2020-05-25)
- Call memset() to set all fontData struct fields to zero in all loaders
- Refactor error handling in ansilove_savefile()
- Add error handling for fwrite() in ansilove_savefile()
- Fix includes in various source files
ChangeLog:
libansilove 1.2.2 (2020-04-30)
- Refactor the output function, to allow combining DOS aspect ratio and Retina
- Remove the im_ prefix for all gdImagePtr variables
- Various README changes and improvements
ChangeLog:
libansilove 1.2.1 (2020-03-17)
- Call memset() to set all fontData struct fields to zero
- Use the ternary operator to simplify character attributes assignments
ChangeLog:
libansilove 1.2.0 (2020-02-17)
- Correct section number in manual page.
- Add initial manual pages for all library functions and file formats renders
- Stop calculating columnMax in the PCBoard loader, it's unused
- Add support for user-specified columns in the PCBoard loader
ChangeLog:
libansilove 1.1.9 (2020-01-20)
- Remove unneeded gdImageColorAllocate calls in the ADF and IDF loaders
- Reset background24 to 0 when encountering blink attribute in an SGR
sequence, fixing the remaining rendering bugs for 24-bit ANSI artworks
ChangeLog:
libansilove 1.1.8 (2020-01-18)
- Use OpenBSD style(9) for function prototypes and declarations
- Properly reset pcboard buffer when CLS is encountered
- Use memcmp() instead of testing each character one by one in the PCB loader
- Do not use background and foreground variables to handle 24-bit ANSI colors
- Various improvements in the IDF loader
ChangeLog:
libansilove 1.1.6 (2019-11-18)
- Use CMAKE_INSTALL_{LIB,INCLUDE}DIR instead of hardcoding directories
- Introduce a XBIN_PALETTE_LENGTH macro
- Use XBIN_HEADER_LENGTH and XBIN_PALETTE_LENGTH macros instead of magic
numbers
- Add another format validation check (palette size) in the XBin loader
ChangeLog:
libansilove 1.1.5 (2019-10-14)
- Move background transparency operations in the output function
- Allow setting transparent background for retina images
- Add extern declaration for fonts data arrays
- Use type size_t for loop and structIndex variables
ChangeLog:
libansilove 1.1.4 (2019-09-13)
- Force xbin_fontsize to 16 when using default 80x25 font
- Return ANSILOVE_FORMAT_ERROR if xbin_fontsize > 32
libansilove 1.1.3 (2019-08-23)
- Omit implicit return in the example program
- Use a switch statement to set 24-bit background and foreground values
- Remove superfluous background color allocations in the Binary, PCBoard
and XBin loaders
- Modify the PCBoard loader to use a cursor pointer to parse input
- Infer font height to 16 in the XBin loader, the default in absence of
font data (Thanks Andrew Herbert)
OK kamil@
Library for converting ANSI, ASCII, and other formats to PNG, allowing
to render ANSI and artscene-related file formats into PNG images, and
supporting ANSI (.ANS), PCBoard (.PCB), Binary (.BIN), Artworx (.ADF),
iCE Draw (.IDF), Tundra (.TND) and XBin (.XB) formats.
It creates size optimized 4-bit PNG files and supports SAUCE (Standard
Architecture for Universal Comment Extentions), 80x25 and 80x50 PC fonts
(including all the 14 MS-DOS charsets), Amiga fonts, and iCE colors.
OK kamil@