Commit Graph

386 Commits (22dbcffef714461ca29694bf71deeff38bf5522d)

Author SHA1 Message Date
Sean Barrett 8849501a3f add documentation explaining why even a 64K table for srgb_to_uint8 would be inaccurate 2014-09-13 08:21:14 -07:00
Sean Barrett 9a6af9a8d3 replace int(floor()) with int(), since that produces same results for non-negative values and is much faster on 32-bit x86 2014-09-13 08:12:37 -07:00
Sean Barrett 1dcca19ae0 because of we divide by /255 not /256, we lose numerical precision, so can't guarantee that box filter results round to same results as naive 2014-09-13 08:06:39 -07:00
Sean Barrett adbbe8dabd move x loop inside switch in horizontal_downsample 2014-09-13 07:46:09 -07:00
Sean Barrett 7a8c9196d1 unroll vertical_upsample inner loop, and reverse loop nesting to minimize work 2014-09-13 07:41:39 -07:00
Sean Barrett 9c2ae9bdb8 cache filter-width derived computations that use floor/ceil because those were showing up like crazy on VC6 profile despite only being per-scanline-ish?!?
unroll inner loop in horizontal_resample
2014-09-13 07:29:04 -07:00
Sean Barrett 972456cb63 explicit performance tests variants 2014-09-13 06:53:53 -07:00
Sean Barrett c9600c012f unroll channel loops in downsampler 2014-09-13 06:23:07 -07:00
Sean Barrett 3ee97c221f compile as C 2014-09-13 06:12:40 -07:00
Sean Barrett 59898db411 tweak grammar 2014-09-13 06:05:00 -07:00
Sean Barrett a2f1cadde8 convert tabs to spaces so it's consistent with other stb libs 2014-09-13 06:03:48 -07:00
Sean Barrett 60064f9803 add stb_image_resize.h to readme 2014-09-13 05:56:06 -07:00
Sean Barrett 0fa5b5c66f rename cubic to cubicbspline;
tweak filter type documentation
2014-09-13 05:52:19 -07:00
Sean Barrett 29b36b3dea rename filters, document them 2014-09-12 05:28:24 -07:00
Sean Barrett da2aa8f6b7 checkboard test to verify srgb 2014-09-12 05:04:38 -07:00
Sean Barrett a9778b8dbd tweak docs; fix compile error in UNUSED_PARAM stuff 2014-09-12 04:46:41 -07:00
Sean Barrett 99f3b78bbd Merge branch 'resample' of http://github.com/bsvino/stb into resample 2014-09-12 03:54:17 -07:00
Sean Barrett df128b7995 update STBIR__UNUSED_PARAM to match stb_image.h version 2014-09-12 03:53:36 -07:00
Jorge Rodriguez ca88b6fba6 Calculate and store vertical contributors first so that they can be normalized and optimized. 2014-09-11 12:45:18 -07:00
Jorge Rodriguez a25c1d2bbd Merge remote-tracking branch 'remotes/nothings/resample' into resample 2014-09-11 10:00:57 -07:00
Jorge Rodriguez 36b417f6b4 Optimizations: Skip zero-coefficient contributions. Reduce the size of the coefficients array when downsampling. 2014-09-11 09:53:14 -07:00
Sean Barrett 27f26f8337 Documentation;
rename STBIR_FLAG_PREMULTIPLED_ALPHA to STBIR_FLAG_ALPHA_PREMULTIPLIED so that both flags have "ALPHA" first
2014-09-11 03:02:20 -07:00
Sean Barrett 7a4f1f4665 update with new tests for srgb conversion 2014-09-11 02:10:37 -07:00
Sean Barrett 16d68d14f8 fix stbir__linear_to_srgb_uchar:
1. table stored threshhold of transition from i to i+1, but wants to be i-1 to i
    2. table was computed by dividing uchar by 256.0 instead of 255.0, causing it to be 100% wrong
