2
0
Эх сурвалжийг харах

rename cubic to cubicbspline;
tweak filter type documentation

Sean Barrett 11 жил өмнө
parent
commit
0fa5b5c66f

+ 6 - 6
stb_image_resize.h

@@ -246,12 +246,12 @@ STBIRDEF int stbir_resize_uint8_srgb_edgemode(const unsigned char *input_pixels
 
 
 typedef enum
 typedef enum
 {
 {
-	STBIR_FILTER_DEFAULT     = 0,  // use same filter type that easy-to-use API chooses
-	STBIR_FILTER_BOX         = 1,  // Actually a trapezoid. See https://developer.nvidia.com/content/non-power-two-mipmapping
-	STBIR_FILTER_TRIANGLE    = 2,  // On upsampling, produces same results as bilinear texture filtering
-	STBIR_FILTER_CUBIC       = 3,  // A cubic b-spline: why this one ????????????
-	STBIR_FILTER_CATMULLROM  = 4,  // interpolating cubic spline
-	STBIR_FILTER_MITCHELL    = 5,  // Mitchell-Netrevalli filter with B=1/3, C=1/3
+	STBIR_FILTER_DEFAULT      = 0,  // use same filter type that easy-to-use API chooses
+	STBIR_FILTER_BOX          = 1,  // A trapezoid w/1-pixel wide ramps, same result as box for integer scale ratios
+	STBIR_FILTER_TRIANGLE     = 2,  // On upsampling, produces same results as bilinear texture filtering
+	STBIR_FILTER_CUBICBSPLINE = 3,  // The cubic b-spline (aka Mitchell-Netrevalli with B=1,C=0), gaussian-esque
+	STBIR_FILTER_CATMULLROM   = 4,  // An interpolating cubic spline
+	STBIR_FILTER_MITCHELL     = 5,  // Mitchell-Netrevalli filter with B=1/3, C=1/3
 } stbir_filter;
 } stbir_filter;
 
 
 typedef enum
 typedef enum

+ 15 - 15
tests/resample_test.cpp

@@ -673,25 +673,25 @@ void test_filters(void)
 
 
 	verify_filter_normalized(STBIR_FILTER_BOX, 8, value);
 	verify_filter_normalized(STBIR_FILTER_BOX, 8, value);
 	verify_filter_normalized(STBIR_FILTER_TRIANGLE, 8, value);
 	verify_filter_normalized(STBIR_FILTER_TRIANGLE, 8, value);
-	verify_filter_normalized(STBIR_FILTER_CUBIC, 8, value);
+	verify_filter_normalized(STBIR_FILTER_CUBICBSPLINE, 8, value);
 	verify_filter_normalized(STBIR_FILTER_CATMULLROM, 8, value);
 	verify_filter_normalized(STBIR_FILTER_CATMULLROM, 8, value);
 	verify_filter_normalized(STBIR_FILTER_MITCHELL, 8, value);
 	verify_filter_normalized(STBIR_FILTER_MITCHELL, 8, value);
 
 
 	verify_filter_normalized(STBIR_FILTER_BOX, 4, value);
 	verify_filter_normalized(STBIR_FILTER_BOX, 4, value);
 	verify_filter_normalized(STBIR_FILTER_TRIANGLE, 4, value);
 	verify_filter_normalized(STBIR_FILTER_TRIANGLE, 4, value);
-	verify_filter_normalized(STBIR_FILTER_CUBIC, 4, value);
+	verify_filter_normalized(STBIR_FILTER_CUBICBSPLINE, 4, value);
 	verify_filter_normalized(STBIR_FILTER_CATMULLROM, 4, value);
 	verify_filter_normalized(STBIR_FILTER_CATMULLROM, 4, value);
 	verify_filter_normalized(STBIR_FILTER_MITCHELL, 4, value);
 	verify_filter_normalized(STBIR_FILTER_MITCHELL, 4, value);
 
 
 	verify_filter_normalized(STBIR_FILTER_BOX, 2, value);
 	verify_filter_normalized(STBIR_FILTER_BOX, 2, value);
 	verify_filter_normalized(STBIR_FILTER_TRIANGLE, 2, value);
 	verify_filter_normalized(STBIR_FILTER_TRIANGLE, 2, value);
-	verify_filter_normalized(STBIR_FILTER_CUBIC, 2, value);
+	verify_filter_normalized(STBIR_FILTER_CUBICBSPLINE, 2, value);
 	verify_filter_normalized(STBIR_FILTER_CATMULLROM, 2, value);
 	verify_filter_normalized(STBIR_FILTER_CATMULLROM, 2, value);
 	verify_filter_normalized(STBIR_FILTER_MITCHELL, 2, value);
 	verify_filter_normalized(STBIR_FILTER_MITCHELL, 2, value);
 
 
 	verify_filter_normalized(STBIR_FILTER_BOX, 1, value);
 	verify_filter_normalized(STBIR_FILTER_BOX, 1, value);
 	verify_filter_normalized(STBIR_FILTER_TRIANGLE, 1, value);
 	verify_filter_normalized(STBIR_FILTER_TRIANGLE, 1, value);
-	verify_filter_normalized(STBIR_FILTER_CUBIC, 1, value);
+	verify_filter_normalized(STBIR_FILTER_CUBICBSPLINE, 1, value);
 	verify_filter_normalized(STBIR_FILTER_CATMULLROM, 1, value);
 	verify_filter_normalized(STBIR_FILTER_CATMULLROM, 1, value);
 	verify_filter_normalized(STBIR_FILTER_MITCHELL, 1, value);
 	verify_filter_normalized(STBIR_FILTER_MITCHELL, 1, value);
 
 
@@ -915,17 +915,17 @@ void test_suite(int argc, char **argv)
 	test_channels(barbara, 2, 2, 4);
 	test_channels(barbara, 2, 2, 4);
 
 
 	// filter tests
 	// filter tests
-	resize_image(barbara, 2, 2, STBIR_FILTER_BOX       , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-upsample-nearest.png");
-	resize_image(barbara, 2, 2, STBIR_FILTER_TRIANGLE  , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-upsample-bilinear.png");
-	resize_image(barbara, 2, 2, STBIR_FILTER_CUBIC     , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-upsample-bicubic.png");
-	resize_image(barbara, 2, 2, STBIR_FILTER_CATMULLROM, STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-upsample-catmullrom.png");
-	resize_image(barbara, 2, 2, STBIR_FILTER_MITCHELL  , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-upsample-mitchell.png");
-
-	resize_image(barbara, 0.5f, 0.5f, STBIR_FILTER_BOX       , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-downsample-nearest.png");
-	resize_image(barbara, 0.5f, 0.5f, STBIR_FILTER_TRIANGLE  , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-downsample-bilinear.png");
-	resize_image(barbara, 0.5f, 0.5f, STBIR_FILTER_CUBIC     , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-downsample-bicubic.png");
-	resize_image(barbara, 0.5f, 0.5f, STBIR_FILTER_CATMULLROM, STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-downsample-catmullrom.png");
-	resize_image(barbara, 0.5f, 0.5f, STBIR_FILTER_MITCHELL  , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-downsample-mitchell.png");
+	resize_image(barbara, 2, 2, STBIR_FILTER_BOX         , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-upsample-nearest.png");
+	resize_image(barbara, 2, 2, STBIR_FILTER_TRIANGLE    , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-upsample-bilinear.png");
+	resize_image(barbara, 2, 2, STBIR_FILTER_CUBICBSPLINE, STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-upsample-bicubic.png");
+	resize_image(barbara, 2, 2, STBIR_FILTER_CATMULLROM  , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-upsample-catmullrom.png");
+	resize_image(barbara, 2, 2, STBIR_FILTER_MITCHELL    , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-upsample-mitchell.png");
+
+	resize_image(barbara, 0.5f, 0.5f, STBIR_FILTER_BOX         , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-downsample-nearest.png");
+	resize_image(barbara, 0.5f, 0.5f, STBIR_FILTER_TRIANGLE    , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-downsample-bilinear.png");
+	resize_image(barbara, 0.5f, 0.5f, STBIR_FILTER_CUBICBSPLINE, STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-downsample-bicubic.png");
+	resize_image(barbara, 0.5f, 0.5f, STBIR_FILTER_CATMULLROM  , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-downsample-catmullrom.png");
+	resize_image(barbara, 0.5f, 0.5f, STBIR_FILTER_MITCHELL    , STBIR_EDGE_CLAMP, STBIR_COLORSPACE_SRGB, "test-output/barbara-downsample-mitchell.png");
 
 
 	for (i = 10; i < 100; i++)
 	for (i = 10; i < 100; i++)
 	{
 	{