Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ XSetRGBColormaps(3X11) — NEWS-os 4.1C

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

XAllocColor(3X11)

XCreateColormap(3X11)

XFree(3X11)

XSetCloseDownMode(3X11)

XAllocStandardColormap(3X11)  —  NEWS-OS Programmer’s Manual

関数

XAllocStandardColormap, XSetRGBColormaps, XGetRGBColormaps, XStandardColormap −  標準のカラーマップ構造体を割り当て、設定または読む。

シンタックス

XStandardColormap ∗XAllocStandardColormap() void XSetRGBColormaps(display, w, std_colormap, count, property)
      Display ∗display;
      Window w;
      XStandardColormap ∗std_colormap;
      int count;
      Atom property; Status XGetRGBColormaps(display, w, std_colormap_return, count_return, property)
      Display ∗display;
      Window w;
      XStandardColormap ∗∗std_colormap_return;
      int ∗count_return;
      Atom property;

引数

displayXサーバへの接続を指定します。

countカラーマップ数を指定します。

count_returnカラーマップ数を返します。

property属性名を指定します。

std_colormapXStandardColormap 構造体を指定します。

std_colormap_return
XStandardColormap 構造体を返します。

解説

XAllocStandardColormap 関数は XStandardColormap 構造体へのポインタを割り当て、返します。 XStandardColormap 構造体の全てのフィールドがゼロに初期設定されていること。 メモリーに必要な領域が不足する場合、 XAllocStandardColormap はナルを返します。 この構造体へ割り当てられるメモリーを解放する為、 XFree を使います。 XSetRGBColormaps 関数は 指定したウィンドウの属性のRGBカラーマップ定義を交換します。 その属性が存在しない場合でも、 XSetRGBColormaps はRGBカラーマップ定義を設定します。 その定義はタイプがRGB_COLOR_MAP、フォーマットが32で格納されます。 RGB_DEFAULT_MAPだけに複数定義が可能というICCCM制限の遵守は、 ユーザ責任です。 XSetRGBColormaps で発生するエラーには BadAlloc、 BadAtom、 または BadWindow エラーがあります。 XGetRGBColormaps 関数は 指定したウィンドウの属性に格納されたRGBカラーマップ定義を返します。 その定義が存在し、タイプがRGB_COLOR_MAPでフォーマットが32の場合、 またカラーマップ定義を保持出来る程長い場合(visualidが無い場合、 XGetRGBColormaps はウィンドウがあるスクリーンへのデフォルトのvisualとして扱われます。 また、 killidが無い場合には、 リソースを解放出来ないことを示す None と見なされます。)、 XGetRGBColormaps は返されたカラーマップに空白を割り当て、 ゼロ以外のステータスを返します。 上記以外の場合には、 どのフィールドも設定されず、 XGetRGBColormaps はゼロのステータスを返します。 また、RGB_DEFAULT_MAPだけに複数定義が可能いうICCCM制限の順守は、ユーザ責任です。 XGetRGBColormaps で発生するエラーには、 BadAtom および BadWindow エラーがあります。

構造体

XStandardColormap 構造体は、以下の様になります。 /∗ ヒント ∗/

#define ReleaseByFreeingColormap ( (XID) 1L)

/∗ 値 ∗/

typedef struct {
Colormap colormap;
unsigned long red_max;
unsigned long red_mult;
unsigned long green_max;
unsigned long green_mult;
unsigned long blue_max;
unsigned long blue_mult;
unsigned long base_pixel;
VisualID visualid;
XID killid;
} XStandardColormap;

colormapメンバは XCreateColormaセ 関数で生成されるカラーマップです。 メンバーの red_max、 green_max、およびblue_maxは、赤色、緑色、青色それぞれの最大値を与えます。 それぞれの色係数はゼロから最大値までを含みます。 例えば、 一般的なカラーマップ構成は3/3/2になります(赤が3プレーン、緑が3プレーン、青が2プレーン)。 このカラーマップではred_max = 7、 green_max = 7、 そしてblue_max = 3となります。 216色を使う別の構成では、 red_max = 5、green_max = 5, そしてblue_max = 5となります。 メンバーred_mult, green_mult, およびblue_multはピクセル値を構成する単位を与えます(詳細は、base_pixelメンバの説明を参照)。 3/3/2というような構成であれば、 red_mult = 32、reen_mult = 4、そて blue_mult = 1 となり、 各色が6種類の場合、 red_mult = 36, green_mult = 6, そして blue_mult = 1となります。 base_pixelメンバはピクセル値を構成する基本ピクセル値を与えます。 通常、 base_pixelは XAllocColorPlanes 関数へのコールによって得られます。 赤、緑、青それぞれに適切な範囲で値があたえられると、 以下の式に従いピクセル値が計算されます。

r ∗ red_mult + g ∗ green_mult + b ∗ blue_mult + base_pixel

GrayScale カラーマップに関しては、メンバーのcolormap、red_max、red_mult、 およびbase_pixelが定義されます。 その他のメンバーは無視されます。 visualidメンバはカラーマップが作成されたvisualのID番号を与えます。 killidメンバはリソースIDを与え、 カラーマップIDの解放または指定したリソース上の XKillClient 関数へのコールによって、 この標準カラーマップが保持するセルが解放されるかどうかを示します。 (この方法は、実存するカラーマップからの割り付けに必要であります。) GrayScale ピクセル値を計算する為には、以下の書式で記述して下さい。

gray ∗ red_mult + base_pixel

XStandardColormap 情報を保持する属性は、タイプRGB_COLOR_MAPになります。

診断

BadAlloc サーバはリクエストされたリソースまたはサーバメモリーの割り付けに失敗した。

BadAtom Atom引数の値が定義されたAtom名称と一致しない。

BadWindow
Window引数の値が定義されたウィンドウの名称に一致しない。

関連事項

XAllocColor(3X11), XCreateColormap(3X11), XFree(3X11), XSetCloseDownMode(3X11)
Xlib − C Language X Interface

NEWS-OSRelease 4.1C

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026