いがらしです。

「[ruby-list:16255] Re: Ruby/Gtk GC::set_foreground」で 、
"Minoru Inachi" <inachi / earth.interq.or.jp>さんは書きました:

> 稲地です。
> 
> ----- 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
> 
> 
> > こんにちは、岡本です。

> > 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 は
> 直接ピクセル値を指定するようになっているので方法がないのではないかと。

そうですね。
sample/testgtk/text.rbではピクセル値を0にしていました
が、Gtk::Text#insert_textの中で確保してくれているみた
いで、あれを書いた時点では考えませんでした。

> 試しに先の手順を Ruby/Gtk で行えるようにするパッチを作成してみました

取り込む方向で検討します。

> (ruby-gtk-SNAPSHOT-19990807用)。これを適用して
> 
>     c = Gdk::Color.new(0, 0xFFFF, 0xFFFF, 0xFFFF)

このnewの第1引数で指定しているピクセル値0はカラーマッ
プでの確保時に結局上書きされてしまうので、指定するのは
無意味ですよね。Ruby/GTKのほうの変更点にも書きましたが、
    Gdk::Color.new(p, r, g, b) -> Gdk::Color.new(r, g, b) 
としてしまいました。

----
五十嵐  宏  (Hiroshi IGARASHI)