Sean Barrett
|
9ba3dc1fc5
|
make resample tests work in VC6
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
fc09a5d198
|
Don't saturate floats.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
c9caec1123
|
Refactoring to reduce duplicated code.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
1353909477
|
Allow user to force the alpha channel to be handled as a linear value even if the color channels are sRGB.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
bbc340d481
|
Support different edge behavior on vertical and horizontal axis.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
419a5ba10f
|
Fix stbr__type_size for updated stbr_type
|
ago%!(EXTRA string=11 years) |
Sean Barrett
|
6ade66182c
|
allow alpha channel to be channel #0
|
ago%!(EXTRA string=11 years) |
Sean Barrett
|
f502cae91a
|
rename everything to do with premultiplied alpha since the whole
point is that this is for handling *non*-premultiplied alpha (since
correct handling of premultiplied alpha requires doing nothing)
|
ago%!(EXTRA string=11 years) |
Sean Barrett
|
42556fec82
|
don't require manual synchronization of STBR_MAX_COLORSPACES/MAX_TYPES
|
ago%!(EXTRA string=11 years) |
Sean Barrett
|
392585130c
|
Get rid of "advanced" API with explicit temp memory because the STBR_MALLOC interface is sufficient
|
ago%!(EXTRA string=11 years) |
Sean Barrett
|
259c92b550
|
replace "texel" with "pixel" in identifiers
|
ago%!(EXTRA string=11 years) |
Sean Barrett
|
fc4ca11a52
|
Fix places in previous commits where tabs got replaced with spaces
|
ago%!(EXTRA string=11 years) |
Sean Barrett
|
25fae8c67c
|
Avoid divides in encode_scanline if not doing unpremultiply.
Rename stb__encode_scanline to stb__encode_pixel
|
ago%!(EXTRA string=11 years) |
Sean Barrett
|
a0537bfd04
|
Allow compiling as C pre-C99 (don't rely on declare-anywhere)
|
ago%!(EXTRA string=11 years) |
Sean Barrett
|
3077bf5023
|
wrap long data lines
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
e05ebdbf1e
|
My guess is people who care about premultiply also care about color space.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
d75488b0e8
|
Do the multiply inline, it should be a tad faster and not corrupt our data.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
13acfca829
|
I had the whole premultiply thing backwards.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
21c7c8f5d9
|
Another stab at the api, offering classes of functions for different common tasks.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
8063ea0952
|
Specify a channel as having premultiplied alpha and use it to un-premultiply all other channels before resampling.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
a32fa8b4df
|
This to-do item done.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
aae1c7ca41
|
ZOOM AND ENHANCE!
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
1b2d104e00
|
Some error conditions.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
35cb95b803
|
Allow for specifying a sub-region of the source image to use. Downsampling only, currently.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
52ac93225a
|
C<99 ports
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
985ac75251
|
When doing a perfect po2 nearest neighbor downsample don't allow -0.5 and 0.5 to both contribute to a texel or you'll get a double tap.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
6625259959
|
Try to keep integer precision by briefly casting to double while decoding and encoding.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
11897fbf96
|
More fixing shorts.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
1fcbe0daaf
|
Fix shorts. Add test cases for shorts.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
7ead9a748d
|
Fix. Ring buffers are a height value.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
043fa28c11
|
Same deal with height.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
ebe0473d8b
|
Add a test suite to do a bunch of different resizes to find problems. One problem found was an incorrect calculation of texel support how many margin texels needed when downsampling. When downsampling we need to spread out the support of each contributing texel, so to compensate you need more margin texels.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
68f93b72d5
|
Update documentation and add helper functions.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
d96c97298c
|
This is still faster than the function pointer solution, and neater.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
3a3e06029e
|
This is definitely faster than the function pointer solution.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
9bd5abb52d
|
Both versions run within the margin of error on my machine so we'll go with the simpler one.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
5dff80ed31
|
Trying some different strategies for optimizing the decoder. The code in #ifdef 1 is slightly faster by my measurements, but a whole lot uglier.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
1fcf30ada0
|
Fix a math error.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
ef3a460ec4
|
Some better looking horners save another multiplication.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
7d47582578
|
Support for 16 and 32 bit integer images, and float images.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
6c8cac0a66
|
Support for sRGB color space.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
41dc4c476c
|
In some situations with certain filter kernels with negative values it's possible to generate valid results > 1.0, so saturate it before we write it to make sure it doesn't overflow. Also fix incorrect filter radius while downsampling.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
af1ed58f51
|
Add wrap, fix reflect so it doesn't wrap.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
8723567439
|
Add edge reflect mode.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
6cd81d4dd5
|
Put the polynomials in horner form to save a multiplication.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
fb2f8df5cc
|
Add mitchell filter.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
69af963c42
|
Add catmull rom filter. Also, move the debug asserts for values <= 1 to the very end of the process. This will make these bugs a lot harder to find, but because some filter kernels have negative values it's possible for the buffers to have values > 1 up until the point where it's converted back to an int.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
12acf87eec
|
When downsampling start the buffer loop at -filter_texel_margin to make sure that all contributors get their taps in at the ring buffer.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
155c71fb90
|
Reorder these loops because I think we get a cache win if we write the entire ring buffer entry at once.
|
ago%!(EXTRA string=11 years) |
Jorge Rodriguez
|
01fb58d6b4
|
Add a bicubic filter.
|
ago%!(EXTRA string=11 years) |