[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mgp-users-jp 00372] Re: Problem:irix



Visual とか depth は面倒なので、その方面は手を抜いてあるプログラムが沢
山あります。残念ながら MagicPoint もそうなっているのです。


根本的な解決は Visual 周りの改造が必要です。X サーバの持つ Visual 情報
を取り出して、適切な Visual を設定しましょう。
# mgp の下請けの libimage.a にはすでにその手の関数が入っています :-)

複数の Visual への対応が面倒なら、せめて 12, 15, 16 depth の 
PseudoColor を選ぶようにしましょう。写真が沢山でてくるような極端な状況
以外は、数千色で充分です。


現状では DefaultColormap() を使っているので、スクリーンの default を変
えればいいのですが、これは他のプログラムの挙動に影響を与えるので、応急
処置だと考えた方が良いと思います。
たしか、Indy や Indigo だと streamworks 等が動かなくなります。
# こっちは、DefaultColormap で PseudoColor しか考えていない X-)


From: Takashi SOGABE <sogabe@kwlab.osakac.ac.jp>

>  irix5.3に magicpoint-1.04a を入れたのですが、色の表示でつまづいています。
> xwininfo で調べたところ、magicpoint のウィンドウは8bppで色を表示していま
> す。irixのマニュアルを調べてみたところ、もっとたくさんの色を使いたい場合
> は XCreateSimpleWindow ではなくて XCreateWindow を呼び出さなくてはいけな
> いようなことが書かれていたのですが、実際にどのように呼び出せばよいのか
> 分かりませんでした。

XCreateSimpleWindow() では visual class, depth 等は親ウインドウから継
承されます。通常は default の設定が全体に継承されるので、default の 
visual class を変えると depth や colormap の性質が変わるのです。

これらの属性を親ウインドウから継承せずにウインドウを作るには 
XCreateWindow() を使います。

 1) XCreateColormap() で目標とする Visual class から colormap を作る
 2) 属性の colormap に 1) の colormap を代入する
 3) XCreateWindow() に depth と visual class、そして属性を与えてウイン
   ドウを作る (残りの引数は XCreateSimpleWindow() と同様です)


	cmap = XCreateColormap(dpy, parent, vis, AllocAll);  // PseudoColor
	cmap = XCreateColormap(dpy, parent, vis, AllocNone); // TrueColor

	...

	attrmask |= CWColormap;
	attr->colormap = cmap;

	...

	win = XCreateWindow(dpy, parent, x, y, wid, ht, border,
		depth, InputOutput, vis, attrmask, attr);