Commits

Chris Reuter committed 3884557 Merge

Merged in suetanvil/gd-libgd/scale-palette-image-bug (pull request #16)

Fix for #97

Comments (0)

Files changed (4)

 /tests/gdimagerotate/bug00067
 /tests/gdimageline/gdImageAALine_thickness
 /tests/gdimageline/gdimageline_bug5
+/tests/gdinterpolatedscale/gdTrivialResize
+/tests/gdinterpolatedscale/gdModesAndPalettes
+

src/gd_interpolation.c

         return gdImageClone(src);
     }/* if */
 
+	/* Convert to truecolor if it isn't; this code requires it. */
+	if (!src->trueColor) {
+		gdImagePaletteToTrueColor(src);
+	}/* if */
+
     /* Scale horizontally unless sizes are the same. */
     if (src_width == new_width) {
         tmp_im = src;

tests/Makefile.am

 	gif/bug00181 \
 	gif/bug00227 \
 	bmp/bmp_null \
-	gdinterpolatedscale/gdTrivialResize
+	gdinterpolatedscale/gdTrivialResize \
+	gdinterpolatedscale/gdModesAndPalettes
 
 EXTRA_PROGRAMS = \
 	gdimagestringft/gdimagestringft_bbox \

tests/gdinterpolatedscale/gdModesAndPalettes.c

+/* Exercise all scaling with all interpolation modes and ensure that
+ * at least, something comes back. */
+
+#include <stdio.h>
+
+#include "gd.h"
+#include "gdtest.h"
+
+#define X 100
+#define Y 100
+
+#define NX 20
+#define NY 20
+
+int main() {
+    int method, i;
+
+    for(method = GD_BELL; method <= GD_TRIANGLE; method++) {   /* GD_WEIGHTED4 is unsupported. */
+        gdImagePtr im[2];
+
+        // printf("Method = %d\n", method);
+        im[0] = gdImageCreateTrueColor(X, Y);
+        im[1] = gdImageCreatePalette(X, Y);
+
+        for (i = 0; i < 2; i++) {
+            gdImagePtr result;
+
+            // printf("    %s\n", i == 0 ? "truecolor" : "palette");
+
+            gdImageFilledRectangle(im[i], 0, 0, X-1, Y-1,
+                                   gdImageColorExactAlpha(im[i], 255, 255, 255, 0));
+
+            gdImageSetInterpolationMethod(im[i], method);
+            gdTestAssert(im[i]->interpolation_id == method); /* No getter yet. */
+
+            result = gdImageScale(im[i], NX, NY);
+            gdTestAssert(result != NULL);
+            gdTestAssert(result != im[i]);
+            gdTestAssert(result->sx == NX && result->sy == NY);
+
+            gdImageDestroy(result);
+            gdImageDestroy(im[i]);
+        }/* for */
+    }/* for*/
+
+
+    return gdNumFailures();
+}/* main*/
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.