Commit Graph

324 Commits

Author SHA1 Message Date
Chris Forseth
03b4bbc5d2 Fix a disposal flag mistype.
Only clear to background color if index is non-zero.
Fixed a the disposal test gif I was using - now renders properly (gif has no transparent set, but all renderers still considered it transparent.  Spec says 0 should be ignored if 0, but was confusing by saying it only in the context of the pal not existing.. but seems to be the case always.
2017-11-27 23:32:44 -06:00
Chris Forseth
28c28b0bd2 Per the contributor doc - added my name. Noticed urraka also did some work here, so hopefully didn't step on any toes.
- Fix an issue where the spec of the gif for restore to previous uses code 3, not 4.
- To get results that worked - made an assumption that "clear to background" meant "revert back to what was there before I drew", where mode 1 would revert back to the previous frame [slightly different].  If I clear to background color instead, I ended up with large opaque squares in gifs that changes their transparent colour each frame.
- Background color is supposed to be used only for pixels not rendered by the image, so took that to mean it only really affected the previous frame, or potentially any frame that used full disposal.  Since background color is allowed to be unspecified this is what lead me to believe I shouldn't use it for disposal.
- Oh, also upped the codes table to 8192 as 4096 ended up being too small for a few of my test cases.

Full disclaimer - I only read through the GIF format for this contribution, so competly could be misinterpreting the spec - but this gave me reuslts that matched Chrome.
2017-11-27 23:06:53 -06:00
Chris Forseth
87a3143fb4 GIF Loading - multiple frames;
- Allow loading a gif as multiple frames into a single buffer.  Each frame is a full image seperated by a (w * h * comp) stride.
- Optionally, can pass in a pointer to a int, which will be filled with an array layers long contain ms for each frame.
- Fix gif's not loading the initial transparent background
- I believe also fix disposal rules for subsequent frames (though being somewhat inefficient with memory to do so)
- Add a flip_vertical that takes into account slices as well.

Compiled using VS2017, but nothing else as I'm not really setup for it.  Apologies.
2017-11-27 22:41:51 -06:00
Julian Raschke
4bffebc5f0 Avoid warning about unused stbi__float_postprocess 2017-11-25 17:23:33 +08:00
Anaël Seghezzi
fcf0b99601 add stbi_is_16 2017-11-24 14:36:37 +01:00
Anaël Seghezzi
4c1a786455 Revert "return comp info in bytes (support for 16 bit images)"
This reverts commit 9dfa8c7f31.
2017-11-24 14:35:14 +01:00
Anaël Seghezzi
9dfa8c7f31 return comp info in bytes (support for 16 bit images) 2017-11-24 13:44:39 +01:00
darealshinji
b6b43df186 Use stbi__mad4sizes_valid() only if STBI_NO_LINEAR or STBI_NO_HDR are defined 2017-09-04 14:01:43 +02:00
Mikhail Morozov
350173026a stb_image: support for 1-bit BMP 2017-09-01 02:06:06 +03:00
lieff
c06c9fe6bc place const tables to protected .rdata section 2017-08-31 19:33:28 +03:00
Sean Barrett
555efbedfc Update version numbers 2017-07-23 14:09:39 -07:00
Fabian Giesen
0fbbda56fa stb_image: Account for tRNS chunk in non-paletted images.
So we report channels_in_file correctly.

Fixes #329.
2017-07-23 01:41:12 -07:00
Fabian Giesen
fedf03e774 Merge branch 'fix-issue-466' of https://github.com/rygorous/stb into dev 2017-07-22 19:42:52 -07:00
Fabian Giesen
282576fbfb Merge branch 'rygorous-fix-issue-276' into dev 2017-07-22 19:42:23 -07:00
Fabian Giesen
49c7f1b397 stb_image: Optimise vertical flip.
This incorporates #462, but also factors everything into one
function that is shared between 8-bit integer, 16-bit integer, and
float pixels (vertical flip operates on rows of bytes and doesn't
really care), and finally always uses a 2k on-stack buffer without
dynamic memory allocation, doing multiple memcpys per row if
necessary. Not only does this remove an out-of-memory failure mode,
it is also preferable for large images, since it's more
L1-cache-firendly this way.

Fixes #462.
2017-07-22 18:43:36 -07:00
Fabian Giesen
25a2596b2f stb_image: Fix rounding during unpremultiply.
This is the same method as in pull request #455, but using integer
arithmetic instead of converting to float.

Fixes #455.
2017-07-22 15:59:41 -07:00
Fabian Giesen
463dd85f1f Merge branch 'Reedbeta-fix-vs2015-warnings' into dev 2017-07-22 15:51:28 -07:00
Fabian Giesen
69ef103721 Merge branch 'poppolopoppo-load_16_variants' into dev 2017-07-22 15:42:58 -07:00
Fabian Giesen
316571b395 stb_image: 3-char indent and other minor formatting issues. 2017-07-22 15:38:56 -07:00
Fabian Giesen
14c2993310 Merge branch 'realitix-robustify' into dev 2017-07-22 15:23:14 -07:00
Fabian Giesen
cc7f1d1e6d stb_image: Documentation fixes.
req_comp is now desired_channels and *comp is *channels_in_file.

Fixes issue #466.
2017-07-21 22:35:01 -07:00
Fabian Giesen
0674660451 stb_image: Relax raw_len validation for non-interlaced PNGs.
We used to require exact match between img_len and raw_len for
non-interlaced PNGs, but the PNG in issue #276 has extra bytes
(all zeros) at the end of the compressed DEFLATE stream.

The PNG spec doesn't have anything to say about it (that I
can tell), and if libpng accepts this, who are we to judge.

