[#1582] [BUG] Regexp — sinara@...

原です。あけましておめでとうございます。

16 messages 1997/01/06

[#1705] 正規表現 単独の ? — Sinichiro Dezawa <dezawa@...>

出沢です

14 messages 1997/01/15

[#1771] rectangle of canvas widget — Noritugu Nakamura <nnakamur@...>

18 messages 1997/01/19

[#1788] Text of TkCanvas — Noritugu Nakamura <nnakamur@...>

28 messages 1997/01/20
[#1800] Re: Text of TkCanvas — matz@... (Yukihiro Matsumoto) 1997/01/21

まつもと ゆきひろです.

[#1802] Re: Text of TkCanvas — Noritugu Nakamura <nnakamur@...> 1997/01/21

[#1806] Re: Text of TkCanvas — matz@... (Yukihiro Matsumoto) 1997/01/22

まつもと ゆきひろです.

[#1816] Re: Text of TkCanvas — Noritugu Nakamura <nnakamur@...> 1997/01/22

[#1819] Re: Text of TkCanvas — matz@... (Yukihiro Matsumoto) 1997/01/22

まつもと ゆきひろです.

[#1865] ruby-1.0-960124 available — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

25 messages 1997/01/24
[#1878] Re: ruby-1.0-960124 available — WATANABE Hirofumi <watanabe@...> 1997/01/27

わたなべです.

[#1879] Re: ruby-1.0-960124 available — matz@... (Yukihiro Matsumoto) 1997/01/27

まつもと ゆきひろです.

[#1880] Re: ruby-1.0-960124 available — WATANABE Hirofumi <watanabe@...> 1997/01/27

わたなべです.

[#1890] Re: ruby-1.0-960124 available — matz@... (Yukihiro Matsumoto) 1997/01/27

まつもと ゆきひろです.

[#1926] [Dist] Mutex module — keiju@... (Keiju ISHITSUKA)

けいじゅ@SHLジャパンです.

81 messages 1997/01/28
[#1929] Re: [Dist] Mutex module — matz@... (Yukihiro Matsumoto) 1997/01/29

まつもと ゆきひろです.

[#1934] Re: [Dist] Mutex module 1997/01/29

けいじゅ@SHLジャパンです.

[#1935] Re: [Dist] Mutex module — matz@... (Yukihiro Matsumoto) 1997/01/29

まつもと ゆきひろです.

[#1938] Re: [Dist] Mutex module 1997/01/29

けいじゅ@SHLジャパンです.

[#1940] Re: [Dist] Mutex module — matz@... (Yukihiro Matsumoto) 1997/01/29

まつもと ゆきひろです.

[#1944] Re: [Dist] Mutex module 1997/01/29

けいじゅ@SHLジャパンです.

[#1947] Re: [Dist] Mutex module — matz@... (Yukihiro Matsumoto) 1997/01/29

まつもと ゆきひろです.

[#1960] Re: [Dist] Mutex module — sinara@... 1997/01/30

原です。

[#1969] Re: [Dist] Mutex module 1997/01/30

けいじゅ@SHLジャパンです.

[#1978] Re: [Dist] Mutex module — sinara@... 1997/01/30

原です。

[#1986] Re: [Dist] Mutex module 1997/01/30

けいじゅ@SHLジャパンです.

[#1989] Array as list/tupple (Re: [Dist] Mutex module) — matz@... (Yukihiro Matsumoto) 1997/01/31

まつもと ゆきひろです.

[#2008] [Request] static var? (Re: Array as list/tupple) — sinara@... 1997/01/31

原です。

[#1953] open (file descriptor) — j_kuro@... (Jun Kuroda)

黒田です.

16 messages 1997/01/29

[ruby-list:1841] Re: GD.c revised

From: matz@... (Yukihiro Matsumoto)
Date: 1997-01-23 03:43:36 UTC
List: ruby-list #1841
まつもと ゆきひろです

In message "[ruby-list:1834] Re: GD.c revised"
    on 97/01/23, Noritugu Nakamura <nnakamur@tamaru.kuee.kyoto-u.ac.jp> writes:
|中村です。

|□□□ うまく動かないところ □□□
|
|<brushes.rb>
|im.setStyle(green,green,green,GD::Transparent,red,red,red,GD::Transparent)
|を入れると
|./brushes.rb:29: Uninitialized constant GD::Transparent
|と言われてしまう。

定数の定義忘れですね.追加しました.

|<polys.rb>
|poly.map(50,50,100,100,10,10,110,60)
|poly.map($poly->bounds,50,20,80,160)
|を入れると
|./polys.rb:28: [BUG] Segmentation fault
|Abort
|と言われてしまう。

これは問題が三つあります.まず,offsetとmapの計算結果が不正
な値になっていました.これが原因でSEGVが起きます.

次に,perlと違ってrubyでは配列は引数に展開されないので,

b = $poly->bounds
poly.map(b[0],b[1],b[2],b[3],50,20,80,160)

または

poly.map(*($poly->bounds+[50,20,80,160]))

などとする必要があります.しかし,この場合はもとのpolygonの
大きさを使っていますので,

poly.map(50,20,80,160)

としても同じ動作をします.

で,二つ目の問題は引数が5つ以上,8つ未満の時(今回は5つだった)
SEGVすることです.引数が4つの場合と8つの場合しかチェックして
いませんでした.

|<shapes.rb>
|im.charUp(GD::Font::MediumBoldFont,280,280,"Q",black)
|を入れると
|./shapes.rb:29: Uninitialized constant GD::Font::MediumBoldFont
|と言われてしまう。

これも定義忘れです.

んで,修正後は実行できたんですけど,手元にGD.pmを持って来て
いないので,正しい動作かどうかわかりません.GD.cのパッチを付
けておきますので,確認してみてください.
# 新幹線の中なので.
                                まつもと ゆきひろ /:|)

--- ext/GD/GD.c~	Thu Jan 23 09:56:30 1997
+++ ext/GD/GD.c	Thu Jan 23 09:51:12 1997
@@ -561,6 +561,30 @@
 }
 
 static VALUE
+img_width(img)
+    VALUE img;
+{
+    gdImagePtr im;
+    int i;
+
+    Get_Data_Struct(img, gdImage, im);
+    i = gdImageSX(im);
+    return INT2FIX(i);
+}
+
+static VALUE
+img_height(img)
+    VALUE img;
+{
+    gdImagePtr im;
+    int i;
+
+    Get_Data_Struct(img, gdImage, im);
+    i = gdImageSY(im);
+    return INT2FIX(i);
+}
+
+static VALUE
 img_gif(img, out)
     VALUE img, out;
 {
@@ -711,14 +735,16 @@
     struct RArray *ply;
     VALUE vx, vy;
 {
-    int i, x, y;
+    int i, x, y, c;
 
     x = NUM2INT(vx);
     y = NUM2INT(vy);
 
     for (i = 0; i<ply->len; i+=2) {
-	ply->ptr[i] += x;
-	ply->ptr[i+1] += y;
+	c = NUM2INT(ply->ptr[i]) + x;
+	ply->ptr[i] = INT2FIX(c);
+	c = NUM2INT(ply->ptr[i+1]) + y;
+	ply->ptr[i+1] = INT2FIX(c);
     }
 
     return (VALUE)ply;
@@ -733,9 +759,11 @@
     VALUE sl, st, sr, sb, dl, dt, dr, db;
     int sx, sy, dx, dy;
     double xmag, ymag;
-    int i;
+    int i, c;
+
+    i = rb_scan_args(argc,argv,"44",&sl,&st,&sr,&sb, &dl,&dt,&dr,&db);
 
-    if (rb_scan_args(argc,argv,"44",&sl,&st,&sr,&sb, &dl,&dt,&dr,&db) == 4) {
+    if (i == 4) {
 	int i, l, t, r, b;
 	int nx, ny;
 
@@ -762,7 +790,7 @@
 	xmag = (double)(NUM2INT(sr) - NUM2INT(sl))/(double)(r - l);
 	ymag = (double)(NUM2INT(sb) - NUM2INT(st))/(double)(b - t);
     }
-    else {
+    else if (i == 8) {
 	sx = NUM2INT(sl);
 	sy = NUM2INT(st);
 	dx = NUM2INT(dl);
@@ -772,10 +800,18 @@
 	ymag = (double)(NUM2INT(db) - NUM2INT(dt))/
 	    (double)(NUM2INT(sb) - NUM2INT(st));
     }
+    else {
+	ArgError("wrong # of arguments (%d for 4 or 8)", argc);
+    }
 
     for (i = 0; i<ply->len; i+=2) {
-	ply->ptr[i] = (ply->ptr[i]-sx)*xmag+dx;
-	ply->ptr[i+1] = (ply->ptr[i+1]-sy)*ymag+dy;
+	c = NUM2INT(ply->ptr[i]);
+	c = (c-sx)*xmag+dx;
+	ply->ptr[i] = INT2FIX(c);
+
+	c = NUM2INT(ply->ptr[i+1]);
+	c = (c-sy)*ymag+dy;
+	ply->ptr[i+1] = INT2FIX(c);
     }
 
     return (VALUE)ply;
@@ -881,15 +917,12 @@
 
     rb_define_method(cImage, "setBrush", img_set_blush, 1);
     rb_define_const(mGD, "Brushed", INT2FIX(gdBrushed));
-    rb_define_const(cImage, "Brushed", INT2FIX(gdBrushed));
     rb_define_method(cImage, "setStyle", img_set_style, -1);
     rb_define_const(mGD, "Styled", INT2FIX(gdStyled));
-    rb_define_const(cImage, "Styled", INT2FIX(gdStyled));
-    rb_define_const(cImage, "StyledBrushed", INT2FIX(gdStyledBrushed));
     rb_define_const(mGD, "StyledBrushed", INT2FIX(gdStyledBrushed));
     rb_define_method(cImage, "setTile", img_set_tile, 1);
     rb_define_const(mGD, "Tiled", INT2FIX(gdTiled));
-    rb_define_const(cImage, "Tiled", INT2FIX(gdTiled));
+    rb_define_const(mGD, "Transparent", INT2FIX(gdTransparent));
 
     rb_define_method(cImage, "setPixel", img_set_pixel, 3);
     rb_define_method(cImage, "line", img_line, 5);
@@ -915,6 +948,8 @@
     rb_define_method(cImage, "interlace=", img_set_interlace, 1);
 
     rb_define_method(cImage, "bounds", img_bounds, 0);
+    rb_define_method(cImage, "width", img_width, 0);
+    rb_define_method(cImage, "height", img_height, 0);
 
     rb_define_method(cImage, "gif", img_gif, 1);
     rb_define_method(cImage, "gd", img_gd, 1);
@@ -939,6 +974,7 @@
     rb_define_const(cFont, "SmallFont", fnt_new("Small"));
     rb_define_const(cFont, "LargeFont", fnt_new("Large"));
     rb_define_const(cFont, "MediumFont", fnt_new("Medium"));
+    rb_define_const(cFont, "MediumBoldFont", fnt_new("Medium"));
     rb_define_const(cFont, "TinyFont", fnt_new("Tiny"));
 
     rb_define_method(cFont, "nchars", fnt_nchars, 0);

In This Thread