debian/0000755000000000000000000000000012257317470007176 5ustar debian/ruby-gd.doc-base0000644000000000000000000000053312257317136012146 0ustar Document: ruby-gd Title: Documentation of the Ruby GD library Author: Yukihiro Matsumoto, Ryuichi Tamura Abstract: This manual contains the API documentation of Ruby/GD, the Ruby interface to Thomas Boutell's gd library. Section: Programming/Ruby Format: HTML Index: /usr/share/doc/ruby-gd/manual.html Files: /usr/share/doc/ruby-gd/manual*.html debian/copyright0000644000000000000000000000730512247173650011135 0ustar Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: ruby-gd Upstream-Contact: Ryuichi Tamura (tam@kais.kyoto-u.ac.jp) Source: http://tam.0xfa.com/ruby-gd Files: * Copyright: 2001 Ryuichi Tamura License: Ruby License or GPL-2+ Files: debian/* Copyright: 2012 Paul van Tilburg License: GPL-2+ License: GPL-2+ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. . This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see . . On Debian systems, the full text of the GNU General Public License version 2 can be found in the file `/usr/share/common-licenses/GPL-2'. License: Ruby License Ruby is copyrighted free software by Yukihiro Matsumoto . You can redistribute it and/or modify it under either the terms of the GPL (see the file GPL), or the conditions below: . 1. You may make and give away verbatim copies of the source form of the software without restriction, provided that you duplicate all of the original copyright notices and associated disclaimers. . 2. You may modify your copy of the software in any way, provided that you do at least ONE of the following: . a) place your modifications in the Public Domain or otherwise make them Freely Available, such as by posting said modifications to Usenet or an equivalent medium, or by allowing the author to include your modifications in the software. . b) use the modified software only within your corporation or organization. . c) give non-standard binaries non-standard names, with instructions on where to get the original software distribution. . d) make other distribution arrangements with the author. . 3. You may distribute the software in object code or binary form, provided that you do at least ONE of the following: . a) distribute the binaries and library files of the software, together with instructions (in the manual page or equivalent) on where to get the original distribution. . b) accompany the distribution with the machine-readable source of the software. . c) give non-standard binaries non-standard names, with instructions on where to get the original software distribution. . d) make other distribution arrangements with the author. . 4. You may modify and include the part of the software into any other software (possibly commercial). But some files in the distribution are not written by the author, so that they are not under these terms. . For the list of those files and their copying conditions, see the file LEGAL. . 5. The scripts and library files supplied as input to or produced as output from the software do not automatically fall under the copyright of the software, but belong to whomever generated them, and may be sold commercially, and may be aggregated with this software. . 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. debian/rules0000755000000000000000000000103112257317400010242 0ustar #!/usr/bin/make -f #export DH_VERBOSE=1 # # Uncomment to ignore all test failures (but the tests will run anyway) #export DH_RUBY_IGNORE_TESTS=all # # Uncomment to ignore some test failures (but the tests will run anyway). # Valid values: #export DH_RUBY_IGNORE_TESTS=ruby1.8 ruby1.9.1 require-rubygems # # If you need to specify the .gemspec (eg there is more than one) #export DH_RUBY_GEMSPEC=gem.gemspec export CONFIGURE_ARGS=--with-xpm --with-jpeg --with-freetype --with-ttf --enable-gd2_0 %: dh $@ --buildsystem=ruby --with ruby debian/source/0000755000000000000000000000000012247173650010475 5ustar debian/source/format0000644000000000000000000000001412247173650011703 0ustar 3.0 (quilt) debian/source/lintian-overrides0000644000000000000000000000021112247173650014050 0ustar ruby-gd source: duplicate-short-description libgd-ruby libgd-ruby1.8 ruby-gd source: duplicate-long-description libgd-ruby libgd-ruby1.8 debian/ruby-gd.docs0000644000000000000000000000002612247173650011416 0ustar doc/manual.* readme.* debian/control0000644000000000000000000000304512257317133010577 0ustar Source: ruby-gd Section: ruby Priority: optional Maintainer: Debian Ruby Extras Maintainers Uploaders: Paul van Tilburg Build-Depends: debhelper (>= 7.0.50~), gem2deb (>= 0.5.0~), libgd-dev, libpng-dev, zlib1g-dev, libfreetype6-dev, libjpeg-dev Standards-Version: 3.9.5 Vcs-Git: git://anonscm.debian.org/pkg-ruby-extras/ruby-gd.git Vcs-Browser: http://anonscm.debian.org/gitweb?p=pkg-ruby-extras/ruby-gd.git;a=summary Homepage: http://tam.0xfa.com/ruby-gd XS-Ruby-Versions: all Package: ruby-gd Architecture: any XB-Ruby-Versions: ${ruby:Versions} Depends: ${shlibs:Depends}, ${misc:Depends}, ruby | ruby-interpreter Replaces: libgd-ruby (<< 0.8.0-2~), libgd-ruby1.8 (<< 0.8.0-2~) Breaks: libgd-ruby (<< 0.8.0-2~), libgd-ruby1.8 (<< 0.8.0-2~) Provides: libgd-ruby, libgd-ruby1.8 Description: Extension library to use GD graphics library from Ruby Ruby extension library for using Thomas Boutell's GD library. The GD library is a popular library for creating and manipulating image files. Package: libgd-ruby Section: oldlibs Priority: extra Architecture: all Depends: ${misc:Depends}, ruby-gd Description: Transitional package for ruby-gd This is a transitional package to ease upgrades to the ruby-gd package. It can safely be removed. Package: libgd-ruby1.8 Section: oldlibs Priority: extra Architecture: all Depends: ${misc:Depends}, ruby-gd Description: Transitional package for ruby-gd This is a transitional package to ease upgrades to the ruby-gd package. It can safely be removed. debian/watch0000644000000000000000000000014312247173650010224 0ustar version=3 http://pkg-ruby-extras.alioth.debian.org/cgi-bin/gemwatch/ruby-gd .*/ruby-gd-(.*).tar.gz debian/changelog0000644000000000000000000001514212257317470011053 0ustar ruby-gd (0.8.0-6) unstable; urgency=medium * Team upload. * Drop debian/patches/options-extconf.patch and replace it with a less instrusive way of enabling the addtl. features. -- Christian Hofstaedtler Fri, 27 Dec 2013 16:38:14 +0100 ruby-gd (0.8.0-5) unstable; urgency=medium * Team upload. * Add debian/patches/options-extconf.patch, to force --with-xpm, --with-freetype, --with-jpeg and --enable-gd2_0 options in extconf.rb. (Closes: #733157) * update restore-ruby18-support.patch to add ruby 1.9+ support for additional extconf options. -- Cédric Boutillier Fri, 27 Dec 2013 09:38:07 +0100 ruby-gd (0.8.0-4) unstable; urgency=medium * Team upload * debian/control: + bump Standards-Version to 3.9.5 (no changes needed) + build with gem2deb >= 0.5 to add Ruby2.0 support and drop Ruby1.8 + build against libgd-dev instead of obsolete libgd2-xpm-dev + remove obsolete DM-Upload-Allowed flag + use canonical URI in Vcs-* fields * Import patches from https://github.com/Spakman/ruby-gd/ to fix build with Ruby1.9+ (Closes: #730907) * Add doc-base registration -- Cédric Boutillier Wed, 18 Dec 2013 15:18:27 +0100 ruby-gd (0.8.0-3) unstable; urgency=low * Bumped the build-dependency on gem2deb to >= 0.3.0~. * debian/source/lintian-overrides: added overrides for the descriptions of the transitional packages. -- Paul van Tilburg Tue, 26 Jun 2012 23:25:14 +0200 ruby-gd (0.8.0-2) unstable; urgency=low * Really added libgd-ruby and libgd-ruby1.8 as transitional packages. -- Paul van Tilburg Mon, 23 Apr 2012 22:30:54 +0200 ruby-gd (0.8.0-1) unstable; urgency=low * New upstream release. * Source packages adapted according to the new Ruby policy: - Build for both ruby1.8 and ruby1.9.1. - Migrated to pkg-ruby-extras git repos. Changed the Vcs-* fields in debian/control accordingly. - Changed the depends and recommends to follow the new Ruby library naming scheme. * debian/control: - Added a default DM-Upload-Allowed field set to yes. - Standards-Version bumped to 3.9.3. - Set XS-Ruby-Versions to ruby1.8. - Changed the build-depends for using gem2deb instead of ruby-pkg-tools. - Changed the build-depend on libpng12-dev to libpng-dev (closes: #662400). - Removed the build-depends on ruby1.8 and ruby1.8-dev as it is handled via gem2deb now. - Switched the maintainer with the uploaders field as per new convention the team is the default maintainer. - Added libgd-ruby and libgd-ruby1.8 as transitional packages. * debian/copyright: reworked to fit the copyright format 1.0. * debian/patches: refreshed patches for use by quilt. * debian/ruby-gd.{docs,examples}: renamed from libgd-ruby.{docs,examples}. * debian/source/options: set the "unapply-patches" option. -- Paul van Tilburg Mon, 23 Apr 2012 22:20:40 +0200 libgd-ruby (0.7.4.1-6.1) unstable; urgency=low * Non-maintainer upload. * Fix "FTBFS: Please Build-Depends on libjpeg-dev, not libjpeg62-dev": do as the bug report says (closes: #635489). -- gregor herrmann Sun, 11 Sep 2011 16:53:08 +0200 libgd-ruby (0.7.4.1-6) unstable; urgency=low [ Paul van Tilburg ] * Added watch file (use RAA cache, since upstream website is gone!). * Moved the team to the Uploaders field, set myself as maintainer in debian/control (closes: #472438). * Removed superfluous debian/dirs and Debian-specific changes to extconf.rb. * Bumped the standards version to 3.8.0; no changes required. [ Antonio Terceiro ] * Added debian/patches/fix-set-interlace-on-amd64.patch to fix segmentation faults on amd64 when using the interlace option (Closes: #497191). * Added myself to Uploaders in debian/control. -- Paul van Tilburg Sat, 30 Aug 2008 19:49:47 +0200 libgd-ruby (0.7.4.1-5) unstable; urgency=low [ Barry deFreese ] * Move to cdbs and extconf class (Closes: #454958). * Remove url from package description and add Homepage field * Bump debhelper build-dep and compat to 5 * Bump standards to 3.7.3 [ Lucas Nussbaum ] * Fixed Vcs-* addresses to point to the dir containing debian/, not the one containing trunk/. * Added the classic libgd-ruby package that depends on libgd-ruby1.8. -- Lucas Nussbaum Wed, 19 Dec 2007 09:03:55 +0100 libgd-ruby (0.7.4.1-4) unstable; urgency=low * New maintainer. * Added Vcs-*. -- Lucas Nussbaum Sat, 08 Dec 2007 13:19:41 +0100 libgd-ruby (0.7.4.1-3) unstable; urgency=low * FTBFS: build-depends on removed xlibs-dev (Closes: #347010) * dropped ruby1.6 support. (Closes: #367919) -- akira yamada Tue, 23 May 2006 16:37:41 +0900 libgd-ruby (0.7.4.1-2.1) unstable; urgency=low * Non-maintainer upload * Drop unneeded xlibs-dev build-dep. (Closes: #347010) -- Marc 'HE' Brockschmidt Sat, 21 Jan 2006 22:02:51 +0100 libgd-ruby (0.7.4.1-2) unstable; urgency=low * removed unnecessary dependency for libttf2. (closes: #312900) -- akira yamada Sat, 25 Jun 2005 15:24:11 +0900 libgd-ruby (0.7.4.1-1) unstable; urgency=low * new upstream version. (http://tam.0xfa.com/ruby-gd/ruby-GD-0.7.4-1.tar.gz) * rebuild with ruby1.6 and ruby1.8. (closes: #212105) -- akira yamada Thu, 11 Dec 2003 15:52:39 +0900 libgd-ruby (0.7.4-5) unstable; urgency=low * enabled GD2 methods. * updated Standards-Version to 3.5.8. * Build-Depends on libpng12-dev. -- akira yamada Mon, 6 Jan 2003 19:21:41 +0900 libgd-ruby (0.7.4-4) unstable; urgency=low * build with libgd2-xpm-dev and libpng3-dev, closes: #160844. -- akira yamada Tue, 17 Sep 2002 23:38:14 +0900 libgd-ruby (0.7.4-3) unstable; urgency=low * rebuild with libgd2-dev, closes: #110852. -- akira yamada Sun, 2 Sep 2001 00:53:45 +0900 libgd-ruby (0.7.4-2) unstable; urgency=low * added ruby, ruby-dev and libttf-dev to build-depends, closes: #106433. -- akira yamada Wed, 25 Jul 2001 10:16:56 +0900 libgd-ruby (0.7.4-1) unstable; urgency=low * upgraded to new upstream version. -- akira yamada Mon, 16 Jul 2001 15:24:41 +0900 libgd-ruby (0.7.3-1) unstable; urgency=low * upgraded to new upstream version. -- akira yamada Mon, 16 Jul 2001 15:01:10 +0900 libgd-ruby (0.7.2-0.0.1) unstable; urgency=low * Initial Release. -- akira yamada Sat, 5 May 2001 14:56:13 +0900 debian/compat0000644000000000000000000000000212247173650010373 0ustar 7 debian/patches/0000755000000000000000000000000012257317165010626 5ustar debian/patches/fix-set-interlace-on-amd64.patch0000644000000000000000000000047012247173650016514 0ustar Index: ruby-gd/GD.c =================================================================== --- ruby-gd.orig/GD.c 2012-04-22 18:04:08.564097181 +0200 +++ ruby-gd/GD.c 2012-04-22 18:24:10.815561681 +0200 @@ -1417,6 +1417,7 @@ static VALUE img_set_interlace(img, val) + VALUE img, val; { gdImagePtr im; debian/patches/restore-ruby18-support.patch0000644000000000000000000003353412257317136016202 0ustar Subject: Added back in Ruby 1.8 support. Tested under 1.8.6 and 1.9.1. The 1.8/1.9 compile time switching is done using a few macros. I'm not sure if this is the best way to achieve this or not, since I'm not too familiar with the (Ruby)C way. Any comments on the style will be appreciated! From: Mark Somerville Origin: https://github.com/Spakman/ruby-gd/commit/30eb7696a4fad4fc18cf11725da95226e79afd8e Last-Update: 2009-09-10 --- a/GD.c +++ b/GD.c @@ -10,7 +10,11 @@ $Revision: 1.6.2.3 $ **************************************************************/ #include "ruby.h" -#include "ruby/io.h" +#if defined(HAVE_RUBY_IO_H) + #include "ruby/io.h" +#else /* seems like Ruby < 1.9 */ + #include "rubyio.h" +#endif #include "gd.h" #include "gdfontg.h" /* giant */ @@ -19,6 +23,22 @@ #include "gdfonts.h" /* small */ #include "gdfontt.h" /* tiny */ +/* Is this the best way to do this sort of thing? + * It feels kind of wrong, but I'm not sure of the (Ruby)C way. + * Any opinions on the style will be gratefully received! */ + +#if defined(HAVE_RUBY_IO_H) /* seems like Ruby > 1.8 */ + #define FPTR_TYPE rb_io_t + #define FILE_POINTER_FOR_CREATE_FROM fdopen(fptr->fd, "r") + #define FPTR_PATH (char*)fptr->pathv + #define SECOND_FILE_POINTER rb_io_stdio_file(fptr) +#else + #define FPTR_TYPE OpenFile + #define FILE_POINTER_FOR_CREATE_FROM fptr->f + #define FPTR_PATH fptr->path + #define SECOND_FILE_POINTER (fptr->f2) ? fptr->f2 : fptr->f +#endif + extern VALUE rb_io_binmode(VALUE io); extern gdImagePtr gdImageCreateFromXpm(char* ); @@ -61,7 +81,7 @@ VALUE klass, fname; { VALUE f; - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -71,9 +91,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromPng(fdopen(fptr->fd, "r")); + iptr = gdImageCreateFromPng(FILE_POINTER_FOR_CREATE_FROM); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid PNG File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid PNG File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -83,7 +103,7 @@ img_from_png(klass, f) VALUE klass, f; { - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -91,9 +111,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromPng(fdopen(fptr->fd, "r")); + iptr = gdImageCreateFromPng(FILE_POINTER_FOR_CREATE_FROM); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid PNG File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid PNG File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -104,7 +124,7 @@ VALUE klass, fname; { VALUE f; - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -114,9 +134,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGif(fdopen(fptr->fd, "r")); + iptr = gdImageCreateFromGif(FILE_POINTER_FOR_CREATE_FROM); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid GIF File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid GIF File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -125,7 +145,7 @@ img_from_gif(klass, f) VALUE klass, f; { - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -133,9 +153,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGif(fdopen(fptr->fd, "r")); + iptr = gdImageCreateFromGif(FILE_POINTER_FOR_CREATE_FROM); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid GIF File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid GIF File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -146,7 +166,7 @@ VALUE klass, fname; { VALUE f; - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -156,9 +176,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd(fdopen(fptr->fd, "r")); + iptr = gdImageCreateFromGd(FILE_POINTER_FOR_CREATE_FROM); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Gd File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid Gd File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -167,7 +187,7 @@ img_from_gd(klass, f) VALUE klass, f; { - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -175,9 +195,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd(fdopen(fptr->fd, "r")); + iptr = gdImageCreateFromGd(FILE_POINTER_FOR_CREATE_FROM); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Gd File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid Gd File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -186,7 +206,7 @@ VALUE klass, fname; { VALUE f; - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -196,9 +216,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd2(fdopen(fptr->fd, "r")); + iptr = gdImageCreateFromGd2(FILE_POINTER_FOR_CREATE_FROM); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Gd2 File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid Gd2 File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -207,7 +227,7 @@ img_from_gd2(klass, f) VALUE klass, f; { - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -215,9 +235,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd2(fdopen(fptr->fd, "r")); + iptr = gdImageCreateFromGd2(FILE_POINTER_FOR_CREATE_FROM); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Gd2 File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid Gd2 File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -227,7 +247,7 @@ VALUE klass, fname, srcx, srcy, w, h; { VALUE f; - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -237,10 +257,10 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd2Part(fdopen(fptr->fd, "r"), NUM2INT(srcx), + iptr = gdImageCreateFromGd2Part(FILE_POINTER_FOR_CREATE_FROM, NUM2INT(srcx), NUM2INT(srcy), NUM2INT(w), NUM2INT(h)); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Gd2 File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid Gd2 File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -249,7 +269,7 @@ img_from_gd2_part(klass, f, srcx, srcy, w, h) VALUE klass, f, srcx, srcy, w, h; { - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -257,10 +277,10 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd2Part(fdopen(fptr->fd, "r"), NUM2INT(srcx), + iptr = gdImageCreateFromGd2Part(FILE_POINTER_FOR_CREATE_FROM, NUM2INT(srcx), NUM2INT(srcy), NUM2INT(w), NUM2INT(h)); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Gd2 File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid Gd2 File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -270,7 +290,7 @@ img_from_xbm(klass, f) VALUE klass, f; { - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -278,9 +298,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromXbm(fdopen(fptr->fd, "r")); + iptr = gdImageCreateFromXbm(FILE_POINTER_FOR_CREATE_FROM); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Xbm File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid Xbm File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -290,7 +310,7 @@ VALUE klass, fname; { VALUE f; - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -300,9 +320,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromXbm(fdopen(fptr->fd, "r")); + iptr = gdImageCreateFromXbm(FILE_POINTER_FOR_CREATE_FROM); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Xbm File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid Xbm File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -312,7 +332,7 @@ img_from_xpm(klass, f) VALUE klass, f; { - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -321,9 +341,9 @@ rb_io_check_readable(fptr); /* need cast, and the argument is char* type */ - iptr = (gdImagePtr)gdImageCreateFromXpm(fptr->path); + iptr = (gdImagePtr)gdImageCreateFromXpm(FPTR_PATH); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid XPM File", (char*)fptr->path); + rb_raise(rb_eArgError, "%s is not a valid XPM File", (char*)FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -333,7 +353,7 @@ VALUE klass, fname; { VALUE f; - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -344,9 +364,9 @@ rb_io_check_readable(fptr); /* need cast, and the argument is char* type */ - iptr = (gdImagePtr)gdImageCreateFromXpm(fptr->path); + iptr = (gdImagePtr)gdImageCreateFromXpm(FPTR_PATH); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid XPM File", (char*)fptr->path); + rb_raise(rb_eArgError, "%s is not a valid XPM File", (char*)FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -358,7 +378,7 @@ img_from_jpeg(klass, f) VALUE klass, f; { - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -366,9 +386,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromJpeg(fdopen(fptr->fd, "r")); + iptr = gdImageCreateFromJpeg(FILE_POINTER_FOR_CREATE_FROM); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Jpeg File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid Jpeg File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -378,7 +398,7 @@ VALUE klass, fname; { VALUE f; - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -388,9 +408,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromJpeg(fdopen(fptr->fd, "r")); + iptr = gdImageCreateFromJpeg(FILE_POINTER_FOR_CREATE_FROM); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Jpeg File", (char*)fptr->pathv); + rb_raise(rb_eArgError, "%s is not a valid Jpeg File", FPTR_PATH); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -1498,7 +1518,7 @@ VALUE img, out; { gdImagePtr im; - rb_io_t *fptr; + FPTR_TYPE *fptr; FILE *f; Data_Get_Struct(img, gdImage, im); @@ -1507,7 +1527,7 @@ GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = rb_io_stdio_file(fptr); + f = SECOND_FILE_POINTER; gdImagePng(im, f); return img; @@ -1542,7 +1562,7 @@ VALUE img, out; { gdImagePtr im; - rb_io_t *fptr; + FPTR_TYPE *fptr; FILE *f; Data_Get_Struct(img, gdImage, im); @@ -1581,7 +1601,7 @@ VALUE img, out; { gdImagePtr im; - rb_io_t *fptr; + FPTR_TYPE *fptr; FILE *f; Data_Get_Struct(img, gdImage, im); @@ -1589,7 +1609,7 @@ rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = rb_io_stdio_file(fptr); + f = SECOND_FILE_POINTER; gdImageGd(im, f); @@ -1600,7 +1620,7 @@ img_gd2(img, out, cs, fmt) VALUE img, out, cs, fmt; { - rb_io_t *fptr; + FPTR_TYPE *fptr; gdImagePtr im; FILE *f; @@ -1608,7 +1628,7 @@ rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = rb_io_stdio_file(fptr); + f = SECOND_FILE_POINTER; Data_Get_Struct(img, gdImage, im); gdImageGd2(im, f, NUM2INT(cs), NUM2INT(fmt)); @@ -1623,7 +1643,7 @@ VALUE img, out, quality; { gdImagePtr im; - rb_io_t *fptr; + FPTR_TYPE *fptr; FILE *f; Data_Get_Struct(img, gdImage, im); @@ -1633,7 +1653,7 @@ rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = rb_io_stdio_file(fptr); + f = SECOND_FILE_POINTER; gdImageJpeg(im, f, FIX2INT(quality)); @@ -1668,7 +1688,7 @@ VALUE img, out, fg; { gdImagePtr im; - rb_io_t *fptr; + FPTR_TYPE *fptr; FILE *f; Data_Get_Struct(img, gdImage, im); @@ -1678,7 +1698,7 @@ rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = rb_io_stdio_file(fptr); + f = SECOND_FILE_POINTER; gdImageWBMP(im, FIX2INT(fg), f); --- a/extconf.rb +++ b/extconf.rb @@ -24,7 +24,11 @@ dir_config("gd", "/usr/local/include", "/usr/local/lib") +have_header('ruby/io.h') +if have_type("rb_io_t", ["ruby.h", "rubyio.h"]) + have_struct_member("rb_io_t", "fd", ["ruby.h", "rubyio.h"]) +end if with_config("xpm") dir_config("X11", "/usr/X11R6/include", "/usr/X11R6/lib") debian/patches/fix-memory-leak.patch0000644000000000000000000000154112257317136014654 0ustar Description: Fixed a memory leak when creating a GD image from a file. The macro was incorrectly reopening the file, leaving it unreferenced and open after the GD image was created. Altered to use the Ruby function to reference the FILE pointer. From: Mark Somerville Origin: https://github.com/Spakman/ruby-gd/commit/0c57d637d42e659815ab8d970b8635cc01b7aac0 Last-Update: 2010-02-18 diff --git a/GD.c b/GD.c index 16ad506..44bed15 100644 --- a/GD.c +++ b/GD.c @@ -29,7 +29,7 @@ #if defined(HAVE_RUBY_IO_H) /* seems like Ruby > 1.8 */ #define FPTR_TYPE rb_io_t - #define FILE_POINTER_FOR_CREATE_FROM fdopen(fptr->fd, "r") + #define FILE_POINTER_FOR_CREATE_FROM rb_io_stdio_file(fptr) #define FPTR_PATH (char*)fptr->pathv #define SECOND_FILE_POINTER rb_io_stdio_file(fptr) #else -- 1.8.5.1 debian/patches/compatibility-with-ruby192.patch0000644000000000000000000000421012257317136016677 0ustar Description: Ruby 1.9.2 compatibility: STR2CSTR becomes StringValuePtr. From: Mark Somerville Origin: https://github.com/Spakman/ruby-gd/commit/eea4275372a53790d74d07d9c2dafc8e7565a0d4 Last-Update: 2010-03-03 --- a/GD.c +++ b/GD.c @@ -86,7 +86,7 @@ Check_Type(fname, T_STRING); - f = rb_file_open(STR2CSTR(fname), "r"); + f = rb_file_open(StringValuePtr(fname), "r"); rb_io_binmode(f); GetOpenFile(f, fptr); rb_io_check_readable(fptr); @@ -129,7 +129,7 @@ Check_Type(fname, T_STRING); - f = rb_file_open(STR2CSTR(fname), "r"); + f = rb_file_open(StringValuePtr(fname), "r"); rb_io_binmode(f); GetOpenFile(f, fptr); rb_io_check_readable(fptr); @@ -171,7 +171,7 @@ Check_Type(fname, T_STRING); - f = rb_file_open(STR2CSTR(fname), "r"); + f = rb_file_open(StringValuePtr(fname), "r"); rb_io_binmode(f); GetOpenFile(f, fptr); rb_io_check_readable(fptr); @@ -211,7 +211,7 @@ Check_Type(fname, T_STRING); - f = rb_file_open(STR2CSTR(fname), "r"); + f = rb_file_open(StringValuePtr(fname), "r"); rb_io_binmode(f); GetOpenFile(f, fptr); rb_io_check_readable(fptr); @@ -252,7 +252,7 @@ Check_Type(fname, T_STRING); - f = rb_file_open(STR2CSTR(fname), "r"); + f = rb_file_open(StringValuePtr(fname), "r"); rb_io_binmode(f); GetOpenFile(f, fptr); rb_io_check_readable(fptr); @@ -315,7 +315,7 @@ Check_Type(fname, T_STRING); - f = rb_file_open(STR2CSTR(fname), "r"); + f = rb_file_open(StringValuePtr(fname), "r"); rb_io_binmode(f); GetOpenFile(f, fptr); rb_io_check_readable(fptr); @@ -358,7 +358,7 @@ Check_Type(fname, T_STRING); - f = rb_file_open(STR2CSTR(fname), "r"); + f = rb_file_open(StringValuePtr(fname), "r"); rb_io_binmode(f); GetOpenFile(f, fptr); rb_io_check_readable(fptr); @@ -403,7 +403,7 @@ Check_Type(fname, T_STRING); - f = rb_file_open(STR2CSTR(fname), "r"); + f = rb_file_open(StringValuePtr(fname), "r"); rb_io_binmode(f); GetOpenFile(f, fptr); rb_io_check_readable(fptr); debian/patches/series0000644000000000000000000000022712257317165012044 0ustar fix-set-interlace-on-amd64.patch fix-compilation-with-ruby19.patch restore-ruby18-support.patch fix-memory-leak.patch compatibility-with-ruby192.patch debian/patches/fix-compilation-with-ruby19.patch0000644000000000000000000006633712257317136017070 0ustar Description: Made the extension compile and run under Ruby 1.9.1. This will currently break under 1.8. I needed to re-fdopen the files for the various gdCreateFrom* functions to avoid segfaults. I'm not sure why I had to do this. Line 1422 gives a warning that I can't solve just now too. The function that throws it hasn't been tested. From: Mark Somerville Origin: https://github.com/Spakman/ruby-gd/commit/92a42d1d4be4f13a87b7325e20d7d5f2841c7f90 Last-Update: 2009-09-09 --- a/GD.c +++ b/GD.c @@ -10,8 +10,7 @@ $Revision: 1.6.2.3 $ **************************************************************/ #include "ruby.h" -#include "rubyio.h" -#include "version.h" +#include "ruby/io.h" #include "gd.h" #include "gdfontg.h" /* giant */ @@ -62,7 +61,7 @@ VALUE klass, fname; { VALUE f; - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -72,9 +71,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromPng(fptr->f); + iptr = gdImageCreateFromPng(fdopen(fptr->fd, "r")); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid PNG File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid PNG File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -84,7 +83,7 @@ img_from_png(klass, f) VALUE klass, f; { - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -92,9 +91,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromPng(fptr->f); + iptr = gdImageCreateFromPng(fdopen(fptr->fd, "r")); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid PNG File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid PNG File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -105,7 +104,7 @@ VALUE klass, fname; { VALUE f; - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -115,9 +114,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGif(fptr->f); + iptr = gdImageCreateFromGif(fdopen(fptr->fd, "r")); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid GIF File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid GIF File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -126,7 +125,7 @@ img_from_gif(klass, f) VALUE klass, f; { - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -134,9 +133,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGif(fptr->f); + iptr = gdImageCreateFromGif(fdopen(fptr->fd, "r")); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid GIF File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid GIF File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -147,7 +146,7 @@ VALUE klass, fname; { VALUE f; - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -157,9 +156,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd(fptr->f); + iptr = gdImageCreateFromGd(fdopen(fptr->fd, "r")); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Gd File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid Gd File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -168,7 +167,7 @@ img_from_gd(klass, f) VALUE klass, f; { - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -176,9 +175,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd(fptr->f); + iptr = gdImageCreateFromGd(fdopen(fptr->fd, "r")); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Gd File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid Gd File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -187,7 +186,7 @@ VALUE klass, fname; { VALUE f; - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -197,9 +196,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd2(fptr->f); + iptr = gdImageCreateFromGd2(fdopen(fptr->fd, "r")); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Gd2 File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid Gd2 File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -208,7 +207,7 @@ img_from_gd2(klass, f) VALUE klass, f; { - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -216,9 +215,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd2(fptr->f); + iptr = gdImageCreateFromGd2(fdopen(fptr->fd, "r")); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Gd2 File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid Gd2 File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -228,7 +227,7 @@ VALUE klass, fname, srcx, srcy, w, h; { VALUE f; - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -238,10 +237,10 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd2Part(fptr->f, NUM2INT(srcx), + iptr = gdImageCreateFromGd2Part(fdopen(fptr->fd, "r"), NUM2INT(srcx), NUM2INT(srcy), NUM2INT(w), NUM2INT(h)); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Gd2 File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid Gd2 File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -250,7 +249,7 @@ img_from_gd2_part(klass, f, srcx, srcy, w, h) VALUE klass, f, srcx, srcy, w, h; { - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -258,10 +257,10 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromGd2Part(fptr->f, NUM2INT(srcx), + iptr = gdImageCreateFromGd2Part(fdopen(fptr->fd, "r"), NUM2INT(srcx), NUM2INT(srcy), NUM2INT(w), NUM2INT(h)); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Gd2 File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid Gd2 File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -271,7 +270,7 @@ img_from_xbm(klass, f) VALUE klass, f; { - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -279,9 +278,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromXbm(fptr->f); + iptr = gdImageCreateFromXbm(fdopen(fptr->fd, "r")); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Xbm File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid Xbm File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -291,7 +290,7 @@ VALUE klass, fname; { VALUE f; - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -301,9 +300,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromXbm(fptr->f); + iptr = gdImageCreateFromXbm(fdopen(fptr->fd, "r")); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Xbm File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid Xbm File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -313,7 +312,7 @@ img_from_xpm(klass, f) VALUE klass, f; { - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -324,7 +323,7 @@ /* need cast, and the argument is char* type */ iptr = (gdImagePtr)gdImageCreateFromXpm(fptr->path); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid XPM File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid XPM File", (char*)fptr->path); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -334,7 +333,7 @@ VALUE klass, fname; { VALUE f; - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -347,7 +346,7 @@ /* need cast, and the argument is char* type */ iptr = (gdImagePtr)gdImageCreateFromXpm(fptr->path); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid XPM File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid XPM File", (char*)fptr->path); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -359,7 +358,7 @@ img_from_jpeg(klass, f) VALUE klass, f; { - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(f, T_FILE); @@ -367,9 +366,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromJpeg(fptr->f); + iptr = gdImageCreateFromJpeg(fdopen(fptr->fd, "r")); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Jpeg File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid Jpeg File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -379,7 +378,7 @@ VALUE klass, fname; { VALUE f; - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr iptr; Check_Type(fname, T_STRING); @@ -389,9 +388,9 @@ GetOpenFile(f, fptr); rb_io_check_readable(fptr); - iptr = gdImageCreateFromJpeg(fptr->f); + iptr = gdImageCreateFromJpeg(fdopen(fptr->fd, "r")); if (!iptr) - rb_raise(rb_eArgError, "%s is not a valid Jpeg File", fptr->path); + rb_raise(rb_eArgError, "%s is not a valid Jpeg File", (char*)fptr->pathv); return Data_Wrap_Struct(klass,0,free_img,iptr); } @@ -418,12 +417,12 @@ Check_Type(hex, T_STRING); - if (RSTRING(hex)->len != 7) - rb_raise(rb_eArgError, "Invalid format: %s", RSTRING(hex)->ptr); + if (RSTRING_LEN(hex) != 7) + rb_raise(rb_eArgError, "Invalid format: %s", RSTRING_PTR(hex)); - rstr = rb_str_new(RSTRING(hex)->ptr + 1, 2); - gstr = rb_str_new(RSTRING(hex)->ptr + 3, 2); - bstr = rb_str_new(RSTRING(hex)->ptr + 5, 2); + rstr = rb_str_new(RSTRING_PTR(hex) + 1, 2); + gstr = rb_str_new(RSTRING_PTR(hex) + 3, 2); + bstr = rb_str_new(RSTRING_PTR(hex) + 5, 2); ret_ary = rb_ary_new(); @@ -459,9 +458,9 @@ ary = hex2triplet(rgbstr); c = gdImageColorAllocate(im, - NUM2INT(*(RARRAY(ary)->ptr)), - NUM2INT(*(RARRAY(ary)->ptr+1)), - NUM2INT(*(RARRAY(ary)->ptr+2))); + NUM2INT(*(RARRAY_PTR(ary))), + NUM2INT(*(RARRAY_PTR(ary)+1)), + NUM2INT(*(RARRAY_PTR(ary)+2))); return INT2FIX(c); } @@ -532,9 +531,9 @@ ary = hex2triplet(rgbstr); c = gdImageColorResolve(im, - NUM2INT(*(RARRAY(ary)->ptr)), - NUM2INT(*(RARRAY(ary)->ptr+1)), - NUM2INT(*(RARRAY(ary)->ptr+2))); + NUM2INT(*(RARRAY_PTR(ary))), + NUM2INT(*(RARRAY_PTR(ary)+1)), + NUM2INT(*(RARRAY_PTR(ary)+2))); return INT2FIX(c); } @@ -595,9 +594,9 @@ ary = hex2triplet(rgbstr); c = gdImageColorClosest(im, - NUM2INT(*(RARRAY(ary)->ptr)), - NUM2INT(*(RARRAY(ary)->ptr+1)), - NUM2INT(*(RARRAY(ary)->ptr+2))); + NUM2INT(*(RARRAY_PTR(ary))), + NUM2INT(*(RARRAY_PTR(ary)+1)), + NUM2INT(*(RARRAY_PTR(ary)+2))); return INT2FIX(c); } @@ -657,9 +656,9 @@ ary = hex2triplet(rgbstr); c = gdImageColorClosestHWB(im, - NUM2INT(*(RARRAY(ary)->ptr)), - NUM2INT(*(RARRAY(ary)->ptr+1)), - NUM2INT(*(RARRAY(ary)->ptr+2))); + NUM2INT(*(RARRAY_PTR(ary))), + NUM2INT(*(RARRAY_PTR(ary)+1)), + NUM2INT(*(RARRAY_PTR(ary)+2))); return INT2FIX(c); } @@ -717,9 +716,9 @@ ary = hex2triplet(rgbstr); c = gdImageColorExact(im, - NUM2INT(*(RARRAY(ary)->ptr)), - NUM2INT(*(RARRAY(ary)->ptr+1)), - NUM2INT(*(RARRAY(ary)->ptr+2))); + NUM2INT(*(RARRAY_PTR(ary))), + NUM2INT(*(RARRAY_PTR(ary)+1)), + NUM2INT(*(RARRAY_PTR(ary)+2))); return INT2FIX(c); } @@ -999,11 +998,11 @@ Data_Get_Struct(img, gdImage, im); poly_req(ply); - len = ply->len/2; + len = RARRAY_LEN(ply)/2; pnt = ALLOCA_N(gdPoint, len); for (i=0; iptr[i*2]); - pnt[i].y = NUM2INT(ply->ptr[i*2+1]); + pnt[i].x = NUM2INT(RARRAY_PTR(ply)[i*2]); + pnt[i].y = NUM2INT(RARRAY_PTR(ply)[i*2+1]); } gdImagePolygon(im, pnt, len, NUM2INT(c)); @@ -1024,11 +1023,11 @@ Data_Get_Struct(img, gdImage, im); poly_req(ply); - len = ply->len/2; + len = RARRAY_LEN(ply)/2; pnt = ALLOCA_N(gdPoint, len); for (i=0; iptr[i*2]); - pnt[i].y = NUM2INT(ply->ptr[i*2+1]); + pnt[i].x = NUM2INT(RARRAY_PTR(ply)[i*2]); + pnt[i].y = NUM2INT(RARRAY_PTR(ply)[i*2+1]); } gdImageFilledPolygon(im, pnt, len, NUM2INT(c)); @@ -1199,7 +1198,7 @@ font_req(fnt); Data_Get_Struct(fnt, gdFont, f); - gdImageString(im,f,NUM2INT(x),NUM2INT(y),RSTRING(str)->ptr,NUM2INT(c)); + gdImageString(im,f,NUM2INT(x),NUM2INT(y),(unsigned char*)RSTRING_PTR(str),NUM2INT(c)); return img; } @@ -1216,7 +1215,7 @@ font_req(fnt); Data_Get_Struct(fnt, gdFont, f); - gdImageStringUp(im,f,NUM2INT(x),NUM2INT(y),RSTRING(str)->ptr,NUM2INT(c)); + gdImageStringUp(im,f,NUM2INT(x),NUM2INT(y),(unsigned char*)RSTRING_PTR(str),NUM2INT(c)); return img; } @@ -1237,12 +1236,12 @@ msg = gdImageStringTTF(NULL, &brect[0], NUM2INT(fgcolor), - RSTRING(fontname)->ptr, + RSTRING_PTR(fontname), NUM2DBL(ptsize), NUM2DBL(angle), NUM2INT(x), NUM2INT(y), - RSTRING(string)->ptr); + RSTRING_PTR(string)); for (i=0; i<8; i++) { rb_ary_push(ary, INT2FIX(brect[i])); } @@ -1269,12 +1268,12 @@ msg = gdImageStringTTF(im, &brect[0], NUM2INT(fgcolor), - RSTRING(fontname)->ptr, + RSTRING_PTR(fontname), NUM2DBL(ptsize), NUM2DBL(angle), NUM2INT(x), NUM2INT(y), - RSTRING(string)->ptr); + RSTRING_PTR(string)); for (i=0; i<8; i++) { rb_ary_push(ary, INT2FIX(brect[i])); } @@ -1301,12 +1300,12 @@ msg = gdImageStringFT(NULL, &brect[0], NUM2INT(fgcolor), - RSTRING(fontname)->ptr, + RSTRING_PTR(fontname), NUM2DBL(ptsize), NUM2DBL(angle), NUM2INT(x), NUM2INT(y), - RSTRING(string)->ptr); + RSTRING_PTR(string)); for (i=0; i<8; i++) { rb_ary_push(ary, INT2FIX(brect[i])); } @@ -1333,12 +1332,12 @@ msg = gdImageStringFT(im, &brect[0], NUM2INT(fgcolor), - RSTRING(fontname)->ptr, + RSTRING_PTR(fontname), NUM2DBL(ptsize), NUM2DBL(angle), NUM2INT(x), NUM2INT(y), - RSTRING(string)->ptr); + RSTRING_PTR(string)); for (i=0; i<8; i++) { rb_ary_push(ary, INT2FIX(brect[i])); } @@ -1363,10 +1362,10 @@ Data_Get_Struct(fnt, gdFont, f); if (TYPE(ch) == T_STRING) { - if (RSTRING(ch)->len != 1) { - rb_raise(rb_eArgError, "string must be 1 byte(%d bytes)", RSTRING(ch)->len); + if (RSTRING_LEN(ch) != 1) { + rb_raise(rb_eArgError, "string must be 1 byte(%ld bytes)", RSTRING_LEN(ch)); } - ci = RSTRING(ch)->ptr[0]; + ci = RSTRING_PTR(ch)[0]; } else { ci = NUM2INT(ch); @@ -1389,10 +1388,10 @@ Data_Get_Struct(fnt, gdFont, f); if (TYPE(ch) == T_STRING) { - if (RSTRING(ch)->len != 1) { - rb_raise(rb_eArgError, "string must be 1 byte(%d bytes)", RSTRING(ch)->len); + if (RSTRING_LEN(ch) != 1) { + rb_raise(rb_eArgError, "string must be 1 byte(%ld bytes)", RSTRING_LEN(ch)); } - ci = RSTRING(ch)->ptr[0]; + ci = RSTRING_PTR(ch)[0]; } else { ci = NUM2INT(ch); @@ -1499,7 +1498,7 @@ VALUE img, out; { gdImagePtr im; - OpenFile *fptr; + rb_io_t *fptr; FILE *f; Data_Get_Struct(img, gdImage, im); @@ -1507,8 +1506,8 @@ rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = (fptr->f2) ? fptr->f2 : fptr->f; + f = rb_io_stdio_file(fptr); gdImagePng(im, f); return img; @@ -1543,7 +1542,7 @@ VALUE img, out; { gdImagePtr im; - OpenFile *fptr; + rb_io_t *fptr; FILE *f; Data_Get_Struct(img, gdImage, im); @@ -1551,7 +1550,7 @@ rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = (fptr->f2) ? fptr->f2 : fptr->f; + f = rb_io_stdio_file(fptr); gdImageGif(im, f); @@ -1582,7 +1581,7 @@ VALUE img, out; { gdImagePtr im; - OpenFile *fptr; + rb_io_t *fptr; FILE *f; Data_Get_Struct(img, gdImage, im); @@ -1590,7 +1589,7 @@ rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = (fptr->f2) ? fptr->f2 : fptr->f; + f = rb_io_stdio_file(fptr); gdImageGd(im, f); @@ -1601,7 +1600,7 @@ img_gd2(img, out, cs, fmt) VALUE img, out, cs, fmt; { - OpenFile *fptr; + rb_io_t *fptr; gdImagePtr im; FILE *f; @@ -1609,7 +1608,7 @@ rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = (fptr->f2) ? fptr->f2 : fptr->f; + f = rb_io_stdio_file(fptr); Data_Get_Struct(img, gdImage, im); gdImageGd2(im, f, NUM2INT(cs), NUM2INT(fmt)); @@ -1624,7 +1623,7 @@ VALUE img, out, quality; { gdImagePtr im; - OpenFile *fptr; + rb_io_t *fptr; FILE *f; Data_Get_Struct(img, gdImage, im); @@ -1634,7 +1633,7 @@ rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = (fptr->f2) ? fptr->f2 : fptr->f; + f = rb_io_stdio_file(fptr); gdImageJpeg(im, f, FIX2INT(quality)); @@ -1669,7 +1668,7 @@ VALUE img, out, fg; { gdImagePtr im; - OpenFile *fptr; + rb_io_t *fptr; FILE *f; Data_Get_Struct(img, gdImage, im); @@ -1679,7 +1678,7 @@ rb_io_binmode(out); GetOpenFile(out, fptr); rb_io_check_writable(fptr); - f = (fptr->f2) ? fptr->f2 : fptr->f; + f = rb_io_stdio_file(fptr); gdImageWBMP(im, FIX2INT(fg), f); @@ -1725,9 +1724,9 @@ NUM2INT(dx); NUM2INT(dy); - if (RARRAY(ply)->len > 0) { - x = rb_ary_entry(ply, RARRAY(ply)->len - 2); - y = rb_ary_entry(ply, RARRAY(ply)->len - 1); + if (RARRAY_LEN(ply) > 0) { + x = rb_ary_entry(ply, RARRAY_LEN(ply) - 2); + y = rb_ary_entry(ply, RARRAY_LEN(ply) - 1); rb_ary_push(ply, INT2NUM(NUM2INT(x) + NUM2INT(dx))); rb_ary_push(ply, INT2NUM(NUM2INT(y) + NUM2INT(dy))); } else { @@ -1742,7 +1741,7 @@ { int i = NUM2INT(idx); - if (RARRAY(ply)->len < idx) return Qnil; + if (RARRAY_LEN(ply) < idx) return Qnil; i *= 2; return rb_assoc_new(rb_ary_entry(ply, i), rb_ary_entry(ply, i+1)); @@ -1780,7 +1779,7 @@ ply_length(ply) VALUE ply; { - return INT2FIX(RARRAY(ply)->len / 2); + return INT2FIX(RARRAY_LEN(ply) / 2); } static VALUE @@ -1788,10 +1787,10 @@ struct RArray *ply; { int i; - VALUE ary = rb_ary_new2(ply->len/2); + VALUE ary = rb_ary_new2(RARRAY_LEN(ply)/2); - for (i = 0; ilen; i+=2) { - rb_ary_push(ary, rb_assoc_new(ply->ptr[i], ply->ptr[i+1])); + for (i = 0; ilen == 0) { + if (RARRAY_LEN(ply) == 0) { l = t = r = b = 0; } else { - l = r = NUM2INT(ply->ptr[0]); - t = b = NUM2INT(ply->ptr[1]); + l = r = NUM2INT(RARRAY_PTR(ply)[0]); + t = b = NUM2INT(RARRAY_PTR(ply)[1]); } - for (i = 2; ilen; i+=2) { - nx = NUM2INT(ply->ptr[i]); + for (i = 2; i r) r = nx; - ny = NUM2INT(ply->ptr[i+1]); + ny = NUM2INT(RARRAY_PTR(ply)[i+1]); if (ny < t) t = ny; if (ny > b) b = ny; } @@ -1831,11 +1830,11 @@ x = NUM2INT(vx); y = NUM2INT(vy); - for (i = 0; ilen; i+=2) { - c = NUM2INT(ply->ptr[i]) + x; - ply->ptr[i] = INT2FIX(c); - c = NUM2INT(ply->ptr[i+1]) + y; - ply->ptr[i+1] = INT2FIX(c); + for (i = 0; ilen == 0) { + if (RARRAY_LEN(ply) == 0) { l = t = r = b = 0; } else { - l = r = NUM2INT(ply->ptr[0]); - t = b = NUM2INT(ply->ptr[1]); + l = r = NUM2INT(RARRAY_PTR(ply)[0]); + t = b = NUM2INT(RARRAY_PTR(ply)[1]); } - for (i = 2; ilen; i+=2) { - nx = NUM2INT(ply->ptr[i]); + for (i = 2; i r) r = nx; - ny = NUM2INT(ply->ptr[i+1]); + ny = NUM2INT(RARRAY_PTR(ply)[i+1]); if (ny < t) t = ny; if (ny > b) b = ny; } @@ -1894,14 +1893,14 @@ rb_raise(rb_eArgError, "wrong # of arguments (%d for 4 or 8)", argc); } - for (i = 0; ilen; i+=2) { - c = NUM2INT(ply->ptr[i]); + for (i = 0; iptr[i] = INT2FIX(c); + RARRAY_PTR(ply)[i] = INT2FIX(c); - c = NUM2INT(ply->ptr[i+1]); + c = NUM2INT(RARRAY_PTR(ply)[i+1]); c = (c-sy)*ymag+dy; - ply->ptr[i+1] = INT2FIX(c); + RARRAY_PTR(ply)[i+1] = INT2FIX(c); } return (VALUE)ply; @@ -1914,11 +1913,11 @@ int i; VALUE x, y; - for (i = 0; i < RARRAY(ply)->len / 2; i++) { + for (i = 0; i < RARRAY_LEN(ply) / 2; i++) { /* x = rb_ary_entry(ply, i * 2); y = rb_ary_entry(ply, i * 2 + 1);*/ - x = RARRAY(ply)->ptr[i * 2]; - y = RARRAY(ply)->ptr[i * 2 + 1]; + x = RARRAY_PTR(ply)[i * 2]; + y = RARRAY_PTR(ply)[i * 2 + 1]; ply_set_pt(ply, INT2NUM(i), INT2NUM(NUM2DBL(a) * NUM2INT(x) + NUM2DBL(c) * NUM2INT(y) + NUM2INT(tx)), INT2NUM(NUM2DBL(b) * NUM2INT(x) + NUM2DBL(d) * NUM2INT(y) + NUM2INT(ty))); @@ -1968,7 +1967,7 @@ struct RString *name; { Check_Type(name, T_STRING); - return fnt_new(name->ptr); + return fnt_new(RSTRING_PTR(name)); } static VALUE @@ -2060,9 +2059,9 @@ ary = hex2triplet(rgbstr); c = gdImageColorAllocateAlpha(im, - NUM2INT(*(RARRAY(ary)->ptr)), - NUM2INT(*(RARRAY(ary)->ptr+1)), - NUM2INT(*(RARRAY(ary)->ptr+2)), + NUM2INT(*(RARRAY_PTR(ary))), + NUM2INT(*(RARRAY_PTR(ary)+1)), + NUM2INT(*(RARRAY_PTR(ary)+2)), NUM2INT(a)); return INT2NUM(c); } @@ -2122,9 +2121,9 @@ ary = hex2triplet(rgbstr); c = gdImageColorResolveAlpha(im, - NUM2INT(*(RARRAY(ary)->ptr)), - NUM2INT(*(RARRAY(ary)->ptr+1)), - NUM2INT(*(RARRAY(ary)->ptr+2)), + NUM2INT(*(RARRAY_PTR(ary))), + NUM2INT(*(RARRAY_PTR(ary)+1)), + NUM2INT(*(RARRAY_PTR(ary)+2)), NUM2INT(a)); return INT2NUM(c); } @@ -2183,9 +2182,9 @@ ary = hex2triplet(rgbstr); c = gdImageColorClosestAlpha(im, - NUM2INT(*(RARRAY(ary)->ptr)), - NUM2INT(*(RARRAY(ary)->ptr+1)), - NUM2INT(*(RARRAY(ary)->ptr+2)), + NUM2INT(*(RARRAY_PTR(ary))), + NUM2INT(*(RARRAY_PTR(ary)+1)), + NUM2INT(*(RARRAY_PTR(ary)+2)), NUM2INT(a)); return INT2NUM(c); } @@ -2245,9 +2244,9 @@ ary = hex2triplet(rgbstr); c = gdImageColorExactAlpha(im, - NUM2INT(*(RARRAY(ary)->ptr)), - NUM2INT(*(RARRAY(ary)->ptr+1)), - NUM2INT(*(RARRAY(ary)->ptr+2)), + NUM2INT(*(RARRAY_PTR(ary))), + NUM2INT(*(RARRAY_PTR(ary)+1)), + NUM2INT(*(RARRAY_PTR(ary)+2)), NUM2INT(a)); return INT2NUM(c); } @@ -2311,9 +2310,9 @@ int c; VALUE ary; ary = hex2triplet(rgbstr); - c = gdTrueColor(NUM2INT(*(RARRAY(ary)->ptr)), - NUM2INT(*(RARRAY(ary)->ptr+1)), - NUM2INT(*(RARRAY(ary)->ptr+2))); + c = gdTrueColor(NUM2INT(*(RARRAY_PTR(ary))), + NUM2INT(*(RARRAY_PTR(ary)+1)), + NUM2INT(*(RARRAY_PTR(ary)+2))); return INT2NUM(c); } @@ -2365,9 +2364,9 @@ int c; VALUE ary; ary = hex2triplet(rgbstr); - c = gdTrueColorAlpha(NUM2INT(*(RARRAY(ary)->ptr)), - NUM2INT(*(RARRAY(ary)->ptr+1)), - NUM2INT(*(RARRAY(ary)->ptr+2)), + c = gdTrueColorAlpha(NUM2INT(*(RARRAY_PTR(ary))), + NUM2INT(*(RARRAY_PTR(ary)+1)), + NUM2INT(*(RARRAY_PTR(ary)+2)), NUM2INT(a)); return INT2NUM(c); } debian/ruby-gd.examples0000644000000000000000000000001112247173650012276 0ustar sample/*