2014-09-11 02:05:53 -07:00
Sean Barrett 30c7a981ec compile as C;
fix some unsigned/signed comparisons;
avoid round() since it's not in pre-C99 C;
remove MAX_CHANNELS since I never ended up needing it;
rename STBIR_EPSILON to STBIR_ALPHA_EPSILON;
don't use STBIR_ALPHA_EPSILON on float input (can't remove it properly due to numeric precision, and they can do it themselves);
optimize subtraction of STBIR_ALPHA_EPSILON;
sorry i forgot to commit these separately!;
2014-09-11 01:47:50 -07:00
Sean Barrett 1208730e1e Merge branch 'resample' of http://github.com/bsvino/stb into resample 2014-09-11 01:15:09 -07:00
Jorge Rodriguez 793818d1af Skip zero-coefficient contributors, a fairly decent speedup. 2014-09-10 20:26:14 -07:00
Jorge Rodriguez 46dc8f84fb Use vertical pixel width for the ring buffer. 2014-09-10 20:12:38 -07:00
Jorge Rodriguez 953a637841 Use a carefully shaped trapezoid instead of a box filter to avoid jumps between pixel values. 2014-09-10 19:08:11 -07:00
Sean Barrett 671f04bd7e debugging truetype crash 2014-09-10 15:35:06 -07:00
Sean Barrett 4e580cf9ed fix compile 2014-09-10 15:11:35 -07:00
Jorge Rodriguez 6922628106 Use an even smaller epsilon. Allow the user to avoid the epsilon business if they want to preserve their alpha values. 2014-09-10 15:03:55 -07:00
nothings 057f29f813 update version number 2014-09-10 11:03:49 -07:00
nothings 87b7e3db41 update version number 2014-09-10 11:03:26 -07:00
nothings 5db8a8bc36 Merge pull request #42 from rygorous/master
stb_textedit: Add support for alternative keyboard shortcuts for text/line start/end.
2014-09-10 11:02:04 -07:00
Fabian Giesen 40cc1c59b2 Add support for alternative keyboard shortcuts for text/line start/end. 2014-09-10 10:54:22 -07:00
Jorge Rodriguez c9d67446d2 Reverse allocation routines parameter order so that the context is at the back. 2014-09-09 22:57:15 -07:00
Jorge Rodriguez 17b931047c Add the epsilon value into the alpha instead of using an if statement. It's a tiny bit faster and it can be removed afterwards. 2014-09-09 22:47:53 -07:00
Jorge Rodriguez 1d5c902e2e These minor optimizations were probably already done by the compiler but they can't hurt. 2014-09-09 22:07:40 -07:00
Jorge Rodriguez 41e6aad693 Avoid repeated adds and ensure correct round-trip result. 2014-09-09 21:57:46 -07:00
Jorge Rodriguez f2102d906f Use the info structure to keep track of our memory block sizes to reduce duplicated code and cut down on errors. 2014-09-09 20:58:19 -07:00
Jorge Rodriguez 969ff7c850 Make sure calculate_memory matches with the allocations. Fix some errant asserts. 2014-09-09 20:51:29 -07:00
Jorge Rodriguez 8355ea1184 Use height, not width, for correct progress report. 2014-09-09 18:41:28 -07:00
Jorge Rodriguez 4b69c0637e If alpha is zero then sneakily replace it with a very small nonzero so that the color data is preserved.
Pre-process n1 so that we don't have to do it later on. Can't do n0 since it's used to find the coefficient index.
2014-09-09 18:38:05 -07:00
Jorge Rodriguez d510d70b6a Report downsample progress by when we empty the ring buffer, it's more accurate that way. 2014-09-09 16:35:00 -07:00
Jorge Rodriguez 084baed15c Replace premul test with better premul test that doesn't require visual inspection. 2014-09-09 16:30:06 -07:00
Jorge Rodriguez 497eab8339 Normalize downsample coefficients. 2014-09-09 15:22:29 -07:00
Jorge Rodriguez 43fbc1d5e3 Rearrange the algebra on two of the filters to avoid repeating decimals which cause precision loss. Use int32 to test filters because it's more accurate. 2014-09-09 14:10:14 -07:00
Jorge Rodriguez ca241daefa Use rounding to try to preserve the original value. Fix test case. 2014-09-09 12:16:23 -07:00
Jorge Rodriguez 145690788c Use input_h + pixel_margin * 2 to prevent progress report from ever going above 1. Always report a 0 before and a 1 at the end of each resize. 2014-09-09 10:58:01 -07:00