[#15828] Ruby/Gtk for cygwin インストールについて — otokita@...

Ruby, 本 ML には大変お世話になっております.

15 messages 1999/08/02

[#15839] Windows95 で Tk — H サイトウ <HiroshiSaito@...>

17 messages 1999/08/02

[#15944] Ruby 1.3.7 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.7 is repacked, check out:

19 messages 1999/08/06

[#16002] how to know binary file — kikutani@...

あるファイルがバイナリファイルかどうか知る方法というのはたしか

38 messages 1999/08/09
[#16010] Re: how to know binary file — WATANABE Hirofumi <watanabe@...> 1999/08/10

わたなべです.

[#16013] Re: how to know binary file — kikutani@... 1999/08/10

On Tue, 10 Aug 1999 11:06:25 +0900,

[#16016] Re: how to know binary file — Yamada Kenji <kyamada@...> 1999/08/10

[#16021] Re: how to know binary file — kikutani@... 1999/08/10

On Tue, 10 Aug 1999 11:56:55 +0900,

[#16026] Re: how to know binary file — Yamada Kenji <kyamada@...> 1999/08/10

[#16040] Re: how to know binary file — kikutani@... 1999/08/10

On Tue, 10 Aug 1999 13:55:59 +0900,

[#16095] rd2html — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp>

はじめまして、Toshと申します。

32 messages 1999/08/12
[#16098] Re: rd2html — matz@... (Yukihiro Matsumoto) 1999/08/12

まつもと ゆきひろです

[#16104] Re: rd2html — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 1999/08/13

Toshです。

[#16106] Re: rd2html — gotoken@... (GOTO Kentaro) 1999/08/13

ごとけんです

[#16111] Re: rd2html — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 1999/08/13

Toshです。

[#16112] Re: rd2html — gotoken@... (GOTO Kentaro) 1999/08/13

ごとけんです

[#16115] Re: rd2html — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 1999/08/13

Toshです。

[#16118] Ruby 1.4.0 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

50 messages 1999/08/13
[#16120] Re: Ruby 1.4.0 — Katsuyuki Komatsu <komatsu@...> 1999/08/13

小松です。

[#16124] Re: Ruby 1.4.0 — matz@... (Yukihiro Matsumoto) 1999/08/13

まつもと ゆきひろです

[#16397] Re: Ruby 1.4.0 — wakou@... 1999/09/01

青山です。

[#16404] Re: Ruby 1.4.0 — hisanori@... 1999/09/01

松尾です。

[#16426] Re: Ruby 1.4.0 — matz@... (Yukihiro Matsumoto) 1999/09/01

まつもと ゆきひろです

[#16427] Re: Ruby 1.4.0 — "NAKAMURA, Hiroshi" <nakahiro@...> 1999/09/01

なひです.

[#16158] maillib? 0.5.0 — Minero Aoki <aamine@...>

あおきです。

57 messages 1999/08/15
[#16173] Re: maillib? 0.5.0 — matz@... (Yukihiro Matsumoto) 1999/08/16

まつもと ゆきひろです

[#16225] Re: maillib? 0.5.0 — Minero Aoki <aamine@...> 1999/08/19

あおきです。とりあえずlistに送ります。

[#16254] Re: maillib? 0.5.0 — matz@... (Yukihiro Matsumoto) 1999/08/22

まつもと ゆきひろです

[#16282] Re: maillib? 0.5.0 — Minero Aoki <aamine@...> 1999/08/24

あおきです。

[#16285] Re: maillib? 0.5.0 — matz@... (Yukihiro Matsumoto) 1999/08/24

まつもと ゆきひろです

[#16338] Re: maillib? 0.5.0 — Minero Aoki <aamine@...> 1999/08/27

あおきです。返事遅くなってすみません。

[#16344] Re: maillib? 0.5.0 — Minero Aoki <aamine@...> 1999/08/28

あおきです。

[#16363] Re: maillib? 0.5.0 — matz@... (Yukihiro Matsumoto) 1999/08/30

まつもと ゆきひろです

[#16440] Re: maillib? 0.5.0 — Minero Aoki <aamine@...> 1999/09/02

あおきです。

[#16545] Re: maillib? 0.5.0 — matz@... (Yukihiro Matsumoto) 1999/09/06

まつもと ゆきひろです

[#16632] Re: maillib? 0.5.0 — Minero Aoki <aamine@...> 1999/09/08

あおきです。

[#16646] Re: maillib? 0.5.0 — wakou@... 1999/09/08

青山です。

[#16648] RD and internationalization — wakou@... 1999/09/08

青山です。

[#16663] Re: RD and internationalization — Minero Aoki <aamine@...> 1999/09/09

あおきです。

[#16679] Re: RD and internationalization — wakou@... 1999/09/09

青山です。

[#16302] printf の $ について — "HIRATA Naoto" <hirata-naoto@...>

平田です.

18 messages 1999/08/24
[#16307] Re: printf の $ について — WATANABE Hirofumi <watanabe@...> 1999/08/25

わたなべです.

[#16313] Re: printf の $ について — matz@... (Yukihiro Matsumoto) 1999/08/25

まつもと ゆきひろです

[#16359] ruby1.4.0 on BSD/OS 4.0 — Yamada Kenji <kyamada@...>

16 messages 1999/08/29

[ruby-list:16255] Re: Ruby/Gtk GC::set_foreground

From: "Minoru Inachi" <inachi@...>
Date: 1999-08-22 18:52:06 UTC
List: ruby-list #16255
稲地です。

----- Original Message -----
送信者 : Kazumi Okamoto <kazusan@pluto.dti.ne.jp>
宛先 : ruby mailing list <ruby-list@netlab.co.jp>
送信日時 : 1999年8月22日 22:41
件名 : [ruby-list:16252] Ruby/Gtk GC::set_foreground


> こんにちは、岡本です。
>
> Ruby/Gtk で、Gdk::GC で指定する色の値の取得方法を
> おしえてください。
>
> 現在は、Gdk::Colorオブジェクトを作成し、その作成時に指定した
> 値(pix)をGC にセットするようにしています。
>
> c = Gdk::Color.new(100, 255, 255, 255)
>                    ^^^
> gc = Gdk::GC.new(self)
> gc.set_foreground(100)
>                   ^^^
>
> このやりかたでは、Gdk::Color で設定した値が、gc で使われていないようで、
> もとからあるなんらかの色が使われているようです。

デフォルトのカラーマップに確保されている色が使われています。

> Gdk::GC::set_foreground メソッドの値をかえると色がかわるのですが、
> この値の求めかたがわかりません。
> Gdk::Color で設定した値ではだめなんでしょうか?

ネィティブな GTK+ でやるとすれば

   1. GdkColor で色を指定。
   2. その色をカラーマップで確保する(GtkColorにピクセル値を得る)。
   3. gdk_gc_set_forground に GdkColor を指定。

といった手順だと思うのですが、現状の Ruby/Gtk だと Gdk::Colormap はない
ので、Gdk::Color からピクセル値を得る手段がなく、Gdk::GC::set_foreground は
直接ピクセル値を指定するようになっているので方法がないのではないかと。

試しに先の手順を Ruby/Gtk で行えるようにするパッチを作成してみました
(ruby-gtk-SNAPSHOT-19990807用)。これを適用して

    c = Gdk::Color.new(0, 0xFFFF, 0xFFFF, 0xFFFF)
    cmap = Gdk::Colormap.get_system
    cmap.alloc(c);

    gc = Gdk::GC.new(self)
    gc.set_foreground(c)

のようにすると、Gdk::Color の指定が有効になることは確認しました。

-------
diff -uNr gtk19990807/src/rbgdk.c gtk/src/rbgdk.c
--- gtk19990807/src/rbgdk.c Sat Jul 31 21:21:47 1999
+++ gtk/src/rbgdk.c Mon Aug 23 01:43:43 1999
@@ -411,6 +411,24 @@
 }

 static VALUE
+gdkcmap_s_get_system(self)
+    VALUE self;
+{
+    GdkColormap *cmap;
+    cmap = gdk_colormap_get_system();
+    return make_gdkcmap(cmap);
+}
+
+static VALUE
+gdkcmap_alloc(self, color)
+    VALUE self, color;
+{
+    gboolean result;
+    result = gdk_color_alloc(get_gdkcmap(self), get_gdkcolor(color));
+    return result?Qtrue:Qfalse;
+}
+
+static VALUE
 gdkcolor_s_new(self, p, r, g, b)
     VALUE self;
     VALUE p, r, g, b;
@@ -690,12 +708,10 @@
 }

 static VALUE
-gdkwin_set_background(self, c)
-    VALUE self, c;
+gdkwin_set_background(self, color)
+    VALUE self, color;
 {
-  GdkColor color;
-  color.pixel = NUM2INT(c);
-  gdk_window_set_background(get_gdkwindow(self), &color);
+  gdk_window_set_background(get_gdkwindow(self), get_gdkcolor(color));
   return self;
 }

@@ -832,23 +848,19 @@
 }

 static VALUE
-gdkgc_set_foreground(self, pix)
-    VALUE pix;
+gdkgc_set_foreground(self, color)
+    VALUE self, color;
 {
-  GdkColor c;
-  c.pixel = NUM2INT(pix);
-  gdk_gc_set_foreground(get_gdkgc(self), &c);
-  return pix;
+  gdk_gc_set_foreground(get_gdkgc(self), get_gdkcolor(color));
+  return self;
 }

 static VALUE
-gdkgc_set_background(self, pix)
-    VALUE pix;
+gdkgc_set_background(self, color)
+    VALUE self, color;
 {
-  GdkColor c;
-  c.pixel = NUM2INT(pix);
-  gdk_gc_set_background(get_gdkgc(self), &c);
-  return pix;
+  gdk_gc_set_background(get_gdkgc(self), get_gdkcolor(color));
+  return self;
 }

 static VALUE
@@ -1760,6 +1772,7 @@
     mGdk = rb_define_module("Gdk");

     gdkFont = rb_define_class_under(mGdk, "Font", rb_cData);
+    gdkColormap = rb_define_class_under(mGdk, "Colormap", rb_cData);
     gdkColor = rb_define_class_under(mGdk, "Color", rb_cData);
     gdkDrawable = rb_define_class_under(mGdk, "Drawable", rb_cData);
     gdkPixmap = rb_define_class_under(mGdk, "Pixmap", gdkDrawable);
@@ -1815,6 +1828,11 @@
     rb_define_method(gdkFont, "ascent", gdkfnt_ascent, 0);
     rb_define_method(gdkFont, "descent", gdkfnt_descent, 0);
     rb_define_method(gdkFont, "==", gdkfnt_equal, 1);
+
+    /* GdkColormap */
+    rb_define_singleton_method(gdkColormap, "get_system",
+          gdkcmap_s_get_system, 0);
+    rb_define_method(gdkColormap, "alloc", gdkcmap_alloc, 1);

     /* GdkColor */
     rb_define_singleton_method(gdkColor, "new", gdkcolor_s_new, 4);
-------

稲地 稔 (e-mail: inachi@earth.interq.or.jp)

In This Thread