51.77.7 X11 pm3d_resources

適切な visual クラスと色数を選択するのは、X11 アプリケーションにとって 苦しく、ちょっと厄介なことです。それは X11 が異なる深度 (depth) の 6 つの visual 型をサポートしているからです。

デフォルトでは gnuplot はそのスクリーンのデフォルトの visual を使用 します。割り当てることのできる色数は選択された visual クラスによって変 わります。12bit を超える深度を持つ visual クラス上では、gnuplot は最大 色数である 0x200 (=512) 色で起動します。8bit を超える (12bit 以下で) 深度の visual クラスでは最大色数は 0x100 (=256) 色、8bit 以下のディスプレイでは最大色は 240 (16 色は曲線の色用に取られる) になります。

gnuplot は最初に、上に述べたような最大色を割り当てようと起動します。こ れに失敗するとその色数は、gnuplot がその全部を割り付けることができるま で、1/2 ずつ減らされます。maxcolors を繰り返し 2 で割った結果、 mincolors よりも小さい数字になった場合、gnuplot は private カラー マップを使おうとします。この場合、ウィンドウマネージャは、ポインタが X11 ドライバのウィンドウに入るか出るかでカラーマップを退避 (swapping) させる責任を持つことになります。

mincolors のデフォルトの値は maxcolors / (num_colormaps > 1 ? 2 : 8) で、num_colormaps は gnuplot が現在使用しているカラーマップの数で、こ れは、x11 のウィンドウが 1 つだけ開いているような通常の場合は 1 です。

複数の (異なる) visual クラスを、一つのスクリーン上でサポートするよう なシステムもあります。このようなシステムでは、gnuplot に指定した visual クラスを強制的に使わせる必要があります。例えば、デフォルトの visual が 8bit PseudoColor だけれどもスクリーンは 24bit TrueColor を サポートしていてむしろこちらの方を選択すべきであるような場合です。

X サーバの能力に関する情報はプログラム xdpyinfo で取得できます。 visual 名は次のうちの一つが選択できます: StaticGray, GrayScale, StaticColor, PseudoColor, TrueColor, DirectColor。その X サーバが要求 された visual 型の異なる複数の深度をサポートしている場合、gnuplot は 最も大きい (最深の) 深度の visual クラスを選択します。要求された visual クラスがデフォルトの visual とあっていて、その型の複数のクラス がサポートされている場合は、デフォルトの visual が選択されます。

例: 8bit PseudoColor の visual 上では、gnuplot*maxcolors: 240、及び gnuplot*mincolors: 240 と指定することで強制的に private カラーマップ を使うようにできます。

  gnuplot*maxcolors: 整数
  gnuplot*mincolors: 整数
  gnuplot*visual: visual 名

竹野茂治@新潟工科大学
2009年4月5日