--- GD.c.org Sat Dec 25 15:19:45 2004 +++ GD.c Sat Dec 25 14:46:49 2004 @@ -25,6 +25,13 @@ extern gdImagePtr gdImageCreateFromXpm(c static VALUE mGD, cImage, cFont, cPolygon; +#if (RUBY_VERSION_CODE >= 190) +# define rb_io_stdio_file2 rb_io_stdio_file +#else +# define rb_io_stdio_file(of) (of->f) +# define rb_io_stdio_file2(of) (of->f2 ? of->f2 : of->f) +#endif + #ifdef ENABLE_GD_2_0 static VALUE is_truecolor(im) @@ -72,7 +79,7 @@ img_from_pngfname(klass, fname) GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromPng(fptr->f); + iptr = gdImageCreateFromPng(rb_io_stdio_file(fptr)); if (!iptr) rb_raise(rb_eArgError, "%s is not a valid PNG File", fptr->path); @@ -92,7 +99,7 @@ img_from_png(klass, f) GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromPng(fptr->f); + iptr = gdImageCreateFromPng(rb_io_stdio_file(fptr)); if (!iptr) rb_raise(rb_eArgError, "%s is not a valid PNG File", fptr->path); @@ -114,7 +121,7 @@ img_from_gdfname(klass, fname) GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd(fptr->f); + iptr = gdImageCreateFromGd(rb_io_stdio_file(fptr)); if (!iptr) rb_raise(rb_eArgError, "%s is not a valid Gd File", fptr->path); @@ -133,7 +140,7 @@ img_from_gd(klass, f) GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd(fptr->f); + iptr = gdImageCreateFromGd(rb_io_stdio_file(fptr)); if (!iptr) rb_raise(rb_eArgError, "%s is not a valid Gd File", fptr->path); return Data_Wrap_Struct(klass,0,free_img,iptr); @@ -154,7 +161,7 @@ img_from_gd2fname(klass, fname) GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd2(fptr->f); + iptr = gdImageCreateFromGd2(rb_io_stdio_file(fptr)); if (!iptr) rb_raise(rb_eArgError, "%s is not a valid Gd2 File", fptr->path); @@ -173,7 +180,7 @@ img_from_gd2(klass, f) GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd2(fptr->f); + iptr = gdImageCreateFromGd2(rb_io_stdio_file(fptr)); if (!iptr) rb_raise(rb_eArgError, "%s is not a valid Gd2 File", fptr->path); @@ -195,7 +202,7 @@ img_from_gd2_partfname(klass, fname, src GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd2Part(fptr->f, NUM2INT(srcx), + iptr = gdImageCreateFromGd2Part(rb_io_stdio_file(fptr), NUM2INT(srcx), NUM2INT(srcy), NUM2INT(w), NUM2INT(h)); if (!iptr) rb_raise(rb_eArgError, "%s is not a valid Gd2 File", fptr->path); @@ -215,7 +222,7 @@ img_from_gd2_part(klass, f, srcx, srcy, GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd2Part(fptr->f, NUM2INT(srcx), + iptr = gdImageCreateFromGd2Part(rb_io_stdio_file(fptr), NUM2INT(srcx), NUM2INT(srcy), NUM2INT(w), NUM2INT(h)); if (!iptr) rb_raise(rb_eArgError, "%s is not a valid Gd2 File", fptr->path); @@ -236,7 +243,7 @@ img_from_xbm(klass, f) GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromXbm(fptr->f); + iptr = gdImageCreateFromXbm(rb_io_stdio_file(fptr)); if (!iptr) rb_raise(rb_eArgError, "%s is not a valid Xbm File", fptr->path); @@ -258,7 +265,7 @@ img_from_xbmfname(klass, fname) GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromXbm(fptr->f); + iptr = gdImageCreateFromXbm(rb_io_stdio_file(fptr)); if (!iptr) rb_raise(rb_eArgError, "%s is not a valid Xbm File", fptr->path); @@ -324,7 +331,7 @@ img_from_jpeg(klass, f) GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromJpeg(fptr->f); + iptr = gdImageCreateFromJpeg(rb_io_stdio_file(fptr)); if (!iptr) rb_raise(rb_eArgError, "%s is not a valid Jpeg File", fptr->path); @@ -346,7 +353,7 @@ img_from_jpegfname(klass, fname) GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromJpeg(fptr->f); + iptr = gdImageCreateFromJpeg(rb_io_stdio_file(fptr)); if (!iptr) rb_raise(rb_eArgError, "%s is not a valid Jpeg File", fptr->path); @@ -1456,16 +1463,14 @@ img_png(img, out) { gdImagePtr im; OpenFile *fptr; - FILE *f; Data_Get_Struct(img, gdImage, im); Check_Type(out, T_FILE); rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = (fptr->f2) ? fptr->f2 : fptr->f; - gdImagePng(im, f); + gdImagePng(im, rb_io_stdio_file2(fptr)); return img; } @@ -1498,16 +1503,14 @@ img_gd(img, out) { gdImagePtr im; OpenFile *fptr; - FILE *f; Data_Get_Struct(img, gdImage, im); Check_Type(out, T_FILE); rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = (fptr->f2) ? fptr->f2 : fptr->f; - gdImageGd(im, f); + gdImageGd(im, rb_io_stdio_file2(fptr)); return img; } @@ -1518,16 +1521,14 @@ img_gd2(img, out, cs, fmt) { OpenFile *fptr; gdImagePtr im; - FILE *f; Check_Type(out, T_FILE); rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = (fptr->f2) ? fptr->f2 : fptr->f; Data_Get_Struct(img, gdImage, im); - gdImageGd2(im, f, NUM2INT(cs), NUM2INT(fmt)); + gdImageGd2(im, rb_io_stdio_file2(fptr), NUM2INT(cs), NUM2INT(fmt)); return img; } @@ -1540,7 +1541,6 @@ img_jpeg(img, out, quality) { gdImagePtr im; OpenFile *fptr; - FILE *f; Data_Get_Struct(img, gdImage, im); @@ -1549,9 +1549,8 @@ img_jpeg(img, out, quality) rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = (fptr->f2) ? fptr->f2 : fptr->f; - gdImageJpeg(im, f, FIX2INT(quality)); + gdImageJpeg(im, rb_io_stdio_file2(fptr), FIX2INT(quality)); return img; } @@ -1585,7 +1584,6 @@ img_wbmp(img, fg, out) { gdImagePtr im; OpenFile *fptr; - FILE *f; Data_Get_Struct(img, gdImage, im); @@ -1594,9 +1592,8 @@ img_wbmp(img, fg, out) rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = (fptr->f2) ? fptr->f2 : fptr->f; - gdImageWBMP(im, FIX2INT(fg), f); + gdImageWBMP(im, FIX2INT(fg), rb_io_stdio_file2(fptr)); return img; }