summaryrefslogtreecommitdiff
path: root/pngwrite.c
AgeCommit message (Collapse)Author
2019-02-03Fix a memory leak in the riffled palette optimization on ARM; refactorCosmin Truta
Move deallocation of riffled_palette from png_write_destroy to png_read_destroy. The reader (not the writer) is the owner of riffled_palette. Move allocation and initialization of riffled_palette from png_do_read_transformations to png_init_palette_transformations. Allow riffled_palette inside png_struct only if the ARM Neon optimizations are enabled. Rename png_riffle_palette_rgba to png_riffle_palette_rgba8, etc., to better indicate the strict applicability of these routines. Fix an unused parameter warning in the build configurations where riffled palette optimization is not enabled. Fix indentation.
2018-09-04Optimize png_do_expand_palette for ARMRichard Townsend
ARM-specific optimization processes 8 or 4 pixels at once. Improves performance by around 10-22% on a recent ARM Chromebook.
2018-08-18Remove top-level const from function-scope variablesCosmin Truta
As per the const correctness rules, top-level const-ness of data in automatic scopes does not propagate outside of these scopes (unlike const-ness at lower levels, such as pointers to const data). Previously, const was used liberally, but inconsistently across the libpng codebase. Using const wherever applicable is not incorrect. However, _consistent_ use of const is difficult to maintain in such conditions. In conclusion, we shall continue to use const only where doing so is strictly necessary: 1. If a function guarantees that it will not modify an argument passed by pointer, the corresponding function parameter should be a pointer-to-const (const T *). 2. Static data should not be modified, therefore it should be const. Reference: Google C++ Style Guide https://google.github.io/styleguide/cppguide.html#Use_of_const
2018-08-18Replace the remaining uses of PNG_CONST with constCosmin Truta
In v1.6.0, compiler support for const became a requirement. It should be used consistently. To maintain backwards compatibility, PNG_CONST is still maintained in deprecated form.
2018-07-28Remove the "last changed" version information from source commentsCosmin Truta
This information is maintained by the version control system.
2018-07-15Release libpng version 1.6.35Cosmin Truta
2018-07-01[libpng16] Added missing parentheses to a macro definitionCosmin Truta
(Contributed by github.com/irwir)
2018-06-17[libpng16] Replace the remaining uses of png_size_t with size_tCosmin Truta
In v1.6.0, size_t became a required type. It should be used consistently. To maintain backwards compatibility, png_size_t is still maintained in deprecated form.
2017-09-22[libpng16] Removed more redundant tests (suggested by "irwir" in Github ↵Glenn Randers-Pehrson
issue #180).
2017-08-29[libpng16] Fix "last changed" datesGlenn Randers-Pehrson
2017-08-25[libpng16] Bump version to 1.6.33beta01Glenn Randers-Pehrson
2017-08-24[libpng16] Imported from libpng-1.6.32.tarGlenn Randers-Pehrson
2017-07-31[libpng16] Update "Last changed" dates and some copyright yearsGlenn Randers-Pehrson
2017-07-31[libpng16] Added calls to png_handle_eXIf(() in pngread.c and png_write_eXIf()Glenn Randers-Pehrson
in pngwrite.c, and made various other fixes to png_write_eXIf(). Eliminated png_ptr->num_exif member from pngstruct.h and added num_exif to arguments for png_get_eXIf() and png_set_eXIf().
2017-07-27[libpng16] Imported from libpng-1.6.31.tarGlenn Randers-Pehrson
2017-07-11[libpng16] Removed one of the GCC-7.1.0 'strict-overflow' warnings thatJohn Bowler
result when integers appear on both sides of a compare. Worked around the others by forcing the strict-overflow setting in the relevant functions to a level where they are not reported. Changed "FALL THROUGH" comments to "FALLTHROUGH" because GCC doesn't like the space. Worked around some C-style casts from (void*) because g++ 5.4.0 objects to them. Increased the buffer size for 'sprint' to pass the gcc 7.1.0 'sprint overflow' check that is on by default with -Wall -Wextra.
2016-10-19[libpng16] Imported from libpng-1.6.26.tarGlenn Randers-Pehrson
2016-10-05[libpng16] Imported from libpng-1.6.26beta05.tarGlenn Randers-Pehrson
2016-10-02[libpng16] Quieted all remaining -Wconversion compiler warningsGlenn Randers-Pehrson
2016-10-01[libpng16] Bump version to 1.6.26beta03Glenn Randers-Pehrson
2016-09-30Unsigned overflowJohn Bowler
Remove all currently detected cases of unsigned overflow. Detection is runtime, so test case dependent. The changes to pngvalid.c eliminate spurious and probably invalid tests with one while loop exception. Apart from that and the change to the dependence on the intended unsigned overflow in pngtrans.c the changes are limited to altering the meme for an unsigned 'x' from: while (x-- > 0) to for (; x > 0; --x) This works because, in all cases, the control variable is not used in the loop. The 'while' meme was, at one time, warn'ed by GCC so it is probably a good change, for some weird religious value of good. Signed-off-by: John Bowler <jbowler@acm.org>
2016-08-03[libpng16] Imported from libpng-1.6.24.tarGlenn Randers-Pehrson
2016-07-15[libpng16] Fixed more indentationGlenn Randers-Pehrson
2016-01-18Simplified API: write-to-memory, overflow handlingJohn Bowler
This implements an API and provides a number of assist macros to allow an application which uses the simplified API write to bypass stdio and write directly to memory. It also includes some warnings (png.h) and some check code to detect *possible* overflow in the ROW_STRIDE and simplified image SIZE macros. This disallows image width/height/format that *might* overflow. A quiet API change that limits in-memory image size (uncompressed) to less that 4GByte and image row size (stride) to less than 2GByte. Signed-off-by: John Bowler <jbowler@acm.org>
2015-12-13[libpng16] Update copyright uears in source files.Glenn Randers-Pehrson
2015-11-12[libpng16] Imported from libpng-1.6.19.tarGlenn Randers-Pehrson
2015-10-29[libpng16] Reject attempt to write over-length PLTE chunkGlenn Randers-Pehrson
2015-09-24[libpng16] Reverted addition of png_set_filler_16 and png_set_add_alpha_16()Glenn Randers-Pehrson
functions. They unnecessarily duplicate png_set_filler() and png_set_add_alpha() which now work properly with 16-bit images.
2015-09-23[libpng16] Reverted the fix of byte order in png_do_read_filler() with 16-bitGlenn Randers-Pehrson
input that was made in version 1.6.17beta01, to preserve legacy behavior even though it was incorrect. Instead, added new API png_set_filter_16() and png_set_add_alpha_16() that set a flag to make png_do_read_filter() interpret the filler bytes properly.
2015-08-17[libng16] Reverted recent mistaken change of 0xnnnn to 0xnnnnULGlenn Randers-Pehrson
2015-08-17[libpng16] Use unsigned hex constants in "reciprocal" computationsGlenn Randers-Pehrson
2015-08-16[libpng16] Changed 0xnnnn constants to 0xnnnnUL.Glenn Randers-Pehrson
2015-08-13[libpng16] Change "n bit" to "n-bit" in comments.Glenn Randers-Pehrson
2015-07-22[libpng16] Imported from libpng-1.6.18.tarGlenn Randers-Pehrson
2015-06-11[libpng16] Fix some indentation.Glenn Randers-Pehrson
2015-06-03[libpng16] Fix g++ build breaksJohn Bowler
2015-06-03[libpng16] Fixed NO_WRITE_FILTER and -Wconversion build breaks (John Bowler).John Bowler
2015-05-31[libpng16] Removed WRITE_WEIGHTED_FILTERED code, to save a few kbytes of theGlenn Randers-Pehrson
compiled library size. It never worked properly and as far as we can tell, no one uses it. The png_set_filter_heuristics() and png_set_filter_heuristics_fixed() APIs are retained but deprecated and do nothing.
2015-05-31[libpng16] Imported from libpng-1.6.18beta05.tarGlenn Randers-Pehrson
2015-05-30[libpng16] Backported filter selection code from libpng-1.7.0beta51, to combineGlenn Randers-Pehrson
sub_row, up_row, avg_row, and paeth_row into try_row and tst_row.
2015-05-06[libpng16] PNG_RELEASE_BUILD replaces tests where the code depended on the ↵John Bowler
build base type and can be defined on the command line, allowing testing in beta builds. Back ported from libpng17.
2015-05-06[libpng16] Imported from libpng-1.6.18beta03.tarGlenn Randers-Pehrson
2015-03-26[libpng16] Imported from libpng-1.6.17.tarGlenn Randers-Pehrson
2015-03-21[libpng16] Reverted "& 0xff" additions of version 1.6.17beta01. Libpng passesGlenn Randers-Pehrson
the Coverity scan without them.
2015-03-04[libpng16] Imported from libpng-1.6.17rc01.tarGlenn Randers-Pehrson
2015-02-27[libpng16] Imported from libpng-1.6.17beta06.tarGlenn Randers-Pehrson
2015-02-27[libpng16] Added "& 0xff" to things being typecast to "png_byte".Glenn Randers-Pehrson
2015-02-22[libpng16] Put #ifdef/#endif around png_set_compression_level in pngwrite.cGlenn Randers-Pehrson
2015-02-17[libpng16] Added PNG_WRITE_CUSTOMIZE_COMPRESSION_SUPPORTED macro, on by default.Glenn Randers-Pehrson
2014-11-20[libpng16] Imported from libpng-1.6.15.tarGlenn Randers-Pehrson