Commit Graph

264 Commits (40f43afe5609389fe581ff020ad733a070bf5564)

Author SHA1 Message Date
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 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 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 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 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 c9d67446d2 Reverse allocation routines parameter order so that the context is at the back. 2014-09-09 22:57:15 -07:00
Jorge Rodriguez 41e6aad693 Avoid repeated adds and ensure correct round-trip result. 2014-09-09 21:57:46 -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 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 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 118f28557e Tests to ensure images of a solid color stay the same solid color after resampling. 2014-09-07 16:47:02 -07:00
Jorge Rodriguez e6c47ec657 Fix kernel lookup for downsampling. 2014-09-07 12:57:53 -07:00
Jorge Rodriguez 8cc6a3abfc If there's no context we're using the simple API functions - fall back to malloc and free. 2014-09-07 10:02:51 -07:00
Sean Barrett 36db03f390 tighten bounds on filter normalization test 2014-09-07 05:31:40 -07:00
Sean Barrett 7f8ac35e42 check whether filter kernels are normalized 2014-09-07 05:29:43 -07:00
Sean Barrett 7da729bfce restore correct definition of box 2014-09-07 04:07:07 -07:00
Sean Barrett 08ca345839 Merge branch 'resample2' into resample 2014-09-07 03:36:16 -07:00
Sean Barrett cd1fbacbb6 rename NEAREST to BOX
write test for BOX
2014-09-07 03:19:18 -07:00
Jorge Rodriguez 586e84087c Correctly specify alpha channels. 2014-09-06 21:50:28 -07:00
Jorge Rodriguez 38ce5494bc Clarify some comments. Make stbir__resize_arbitrary an internal function. Update test cases to use actual API functions. 2014-09-06 20:17:19 -07:00
Sean Barrett 41555b5d53 update test cases to work on things other than barbara.png 2014-09-06 14:58:32 -07:00
Jorge Rodriguez fb059fcece Progress report. 2014-09-06 10:57:21 -07:00
Jorge Rodriguez 75bdd2da83 Fix malloc context and whitespace. 2014-09-06 08:48:46 -07:00
Sean Barrett aee30095c7 refactor internal interfaces to avoid passing things multiple times;
finish prepping 'stbir__info' even before calculate_memory;
get rid of 'noinfo' functions since now calculate_memory doesn't need 'em;
add new binary-searched sRGB function (untested)
2014-09-01 16:52:04 -07:00
Sean Barrett 732fec68ee tweak new API, get it partly working 2014-08-31 08:55:41 -07:00
Sean Barrett 664d8961f5 new API partially in-use 2014-08-31 08:34:05 -07:00
Sean Barrett 2549d8156e in-progress refactoring 2014-08-31 07:23:34 -07:00
Sean Barrett 5dfa79fb31 stride doesn't have to be multiples of pixels 2014-08-18 10:18:59 -07:00
Sean Barrett 6ef563d089 rename to stb_image_resize.h 2014-08-18 09:12:59 -07:00
Sean Barrett eb0781fda0 add comments describing the purpose of the s,t-rectangle tests 2014-08-18 09:01:33 -07:00
Sean Barrett 9ba3dc1fc5 make resample tests work in VC6 2014-08-18 08:56:44 -07:00
Sean Barrett 14e8b66119 fix broken map generation 2014-08-17 21:08:43 -07:00
Jorge Rodriguez 1353909477 Allow user to force the alpha channel to be handled as a linear value even if the color channels are sRGB. 2014-08-12 13:37:06 -07:00
Jorge Rodriguez bbc340d481 Support different edge behavior on vertical and horizontal axis. 2014-08-12 12:22:38 -07:00
Jorge Rodriguez 6ae729d61a Four new tests of subpixel stuff. 2014-08-12 12:15:12 -07:00
Jorge Rodriguez 45fa6ec900 Update test cases for premul channel -1 meaning don't do any premul handling, fix another no-more-advanced. 2014-08-11 12:38:27 -07:00
Jorge Rodriguez e75ed1d381 Update test cases for no more advanced API. 2014-08-11 12:21:55 -07:00
Sean Barrett a0537bfd04 Allow compiling as C pre-C99 (don't rely on declare-anywhere) 2014-08-11 01:56:47 -07:00
Jorge Rodriguez d75488b0e8 Do the multiply inline, it should be a tad faster and not corrupt our data. 2014-07-31 19:00:48 -07:00
Jorge Rodriguez 13acfca829 I had the whole premultiply thing backwards. 2014-07-31 18:46:00 -07:00
Jorge Rodriguez 21c7c8f5d9 Another stab at the api, offering classes of functions for different common tasks. 2014-07-31 18:04:57 -07:00
Jorge Rodriguez 8063ea0952 Specify a channel as having premultiplied alpha and use it to un-premultiply all other channels before resampling. 2014-07-31 17:20:00 -07:00
Jorge Rodriguez daf325dc03 Sub pixel source area test cases. No problems. 2014-07-31 16:31:45 -07:00
Jorge Rodriguez aae1c7ca41 ZOOM AND ENHANCE! 2014-07-31 15:16:36 -07:00
Jorge Rodriguez 35cb95b803 Allow for specifying a sub-region of the source image to use. Downsampling only, currently. 2014-07-31 00:39:33 -07:00
Jorge Rodriguez fdc979e48b Some minor ports for Linux. No idea how it worked at all in Windows with STB_RESIZE_IMPLEMENTATION instead of STB_RESAMPLE_IMPLEMENTATION. 2014-07-30 17:30:25 -07:00
Jorge Rodriguez c5de2f3298 Test channels. 2014-07-30 09:42:12 -07:00
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. 2014-07-30 09:27:42 -07:00
Jorge Rodriguez c2449acc3e Tests for edge behavior 2014-07-30 09:14:38 -07:00
Jorge Rodriguez 59cb71ea18 Fix float conversion. 2014-07-30 08:47:55 -07:00
Jorge Rodriguez 6625259959 Try to keep integer precision by briefly casting to double while decoding and encoding. 2014-07-30 01:18:23 -07:00
Jorge Rodriguez 11897fbf96 More fixing shorts. 2014-07-30 00:34:25 -07:00
Jorge Rodriguez 1fcbe0daaf Fix shorts. Add test cases for shorts. 2014-07-30 00:16:13 -07:00
Jorge Rodriguez 7ead9a748d Fix. Ring buffers are a height value. 2014-07-29 23:09:41 -07:00
Jorge Rodriguez 043fa28c11 Same deal with height. 2014-07-29 23:02:56 -07:00
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. 2014-07-29 22:50:06 -07:00
Jorge Rodriguez 68f93b72d5 Update documentation and add helper functions. 2014-07-29 20:18:28 -07:00
Jorge Rodriguez 5b40906271 My perf testing code. 2014-07-29 17:44:45 -07:00
Jorge Rodriguez 6c8cac0a66 Support for sRGB color space. 2014-07-26 23:44:45 -07:00
Jorge Rodriguez 01fb58d6b4 Add a bicubic filter. 2014-07-26 13:07:04 -07:00
Jorge Rodriguez 7abd4ccf34 Support for filters with larger support. Initial support for edge behavior. 2014-07-26 11:51:02 -07:00
Jorge Rodriguez 297266b27b Starting to implement downsampling. 2014-07-24 19:10:45 -07:00
Jorge Rodriguez 55c5f0b3a0 Beginning of a more sophisticated resample algorithm, starting with calculating filter contributions per scan line. 2014-07-23 22:17:56 -07:00
Jorge Rodriguez 0155bd3ab6 We are going to support SRGB. 2014-07-21 19:51:11 -07:00
Jorge Rodriguez ba861fa493 Allow specifying a stride. 2014-07-21 18:01:05 -07:00
Jorge Rodriguez 06b7b00696 It does nothing now but I want to support edge behavior in the future. 2014-07-21 16:14:32 -07:00
Jorge Rodriguez d54e74092e stb_resample initial implementation 2014-07-21 00:16:03 -07:00
Sean Barrett e454b82a78 remove tabs 2014-07-07 07:46:39 -07:00
Sean Barrett 816f31e9bc fixes and tests 2014-07-07 04:54:52 -07:00
Sean Barrett 4b590c0a62 first pass at stb-izing complete, now need to debug 2014-07-04 09:34:57 -07:00
Sean Barrett 88c99e47fb initial commit 2014-07-04 08:06:36 -07:00
Sean Barrett b000f920ac update stb_image version number 2014-06-22 11:21:11 -07:00
Sean Barrett 2452f0002f Merge branch 'textedit' 2014-06-19 20:21:32 -07:00
Sean Barrett d4d046be09 update version number 2014-06-19 20:21:08 -07:00
Sean Barrett 44c37c51c0 add testing project for stb_c_lexer.h 2014-06-19 19:56:11 -07:00
Sean Barrett f5dfba0b8b Update stb_image test code to test loading with all channel counts (including 0),
to avoid missing bugs like the recent TGA bug in the future. Doesn't check the
*results*, but tests that it doesn't crash or fail.
2014-06-15 13:17:04 -07:00
Sean Barrett 2684499fce tweak textedit sample fix 2014-06-06 23:59:38 -07:00
Scott Graham 885b1b7ded fix textedit_sample a bit 2014-06-06 23:08:51 -07:00
Sean Barrett c28ffbbf0d Change byte casts in stb_image.h that intentionally truncate to do so explicitly for MSVC runtime check compatibility 2014-06-06 10:15:30 -07:00
Sean Barrett f54bc09e4f make header files visible in file list 2014-06-04 17:57:42 -07:00
Sean Barrett b96edc012c Merge branch 'headerify'
Conflicts:
	tests/stretch_test.dsp
2014-06-03 08:51:40 -07:00
Sean Barrett 334cec8d8c Fix handling of iphone-procesed image to not accidentally appear corrupt (instead they just load wrong).
Add a proper testing path to image test
2014-06-03 08:45:34 -07:00
Sean Barrett a57dfc50fc fix bugs in new stretchy buffer code, add stretchy buffer tests 2014-06-01 08:01:01 -07:00
Sean Barrett 037491ca45 Merge branch 'working' 2014-05-31 23:43:47 -07:00
Sean Barrett 4e8cade2cf move image_test into main tests directory 2014-05-31 13:46:13 -07:00
Sean Barrett 2bf4326350 cleanup runtime output/error detection of stb.h unit tests 2014-05-31 13:39:00 -07:00
Sean Barrett 666596ed89 untested rewrite of stretchy_buffer relying on implicit cast from void* 2014-05-31 13:00:39 -07:00
Sean Barrett a7691e1510 check-in missing project file updates for stb_image.h usage 2014-05-31 06:31:27 -07:00
Sean Barrett 2514fbc2c7 more renaming 2014-05-31 05:38:26 -07:00
Sean Barrett 927b455d85 start converting stb_image.c to a .h file 2014-05-31 04:49:43 -07:00
Sean Barrett 7ed3bb26bb Merge branch 'working' 2014-05-30 14:25:49 -07:00
Sean Barrett fcfcb9bb3f generate README.md in part by parsing libraries so that version numbers are in sync 2014-05-30 14:15:51 -07:00
Sean Barrett 9e566c8b31 trailing newline 2014-05-28 11:05:17 -07:00
Sean Barrett 42bd3e253b rename test files to be more meaningful 2014-05-27 23:13:34 -07:00
Sean Barrett e63b3e0702 fix some stuff that used RAD types and so were totally broken, add a compile test/sample 2014-05-27 22:56:57 -07:00
Sean Barrett 1d2770394a rest of image-test case 2014-05-27 21:56:42 -07:00
Sean Barrett fc0bfd1b71 fix some typos, add image test program 2014-05-27 21:38:43 -07:00
Sean Barrett a8fbfd2cb3 stb_divide.h 2014-05-25 21:54:59 -07:00
Sean Barrett eb62c741ea fixed warnings for stb_truetype (fixes all outstanding bug reports) 2014-05-25 20:56:24 -07:00
Sean Barrett 31897dfd7f compile tests for everything except textedit, both C and C++ 2014-05-25 20:10:17 -07:00
Sean Barrett dc6adca82f vc6 project files for testing stb.h 2014-05-25 13:35:50 -07:00
Sean Barrett e2caccb811 initial checkin 2014-05-25 10:18:03 -07:00