Commit Graph

7280 Commits

Author SHA1 Message Date
Michael Drake
a373fd766e lzw: Always read three bytes on fast path to avoid swtich. 2021-04-18 17:50:42 +01:00
Michael Drake
98e8673dbc lzw: Restrict pointers through code reader. 2021-04-18 17:50:42 +01:00
Michael Drake
71eb67ba7c lzw: Constify table pointers in writer functions. 2021-04-18 17:50:42 +01:00
Michael Drake
020fc32108 gif: Switch complex decoder over to continuous lzw API. 2021-04-18 17:50:42 +01:00
Michael Drake
05fddf49e3 lzw: Direct output into frame data, avoiding stack.
If the frame is non-interlaced, and has the same rowstride as the
full image, then we can decode lzw directly into the output image.
2021-04-18 17:50:42 +01:00
Michael Drake
0d394487c1 gif: Handle any uncompressed output before exiting due to error. 2021-04-18 17:50:42 +01:00
Michael Drake
5426e9b81a lzw: Add function for decoding multiple LZW codes at a time. 2021-04-18 17:50:42 +01:00
Michael Drake
ed3363b899 lzw: Add support for resumable output of a single code.
This allows handling of insufficient output buffer space.
2021-04-18 17:50:42 +01:00
Michael Drake
abd8619bef lzw: Return output array from decode function instead of init. 2021-04-18 17:50:42 +01:00
Michael Drake
01fde32f99 gif: Frame decoding: Rearrange for readability. 2021-04-18 17:50:42 +01:00
Michael Drake
7426c3d500 gif: Frame decoding: Simplify transparency check. 2021-04-18 17:50:42 +01:00
Michael Drake
663bf07aac lzw: Remove written member from context.
Not needed now that clear codes are handled normally.
2021-04-18 17:50:42 +01:00
Michael Drake
64ddf20599 lzw: Adapt main code handling to handle clear codes too. 2021-04-18 17:50:42 +01:00
Michael Drake
367f64c5bc lzw: Output values in picture order. 2021-04-18 17:50:42 +01:00
Michael Drake
06443e64e9 lzw: Store code's value count in table. 2021-04-18 17:50:42 +01:00
Michael Drake
8d8aa0dd46 gif: Split out gif frame data decode. 2021-04-18 17:50:42 +01:00
Michael Drake
c9a639d2bd lzw: Rename a bunch of structures, functions and variables.
new_code              -> code
    last_value            -> value
    first_value           -> first
    previous_entry        -> extends
    current_entry         -> table_size
    previous_code         -> prev_code
    previous_code_first   -> prev_code_first
    current_code_size     -> code_size
    current_code_size_max -> code_max
    lzw__next_code        -> lzw_read_code
2021-04-18 17:50:42 +01:00
Michael Drake
26c83999cc lzw: Split out output writing. 2021-04-18 17:50:42 +01:00
Michael Drake
92d53337d8 lzw: Rename minimum_code_size to match what it's called in spec. 2021-04-18 17:50:42 +01:00
Michael Drake
ac2d57c288 lzw: Slight simplification of clear code handling. 2021-04-18 17:50:42 +01:00
Michael Drake
eb07e204e7 lzw: Avoid code size increment check when dictionary is full. 2021-04-18 17:50:42 +01:00
Michael Drake
1714cf6c3a lzw: Split out dictionary augmentation. 2021-04-18 17:50:42 +01:00
Michael Drake
47a441f86b lzw: Create #define for number of dictionary entry slots. 2021-04-18 17:50:42 +01:00
Michael Drake
f66e20e017 lzw: Simplify new code handling.
The tiny overhead of an extra time through the output loop
is worth the simpler code.
2021-04-18 17:50:42 +01:00
John Cupitt
21c565d5d6 improve comment 2021-04-14 11:32:08 +01:00
John Cupitt
da6fe210b4
Merge pull request #2195 from libvips/text-colour-rendering
Text colour rendering
2021-04-13 08:42:14 +01:00
John Cupitt
cc04449dc5 remove extraeous "brew upgrade" 2021-04-12 20:40:00 +01:00
John Cupitt
31fe274626 fix mono rendering
always render RGBA, then in mono mode just use the alpha
2021-04-12 17:29:54 +01:00
John Cupitt
b27a10c547 ask brew to update/upgrade
might help CI failures on macOS
2021-04-12 16:55:01 +01:00
John Cupitt
b4fe2c7b8b Note pagocairo dep in README 2021-04-12 16:52:14 +01:00
John Cupitt
985a3e2282 reenable fontfile 2021-04-12 15:46:56 +01:00
John Cupitt
f53959b824 switch font rendering to pangocairo
to make colour font rendering work
2021-04-12 15:11:18 +01:00
John Cupitt
8412b8233c start adding colour text rendering
try eg.

	vips text x.png 😀 --rgba --dpi 300