Fixes issue #276.
2017-07-21 21:55:37 -07:00
Nathan Reed
76a1a1c408 Fix variable-shadowing warnings 2017-05-11 22:49:19 -07:00
Nathan Reed
7091cb6ed6 Fix integer conversion warning 2017-05-11 22:48:46 -07:00
PopPoLoPoPpo
9bcda8bb1c Add stbi_load_16() variants to load from memory or callbacks 2017-05-05 00:39:08 +02:00
Sean Barrett
84e42c2e8d fix stbi_shiftsigned to be shifting a value that's unsigned 2017-04-28 23:35:37 -07:00
Jean-Sebastien Bevilacqua
d8796f05bf Robustify stbi__sse2_available in stb_image.h
Function `stbi__sse2_available` takes no argument,
we should be explicit by passing `void` as argument.
It will remove warnings from 'some' compilers.
2017-04-25 21:02:48 +02:00
Kevin Schmidt
97ae5fb3db Edit contributor list. 2017-04-18 17:36:48 +02:00
Kevin Schmidt
1dfdf5558d Fix STBI_NO_STDIO. 2017-04-18 16:17:27 +02:00
Sean Barrett
d795785f3d docs 2017-03-18 18:50:06 -07:00
Sean Barrett
56a61e178f reorganize contributor list (removing one redundant name and adding one new one as well) 2017-03-18 18:48:09 -07:00
Sean Barrett
c79fa78ee8 tweaks to previous merge 2017-03-18 18:42:54 -07:00
Sean Barrett
351489803f Merge branch 'phprus-patch-1' of https://github.com/phprus/stb into working 2017-03-18 18:41:15 -07:00
Sean Barrett
2de9961443 docs 2017-03-18 18:39:06 -07:00
Sean Barrett
90e8658d80 Merge branch 'fix_stbimage_pnm_load' of https://github.com/rygorous/stb into working 2017-03-18 18:37:20 -07:00
Sean Barrett
d9e7c55bd7 minor docs for last merge 2017-03-18 18:35:30 -07:00
Sean Barrett
97c58e3891 Merge branch 'fix_stbimage_gcc_sse2' of https://github.com/rygorous/stb into working 2017-03-18 18:34:17 -07:00
Sean Barrett
24fa816116 merge https://github.com/nothings/stb/pull/427 but I messed up the merge
so you don't get the automatic info you normally do
2017-03-18 18:32:35 -07:00
Sean Barrett
6d60610348 tweaks to previous merge 2017-03-18 18:15:41 -07:00
Sean Barrett
00c2545510 Merge branch 'rgb-detect' of https://github.com/jeremysawicki/stb into working 2017-03-18 18:08:00 -07:00
Sean Barrett
8fe48099cc add comment for next fix prematurely 2017-03-18 18:07:51 -07:00
Sean Barrett
5bbe1d8c2a fixes to that PR 2017-03-18 18:03:34 -07:00
Sean Barrett
55112399e6 Merge branch 'master' of https://github.com/uTox/stb into working 2017-03-18 17:47:54 -07:00
Sean Barrett
be6d13cd6d fix bug in png decoding with 1,2,4-bpp images using filter that samples previous line 2017-03-18 10:54:22 -07:00
Vladislav
667f35578b statically initialize 2017-03-08 21:16:50 +05:00
Fabian Giesen
22c72a069c stb_image: Support optional args consistently.
My guideline for the rules is the PNG loader (which I consider
"canonical"). In the _load functions, x and y are required but
comp is optional; in the _info functions, all three are optional.

