[#1562] Re: rbdj1227.lzh —
わたなべです.
[#1582] [BUG] Regexp — sinara@...
原です。あけましておめでとうございます。
まつもと ゆきひろです
原です。
まつもと ゆきひろです.
[#1583] jchop — WATANABE Hirofumi <watanabe@...>
わたなべです. おめでとう.
[#1614] [tk] Cannot execute some samples — Eiji-usagi-MATSUmoto <ematsu@...>
まつもと@ぴーえふゆーと申します。はじめまして。
[#1625] matz has back! — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#1639] Script for making Index of Ruby Manual — s.suda@...
須田です。
[#1655] [Q] Use of '==', 'eql?' and 'hash' — sinara@...
原です。
[#1667] [Q] Use of Thread and Mutex — sinara@...
原です。
まつもと ゆきひろです.
原です。
原です。
[#1670] [Q] Timeout in Socket (Re: [Q] Use of Thread and Mutex) — sinara@...
原です。
まつもと ゆきひろです.
[#1677] ruby-1.0-970110 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです.
[#1682] 組み込みクラスのメソッド .htm — (Dezawa Shin-ichiro) <dezawa@...>
出沢です
[#1688] Ruby 1.0-970110 on NeXTSTEP — SHIROYAMA Takayuki <psi@...>
[#1705] 正規表現 単独の ? — Sinichiro Dezawa <dezawa@...>
出沢です
まつもと ゆきひろです
matz> rubyの使っているGNUの正規表現ルーチンのデフォルトではパター
わたなべです.
まつもと ゆきひろです.
[#1720] ruby 1.0-970116 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです.
[#1723] in-place edit on djgpp/win32 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです.
[#1753] Usage of Menu — Noritugu Nakamura <nnakamur@...>
[#1762] ruby 1.0-970118 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#1771] rectangle of canvas widget — Noritugu Nakamura <nnakamur@...>
原です。
まつもと ゆきひろです
原です。
まつもと ゆきひろです.
原です。
[#1788] Text of TkCanvas — Noritugu Nakamura <nnakamur@...>
まつもと ゆきひろです.
まつもと ゆきひろです.
まつもと ゆきひろです.
わたなべです.
[#1794] Filetest error on Ruby-DJ — s.suda@...
須田です。
[#1833] GD.c revised — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#1865] ruby-1.0-960124 available — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
わたなべです.
まつもと ゆきひろです.
わたなべです.
まつもと ゆきひろです.
まつもと@ぴーえふゆーです。
まつもと ゆきひろです.
まつもと@ぴーえふゆーです。
まつもと ゆきひろです.
まつもと@ぴーえふゆーです。
[#1871] None — (Dezawa Shin-ichiro) <dezawa@...>
でざわです
[#1875] toplevel of Tk — Noritugu Nakamura <nnakamur@...>
[#1899] [Dist] Mutex — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
[#1926] [Dist] Mutex module — keiju@... (Keiju ISHITSUKA)
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
けいじゅ@SHLジャパンです.
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
けいじゅ@SHLジャパンです.
原です。
けいじゅ@SHLジャパンです.
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
原です。
まつもと ゆきひろです.
原です。
出沢です
まつもと ゆきひろです.
原です。
[#1953] open (file descriptor) — j_kuro@... (Jun Kuroda)
黒田です.
まつもと ゆきひろです.
黒田です.
原です。
まつもと ゆきひろです.
[ruby-list:1841] Re: GD.c revised
まつもと ゆきひろです
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);