とみたです。

Gdk::Color から RGB 値を取り出したかったので、red(), green(), blue()
メソッドを追加しました。

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

---
とみたまさひろ <tommy / tmtm.org> http://www.tmtm.org
日本MySQLユーザ会 http://www.mysql.gr.jp

--- rbgdkcolor.c.orig	Sat Jan  8 20:52:27 2000
+++ rbgdkcolor.c	Thu Jun 15 23:15:57 2000
@@ -78,6 +78,42 @@
     return make_gdkcolor(&c);
 }
 
+static VALUE
+gdkcolor_red(self)
+    VALUE self;
+{
+    return INT2NUM(get_gdkcolor(self)->red);
+}
+
+static VALUE
+gdkcolor_green(self)
+    VALUE self;
+{
+    return INT2NUM(get_gdkcolor(self)->green);
+}
+
+static VALUE
+gdkcolor_blue(self)
+    VALUE self;
+{
+    return INT2NUM(get_gdkcolor(self)->blue);
+}
+
+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;
+}
+
 
 /*
  * Gdk::ColorContext
@@ -104,7 +140,10 @@
     gdkColor = rb_define_class_under(mGdk, "Color", rb_cData);
 
     rb_define_singleton_method(gdkColor, "new", gdkcolor_s_new, 3);
-
+    rb_define_method(gdkColor, "red", gdkcolor_red, 0);
+    rb_define_method(gdkColor, "green", gdkcolor_green, 0);
+    rb_define_method(gdkColor, "blue", gdkcolor_blue, 0);
+    rb_define_method(gdkColor, "rgb", gdkcolor_rgb, 0);
     /*
      * Gdk::ColorContext
      */