[#10553] base64.rb — Sinichiro Dezawa <dezawa@...>
出沢です
原です。
まつもと ゆきひろです
出沢です
出沢です
まつもと ゆきひろです
matz> kconvにかけるってのは反則ですか? 今のkconvはB-encodingをデ
>あー、そんなのがあったのか。反則だ。
dezawa> >あー、そんなのがあったのか。反則だ。
わたなべです.
watanabe> 何も指定しなくていいです. もともとは nkf で
まつもと ゆきひろです
matz> エンコードにはpack("m")がお勧めなのかなあ.
dezawa> 手を付け兼ねてるのは、
わたなべです.
watanabe> エスケープとか全部含めて encode する必要があります.
わたなべです.
watanabe> といろいろ問題はあるけど pack("m") は encode した結果が長く
わたなべです.
watanabe> 自前で細切れに処理しないとだめかな?
あおきです。
aamine> さらに難しくしてしまうのもなんなんですが
出沢@フジフイルム です
出沢です
後藤@太陽計測です
保科です。
後藤@太陽計測です
保科です。
後藤@太陽計測です
出沢@フジフイルム です
保科です。私も続けちゃいますが…
後藤@太陽計測です
出沢@フジフイルム です
後藤@太陽計測です
あおきです。
すばやい
井上@三菱電機 です。
[#10589] LoadError on FreeBSD 3.0-RELEASE — gotoken@... (GOTO Kentaro)
ごとけんです
えぐち@エスアンドイー です。
わたなべです.
ごとけんです
首藤です。
[#10639] tgif_expr — aito@...
あ伊藤です.
[#10665] World Wide grep — toyofuku@...
豊福@パパイヤです。
[#10676] 11/10 tokyo offline meeting — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
松尾です。
わたなべです.
[#10690] ruby-mode.el — Takao KAWAMURA <kawamura@...>
ruby-mode.el($Revision: 1.1.1.2.2.20 $)には、以下のような問
[#10697] Re: 11/10 tokyo offline meeting — KIMURA Koichi <kkimura@...>
鄭です。
では 「やぐら茶屋」NSビル店 で一応決まりということで?
鄭です。
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
Regard to "[ruby-list:10738] Re: 11/10 tokyo offline meeting"
けいじゅ@日本ラショナルソフトウェアです.
立石です。
In message "[ruby-list:10765] Re: 11/10 tokyo offline meeting"
[#10747] ruby 1.1c7 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
保科です。
笠原です。
保科です。
笠原です。
笠原です。
[#10767] HttpTunnelServer shoud be run as root ? — Kikutani Makoto <kikutani@...>
きくたにです。
[#10772] Re: 11/10 tokyo offline meeting — ARIMA Yasuhiro <fit0298@...>
有馬@新宿NSビルの大時計がわからず目の前の本屋で聞いてしまったです。
[#10788] 0th(?) Ruby Conference Report — greentea@...2.so-net.ne.jp (Tomoyuki Kosimizu)
こんにちは、越水です。
前田@リコーです。
まつもと ゆきひろです
[#10799] make ruby on WinNT with VC++6.0 — Koji Oda <oda@...1.qnes.nec.co.jp>
小田@QNES です。
[#10831] shard-library support by libtool — EGUCHI Osamu <eguchi@...>
えぐち@エスアンドイー です。
[#10879] Re: 組み込み関数と同じ名前 — "MAEDA Shugo" <shugo@...>
前田@大阪大学です。
[#10904] ruby 1.1c8 released — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
わたなべです.
[#10910] require error (tkutil.so -> tk.so) — ttate@...
立石です。
まつもと ゆきひろです
わたなべです.
わたなべです.
まつもと ゆきひろです
さくです.
[#10951] great ideas — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#10973] gets のクラス — Yoshiki WADA <wada@...>
和田といいます。
まつもと ゆきひろです
[#10976] スコープの範囲 — Koji Arai <JCA02266@...>
新井です。
[#11015] バックスラッシュのエスケープ — Yoshiki WADA <wada@...>
和田です。
[#11031] Linux Japan Jan., 1999 — ozawa@...
さくです。
[#11035] inspect, to_s — "D.Kanda" <MAP2303@...>
[#11054] ruby-list offline meeting at 11/27 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
残念なのですが、出沢は無理そうです。
まつもと ゆきひろです
けいじゅ@日本ラショナルソフトウェアです.
岩室@富士通です。
けいじゅ@日本ラショナルソフトウェアです.
けいじゅ@日本ラショナルソフトウェアです.
佐藤です。まるでRubyに貢献してないけど参加してみたいなー
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#11081] postgres-0.4.tar.gz — Masatoshi SEKI <m_seki@...>
[#11082] MacRuby — Wakou Aoyama <wakou@...>
青山です。
[#11099] Re: ruby-list offline meeting at 11/27 — toyofuku@...
豊福@パパイヤです。
[#11119] 拡張モジュールの Makefile — IKARASHI Akira <ikarashi@...>
五十嵐@東京理科大学です。
立石です。
五十嵐です。
[#11121] parser — ttate@...
立石です。
[#11132] BUG? Array.rassoc — 民斗 <tommy@...>
Array.rassoc が期待通りに動かなかったので、ソースを見てみたら
[ruby-list:11012] Re: GD::Polygon.length mismatch
中村 のりつぐ です。
In article <19981122015710L.nnakamur@mxq.mesh.ne.jp>
Noritsugu Nakamura <nnakamur@mxq.mesh.ne.jp> wrote:
私 > GD モジュールの Perl と ruby の挙動の 違いについて質問
私 >
私 > 似たようなプログラムを実行しても、結果が違うのですが、
私 > なぜでしょうか?
一応、動作を Perl のに合わせるように GD-0.6 に対するパッチを
作成してみました。また、Perl の GD-1.18 では、Polygon に対して、
toPt, transform, scale というメソッドが加わっているようなので、
それについても、追加をしてみました。(変かもしれないけど)
=== 使用例 (GD-1.18/demos/transform.pl ruby 版)
#!/usr/local/bin/ruby
#
# convert from GD-1.18/demos/transform.pl
# by Nakamura Noritsugu
#
require "GD"
# create a new image
im = GD::Image.new(380,225)
# allocate some colors
black = im.colorAllocate(0,0,0)
white = im.colorAllocate(255,255,255)
red = im.colorAllocate(255,0,0)
blue = im.colorAllocate(0,0,255)
yellow = im.colorAllocate(255,250,205)
# Create a triangle
poly = GD::Polygon.new
poly.toPt(50,50)
poly.toPt(100,0)
poly.toPt(-50,50)
poly.toPt(-50,-50)
im.filledPolygon(poly,yellow)
poly.scale(1.8,1.0)
poly.offset(100,0)
im.filledPolygon(poly,red)
# Rotate it
poly.transform(0.55,0.20,0.0,1,-25,50)
im.filledPolygon(poly,blue)
im.gif STDOUT
=== README に関して
polygon.addPt(x, y) # 点(角) x, y を追加
polygon.toPt(dx, dy) # 点(角)を追加 (一つ前の点との差分)
polygon.transform(sx,rx,sy,ry,tx,ty) # 座標を行列変換
polygon.scale(sx,sy) # 座標を拡大
=== パッチ
--- GD.c.org Mon Apr 20 10:38:47 1998
+++ GD.c Sun Nov 22 09:57:17 1998
@@ -653,7 +653,7 @@
{
VALUE self = ary_new();
- RBASIC(self)->class = class;
+ RBASIC(self)->klass = class;
return self;
}
@@ -671,6 +671,27 @@
}
static VALUE
+ply_to_pt(ply, dx, dy)
+ VALUE ply, dx, dy;
+{
+ VALUE x, y;
+
+ /* type check */
+ NUM2INT(dx);
+ 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)));
+ } else {
+ ply_add_pt(ply, dx, dy);
+ }
+ return ply;
+}
+
+static VALUE
ply_get_pt(ply, idx)
VALUE ply, idx;
{
@@ -714,7 +735,7 @@
ply_length(ply)
VALUE ply;
{
- return INT2FIX(RARRAY(ply)->len);
+ return INT2FIX(RARRAY(ply)->len / 2);
}
static VALUE
@@ -842,6 +863,31 @@
}
static VALUE
+ply_transform(ply, a, b, c, d, tx, ty)
+ VALUE ply, a, b, c, d, tx, ty;
+{
+ int i;
+ VALUE x, y;
+
+ for (i = 0; i < RARRAY(ply)->len / 2; i++) {
+/* x = ary_entry(ply, i * 2);
+ y = ary_entry(ply, i * 2 + 1);*/
+ x = RARRAY(ply)->ptr[i * 2];
+ y = RARRAY(ply)->ptr[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)));
+ }
+}
+
+static VALUE
+ply_scale(ply, sx, sy)
+ VALUE ply, sx, sy;
+{
+ ply_transform(ply, sx, INT2NUM(0), INT2NUM(0), sy, INT2NUM(0), INT2NUM(0));
+}
+
+static VALUE
fnt_create(fnt)
gdFontPtr fnt;
{
@@ -982,6 +1028,7 @@
rb_define_singleton_method(cPolygon, "new", ply_new, 0);
rb_define_method(cPolygon, "addPt", ply_add_pt, 2);
+ rb_define_method(cPolygon, "toPt", ply_to_pt, 2);
rb_define_method(cPolygon, "getPt", ply_get_pt, 1);
rb_define_method(cPolygon, "setPt", ply_set_pt, 3);
rb_define_method(cPolygon, "deletePt", ply_delete_pt, 1);
@@ -990,6 +1037,8 @@
rb_define_method(cPolygon, "bounds", ply_bounds, 0);
rb_define_method(cPolygon, "offset", ply_offset, 2);
rb_define_method(cPolygon, "map", ply_map, -1);
+ rb_define_method(cPolygon, "transform", ply_transform, 6);
+ rb_define_method(cPolygon, "scale", ply_scale, 2);
cFont = rb_define_class_under(mGD, "Font", cObject);
rb_define_singleton_method(cFont, "new", fnt_s_new, 1);
中村 典嗣 E-mail: nnakamur@mxq.mesh.ne.jp