public void TestGdCopyBlurredCpp() { do_testCpp(); do_crosstestCpp(); Assert.AreEqual(0, GlobalMembersGdtest.gdNumFailures()); }
//C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdXXX_VERSION_STR(mjr, mnr, rev, ext) mjr "." mnr "." rev ext #define GDXXX_VERSION_STR //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdXXX_STR(s) gd.gdXXX_SSTR(s) #define GDXXX_STR //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdXXX_SSTR(s) #s #define GDXXX_SSTR //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define GD_VERSION_STRING "GD_MAJOR_VERSION" "." "GD_MINOR_VERSION" "." "GD_RELEASE_VERSION" GD_EXTRA_VERSION #define GD_VERSION_STRING #if _WIN32 || CYGWIN || _WIN32_WCE #if BGDWIN32 #if NONDLL #define BGD_EXPORT_DATA_PROT #else #if __GNUC__ #define BGD_EXPORT_DATA_PROT #else //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_EXPORT_DATA_PROT __declspec(dllexport) #define BGD_EXPORT_DATA_PROT #endif #endif #else #if __GNUC__ #define BGD_EXPORT_DATA_PROT #else //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_EXPORT_DATA_PROT __declspec(dllimport) #define BGD_EXPORT_DATA_PROT #endif #endif //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_STDCALL __stdcall #define BGD_STDCALL #define BGD_EXPORT_DATA_IMPL #else #if HAVE_VISIBILITY #define BGD_EXPORT_DATA_PROT #define BGD_EXPORT_DATA_IMPL #else #define BGD_EXPORT_DATA_PROT #define BGD_EXPORT_DATA_IMPL #endif #define BGD_STDCALL #endif #if BGD_EXPORT_DATA_PROT_ConditionalDefinition1 #if BGD_STDCALL_ConditionalDefinition1 //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) rt __stdcall #define BGD_DECLARE #elif BGD_STDCALL_ConditionalDefinition2 //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) rt #define BGD_DECLARE #else //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) rt BGD_STDCALLTangibleTempImmunity #define BGD_DECLARE #endif #elif BGD_EXPORT_DATA_PROT_ConditionalDefinition2 #if BGD_STDCALL_ConditionalDefinition1 //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) rt __stdcall #define BGD_DECLARE #elif BGD_STDCALL_ConditionalDefinition2 //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) rt #define BGD_DECLARE #else //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) rt BGD_STDCALLTangibleTempImmunity #define BGD_DECLARE #endif #elif BGD_EXPORT_DATA_PROT_ConditionalDefinition3 #if BGD_STDCALL_ConditionalDefinition1 //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) __declspec(dllexport) rt __stdcall #define BGD_DECLARE #elif BGD_STDCALL_ConditionalDefinition2 //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) __declspec(dllexport) rt #define BGD_DECLARE #else //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) __declspec(dllexport) rt BGD_STDCALLTangibleTempImmunity #define BGD_DECLARE #endif #elif BGD_EXPORT_DATA_PROT_ConditionalDefinition4 #if BGD_STDCALL_ConditionalDefinition1 //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) __declspec(dllimport) rt __stdcall #define BGD_DECLARE #elif BGD_STDCALL_ConditionalDefinition2 //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) __declspec(dllimport) rt #define BGD_DECLARE #else //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) __declspec(dllimport) rt BGD_STDCALLTangibleTempImmunity #define BGD_DECLARE #endif #else #if BGD_STDCALL_ConditionalDefinition1 //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) BGD_EXPORT_DATA_PROTTangibleTempImmunity rt __stdcall #define BGD_DECLARE #elif BGD_STDCALL_ConditionalDefinition2 //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define BGD_DECLARE (rt) BGD_EXPORT_DATA_PROTTangibleTempImmunity rt #define BGD_DECLARE #else //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define Bgd.gd_DECLARE(rt) BGD_EXPORT_DATA_PROTTangibleTempImmunity rt BGD_STDCALLTangibleTempImmunity #define BGD_DECLARE #endif #endif #if __cplusplus #endif #if __cplusplus #endif #define GD_IO_H #if VMS #endif #if __cplusplus #endif #define gdMaxColors #define gdAlphaMax #define gdAlphaOpaque #define gdAlphaTransparent #define gdRedMax #define gdGreenMax #define gdBlueMax //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdTrueColorGetAlpha(c) (((c) & 0x7F000000) >> 24) #define gdTrueColorGetAlpha //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdTrueColorGetRed(c) (((c) & 0xFF0000) >> 16) #define gdTrueColorGetRed //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdTrueColorGetGreen(c) (((c) & 0x00FF00) >> 8) #define gdTrueColorGetGreen //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdTrueColorGetBlue(c) ((c) & 0x0000FF) #define gdTrueColorGetBlue #define gdEffectReplace #define gdEffectAlphaBlend #define gdEffectNormal #define gdEffectOverlay #define GD_TRUE #define GD_FALSE #define GD_EPSILON #define M_PI #define gdDashSize #define gdStyled #define gdBrushed #define gdStyledBrushed #define gdTiled #define gdTransparent #define gdAntiAliased //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gdImageCreatePalette gdImageCreate #define gdImageCreatePalette #define gdFTEX_LINESPACE #define gdFTEX_CHARMAP #define gdFTEX_RESOLUTION #define gdFTEX_DISABLE_KERNING #define gdFTEX_XSHOW #define gdFTEX_FONTPATHNAME #define gdFTEX_FONTCONFIG #define gdFTEX_RETURNFONTPATHNAME #define gdFTEX_Unicode #define gdFTEX_Shift_JIS #define gdFTEX_Big5 #define gdFTEX_Adobe_Custom //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdTrueColor(r, g, b) (((r) << 16) + ((g) << 8) + (b)) #define gdTrueColor //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdTrueColorAlpha(r, g, b, a) (((a) << 24) + ((r) << 16) + ((g) << 8) + (b)) #define gdTrueColorAlpha #define gdArc //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gdPie gdArc #define gdPie #define gdChord #define gdNoFill #define gdEdged //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageTrueColor(im) ((im)->trueColor) #define gdImageTrueColor //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageSX(im) ((im)->sx) #define gdImageSX //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageSY(im) ((im)->sy) #define gdImageSY //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageColorsTotal(im) ((im)->colorsTotal) #define gdImageColorsTotal //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageRed(im, c) ((im)->trueColor ? (((c) & 0xFF0000) >> 16) : (im)->red[(c)]) #define gdImageRed //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageGreen(im, c) ((im)->trueColor ? (((c) & 0x00FF00) >> 8) : (im)->green[(c)]) #define gdImageGreen //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageBlue(im, c) ((im)->trueColor ? ((c) & 0x0000FF) : (im)->blue[(c)]) #define gdImageBlue //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageAlpha(im, c) ((im)->trueColor ? (((c) & 0x7F000000) >> 24) : (im)->alpha[(c)]) #define gdImageAlpha //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageGetTransparent(im) ((im)->transparent) #define gdImageGetTransparent //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageGetInterlaced(im) ((im)->interlace) #define gdImageGetInterlaced //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImagePalettePixel(im, x, y) (im)->pixels[(y)][(x)] #define gdImagePalettePixel //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageTrueColorPixel(im, x, y) (im)->tpixels[(y)][(x)] #define gdImageTrueColorPixel //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageResolutionX(im) (im)->res_x #define gdImageResolutionX //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdImageResolutionY(im) (im)->res_y #define gdImageResolutionY #define GD2_CHUNKSIZE #define GD2_CHUNKSIZE_MIN #define GD2_CHUNKSIZE_MAX #define GD2_VERS #define GD2_ID #define GD2_FMT_RAW #define GD2_FMT_COMPRESSED #define GD_FLIP_HORINZONTAL #define GD_FLIP_VERTICAL #define GD_FLIP_BOTH #define GD_CMP_IMAGE #define GD_CMP_NUM_COLORS #define GD_CMP_COLOR #define GD_CMP_SIZE_X #define GD_CMP_SIZE_Y #define GD_CMP_TRANSPARENT #define GD_CMP_BACKGROUND #define GD_CMP_INTERLACE #define GD_CMP_TRUECOLOR #define GD_RESOLUTION #if __cplusplus #endif #if __cplusplus #endif #define GDFX_H #if __cplusplus #endif #if __cplusplus #endif #define GDTEST_TOP_DIR #define GDTEST_STRING_MAX //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdAssertImageEqualsToFile(ex,ac) gd.gdTestImageCompareToFile(__FILE__,__LINE__,NULL,(ex),(ac)) #define gdAssertImageEqualsToFile //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdAssertImageFileEqualsMsg(ex,ac) gd.gdTestImageCompareFiles(__FILE__,__LINE__,(ms),(ex),(ac)) #define gdAssertImageFileEqualsMsg //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdAssertImageEquals(tc,ex,ac) CuAssertImageEquals_LineMsg((tc),__FILE__,__LINE__,NULL,(ex),(ac)) #define gdAssertImageEquals //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdAssertImageEqualsMsg(tc,ex,ac) CuAssertImageEquals_LineMsg((tc),__FILE__,__LINE__,(ms),(ex),(ac)) #define gdAssertImageEqualsMsg //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdTestAssert(cond) _gd.gdTestAssert(__FILE__, __LINE__, "assert failed in <%s:%i>\n", (cond)) #define gdTestAssert //C++ TO C# CONVERTER NOTE: The following #define macro was replaced in-line: //ORIGINAL LINE: #define gd.gdTestErrorMsg(...) _gd.gdTestErrorMsg(__FILE__, __LINE__, __VA_ARGS__) #define gdTestErrorMsg static int Main() { gdImageStruct im; gdImageStruct ex; IntPtr fp; gdScatter s = new gdScatter(); GlobalMembersGdtest.CuTestImageResult r = new GlobalMembersGdtest.CuTestImageResult(); fp = C.fopen(GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR + "/gdimagescatterex/bug00208.png", "rb"); if (fp == IntPtr.Zero) { fprintf(stderr, "could not open file\n"); return(1); } im = gd.gdImageCreateFromPng(new _iobuf(fp)); C.fclose(fp); if (im == null) { fprintf(stderr, "could not create image\n"); return(1); } s.sub = 1; s.plus = 3; s.seed = 0; s.num_colors = 0; if (gd.gdImageScatterEx(im, s) == 0) { gd.gdImageDestroy(im); fprintf(stderr, "could not scatter\n"); return(1); } fp = C.fopen(GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR + "/gdimagescatterex/bug00208_1.png", "rb"); if (fp == IntPtr.Zero) { fprintf(stderr, "could not open file\n"); gd.gdImageDestroy(im); return(1); } ex = gd.gdImageCreateFromPng(new _iobuf(fp)); C.fclose(fp); if (ex == null) { fprintf(stderr, "could not create image\n"); gd.gdImageDestroy(im); return(1); } r.pixels_changed = 0; GlobalMembersGdtest.gdTestImageDiff(im, ex, null, r); gd.gdImageDestroy(ex); gd.gdImageDestroy(im); if (r.pixels_changed > 10000) { fprintf(stderr, "too much diff: %d\n", r.pixels_changed); return(1); } return(0); }
public void TestBug00020() { int error = 0; string path = string.Format("{0}/gdimagecopyrotated/bug00020_exp.png", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR); gdImageStruct im = gd.gdImageCreateTrueColor(WIDTH, WIDTH); gd.gdImageFilledRectangle(im, 0, 0, WIDTH, WIDTH, 0xFF0000); gd.gdImageColorTransparent(im, 0xFF0000); gd.gdImageFilledEllipse(im, WIDTH / 2, WIDTH / 2, WIDTH - 20, WIDTH - 10, 0x50FFFFFF); gdImageStruct im2 = gd.gdImageCreateTrueColor(WIDTH, WIDTH); gd.gdImageCopyRotated(im2, im, WIDTH / 2, WIDTH / 2, 0, 0, WIDTH, WIDTH, 60); if (GlobalMembersGdtest.gdTestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, (path), (im2)) == 0) { error = 1; } gd.gdImageDestroy(im2); gd.gdImageDestroy(im); if (error != 0) { Assert.Fail("Error: {0}", error); } }
public void TestBug00020Cpp() { int error = 0; string path = string.Format("{0}/gdimagecopyrotated/bug00020_exp.png", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR); using (var image = new Image(WIDTH, WIDTH, true)) { image.FilledRectangle(0, 0, WIDTH, WIDTH, 0xFF0000); image.ColorTransparent(0xFF0000); image.FilledEllipse(WIDTH / 2, WIDTH / 2, WIDTH - 20, WIDTH - 10, 0x50FFFFFF); using (var image2 = new Image(WIDTH, WIDTH, true)) { image2.CopyRotated(image, WIDTH / 2, WIDTH / 2, 0, 0, WIDTH, WIDTH, 60); if (GlobalMembersGdtest.TestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, path, image2) == 0) { error = 1; } } } if (error != 0) { Assert.Fail("Error: {0}", error); } }
/* Return the largest difference between two corresponding pixels and * channels. */ public static uint gdMaxPixelDiff(gdImageStruct a, gdImageStruct b) { int diff = 0; int x; int y; if (a == null || b == null || a.sx != b.sx || a.sy != b.sy) { return(uint.MaxValue); } for (x = 0; x < a.sx; x++) { for (y = 0; y < a.sy; y++) { int c1; int c2; c1 = gd.gdImageGetTrueColorPixel(a, x, y); c2 = gd.gdImageGetTrueColorPixel(b, x, y); if (c1 == c2) { continue; } diff = GlobalMembersGdtest.max(diff, Math.Abs((((c1) & 0x7F000000) >> 24) - (((c2) & 0x7F000000) >> 24))); diff = GlobalMembersGdtest.max(diff, Math.Abs((((c1) & 0xFF0000) >> 16) - (((c2) & 0xFF0000) >> 16))); diff = GlobalMembersGdtest.max(diff, Math.Abs((((c1) & 0x00FF00) >> 8) - (((c2) & 0x00FF00) >> 8))); diff = GlobalMembersGdtest.max(diff, Math.Abs(((c1) & 0x0000FF) - ((c2) & 0x0000FF))); } // for } // for return((uint)diff); }
public void TestBug00032Cpp() { //gd.gdSetErrorMethod(GlobalMembersGdtest.gdSilence); using (var tile = new Image(10, 10, true)) { tile.Fill(0, 0, 0xFFFFFF); tile.Line(0, 0, 9, 9, 0xff0000); tile.ColorTransparent(0xFFFFFF); using (var image = new Image(50, 50, true)) { image.FilledRectangle(0, 0, 25, 25, 0x00FF00); image.SetTile(tile); image.FilledRectangle(10, 10, 49, 49, GlobalMembersGdtest.DefineConstants.gdTiled); string path = Path.Combine(GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR, "gdtiled", exp_img); if (GlobalMembersGdtest.TestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, path, image) == 0) { Assert.Fail(); } } } }
public void TestGdTrivialResize() { do_test(300, 300, 600, 600); do_test(3200, 2133, 640, 427); Assert.AreEqual(0, GlobalMembersGdtest.gdNumFailures()); }
private static void do_testCpp(int x, int y, int nx, int ny) { using (Image image = mkwhiteCpp(x, y)) { using (Image imageref = mkwhiteCpp(x, y)) { using (var same = image.Scale(x, y)) { GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", (image.GetPtr().__Instance != same.GetPtr().__Instance) ? 1 : 0); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", (GlobalMembersGdtest.gdMaxPixelDiff(image, same) == 0) ? 1 : 0); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", (GlobalMembersGdtest.gdMaxPixelDiff(imageref, same) == 0) ? 1 : 0); /* Ensure that modifying im doesn't modify same (i.e. see if we * can catch them accidentally sharing the same pixel buffer.) */ mkblack(image); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", (GlobalMembersGdtest.gdMaxPixelDiff(imageref, same) == 0) ? 1 : 0); } } } /* Scale horizontally, vertically and both. */ scaletestCpp(x, y, nx, y); scaletestCpp(x, y, x, ny); scaletestCpp(x, y, nx, ny); }
} // scaletest private static void do_test(int x, int y, int nx, int ny) { gdImageStruct im = mkwhite(x, y); gdImageStruct imref = mkwhite(x, y); gdImageStruct same = gd.gdImageScale(im, (uint)x, (uint)y); /* Trivial resize should be a straight copy. */ GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", (im != same) ? 1 : 0); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", (GlobalMembersGdtest.gdMaxPixelDiff(im, same) == 0) ? 1 : 0); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", (GlobalMembersGdtest.gdMaxPixelDiff(imref, same) == 0) ? 1 : 0); /* Ensure that modifying im doesn't modify same (i.e. see if we * can catch them accidentally sharing the same pixel buffer.) */ mkblack(im); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", (GlobalMembersGdtest.gdMaxPixelDiff(imref, same) == 0) ? 1 : 0); gd.gdImageDestroy(same); gd.gdImageDestroy(im); /* Scale horizontally, vertically and both. */ scaletest(x, y, nx, y); scaletest(x, y, x, ny); scaletest(x, y, nx, ny); }
public void TestBug00077Cpp() { const string exp = "bug00077_exp.png"; int error = 0; using (var image = new Image(11, 11, true)) { image.FilledRectangle(0, 0, 10, 10, 0xFFFFFF); image.SetThickness(1); image.Line(0, 10, 0, 0, 0x0); image.Line(5, 10, 5, 0, 0x0); image.Line(10, 5, 0, 5, 0x0); image.Line(10, 10, 0, 10, 0x0); string path = string.Format("{0}/gdimageline/{1}", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR, exp); if (GlobalMembersGdtest.TestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, path, image) == 0) { error = 1; } } if (error != 0) { Assert.Fail("Error: {0}", error); } }
public void TestBug00077() { const string exp = "bug00077_exp.png"; int error = 0; gdImageStruct im = gd.gdImageCreateTrueColor(11, 11); gd.gdImageFilledRectangle(im, 0, 0, 10, 10, 0xFFFFFF); gd.gdImageSetThickness(im, 1); gd.gdImageLine(im, 0, 10, 0, 0, 0x0); gd.gdImageLine(im, 5, 10, 5, 0, 0x0); gd.gdImageLine(im, 10, 5, 0, 5, 0x0); gd.gdImageLine(im, 10, 10, 0, 10, 0x0); string path = string.Format("{0}/gdimageline/{1}", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR, exp); if (GlobalMembersGdtest.gdTestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, (path), (im)) == 0) { error = 1; } gd.gdImageDestroy(im); if (error != 0) { Assert.Fail("Error: {0}", error); } }
public void TestBug00088() { string[] files = { "bug00088_1.png", "bug00088_2.png" }; string[] files_exp = { "bug00088_1_exp.png", "bug00088_2_exp.png" }; int i; const int cnt = 2; int error = 0; for (i = 0; i < cnt; i++) { string path = string.Format("{0}/png/{1}", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR, files[i]); gdImageStruct im = gd.gdImageCreateFromPng(path); if (im == null) { error |= 1; continue; } path = string.Format("{0}/png/{1}", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR, files_exp[i]); if (GlobalMembersGdtest.gdTestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, path, im) == 0) { error |= 1; } gd.gdImageDestroy(im); } if (error != 0) { Assert.Fail("Error: {0}.", error); } }
public void TestBug00088Cpp() { string[] files = { "bug00088_1.png", "bug00088_2.png" }; string[] files_exp = { "bug00088_1_exp.png", "bug00088_2_exp.png" }; int i; const int cnt = 2; int error = 0; for (i = 0; i < cnt; i++) { string path = string.Format("{0}/png/{1}", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR, files[i]); using (var image = new Image()) { if (!image.CreateFromPng(path)) { error |= 1; continue; } path = string.Format("{0}/png/{1}", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR, files_exp[i]); if (GlobalMembersGdtest.TestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, path, image) == 0) { error |= 1; } } } if (error != 0) { Assert.Fail("Error: {0}.", error); } }
public void TestGdModesAndPalettes() { for (var method = gdInterpolationMethod.GD_BELL; method <= gdInterpolationMethod.GD_TRIANGLE; method++) // GD_WEIGHTED4 is unsupported. { var im = new gdImageStruct[2]; // printf("Method = %d\n", method); im[0] = gd.gdImageCreateTrueColor(X, Y); im[1] = gd.gdImageCreate(X, Y); for (int i = 0; i < 2; i++) { // printf(" %s\n", i == 0 ? "truecolor" : "palette"); gd.gdImageFilledRectangle(im[i], 0, 0, X - 1, Y - 1, gd.gdImageColorExactAlpha(im[i], 255, 255, 255, 0)); gd.gdImageSetInterpolationMethod(im[i], method); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", im[i].interpolation_id == method ? 1: 0); gdImageStruct result = gd.gdImageScale(im[i], NX, NY); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", result != null ? 1 : 0); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", result != im[i] ? 1 : 0); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", result != null && result.sx == NX && result.sy == NY ? 1 : 0); gd.gdImageDestroy(result); gd.gdImageDestroy(im[i]); } // for } // for Assert.AreEqual(0, GlobalMembersGdtest.gdNumFailures()); } // main
public void TestBug00002_1() { gdImageStruct im = gd.gdImageCreateTrueColor(100, 100); if (im == null) { GlobalMembersGdtest.gdTestErrorMsg(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "Cannot create image.\n"); Assert.Fail(); } gd.gdImageFill(im, 0, 0, 0xffffff); gd.gdImageFill(im, 0, 0, 0xffffff); gd.gdImagePng(im, TMP_FN); string path = string.Format("{0}/gdimagefill/bug00002_1_exp.png", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR); if (GlobalMembersGdtest.gdTestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, (path), (im)) == 0) { gd.gdImageDestroy(im); Assert.Fail(); } gd.gdImageDestroy(im); File.Delete(TMP_FN); }
public void TestBug00081Cpp() { const string file_exp = "bug00081_exp.png"; using (var image = new Image(5, 5, true)) { if (!image.good()) { Assert.Fail("can't create the src truecolor image\n"); } image.FilledRectangle(0, 0, 49, 49, 0x00FFFFFF); image.ColorTransparent(0xFFFFFF); image.FilledRectangle(1, 1, 4, 4, 0xFF00FF); using (var image2 = new Image(20, 20, true)) { if (!image2.good()) { Assert.Fail("can't create the dst truecolor image"); } image2.Copy(image, 2, 2, 0, 0, image.SX(), image.SX()); string path = string.Format("{0}/gdimagecopy/{1}", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR, file_exp); if (GlobalMembersGdtest.TestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, path, image2) == 0) { Assert.Fail("Reference image and destination differ\n"); } } } }
public void TestBug00032() { //gd.gdSetErrorMethod(GlobalMembersGdtest.gdSilence); gdImageStruct tile = gd.gdImageCreateTrueColor(10, 10); gd.gdImageFill(tile, 0, 0, 0xFFFFFF); gd.gdImageLine(tile, 0, 0, 9, 9, 0xff0000); gd.gdImageColorTransparent(tile, 0xFFFFFF); gdImageStruct im = gd.gdImageCreateTrueColor(50, 50); gd.gdImageFilledRectangle(im, 0, 0, 25, 25, 0x00FF00); gd.gdImageSetTile(im, tile); gd.gdImageFilledRectangle(im, 10, 10, 49, 49, GlobalMembersGdtest.DefineConstants.gdTiled); string path = Path.Combine(GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR, "gdtiled", exp_img); if (GlobalMembersGdtest.gdTestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, path, im) == 0) { gd.gdImageDestroy(im); gd.gdImageDestroy(tile); Assert.Fail(); } gd.gdImageDestroy(im); gd.gdImageDestroy(tile); }
public unsafe void TestJpeg_resolution() { int size = 0; gdImageStruct im = gd.gdImageCreate(100, 100); gd.gdImageSetResolution(im, 72, 300); int red = gd.gdImageColorAllocate(im, 0xFF, 0x00, 0x00); gd.gdImageFilledRectangle(im, 0, 0, 99, 99, red); IntPtr data = gd.gdImageJpegPtr(im, &size, 10); gd.gdImageDestroy(im); im = gd.gdImageCreateFromJpegPtr(size, data); gd.gdFree(data); if (GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", im.res_x == 72 ? 1 : 0) == 0 || GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", im.res_y == 300 ? 1 : 0) == 0) { GlobalMembersGdtest.gdTestErrorMsg(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "failed image resolution X (%d != 72) or Y (%d != 300)\n", im.res_x, im.res_y); gd.gdImageDestroy(im); Assert.Fail(); } gd.gdImageDestroy(im); }
public void TestBug00111() { const string file_exp = "bug00111_exp.png"; gdImageStruct im = gd.gdImageCreateTrueColor(10, 10); if (im == null) { Assert.Fail("can't get truecolor image"); } gd.gdImageLine(im, 2, 2, 2, 2, 0xFFFFFF); gd.gdImageLine(im, 5, 5, 5, 5, 0xFFFFFF); gd.gdImageLine(im, 0, 0, 0, 0, 0xFFFFFF); string path = string.Format("{0}/gdimageline/{1}", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR, file_exp); if (GlobalMembersGdtest.gdTestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, (path), (im)) == 0) { Assert.Fail("Reference image and destination differ"); } gd.gdImageDestroy(im); }
public unsafe void TestPng_resolutionCpp() { int size; IntPtr data; using (var image = new Image(100, 100)) { image.SetResolution(72, 300); int red = image.ColorAllocate(0xFF, 0x00, 0x00); image.FilledRectangle(0, 0, 99, 99, red); data = image.Png(&size); } using (var image = new Image()) { image.CreateFromPng(size, data); gd.gdFree(data); if (GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", image.ResX() == 72 ? 1 : 0) == 0 || GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", image.ResY() == 300 ? 1 : 0) == 0) { GlobalMembersGdtest.gdTestErrorMsg(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "failed image resolution X (%d != 72) or Y (%d != 300)\n", image.ResX(), image.ResY()); Assert.Fail(); } } }
public void TestGdModesAndPalettesCpp() { for (var method = gdInterpolationMethod.GD_BELL; method <= gdInterpolationMethod.GD_TRIANGLE; method++) // GD_WEIGHTED4 is unsupported. { var images = new Image[2]; // printf("Method = %d\n", method); images[0] = new Image(X, Y, true); images[1] = new Image(X, Y); for (int i = 0; i < 2; i++) { // printf(" %s\n", i == 0 ? "truecolor" : "palette"); images[i].FilledRectangle(0, 0, X - 1, Y - 1, images[i].ColorExact(255, 255, 255, 0)); images[i].SetInterpolationMethod(method); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", images[i].GetPtr().interpolation_id == method ? 1 : 0); using (var result = new Image(gd.gdImageScale(images[i].GetPtr(), NX, NY))) { GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", result.good() ? 1 : 0); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", result.GetPtr().__Instance != images[i].GetPtr().__Instance ? 1 : 0); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", result.good() && result.SX() == NX && result.SY() == NY ? 1 : 0); } images[i].Dispose(); } // for } // for Assert.AreEqual(0, GlobalMembersGdtest.gdNumFailures()); } // main
public unsafe void TestGd2_im2im() { int size = 0; var result = new GlobalMembersGdtest.CuTestImageResult(0, 0); gdImageStruct src = gd.gdImageCreate(100, 100); if (src == null) { Assert.Fail("could not create src"); } int r = gd.gdImageColorAllocate(src, 0xFF, 0, 0); int g = gd.gdImageColorAllocate(src, 0, 0xFF, 0); int b = gd.gdImageColorAllocate(src, 0, 0, 0xFF); gd.gdImageFilledRectangle(src, 0, 0, 99, 99, r); gd.gdImageRectangle(src, 20, 20, 79, 79, g); gd.gdImageEllipse(src, 70, 25, 30, 20, b); const int cs = (GlobalMembersGdtest.DefineConstants.GD2_CHUNKSIZE_MIN + GlobalMembersGdtest.DefineConstants.GD2_CHUNKSIZE_MAX) / 2; gd.gdImageGd2(src, string.Format("gd2_im2im_{0}.gd2", "src"), cs, GlobalMembersGdtest.DefineConstants.GD2_FMT_COMPRESSED); IntPtr p = gd.gdImageGd2Ptr(src, cs, GlobalMembersGdtest.DefineConstants.GD2_FMT_COMPRESSED, &size); if (p == IntPtr.Zero) { gd.gdImageDestroy(src); Assert.Fail("p is null\n"); } if (size <= 0) { gd.gdFree(p); gd.gdImageDestroy(src); Assert.Fail("size is non-positive"); } gdImageStruct dst = gd.gdImageCreateFromGd2Ptr(size, p); if (dst == null) { gd.gdFree(p); gd.gdImageDestroy(src); Assert.Fail("could not create dst"); } gd.gdImageGd2(dst, string.Format("gd2_im2im_{0}.gd2", "dst"), cs, GlobalMembersGdtest.DefineConstants.GD2_FMT_COMPRESSED); GlobalMembersGdtest.gdTestImageDiff(src, dst, null, result); if (result.pixels_changed > 0) { gd.gdImageDestroy(dst); gd.gdFree(p); gd.gdImageDestroy(src); Assert.Fail("pixels changed: {0:D}\n", result.pixels_changed); } gd.gdImageDestroy(dst); gd.gdFree(p); gd.gdImageDestroy(src); }
public unsafe void TestGif_im2im() { int size = 0; var result = new GlobalMembersGdtest.CuTestImageResult(0, 0); gdImageStruct src = gd.gdImageCreate(100, 100); if (src == null) { Assert.Fail("could not create src"); } int r = gd.gdImageColorAllocate(src, 0xFF, 0, 0); int g = gd.gdImageColorAllocate(src, 0, 0xFF, 0); int b = gd.gdImageColorAllocate(src, 0, 0, 0xFF); gd.gdImageFilledRectangle(src, 0, 0, 99, 99, r); gd.gdImageRectangle(src, 20, 20, 79, 79, g); gd.gdImageEllipse(src, 70, 25, 30, 20, b); gd.gdImageGif(src, "gif_im2im_src.gif"); IntPtr p = gd.gdImageGifPtr(src, &size); if (p == IntPtr.Zero) { gd.gdImageDestroy(src); Assert.Fail("p is null\n"); } if (size <= 0) { gd.gdFree(p); gd.gdImageDestroy(src); Assert.Fail("size is non-positive"); } gdImageStruct dst = gd.gdImageCreateFromGifPtr(size, p); if (dst == null) { gd.gdFree(p); gd.gdImageDestroy(src); Assert.Fail("could not create dst"); } gd.gdImageGif(dst, "gif_im2im_dst.gif"); GlobalMembersGdtest.gdTestImageDiff(src, dst, null, result); if (result.pixels_changed > 0) { gd.gdImageDestroy(dst); gd.gdFree(p); gd.gdImageDestroy(src); Assert.Fail("pixels changed: {0:D}\n", result.pixels_changed); } gd.gdImageDestroy(dst); gd.gdFree(p); gd.gdImageDestroy(src); }
public void TestBug00006() { const int r = 255; const int g = 0; const int b = 0; const int trans_c = (0 << 24) + (r << 16) + (g << 8) + b; int error = 0; gdImageStruct im = gd.gdImageCreateTrueColor(192, 36); if (im == null) { GlobalMembersGdtest.gdTestErrorMsg(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "Cannot create image\n"); Assert.Fail(); } gd.gdImageColorTransparent(im, trans_c); gd.gdImageFilledRectangle(im, 0, 0, 192, 36, trans_c); gd.gdImageGif(im, TMP_FN); gd.gdImageDestroy(im); im = gd.gdImageCreateFromGif(TMP_FN); if (im == null) { GlobalMembersGdtest.gdTestErrorMsg(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "Cannot create image from <%s>\n", TMP_FN); Assert.Fail(); } int trans_c_f = ((im).transparent); if (GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", trans_c_f == 1 ? 1 : 0) != 0) { int r_f = im.trueColor != 0 ? ((trans_c_f & 0xFF0000) >> 16) : im.red[trans_c_f]; int g_f = im.trueColor != 0 ? ((trans_c_f & 0x00FF00) >> 8) : im.green[trans_c_f]; int b_f = im.trueColor != 0 ? (trans_c_f & 0x0000FF) : im.blue[trans_c_f]; if (GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", r_f == r ? 1 : 0) == 0 || GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", g_f == g ? 1 : 0) == 0 || GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", b_f == b ? 1 : 0) == 0) { error = 1; } } else { error = 1; } /* Destroy it */ gd.gdImageDestroy(im); File.Delete(TMP_FN); Assert.AreEqual(0, error); }
public void TestBug00002_3() { int error = 0; /* fputs("flag 0\n", stdout); */ gdImageStruct im = gd.gdImageCreate(150, 150); gdImageStruct tile = gd.gdImageCreateTrueColor(36, 36); int tile_white = gd.gdImageColorAllocate(tile, 255, 255, 255); int tile_black = gd.gdImageColorAllocate(tile, 55, 0, 0); gd.gdImageColorAllocate(im, 255, 255, 255); // allocate white for background color int im_black = gd.gdImageColorAllocate(im, 0, 0, 0); gd.gdImageFill(tile, 0, 0, tile_white); gd.gdImageColorTransparent(tile, tile_black); gd.gdImageColorTransparent(im, im_black); /* create the dots pattern */ for (int x = 0; x < 36; x += 2) { for (int y = 0; y < 36; y += 2) { gd.gdImageSetPixel(tile, x, y, tile_black); } } gd.gdImageSetTile(im, tile); gd.gdImageRectangle(im, 9, 9, 139, 139, im_black); gd.gdImageLine(im, 9, 9, 139, 139, im_black); gd.gdImageFill(im, 11, 12, GlobalMembersGdtest.DefineConstants.gdTiled); /* fputs("flag 1\n", stdout); */ gd.gdImageFill(im, 0, 0, 0xffffff); /* fputs("flag 2\n", stdout); */ gd.gdImageFill(im, 0, 0, 0xffffff); /* fputs("flag 3\n", stdout); */ string path = string.Format("{0}/gdimagefill/bug00002_3_exp.png", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR); if (GlobalMembersGdtest.gdTestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, (path), (im)) == 0) { error = 1; } /* Destroy it */ gd.gdImageDestroy(im); if (error != 0) { Assert.Fail("Error: {0}", error); } }
private static void CheckValue(int n, int expected) { do { if (GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", ((n) == (expected)) ? 1 : 0) != 1) { Assert.Fail("{0:D} is expected, but {1:D}\n", expected, n); } } while (false); }
} // save /* Test gd.gdImageScale() with bicubic interpolation on a simple * all-white image. */ private static gdImageStruct mkwhite(int x, int y) { gdImageStruct im = gd.gdImageCreateTrueColor(x, y); gd.gdImageFilledRectangle(im, 0, 0, x - 1, y - 1, gd.gdImageColorExactAlpha(im, 255, 255, 255, 0)); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", (im != null) ? 1 : 0); gd.gdImageSetInterpolationMethod(im, gdInterpolationMethod.GD_BICUBIC); // FP interp'n return(im); } // mkwhite
} // mkwhite private static Image mkwhiteCpp(int x, int y) { var image = new Image(x, y, true); image.FilledRectangle(0, 0, x - 1, y - 1, image.ColorExact(255, 255, 255, 0)); GlobalMembersGdtest.gdTestAssert(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "assert failed in <%s:%i>\n", image.good() ? 1 : 0); image.SetInterpolationMethod(gdInterpolationMethod.GD_BICUBIC); // FP interp'n return(image); } // mkwhite
public static int gdTestAssert(string file, uint line, string message, int condition) { if (condition != 0) { return(1); } GlobalMembersGdtest.gdTestErrorMsg(file, line, "%s", message); ++failureCount; return(0); }
public void TestBug00067() { const string file_im = "gdimagerotate/remirh128.jpg"; const string file_exp = "gdimagerotate/bug00067"; int error = 0; string path = string.Format("{0}/{1}", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR, file_im); gdImageStruct im = gd.gdImageCreateFromJpeg(path); if (im == null) { GlobalMembersGdtest.gdTestErrorMsg(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "loading %s failed.", path); Assert.Fail(); } int color = gd.gdImageColorAllocate(im, 0, 0, 0); if (color < 0) { GlobalMembersGdtest.gdTestErrorMsg(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "allocation color from image failed."); gd.gdImageDestroy(im); Assert.Fail(); } for (int angle = 0; angle <= 180; angle += 15) { gdImageStruct exp = gd.gdImageRotateInterpolated(im, angle, color); if (exp == null) { GlobalMembersGdtest.gdTestErrorMsg(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "rotating image failed for %03d.", angle); gd.gdImageDestroy(im); Assert.Fail(); } path = string.Format("{0}/{1}_{2:D3}_exp.png", GlobalMembersGdtest.DefineConstants.GDTEST_TOP_DIR, file_exp, angle); if (GlobalMembersGdtest.gdTestImageCompareToFile(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, null, path, exp) == 0) { GlobalMembersGdtest.gdTestErrorMsg(GlobalMembersGdtest.__FILE__, GlobalMembersGdtest.__LINE__, "comparing rotated image to %s failed.", path); error += 1; } gd.gdImageDestroy(exp); } gd.gdImageDestroy(im); if (error != 0) { Assert.Fail("Error: {0}", error); } }