いがらしです。やっと時間が取れるので少しずつ処理していきます。

At Thu, 15 Jun 2000 23:52:45 +0900,
in [ruby-ext:01114] Gdk::Color#red,green,blue,rgb,
とみたまさひろ <tommy / tmtm.org> wrote:
> 
> Gdk::Color から RGB 値を取り出したかったので、red(), green(), blue()
> メソッドを追加しました。

ごめんなさい。手元で既に追加してありました。

> また、3つまとめて配列として取り出す rgb() も追加しました。

対応するfunctionがoriginalのGTKにないので、ちょっと加えたくないです。
Gdk::Color#to_a として定義するならいいかな。

> +static VALUE
> +gdkcolor_rgb(self)
> +    VALUE self;
> +{
> +    GdkColor *c;
> +    VALUE a;
> +    c = get_gdkcolor(self);
> +    a = rb_ary_new2(3);
> +    RARRAY(a)->ptr[0] = INT2NUM(c->red);
> +    RARRAY(a)->ptr[1] = INT2NUM(c->green);
> +    RARRAY(a)->ptr[2] = INT2NUM(c->blue);
> +    RARRAY(a)->len = 3;
> +    return a;
> +}

rb_ary_new3(3, INT2NUM(c->red), ...)を使った方がよいのでは。
あるいはAPIを経由して更新しないとまずいことが起きやすいです。

--
五十嵐  宏  (Hiroshi IGARASHI)