But it's not working :( need to tyweak something else?
2021-04-12 10:59:50 +01:00
John Cupitt
db22eb4d4f add p3.icm to makefile.am
and fix make dist
2021-04-08 10:53:15 +01:00
John Cupitt
a2147d64be
Merge pull request #2190 from lovell/add-icc-profile-p3
colour: add a fallback for the increasingly-common P3 profile
2021-04-08 09:42:37 +01:00
Lovell Fuller
d56a47829b colour: add a fallback for the increasingly-common P3 profile
Uses the CC0-licensed 'magic' compatibility profile from
https://github.com/saucecontrol/Compact-ICC-Profiles#display-p3
2021-04-07 21:44:33 +01:00
John Cupitt
930078a6f9 note jp2k support in README 2021-04-03 18:50:18 +01:00
John Cupitt
234c468489 comment fix 2021-04-03 16:32:23 +01:00
John Cupitt
f726edb7f7 remove stray bitmap_create call
missed this one in the delay gif alloc patch
2021-04-03 12:28:41 +01:00
John Cupitt
07e73475c1 make a patch for the libnsgif alloc delay 2021-04-02 12:00:50 +01:00
John Cupitt
9e10f4bf0f Merge branch 'libnsgif-delay-alloc' 2021-04-02 11:59:44 +01:00
John Cupitt
c8363d4e61
Merge pull request #2179 from lovell/nsgifload-limit-dimensions
nsgifload: enforce maximum GIF dimensions of 16383
2021-04-02 11:44:30 +01:00
Lovell Fuller
701dcc7500 nsgifload: enforce maximum GIF dimensions of 16383
The GIF spec allows dimensions up to 65535 (16-bit unsigned),
but this equates to 17GB/frame.

A common task is to convert animated GIF to animated WebP,
and the latter supports dimensions up to 16383 (14-bit unsigned),
so that seems like a sensible limit and equates to 1GB/frame.

Also makes the error message consistent with other loaders.
2021-04-01 19:26:32 +01:00
John Cupitt
9bdf5e8cda try delaying libnsgif alloc until read frame
gives the caller a chance to detect memory bombs
2021-04-01 12:53:57 +01:00
John Cupitt
e4453f8b18 update libnsgif
pick up a couple of patches
2021-03-29 11:56:58 +01:00
John Cupitt
9f15567f2c fix fuzzer error
see https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=32638
2021-03-29 09:19:14 +01:00
John Cupitt
77ccd04cbe
Merge pull request #2168 from lovell/nsgifload-sanity-check-dimensions
nsgifload: check dimensions before memory allocation
2021-03-28 22:42:29 +01:00
Lovell Fuller
744e42edd1 nsgifload: check dimensions before memory allocation
GIF dimensions are 16-bit unsigned
Initialise memory to zero as image may be truncated
2021-03-28 19:59:21 +01:00
John Cupitt
0054c7dafa add some more gifload tests 2021-03-28 13:49:34 +01:00
John Cupitt
b2cfe6a0a0 nsgifload was not setting filename 2021-03-28 13:38:41 +01:00