[#18226] Ruby 本ってば、うれしいなー — Atsuko Yoshida <atsuko@...>
こんにちは〜。久しぶりです。あつこです。
[#18233] [book] blade.nagaokaut.ac.jp/ruby/ruby-list/ — Shin-ichiro Hara <sinara@...>
原です。
けいじゅ@日本ラショナルソフトウェアです.
原です。
これつぐです。
けいじゅ@日本ラショナルソフトウェアです.
これつぐです。
けいじゅ@日本ラショナルソフトウェアです.
原です。
[#18265] アクセス制御について — Tadashige Morii <m_tada@...>
森井です。
[#18293] [book] 新宿紀伊國屋売り上げ情報 — Noritsugu Nakamura <nnakamur@...>
[#18332] rubyTk の Tk は何がお勧めですか? — Sakae Kobayashi <sakae@...>
小林栄と申します。
[#18338] オブジェクトの非同一性判定 — Ayanosuke <aya@...>
綾乃介です。
いわおかです。
綾乃介です。
[#18348] Is there ext/GD for gd-1.7.x — "OGAWA, Hiroshi Santa" <santa@...>
Ruby本買って目から鱗を落としながら読んでいます。
[#18361] Proc in a loop — ttate@...
立石です。
[#18374] regular pattern — Katsuya Tanaka <tanaka@...>
まつもと ゆきひろです
[#18408] [BUG] debug.rb(?) — Chikanaga Tomoyuki <hekitou@...>
近永です。
[#18420] bindrv on oracle — 中村暁史 Nakamura Akifumi <BXQ04723@...>
[#18447] mswin32 でのファイル名の大 / 小文字 — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
[#18467] Array doesn't include Comparable — kjana@... (YANAGAWA Kazuhisa)
Array#<=> が定義されてるのに not Array < Comparable なのは何か理由があ
[#18476] paramclass — gotoken@... (GOTO Kentaro)
ごとけんです
[#18485] Linux magazine 12/1999 — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
なひです.
[#18494] `make test' failure on Cygwin build w/ --enable-shared — Mimpei MORISHITA <mimpei@...>
森下 @ CAC と申します。
[#18501] 関数 ` の動作 — Keisuke CHIBA <chiba@...>
ちばと申します.
[#18517] 自分の IP を獲得する方法 — Suguru Kakishita <kakky@...>
柿下です
[#18526] アイコンコンテスト(ファイル用) — Hoshino Hitoshi <zin@...>
星野(Zin)と申します。
[#18533] cover animal for Ruby book — Koretsugu Daigoro <tmmcross@...>
これつぐです。
[#18539] [book] $*, etc. — Yasuhiro Fukuma <yasuf@...>
福間@福岡 です。
ごとけんです
At Mon, 15 Nov 1999 17:49:27 +0900,
ごとけんです
小林です。
[#18545] 変数の型チェック — "Hideaki Takata" <hideakit@...3.dion.ne.jp>
高田です。
[#18580] — tokoma@... (中川 誠)
中川です。
もとの質問のかたとは別の中川です。
中川です。
中川です。長文で失礼します。
中川です。
まつもと ゆきひろです
中川です。
えぐち@エスアンドイー です。
中川です。
えぐち@エスアンドイー です。
中川です。
えぐち@エスアンドイー です。
まつもと ゆきひろです
えぐち@エスアンドイー です。
中川です。
えぐち@エスアンドイー です。
中川です。
えぐち@エスアンドイー です。
中川です。
えぐち@エスアンドイー です。
中川です。
えぐち@エスアンドイー です。
[#18582] Regexp source — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp>
こんばんは、ZnZです。
新井です。
[#18584] [REQ] [].grep(pat) #=> [] — gotoken@... (GOTO Kentaro)
ごとけんです
立石です。
[#18603] coding style — Shugo Maeda <shugo@...>
前田です。
[#18608] swigruby-0.3 — Masaki Fukushima <fukusima@...>
福嶋です。
[#18632] header output in eruby — TAKEUCHi Kahori <take-k@...>
こんにちは、たけうちと申します。
[#18637] constant? — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。
わたなべです.
もりきゅうです。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです
あおきです。
[#18638] fibonacci — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。
[#18666] FileTest on NT — Keisuke CHIBA <chiba@...>
ちばと申します.
[#18668] rand — Ito Kazumitsu <ito@...>
伊藤と申します。
[#18687] Re: header output in eruby — TAKEUCHi Kahori (竹内かほり) <take-k@...>
たけうちです。
[#18709] ADO にて datetime 型の取得 — Takashi SHIODA <tsio@...>
塩田です。
助田です.
オレンジソフト塩田です。
助田です.
わたなべです.
なひです.
[#18712] Re: header output in eruby — TAKEUCHi Kahori <take-k@...>
たけうちです。
なひです.
まつもと ゆきひろです
まつもと ゆきひろです
なひです.
[#18741] Re: Why Mix-in? (Re: [book] $*, etc.) — Toyofuku <toyofuku@...>
豊福です。
まつもと ゆきひろです
[#18773] [Q] mod_ruby を使用したスクリプトについて — Yamada Kenji <kyamada@...>
[#18788] super — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp>
こんばんは、ZnZです。
[#18801] Re: super — Kazuhiro Yoshida <moriq.kazuhiro@...>
もりきゅうです。ちょいと長文。
[#18807] protected なメソッドの再定義 — YAMASHITA Junji (山下 純司) <ys_jyunji@...>
山下 純司です。
[#18830] mod_ruby-0.1.4 — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
In message "[ruby-list:18830] mod_ruby-0.1.4"
高橋征義です。
なひです.
高橋です。
[#18833] delete array member inside each block — Kikutani Makoto <kikutani@...>
たとえば、「整数の配列の偶数メンバーだけ消す」みたいのは
[#18852] Re: Why Mix-in? (Re: [book] $*, etc.) — Toyofuku <toyofuku@...>
豊福です。
[#18853] initializer polymorphism? — Takeyuki Watadani <watadani@...>
渡谷といいます。
In message "[ruby-list:18853] initializer polymorphism?"
渡谷です。すばやい回答ありがとうございます。
ごとけんです
福嶋です。
ごとけんです
石橋秀仁です。無用の情報です。
立石です。
[#18868] Singleton の instance が複数になることがある — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp>
こんばんは、ZnZです。
[#18896] Database and Object Oriented Programming — Akihiro Yamauchi <aygoofy@...>
こんばんは。
[#18911] Re: eRuby 変換後の無駄 (?) な改行 — TAKEUCHi Kahori <take-k@...>
たけうちです。
松尾です。
前田です。
こんばんは、ZnZです。
前田です。
[#18914] Ruby standard GUI framework? — Hideto ISHIBASHI <s34204@...>
石橋秀仁です。
石橋秀仁です。
石橋秀仁です。
石橋秀仁です。
田中@ISASです。ruby-listの方は初めてです。よろしくおねがいします。
たかたです。
石橋秀仁です。
石橋秀仁%オープンソース原理主義者です。
In message <19991206121518W.s34204@vip.cis.kurume-nct.ac.jp>
[#18941] ruby-1.4.2 for Human68k について — IWATSUKI Hiroyuki <don@...>
はじめまして、岩月と申します。
[#18948] 他言語との比較 — とみたまさひろ <tommy@...>
とみたです。
[#18961] or と || の違い — Ayanosuke <aya@...>
館林と申します。
川戸と申します。はじめまして。
[#18994] ftplib で日付の詳細な list を得たい — Hiroshi Saito <HiroshiSaito@...>
こんにちは、サイトウです。
[ruby-list:18412] Re: Is there ext/GD for gd-1.7.x
中村 のりつぐ です。
In article <19991104123734W.msato@iis.u-tokyo.ac.jp>
Masahiro SATO <m@sa.to> wrote:
> > どこかに Ruby 1.4と gdの最近の版に対応した ext/GDってあるのでしょうか?
>
> [ruby-ext:450] がそうだと思います. [ruby-ext:451] も御覧下さい.
フォローありがとうございます。
[ruby-ext:00450] patch for GD-0.6.2
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-ext/450
で私がパッチを流しました。
GD 拡張ライブラリの作者であらせられる
まつもとさんからパッケージにしてねと言われたのですが、
[ruby-ext:00450] にも書いた問題が解決できなかったので、
ほっとかれています。すいません。
おまけに、一部 ArgError を rb_raise(rb_eArgError, でなく
rb_raise(rb_eTypeError, に間違えて変更していたようです。
# rename.rb を使わなかったからだ!
ということで、もう一度パッチを最後に付けます。
(ruby-list にパッチを流すのは気が引けるのですが…)
[ruby-ext:00450]のパッチでは、png を使用するには手で
-DGD_PNG を付けなければいけなかったのですが、ruby 本の
p.445 によると have_func(func) では HAVE_FUNC という
マクロ変数が定義されるらしいので、それを使用することに
しました。have_func("gdImagePng") で
ruby 本だけでは、extconf.rb の正しい記述方法が
理解できなかったので、私には作れませんでした。
多分以下のような FLAG ができるように記述するのでしょうが。
gif バージョンの gd がある
DLDFLAGS, LIBS += -lgd -lm
VFlib が同時にリンクされている
DLDFLAGS, LIBS += -lgd -lVFlib -lm
png バージョンの gd がある
CFLAGS += -DHAVE_GDIMAGEPNG
DLDFLAGS, LIBS += -lgd -lm -lz -lpng
ttf が同時にリンクされている
CFLAGS += -DHAVE_GDIMAGEPNG
DLDFLAGS, LIBS += -lgd -lm -lz -lpng -lttf ???
# 依存関係があるライブラリについても簡単に
# 書けるようになるといいなあ〜 > mkmf
--- GD.c.org Sat May 8 22:01:05 1999
+++ GD.c Thu Nov 4 22:24:09 1999
@@ -40,7 +40,11 @@
}
static VALUE
+#ifdef HAVE_GDIMAGEPNG
+img_from_png(class, f)
+#else
img_from_gif(class, f)
+#endif
VALUE class, f;
{
VALUE img;
@@ -48,11 +52,15 @@
gdImagePtr iptr;
Check_Type(f, T_FILE);
- io_binmode(f);
+ rb_io_binmode(f);
GetOpenFile(f, fptr);
- io_readable(fptr);
+ rb_io_check_readable(fptr);
+#ifdef HAVE_GDIMAGEPNG
+ iptr = gdImageCreateFromPng(fptr->f);
+#else
iptr = gdImageCreateFromGif(fptr->f);
+#endif
return Data_Wrap_Struct(class,0,free_img,iptr);
}
@@ -65,9 +73,9 @@
gdImagePtr iptr;
Check_Type(f, T_FILE);
- io_binmode(f);
+ rb_io_binmode(f);
GetOpenFile(f, fptr);
- io_readable(fptr);
+ rb_io_check_readable(fptr);
iptr = gdImageCreateFromGd(fptr->f);
return Data_Wrap_Struct(class,0,free_img,iptr);
@@ -82,9 +90,9 @@
gdImagePtr iptr;
Check_Type(f, T_FILE);
- io_binmode(f);
+ rb_io_binmode(f);
GetOpenFile(f, fptr);
- io_readable(fptr);
+ rb_io_check_readable(fptr);
iptr = gdImageCreateFromXbm(fptr->f);
return Data_Wrap_Struct(class,0,free_img,iptr);
@@ -195,18 +203,18 @@
VALUE img, idx;
{
gdImagePtr im;
- VALUE ary = ary_new2(3);
+ VALUE ary = rb_ary_new2(3);
int i, c;
Data_Get_Struct(img, gdImage, im);
i = NUM2INT(idx);
c = gdImageRed(im, i);
- ary_push(ary, INT2FIX(c));
+ rb_ary_push(ary, INT2FIX(c));
c = gdImageGreen(im, i);
- ary_push(ary, INT2FIX(c));
+ rb_ary_push(ary, INT2FIX(c));
c = gdImageBlue(im, i);
- ary_push(ary, INT2FIX(c));
+ rb_ary_push(ary, INT2FIX(c));
return ary;
}
@@ -228,8 +236,8 @@
image_req(img)
VALUE img;
{
- if (!obj_is_kind_of(img, cImage)) {
- TypeError("GD::Image required");
+ if (!rb_obj_is_kind_of(img, cImage)) {
+ rb_raise(rb_eTypeError, "GD::Image required");
}
}
@@ -336,8 +344,8 @@
poly_req(ply)
VALUE ply;
{
- if (!obj_is_kind_of(ply, cPolygon) || TYPE(ply) != T_ARRAY) {
- TypeError("GD::Polygon required");
+ if (!rb_obj_is_kind_of(ply, cPolygon) || TYPE(ply) != T_ARRAY) {
+ rb_raise(rb_eTypeError, "GD::Polygon required");
}
}
@@ -461,8 +469,8 @@
font_req(fnt)
VALUE fnt;
{
- if (!obj_is_kind_of(fnt, cFont)) {
- TypeError("GD::Font required");
+ if (!rb_obj_is_kind_of(fnt, cFont)) {
+ rb_raise(rb_eTypeError, "GD::Font required");
}
}
@@ -514,7 +522,7 @@
if (TYPE(ch) == T_STRING) {
if (RSTRING(ch)->len != 1) {
- ArgError("string must be 1 byte(%d bytes)", RSTRING(ch)->len);
+ rb_raise(rb_eArgError, "string must be 1 byte(%d bytes)", RSTRING(ch)->len);
}
ci = RSTRING(ch)->ptr[0];
}
@@ -540,7 +548,7 @@
if (TYPE(ch) == T_STRING) {
if (RSTRING(ch)->len != 1) {
- ArgError("string must be 1 byte(%d bytes)", RSTRING(ch)->len);
+ rb_raise(rb_eArgError, "string must be 1 byte(%d bytes)", RSTRING(ch)->len);
}
ci = RSTRING(ch)->ptr[0];
}
@@ -560,9 +568,9 @@
Data_Get_Struct(img, gdImage, im);
if (gdImageGetInterlaced(im)) {
- return TRUE;
+ return Qtrue;
}
- return FALSE;
+ return Qfalse;
}
static VALUE
@@ -581,14 +589,14 @@
VALUE img;
{
gdImagePtr im;
- VALUE ary = ary_new2(2);
+ VALUE ary = rb_ary_new2(2);
int i;
Data_Get_Struct(img, gdImage, im);
i = gdImageSX(im);
- ary_push(ary, INT2FIX(i));
+ rb_ary_push(ary, INT2FIX(i));
i = gdImageSY(im);
- ary_push(ary, INT2FIX(i));
+ rb_ary_push(ary, INT2FIX(i));
return ary;
}
@@ -618,7 +626,11 @@
}
static VALUE
+#ifdef HAVE_GDIMAGEPNG
+img_png(img, out)
+#else
img_gif(img, out)
+#endif
VALUE img, out;
{
gdImagePtr im;
@@ -627,12 +639,16 @@
Data_Get_Struct(img, gdImage, im);
Check_Type(out, T_FILE);
- io_binmode(out);
+ rb_io_binmode(out);
GetOpenFile(out, fptr);
- io_writable(fptr);
+ rb_io_check_writable(fptr);
f = (fptr->f2) ? fptr->f2 : fptr->f;
+#ifdef HAVE_GDIMAGEPNG
+ gdImagePng(im, f);
+#else
gdImageGif(im, f);
+#endif
return img;
}
@@ -647,9 +663,9 @@
Data_Get_Struct(img, gdImage, im);
Check_Type(out, T_FILE);
- io_binmode(out);
+ rb_io_binmode(out);
GetOpenFile(out, fptr);
- io_writable(fptr);
+ rb_io_check_writable(fptr);
f = (fptr->f2) ? fptr->f2 : fptr->f;
gdImageGd(im, f);
@@ -665,7 +681,7 @@
ply_new(klass)
VALUE klass;
{
- VALUE self = ary_new();
+ VALUE self = rb_ary_new();
RBASIC(self)->klass = klass;
return self;
@@ -679,8 +695,8 @@
NUM2INT(x);
NUM2INT(y);
- ary_push(ply, x);
- ary_push(ply, y);
+ rb_ary_push(ply, x);
+ rb_ary_push(ply, y);
return ply;
}
@@ -695,10 +711,10 @@
NUM2INT(dy);
if (RARRAY(ply)->len > 0) {
- x = ary_entry(ply, RARRAY(ply)->len - 2);
- y = ary_entry(ply, RARRAY(ply)->len - 1);
- ary_push(ply, INT2NUM(NUM2INT(x) + NUM2INT(dx)));
- ary_push(ply, INT2NUM(NUM2INT(y) + NUM2INT(dy)));
+ x = rb_ary_entry(ply, RARRAY(ply)->len - 2);
+ y = rb_ary_entry(ply, RARRAY(ply)->len - 1);
+ rb_ary_push(ply, INT2NUM(NUM2INT(x) + NUM2INT(dx)));
+ rb_ary_push(ply, INT2NUM(NUM2INT(y) + NUM2INT(dy)));
} else {
ply_add_pt(ply, dx, dy);
}
@@ -714,7 +730,7 @@
if (RARRAY(ply)->len < idx) return Qnil;
i *= 2;
- return assoc_new(ary_entry(ply, i), ary_entry(ply, i+1));
+ return rb_assoc_new(rb_ary_entry(ply, i), rb_ary_entry(ply, i+1));
}
static VALUE
@@ -727,8 +743,8 @@
NUM2INT(x);
NUM2INT(y);
- ary_store(ply, i, x);
- ary_store(ply, i+1, y);
+ rb_ary_store(ply, i, x);
+ rb_ary_store(ply, i+1, y);
return ply;
}
@@ -739,8 +755,8 @@
{
int i = NUM2INT(idx)*2;
- ary_delete_at(ply, INT2FIX(i));
- ary_delete_at(ply, INT2FIX(i+1));
+ rb_ary_delete_at(ply, INT2FIX(i));
+ rb_ary_delete_at(ply, INT2FIX(i+1));
return ply;
}
@@ -757,10 +773,10 @@
struct RArray *ply;
{
int i;
- VALUE ary = ary_new2(ply->len/2);
+ VALUE ary = rb_ary_new2(ply->len/2);
for (i = 0; i<ply->len; i+=2) {
- ary_push(ary, assoc_new(ply->ptr[i], ply->ptr[i+1]));
+ rb_ary_push(ary, rb_assoc_new(ply->ptr[i], ply->ptr[i+1]));
}
return ary;
}
@@ -787,7 +803,7 @@
if (ny < t) t = ny;
if (ny > b) b = ny;
}
- return ary_new3(4, INT2FIX(l), INT2FIX(t), INT2FIX(r), INT2FIX(b));
+ return rb_ary_new3(4, INT2FIX(l), INT2FIX(t), INT2FIX(r), INT2FIX(b));
}
static VALUE
@@ -860,7 +876,7 @@
(double)(NUM2INT(sb) - NUM2INT(st));
}
else {
- ArgError("wrong # of arguments (%d for 4 or 8)", argc);
+ rb_raise(rb_eArgError, "wrong # of arguments (%d for 4 or 8)", argc);
}
for (i = 0; i<ply->len; i+=2) {
@@ -927,7 +943,7 @@
if (strcmp(name, "Tiny") == 0) {
return fnt_create(gdFontTiny);
}
- ArgError("undefined font name `%s'", name);
+ rb_raise(rb_eArgError, "undefined font name `%s'", name);
}
static VALUE
@@ -983,9 +999,13 @@
Init_GD()
{
mGD = rb_define_module("GD");
- cImage = rb_define_class_under(mGD, "Image", cObject);
+ cImage = rb_define_class_under(mGD, "Image", rb_cObject);
rb_define_singleton_method(cImage, "new", img_s_new, 2);
+#ifdef HAVE_GDIMAGEPNG
+ rb_define_singleton_method(cImage, "newFromPng", img_from_png, 1);
+#else
rb_define_singleton_method(cImage, "newFromGif", img_from_gif, 1);
+#endif
rb_define_singleton_method(cImage, "newFromXbm", img_from_xbm, 1);
rb_define_singleton_method(cImage, "newFromGd", img_from_gd, 1);
rb_define_method(cImage, "destroy", img_destroy, 0);
@@ -1035,10 +1055,14 @@
rb_define_method(cImage, "width", img_width, 0);
rb_define_method(cImage, "height", img_height, 0);
+#ifdef HAVE_GDIMAGEPNG
+ rb_define_method(cImage, "png", img_png, 1);
+#else
rb_define_method(cImage, "gif", img_gif, 1);
+#endif
rb_define_method(cImage, "gd", img_gd, 1);
- cPolygon = rb_define_class_under(mGD, "Polygon", cObject);
+ cPolygon = rb_define_class_under(mGD, "Polygon", rb_cObject);
rb_define_singleton_method(cPolygon, "new", ply_new, 0);
rb_define_method(cPolygon, "addPt", ply_add_pt, 2);
@@ -1054,7 +1078,7 @@
rb_define_method(cPolygon, "transform", ply_transform, 6);
rb_define_method(cPolygon, "scale", ply_scale, 2);
- cFont = rb_define_class_under(mGD, "Font", cObject);
+ cFont = rb_define_class_under(mGD, "Font", rb_cObject);
rb_define_singleton_method(cFont, "new", fnt_s_new, 1);
rb_define_const(cFont, "GiantFont", fnt_new("Giant"));
中村 典嗣 E-mail: nnakamur@mxq.mesh.ne.jp