Fixes issue #411 (and other related, unreported issues).
2017-03-04 21:17:09 -08:00
Fabian Giesen
3e17544873 stb_image: Give up trying to runtime-detect SSE2 on GCC.
We tried but it was nothing but trouble. New rule: with
GCC/Clang, if you're compiling with -msse2, you get always-on
SSE2 code, otherwise you don't get any. Trying to ship
anything with proper runtime dispatch requires both working
around certain bugs and some fiddling with build settings,
which runs contrary to the intent of a one-file library,
so bail on it entirely.

Fixes issue #280.
Fixes issue #410.
2017-03-04 20:49:14 -08:00
Jeremy Sawicki
9e76bb5108 stb_image: JPEG: Improved detection of RGB images 2017-03-03 16:24:21 -08:00
Gregory Mullen (grayhatter)
16c83cd5fc
Fix a pair of warnings in stb_image.h 2017-03-03 11:26:34 -08:00
Sean Barrett
6a3d4786c9 Merge branch 'unknown-marker' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:40:07 -08:00
Sean Barrett
7e389e85c1 Merge branch 'dnl-segment' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:39:31 -08:00
Sean Barrett
15c7e06dc8 Merge branch 'junk-before-marker' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:38:06 -08:00
Sean Barrett
dc6089f05b tweak fill byte PR 2017-03-03 08:37:30 -08:00
Sean Barrett
50ae79d811 Merge branch 'fill-bytes' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:36:03 -08:00
Sean Barrett
a6dc061137 tweak 16-bit quantization for clarity 2017-03-03 08:35:14 -08:00
Sean Barrett
0befbc3d78 Merge branch 'dequant-16-bits' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:31:57 -08:00
Sean Barrett
014af7b78a Merge branch 'component-ids' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:30:57 -08:00
Sean Barrett
786ac92daa tweak RGB-to-Y conversion 2017-03-03 08:30:49 -08:00
Sean Barrett
64e1799f24 Merge branch 'rgb-grayscale' of https://github.com/jeremysawicki/stb into working 2017-03-03 08:25:29 -08:00
Sean Barrett
8905cb9a8e Merge branch 'patch-1' of https://github.com/RufUsul/stb into working 2017-03-03 08:21:46 -08:00
Sean Barrett
47685c5f84 remove deprecated old-precision jpg path from stb_image.h
tweak license reference wording
2017-03-03 08:19:09 -08:00
Sean Barrett
e248e30954 change license to public-domain AND mit (based on twitter vote) 2017-03-03 07:53:07 -08:00
Jeremy Sawicki
f5f7dc02a1 stb_image: JPEG: Provide failure reason for unknown marker 2017-03-03 01:11:34 -08:00
Jeremy Sawicki
2219a6da29 stb_image: JPEG: Accept DNL segment 2017-03-03 00:13:27 -08:00
Jeremy Sawicki
6f5677946c stb_image: JPEG: Accept non-zero junk bytes at the end of image data 2017-03-02 23:48:02 -08:00
Jeremy Sawicki
344c3f73d5 stb_image: JPEG: Accept fill bytes in stbi__grow_buffer_unsafe 2017-03-02 23:10:03 -08:00
Jeremy Sawicki
e08d398671 stb_image: JPEG: Accept 16-bit quantization tables 2017-03-02 22:32:30 -08:00
Jeremy Sawicki
34fa37bbb4 stb_image: JPEG: Accept any component IDs 2017-03-02 21:40:40 -08:00
Jeremy Sawicki
cb7ffb2408 stb_image: Update contributors 2017-03-02 18:19:21 -08:00
Jeremy Sawicki
552c548a0e stb_image: JPEG: Convert RGB to grayscale properly 2017-03-02 18:06:10 -08:00
themanagainstthetank
7e989db555 update stb_image.h
int raw_data[4] to 0, or the compiler bugs
2017-01-16 18:12:31 +08:00
Sean Barrett
96620a3a54 update version numbers 2017-01-16 00:51:24 -08:00
Sean Barrett
dead3815e2 credits 2017-01-16 00:05:58 -08:00
Sean Barrett
28c24f7b83 Merge branch 'fix-truncation' of https://github.com/sammyhw/stb into working 2017-01-15 23:58:26 -08:00
Sean Barrett
48710234f2 credits; 1/2/4-bit png fix; easy font spacing; NO_STDIO in image_write 2017-01-15 23:57:53 -08:00
Thomas Ruf
f07727a28a stb_image.h: large structures on the stack
more of "allocate large structures on the stack", this time in the forgotten stbi__jpeg_test
-> avoids the infamous _chkstk() when working with CRT
2016-12-28 14:16:45 +01:00
sammyhw
ec9db6f84b allow for all 16 bits 2016-12-15 23:49:19 -05:00
Sean Barrett
b61b7a74fa update version info 2016-12-04 05:40:21 -08:00
Sean Barrett
7bcaa93a76 Merge branch 'master' of https://github.com/Zelex/stb into merging
Also add more credits
Also fix linking multiple copies with STB_IMAGE_STATIC

