Releases: HappySeaFox/sail
v0.9.0-pre14
AVIF: Added AVIF image format
BINDINGS/C++: Added more consts
BINDINGS/C++: Added more image() constructors
BINDINGS/C++: Avoid starting conflicting reading and writing operations
BINDINGS/C++: Refactor image_reader and image_writer
BINDINGS/C++: Update docs
COMMON: Added TRACE log level
COMMON: Added YUV pixel formats
COMMON: Added chroma_subsampling in source_image
COMMON: Move memory allocation functions into memory.h
COMMON: Remove EXIF codec feature
COMMON: Remove animated property. Use delay instead
COMMON: Remove redundant examples
COMMON: Update 'A structure' -> specific structures names
DOC: Added note on brew and updated 'brew install' command with new prefix
EXTRA: Update libs
GIF: Remove redundant check for NULL after malloc
LIBSAIL-MANIP: Fixed assigning YCbCr pixels from uint16 values
LIBSAIL: Added ?? pattern support in magic numbers
LIBSAIL: Added missing extern
LIBSAIL: Avoid dlsym in combined mode
LIBSAIL: Fix signed/unsigned mismatch
LIBSAIL: Fixed sscanf argument to use &
LIBSAIL: Make codecs info as an exported variable to avoid dlopen/dlsym
LIBSAIL: Moved functions pointers to v5_pointers.h
PNG: Allocate text lines in heap
SAIL: Added macOS 11.3 in Travis
SAIL: Fix Debian control installation rules
SAIL: Fix SAIL non-VCPKG build with SAIL_COMBINE_CODECS=ON
SAIL: Install sail-codecs CMake configs in a separate directory
SAIL: Remove macOS 10.14 from Travis to save some Travis credits
TESTS: Avoid side effects in munit_assert()
TESTS: Fix linking order in static mode
TESTS: Fixed minor memory leak in sail-dump
TIFF: Use uint32_t instead of deprecated uint32 from tifflib
v0.9.0-pre13
Major update: reading functions now output pixels as close as possible to the source
BINDINGS/C++: Added image::convert()
BINDINGS/C++: Added image::convert_to()
BINDINGS/C++: Added image::convert_to() with options
BINDINGS/C++: Added image::is_indexed() image::is_grayscale()
BINDINGS/C++: Added more image::convert() overloads
BINDINGS/C++: Added sail::conversion_options()
BINDINGS/C++: Check pixel format to be != unknown in image::is_valid()
BINDINGS/C++: Check pixel format to be != unknown in palette::is_valid()
BINDINGS/C++: Fixed potential memory leak
BINDINGS/C++: to_sail_xxx methods now allocate data in heap
BMP: Fixed reading partial palette
CODECS: Added more error messages
COMMON: Added LUV pixel formats
COMMON: Added SAIL_CHECK_CONVERSION_OPTIONS_PTR
COMMON: Added SAIL_ERROR_INVALID_PIXEL_FORMAT
COMMON: Added SAIL_IO_OPTION_CLOSE_TO_SOURCE
COMMON: Added more pixel format comparing functions
COMMON: Added more pixel typedefs
COMMON: Added sail_copy_image_skeleton()
COMMON: Added sail_is_indexed() sail_is_grayscale()
COMMON: Fixed bytes-per-line test
COMMON: Implement CHECK functionality as functions, not macros
COMMON: Implement SAIL_TRY_OR_CLEANUP through SAIL_TRY_OR_EXECUTE
COMMON: to/from now return strings and actual converted values instead of sail_status_t
EXAMPLES: Remove deep-diver demos
EXAMPLES: v4.h -> v5.h
JPEG: Add ext output pixel formats test
JPEG: Fixed supported pixel formats for writing
JPEG: Refactor bytes_per_line calculation
JPEG: Remove obsolete comment
LIBSAIL-MANIP: Added pixel format conversion functions
PNG: Added ifdef PNG_tRNS_SUPPORTED
PNG: Fixed reading 16-bit gray+alpha images
PNG: Support indexed images with transparency
SAIL: Added all headers into add_library() calls
TESTS: Added bytes-per-line
TESTS: Added compare-pixel-sizes
TESTS: Added include guards and SOVERSION=1 in sail-comparators
TESTS: Added sail_closest_pixel_format() tests
TESTS: Fix compiling munit with C11
TESTS: Implemented sail-dump parser and printer
TESTS: Use munit_assert_memory_equal
v0.9.0-pre12
BINDINGS/C++: Fixed crash with vcpkg
BINDINGS/C++: Switch to C++17
BINDINGS/C++: Added more utility functions
BINDINGS/C++: Don't copy invalid palette
BINDINGS/C++: Fixed initializing sail_io
BINDINGS/C++: Use string_view
BINDINGS/C++: [closes #51] Fix assigning shallow pixels
BMP: Add BMP codec
COMMON: Added sail_alloc_palette_for_data()
COMMON: Added sail_alloc_palette_from_data()
COMMON: Added sail_file_size()
COMMON: Added sail_read_file_contents() and sail_alloc_buffer_from_file_contents()
COMMON: Don't alter pointers on error
COMMON: Make resolution values double
COMMON: Refactor C examples
COMMON: Refactor meta data nodes
COMMON: Split read/write I/O functions into tolerant/strict variants
DOC: Update FORMATS
EXAMPLES: Fix SDL example
GIF: Added missing include
GIF: codec.info cleanup
LIBSAIL: Allow empty compressions when write features is 0
LIBSAIL: More detailed error messages
LIBSAIL: Print 'Enumerated codecs:' only when codecs are found
LIBSAIL: Update error message
SAIL: Added OSX 11 in Travis
SAIL: Fixed some CppCheck warnings
SAIL: Remove unused Debian-specific code
SAIL: Rename HAVE_ macro to SAIL_HAVE_
SAIL: Test for _Thread_local
SAIL: Update extra/ to use standard .lib names for bundled libs
TESTS: Added allocation functions test
TESTS: Added basic read/write options test
TESTS: Added iccp test
TESTS: Added io-produce-same-images test
TESTS: Added meta-data-node test
TESTS: Added palette test
TIFF: Check TIFF compressions in cmake (except for vcpkg)
TIFF: Hardcode write compressions for vcpkg (due to check_c_source_runs()
peculiarity)
TIFF: Fixed checking for some compressions like PIXARLOG
v0.9.0-pre11
SAIL: Added VCPKG port on Windows, Linux, macOS. Install with vcpkg install sail
SAIL: Added static compilation support with -DSAIL_STATIC=ON
SAIL: Added option to combine all codecs into a single library with -DSAIL_COMBINE_CODECS=ON
SAIL: Enable CMAKE_ENABLE_EXPORTS on UNIX with static builds to enable dlsym
SAIL: Install our bundled libs if they exist and when VCPKG is not used
SAIL: Remove INNO setup support. VCPKG is recommended instead
SAIL: Remove git depth in the travis file to avoid sporadic build errors
SAIL: Remove libraries detection with pkg-config. Always use CMake
SAIL: Update travis to use CMAKE_PREFIX_PATH instead of pkg-config
COMMON: Include missing config.h
CODECS: Rename codecs to have -codecs prefix
CODECS: Rename interface functions to have _codec suffix
CODECS: Rename private functions to have codec_private_ prefix
LIBSAIL: Always search DLLs in the sail.dll location so custom codecs can hold dependencies there
LIBSAIL: Don't fail when no codecs were found. Print a warning instead
LIBSAIL: Refactor loading code
LIBSAIL: Remove sail_codecs_path() when SAIL_COMBINE_CODECS is defined
LIBSAIL: Resolve codecs symbols in the same module to make static build finally work
LIBSAIL: Use a 'whole archive' option
JPEG: Support non-turbo jpeg
EXAMPLES: Fix SDL example to be compatible with VCPKG
EXAMPLES: Use PRIVATE in sail_enable_asan
DOC: Added -DCMAKE_BUILD_TYPE=Release
DOC: Added LUbuntu 20.04
DOC: Remove pkg-config
DOC: Reorganize sections
DOC: Update FAQ
DOC: Update README
DOC: Update SAIL installation mode
DOC: Update docs with static build
DOC: Update terminology
v0.9.0-pre10
- BINDINGS/C++: Added missing include
- CODECS: Rename files to sail- to avoid conflicts with DLLs like tiff.dll
- COMMON: Added sail_set_logger()
- COMMON: Always print file and line in log messages, not only when SAIL_DEV is ON
- COMMON: Print error code on error
- COMMON: Refactor error macros
- COMMON: Try to silence clang in empty while()
- COMMON: Use more specific macros
- COMMON: Use stat() on Windows too
- DOC: Added CImg
- DOC: Added EXAMPLES to the top bar
- DOC: Added benchmarks
- DOC: Added doc on SAIL_VCPKG
- DOC: Added measured time
- DOC: Added note on Intel IPP
- DOC: Added note on VCPKG
- DOC: Move building steps into a separate md file
- DOC: Remove 'damn' words :)
- DOC: Remove date
- DOC: Removed Support
- DOC: Reword description
- DOC: Reword improvements
- DOC: Update description
- DOC: Update differences
- DOC: Update image links
- DOC: Update image sizes
- DOC: Update notes on DLL search paths
- EXAMPLES: Fix SDL example with VCPKG
- EXTRA: Migrate to zlib-ng
- LIBSAIL: Add sail.dll location to the DLL search path
- LIBSAIL: Added INI_ALLOW_INLINE_COMMENTS=0 and INI_ALLOW_MULTILINE=0
- LIBSAIL: Avoid dangling pointer
- LIBSAIL: Bring the old implementation of strncpy0 back is it's much faster
- LIBSAIL: Fixed a failure in sail_read_mem
- LIBSAIL: Fixed adding sail.dll location to the DLL search path
- LIBSAIL: Load codecs from \sail\codecs on VCPKG
- LIBSAIL: Refactor if/else
- LIBSAIL: Simplify functions
- LIBSAIL: Update INIH to version 52
- LIBSAIL: Wrap Windows-specific code
- SAIL: Added VCPKG support
- SAIL: Added SAIL_BUILD_EXAMPLES option
- SAIL: Added SAIL_BUILD_TESTS option
- SAIL: Added comments
- SAIL: Allow VCPKG on Windows only
- SAIL: Disable 'lib' siffixes back
- SAIL: Make C/C++ standards a requirement
- SAIL: Move thread-local definition to config.h
- SAIL: Rename cmake file
- SAIL: Reorder dirs layout
- SAIL: Set SAIL_VCPKG to ON when SAIL_VCPKG_PORT is ON
- SAIL: Update to 0.9.0-pre10
- SAIL: WIP in VCPKG support
- GIF: Code cleanup. Don't fail on broken (NULL) extensions on malformed files
- PNG: Allocate a temp string only when the image is APNG
- TIFF: Added SOURCE pixel format
v0.9.0-pre9
- BINDINGS/C++: Added moving ctors
- BINDINGS/C++: Added sail::meta_data
- BINDINGS/C++: Fixed crash on nullptr to std::string conversion
- BINDINGS/C++: Fixed functions names
- BINDINGS/C++: Fixed read_options copy ctor
- BINDINGS/C++: Initialize sail_io fields
- BINDINGS/C++: Move some ctors in read/write options to a private section
- BINDINGS/C++: Remove unnecessary forward declarations
- CODECS: Added GIF
- COMMON: Added 'URL' meta data key
- COMMON: Added EXIF meta data key
- COMMON: Added SAIL_CHECK_DATA_PTR
- COMMON: Added SailMetaInfo
- COMMON: Added UNKNOWN meta data key into switch
- COMMON: Added more error codes
- COMMON: Fix Coverity Scan warning on continuing loop on error
- COMMON: Fix Coverity Scan warning on dead code in switch/case
- COMMON: Fix Coverity Scan warning on missing va_end
- COMMON: Make interlaced_passes 1 by default
- COMMON: Make meta data nodes to contain binary data as well
- COMMON: Removed resolution meta data keys as they're a part of sail_resolution now
- COMMON: Rename 'meta info' to 'meta data'
- COMMON: Rename EXIF, IPTC, and XMP keys to HEX_
- COMMON: Rename X/Y resolution meta info enumerators
- COMMON: Split string and binary meta data values
- COMMON: Update signatures of memory allocation functions sail_malloc/sail_calloc/sail_realloc
- DOC: Added FORMATS.md
- EXAMPLES: Added 'current frame' label in advanced demos
- EXAMPLES: Added Stop button in advanced demos
- EXAMPLES: Fix sail-probe
- EXAMPLES: Fixed compilation issue with SDL2 on Mac
- JPEG: Move the meta info saving code into a helper
- LIBSAIL: Added key_unknown
- LIBSAIL: Fix Coverity Scan warning on printf format
- LIBSAIL: Fix Coverity Scan warning on using freed pointer
- LIBSAIL: Load custom codecs from SAIL_MY_CODECS_PATH
- PNG: Use hardcoded meta data keys for EXIF, IPTC, and XMP tags
- SAIL: Added CMake development configs
- SAIL: Append to ENV{PKG_CONFIG_PATH} instead of overwriting it
- SAIL: Enable PCH on CMake >= 3.16
- SAIL: Enable _POSIX_C_SOURCE as a compiler definition in CMake
- SAIL: Fix setting PKG_CONFIG_PATH on Windows
- SAIL: Include 'jobs' to allow pkg-config find the path to jpeg-turbo
- SAIL: Include src directories only in build time
- SAIL: Increase the magic buffer size 10 -> 16 bytes
- SAIL: Install cmake configs on Debian
- SAIL: Limit the git clone depth to 1 in travis
- SAIL: Make the travis badge fetch master builds
- SAIL: Move context-related functions into context_private.c
- SAIL: Preserve the old CMAKE_MODULE_PATH
- SAIL: Remove SDL2 pkg-config path as it's unused
- SAIL: Simplify list(APPEND) constructions
- SAIL: Split sail.c into separate files
- TESTS: Added meta data integrity testing
- TESTS: Fixed enum type
- TIFF: Set a string to NULL
v0.9.0-pre8
- SAIL: Use MSVC 2019 to build setup on Windows
- SAIL: Added libtiff-dev in Debian rules
- SAIL: Enable more warnings with clang
- SAIL: Enable undefined linker errors with Clang
- SAIL: Make pkg-config to search our own build root under extra on all platforms
- SAIL: Move plugins' dependencies into plugins' projects out of public scope
- SAIL: Print C, CXX, and linker flags in cmake output
- SAIL: Rename 'plugin' to 'codec'
- SAIL: Update comments
- SAIL: Update extra repository to the latest version
- SAIL: Use cmake string(append) to modify CFLAGS
- SAIL: Use extra libs as DLLs
- COMMON: Added sail_memdup
- COMMON: Introduce image resolution
- COMMON: Introduce unique I/O ids so we can distinguish between I/O classes like file and memory
- COMMON: Rename ICCP allocating functions (with_data -> from_data)
- COMMON: Rename SAIL_ERROR_UNSUPPORTED_COMPRESSION_TYPE to SAIL_ERROR_UNSUPPORTED_COMPRESSION
- LIBSAIL: Added System32 to the library search path to fix loading codecs with extra redist dependencies
- LIBSAIL: Check if we can actually write the requested compression before passing it into a plugin
- LIBSAIL: Move a private function into the module where it's actually used
- LIBSAIL: Print more errors on SAIL_ERROR_UNSUPPORTED_PIXEL_FORMAT
- LIBSAIL: Remove unnecessary SAIL_EXPORT
- CODECS: Don't store invalid resolution
- CODECS: Rename .codec.info files to .codec.info.in
- DIST: Added 'View README Online' into the Windows installer
- DIST: Added VC redist into the Windows installer
- DOC: Added programming language to the README header
- DOC: Simplify the formats table in README
- EXAMPLES: Enable ASAN with Clang
- EXAMPLES: Update sail-probe version to 1.2.0
- JPEG: Read and write resolution information
- PNG: Fixed compilation warning
- PNG: Read and write resolution information
- PNG: Simplify blending functions
- TIFF: Enable ZSTD
- TIFF: Fixed target naming for HAVE_TIFF_41
- TIFF: Read and write resolution information
- TIFF: Remove unused compressions
- BINDINGS/C++: Make more methods in codec_info overloaded
- BINDINGS/C++: Remove unnecessary friends
v0.9.0-pre7
- COMMON: Make more fields unsigned
- COMMON: Added SAIL_ERROR_UNSUPPORTED_SEEK_WHENCE
- COMMON: Added missing pixel formats in sail_bits_per_pixel()
- PLUGINS: Added TIFF file format
- PLUGINS: Make compression levels double instead of int
- PLUGINS: Updated the reading function to accept non-const images as we modify their pixels
- JPEG: Handle other RGB conversions from CMYK
- JPEG: Added more output pixel formats
- PNG: Detect if we actually can write the requested output format
- LIBSAIL: Allocate context implicitly per thread. The public API now doesn't require contexts at all
- LIBSAIL: Fixed getting the number of bytes written
- LIBSAIL: Allow reading in I/O writing operations
- LIBSAIL: Fix manipulating memory I/O source
- LIBSAIL: Use sail_malloc() more
- BINDINGS/C++: Fixed copying compressions
- BINDINGS/C++: Fixed copying image meta entries
- BINDINGS/C++: Make probe methods overloads
- EXAMPLES: Print all meta entries in deep-diver demos
- EXAMPLES: Support older versions of Qt
v0.9.0-pre6
- COMMON: Added more file/dir access utility functions
- COMMON: sail_image now also holds pixels along with image information
- PLUGINS: Scanline reading/writing interface has been refactored to read/write entire frames
- PLUGINS: Renamed preferred_output_pixel_format to default_output_pixel_format
- PLUGINS: Fixed saving images with default write options
- JPEG: Fixed crash on stopping unstarted compression
- JPEG: Fixed saving SOURCE images
- LIBSAIL: Renamed 'bits' to 'pixels'
- LIBSAIL: Added junior functions to read/write from/to memory
- LIBSAIL: Wrapped memory allocation functions so they can be easily re-defined in a single place (no standard mechanism so far)
- SAIL: macOS HomeBrew package is fully functional
Special thanks to the OpenNET community for their feedback.
v0.9.0-pre5
- DOC: Added note on plugins search algorithm
- LIBSAIL: Document how SAIL searches for plugins
- LIBSAIL: Dynamically build a path to SAIL plugins on Windows
- COMMON: Added SAIL_TRY_OR_EXECUTE() macro
- SAIL: Allow selecting a different folder to install SAIL on Windows
- EXAMPLES: Added note on RGB and RGBA pixels to output in the advanced demos
- EXAMPLES: Avoid settings pointers to 0 where appropriate
- DOC: Remove the note on legacy image formats
- DOC: Reorder the supported platforms list
- JPEG: Fixed calculating bytes per line for CMYK images
- JPEG: Fixed setting bytes per line
- JPEG: Fixed setting image pixel format when the SOURCE pixel format was requested
- JPEG: Use
enum SailPixelFormat
instead of justint
- SAIL: Remove 'leak' ASAN option
- SAIL: Enabled ASAN with Clang
- DOC: Note on installation from source on MacOS