稲地です。
返事が遅くなってすみません。

----- Original Message -----
From: KUBO Takehiro <tkubo / insight-tec.co.jp>
To: ruby-ext ML <ruby-ext / netlab.co.jp>
Sent: Wednesday, February 23, 2000 11:45 AM
Subject: [ruby-ext:00921] Gnome::Canvas::Item


> 久保@茅ヶ崎市です。
> # ruby-ext でははじめまして。普段は ROM の人です。
>
> 今、Ruby/GNOME の Canvas 部分を書いているのですが、重複して作業してい
> る方はいるでしょうか?
> # 重複してたらどうしよ。

私の知るところ、私が手をつけかけたものしかありませんので、
歓迎です。

> ところでちょっと迷っているところがあります。
> GnomeCanvasRect を C API で作成するとき、
>    gnome_canvas_item_new (group,   # GnomeCanvasGroup のインスタンス
>                           gnome_canvas_rect_get_type (),
>                           "x1", 20.0,
>                           "y1", 30.0,
>                           "x2", 70.0,
>                           "y2", 60.0,
>                           "outline_color", "red",
>                           "width_pixels", 8,
>                           NULL);
> となります。これを ruby に翻案すると、
>
> (1) 引数そのまま。返り値は Gnome::Canvas::Rect になる。
>     Gnome::Canvas::Item.new(group,
>                             Gnome::Canvas::Rect.type,
>                             {"x1" => 20.0,
>                              "y1" => 30.0,
>                              "x2" => 70.0,
>                              "y2" => 60.0,
>                              "outline_color" => "red",
>                              "width_pixels" => 8})
>     # "x1", 20.0, ... の部分は Hash で対応。
>
> (2) 返り値 Gnome::Canvas::Rect になるので、引数が変わっちゃうけど、
>     Gnome::Canvas::Rect.new(group,
>                             {"x1" => 20.0,
>                              "y1" => 30.0,
>                              "x2" => 70.0,
>                              "y2" => 60.0,
>                              "outline_color" => "red",
>                              "width_pixels" => 8})
>
> (3) Gnome::Canvas::* は root 以外は必ず Gnome::Canvas::Group の下に作
>     成されるので、
>     group.item_new(Gnome::Canvas::Rect.type,
>                    {"x1" => 20.0,
>                     "y1" => 30.0,
>                     "x2" => 70.0,
>                     "y2" => 60.0,
>                     "outline_color" => "red",
>                      "width_pixels" => 8})
>
> の 3 つの API が考えられるのですが、どれが良いでしょうか?
>
> 今は (2) で作っています。
> 意味的には (2) がしっくりくるけど、元の API をなるべく変えないという原
> 則に従うとちょっと......。
>
> # (3) は自分でも却下

(2) でいいんじゃないですかね。
# GnomeCanvas のクラス階層や関数ってどうもいまいち。

---
稲地 稔 <inachi / earth.interq.or.jp>