Conflicts:
	stb_image.h
2016-12-04 05:38:47 -08:00
Sean Barrett
7759a2a93d fix "misleading indentation" gcc warning 2016-12-04 05:25:24 -08:00
Sean Barrett
ae241feec4 Merge branch 'stb_img_overflows' of https://github.com/rygorous/stb into working
Conflicts:
	stb_image.h
2016-12-04 05:20:57 -08:00
Sean Barrett
7736399517 return 16-bit PSDs through 16-bit API (untested) 2016-12-04 05:13:58 -08:00
Sean Barrett
e0700d8e2c 16-bit png changes 2016-11-29 04:13:17 -08:00
Sean Barrett
239a6718e1 rename stbi_load parameters to reduce confusion 2016-11-29 03:03:07 -08:00
jon
2a170daee5 warning fixes, more RGBE fix 2016-11-28 16:24:11 -06:00
jon
a2defc3d7a added support for RGBE header HDR files 2016-11-28 16:05:39 -06:00
Fabian Giesen
6b66033e18 stb_image: Fix memory leak and missing out-of-mem check.
stbi__process_frame_header had two bugs when dealing with progressive
JPEGs:
1. when malloc failed allocating raw_data, previous components'
   raw_coeff didn't get freed
2. no out-of-memory check in raw_coeff allocation

Fix both and share a bit more cleanup code in general.
2016-10-22 00:29:37 -07:00
Fabian Giesen
62f372754f stb_image: Fix HDR/PSD RLE decoders.
Runs need to be bounds checked.

Fixes issues #315, #317.
2016-10-22 00:29:37 -07:00
Fabian Giesen
02190634c2 stb_image: Overflow checking for image allocs.
Adds some helpers that check whether a product of multiple
factors (that need to be non-negative: this is enforced)
summed with another non-negative value overflows when
performed as int. Since stb_image mostly works in ints,
this seems like the safest route. Limits size of images
to 2GB but several of the decoders already enforce this
limit (or even lower ones).

Also adds wrappers for malloc that combine a mul-add-with-
overflow-check with the actual malloc, and return NULL
on failure. Then use them when allocating something that
is the product of multiple factors.

For image formats, also add a top-level "is this too big?"
check that gives a more useful error message; otherwise,
the failed mallocs result in an "out of memory" error.
The idea is that the top-level checks should be the primary
way to catch these bugs (and produce a useful error message).
But a misleading error message is still vastly preferable to
a buffer overflow exploit.

Fixes issues #310, #313, #314, #318. (Verified with the
provided test images)

Along the way, this fixes a previously unnoticed bug in
ldr_to_hdr / hdr_to_ldr (missing NULL check); these functions
are called with the result of an image decoder, so NULLs can
definitely happen.

Another bug noticed along the way is that handling of
interlaced 16-bit PNGs was incorrect. Fixing this (along
with the previous modifications) fixes issue #311.

Yet another bug noticed during this change is that reduce_png
did not check the right pointer during its out of memory
check. Fix that too.
2016-10-22 00:29:37 -07:00
Fabian Giesen
8c8d735eb7 stb_image: More input validation in deflate decoder
Fixes issue #312.
2016-10-22 00:29:37 -07:00
Sean Barrett
fdca443892 fix crash in 2.11 2016-04-02 07:29:34 -07:00
Sean Barrett
6e4154737c update version numbers, documentation, and contributors 2016-04-02 04:51:26 -07:00
Sean Barrett
7a694bdcca re-enable SSE2 code on x64 except with gcc 2016-04-02 04:01:59 -07:00
Sean Barrett
201af99d9f return correct # of channels for PNG 2016-04-02 03:49:46 -07:00
Sean Barrett
591c7f8cb3 remove white matting when loading transparent PSD 2016-04-02 03:44:50 -07:00
Sean Barrett
c03f4b3c2f Merge branch 'patch-1' of https://github.com/kinetiknz/stb 2016-04-02 02:57:34 -07:00
Sean Barrett
097a70ae38 Merge branch 'master' of https://github.com/tulrich/stb 2016-04-02 02:56:39 -07:00
Sean Barrett
a013c036f3 initialize bmp mr/mg/mb/ma properly 2016-04-02 02:54:25 -07:00
Sean Barrett
406d537b41 Merge branch 'initial_png_16bpc' of https://github.com/socks-the-fox/stb into working 2016-04-02 02:41:16 -07:00
Sean Barrett
efdfbb3c7c Merge branch 'master' into working 2016-04-01 21:43:22 -07:00