[#10553] base64.rb — Sinichiro Dezawa <dezawa@...>

出沢です

92 messages 1998/11/01
[#10565] Re: base64.rb — Shin-ichiro Hara <sinara@...> 1998/11/01

原です。

[#10583] Re: base64.rb — matz@... (Yukihiro Matsumoto) 1998/11/02

まつもと ゆきひろです

[#10595] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/02

出沢です

[#10611] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/04

出沢です

[#10613] Re: base64.rb — matz@... (Yukihiro Matsumoto) 1998/11/04

まつもと ゆきひろです

[#10614] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/04

matz> kconvにかけるってのは反則ですか? 今のkconvはB-encodingをデ

[#10615] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/04

>あー、そんなのがあったのか。反則だ。

[#10616] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/04

dezawa> >あー、そんなのがあったのか。反則だ。

[#10617] Re: base64.rb — WATANABE Hirofumi <watanabe@...> 1998/11/04

わたなべです.

[#10618] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/04

watanabe> 何も指定しなくていいです. もともとは nkf で

[#10621] Re: base64.rb — matz@... (Yukihiro Matsumoto) 1998/11/04

まつもと ゆきひろです

[#10623] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/04

matz> エンコードにはpack("m")がお勧めなのかなあ.

[#10635] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/04

dezawa> 手を付け兼ねてるのは、

[#10642] Re: base64.rb — WATANABE Hirofumi <watanabe@...> 1998/11/05

わたなべです.

[#10648] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/05

watanabe> エスケープとか全部含めて encode する必要があります.

[#10654] Re: base64.rb — WATANABE Hirofumi <watanabe@...> 1998/11/05

わたなべです.

[#10659] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/05

watanabe> といろいろ問題はあるけど pack("m") は encode した結果が長く

[#10663] Re: base64.rb — WATANABE Hirofumi <watanabe@...> 1998/11/05

わたなべです.

[#10664] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/05

watanabe> 自前で細切れに処理しないとだめかな?

[#10672] Re: base64.rb — aamine@... 1998/11/05

あおきです。

[#10673] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/05

aamine> さらに難しくしてしまうのもなんなんですが

[#10702] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/07

出沢@フジフイルム です

[#10796] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/13

出沢です

[#10800] Re: base64.rb — Shun-ichi GOTO <gotoh@...> 1998/11/13

後藤@太陽計測です

[#10801] Re: base64.rb — Toru Hoshina <toru@...> 1998/11/13

保科です。

[#10802] Re: base64.rb — Shun-ichi GOTO <gotoh@...> 1998/11/13

後藤@太陽計測です

[#10804] Re: base64.rb — Toru Hoshina <toru@...> 1998/11/13

保科です。

[#10806] Re: base64.rb — Shun-ichi GOTO <gotoh@...> 1998/11/13

後藤@太陽計測です

[#10737] Re: base64.rb — aamine@... 1998/11/09

あおきです。

[#10741] Re: base64.rb — Sinichiro Dezawa <dezawa@...> 1998/11/09

すばやい

[#10676] 11/10 tokyo offline meeting — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

19 messages 1998/11/06

[#10697] Re: 11/10 tokyo offline meeting — KIMURA Koichi <kkimura@...>

35 messages 1998/11/07
[#10708] Re: 11/10 tokyo offline meeting — TEI meiki <tei@...> 1998/11/07

鄭です。

[#10709] Re: 11/10 tokyo offline meeting — Sinichiro Dezawa <dezawa@...> 1998/11/07

では 「やぐら茶屋」NSビル店 で一応決まりということで?

[#10713] Re: 11/10 tokyo offline meeting — TEI meiki <tei@...> 1998/11/07

鄭です。

[#10721] Re: 11/10 tokyo offline meeting — keiju@... (石塚圭樹 ) 1998/11/08

けいじゅ@日本ラショナルソフトウェアです.

[#10729] Re: 11/10 tokyo offline meeting — matz@... (Yukihiro Matsumoto) 1998/11/09

まつもと ゆきひろです

[#10738] Re: 11/10 tokyo offline meeting — keiju@... (石塚圭樹 ) 1998/11/09

けいじゅ@日本ラショナルソフトウェアです.

[#10743] Re: 11/10 tokyo offline meeting — ARIMA Yasuhiro <fit0298@...> 1998/11/09

Regard to "[ruby-list:10738] Re: 11/10 tokyo offline meeting"

[#10747] ruby 1.1c7 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

23 messages 1998/11/09

[#10904] ruby 1.1c8 released — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

16 messages 1998/11/17

[#10910] require error (tkutil.so -> tk.so) — ttate@...

立石です。

17 messages 1998/11/17
[#10924] Re: require error (tkutil.so -> tk.so) — matz@... (Yukihiro Matsumoto) 1998/11/18

まつもと ゆきひろです

[#10926] Re: require error (tkutil.so -> tk.so) — WATANABE Hirofumi <watanabe@...> 1998/11/18

わたなべです.

[#11054] ruby-list offline meeting at 11/27 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

36 messages 1998/11/26
[#11056] Re: ruby-list offline meeting at 11/27 — Sinichiro Dezawa <dezawa@...> 1998/11/26

残念なのですが、出沢は無理そうです。

[#11057] Re: ruby-list offline meeting at 11/27 — matz@... (Yukihiro Matsumoto) 1998/11/26

まつもと ゆきひろです

[#11061] Re: ruby-list offline meeting at 11/27 — IWAMURO Motonori <iwa@...> 1998/11/26

岩室@富士通です。

[#11062] Re: ruby-list offline meeting at 11/27 — keiju@... (石塚圭樹 ) 1998/11/26

けいじゅ@日本ラショナルソフトウェアです.

[#11067] Re: ruby-list offline meeting at 11/27 — "D.Kanda" <MAP2303@...> 1998/11/26

[#11072] Re: ruby-list offline meeting at 11/27 — keiju@... (石塚圭樹 ) 1998/11/26

けいじゅ@日本ラショナルソフトウェアです.

[ruby-list:11012] Re: GD::Polygon.length mismatch

From: Noritsugu Nakamura <nnakamur@...>
Date: 1998-11-22 01:17:02 UTC
List: ruby-list #11012
中村 のりつぐ です。

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

In This Thread

Prev Next