next up previous
Next: 3.12 boxtext() Up: 3 VOGLE→EGGX プログラム書き換えマニュアル Previous: 3.10 point2()

3.11 color()

色を指定する color() は、 EGGX では eggx_newcolor()eggx_newpen() などで実現できます。

vogle.h では、
vogle.h の中での色名の定義
BLACK 0
RED 1
GREEN 2
YELLOW 3
BLUE 4
MAGENTA 5
CYAN 6
WHITE 7
のように定義されていて、これを用いて
  color(YELLOW);
のようなコードを書くことがあります。 EGGX/ProCALL で同じことをするには、
  eggx_newpen(win, "yellow");
のようにすると良いでしょう。 色の名前については、 X11 の rgb.txt2 に 記載された名前が利用できるので、 実に多彩な色の名前が使えます (これは EGGX/ProCALL の長所の一つです)。


ところで VOGLE プログラムで
  color(i % 7 + 1); /* 色コードが "i を 7 で割った余り+1" の色を使う */
のようなコードに出くわすことがあります。 EGGX での一つの解決法は
  char colorname[8][8] =
  {"black","red","green","yellow","blue","magenta","cyan","white"};
  ...
  eggx_newcolor(win, colorname[i % 7 + 1]);
とすることですが、毎度毎度色の名前を解釈するのは効率が悪そうですね。 効率を上げるには
EGGX の色番号 (マニュアル参照)
0
1
2
3
4
シアン 5
マゼンタ 6
7
という色番号表から
VOGLEとEGGXの色番号対応表
VOGLEの色番号 EGGXの色番号 色の名前
0 0
1 2
2 3
3 7
4 4
5 6 マジェンタ (赤紫)
6 5 シアン (青緑)
7 1
を作って変換することでしょう。 コードは以下のようにすればよいでしょうか。
  int eggx_color_number[8] = {0,2,3,7,4,6,5,1};
  ...
  eggx_newpen(win, eggx_color_number[i % 7 + 1]);


next up previous
Next: 3.12 boxtext() Up: 3 VOGLE→EGGX プログラム書き換えマニュアル Previous: 3.10 point2()
Masashi Katsurada
平成22年2月26日