Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

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

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

XAllocColor(3X11)

XChangeWindowAtrributes(3X11)

XCreateWindow(3X11)

XQueryColor(3X11)

XStoreColors(3X11)

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

名称

XCreateColormap, XCopyColormapAndFree, XFreeColormap, XSetWindowColormap, XColor − カラーマップの作成、コピーまたは破壊と構造体

形式

Colormap XCreateColormap(display, w, visual, alloc)
      Display ∗display;
      Window w;
      Visual ∗visual;
      int alloc; Colormap XCopyColormapAndFree(display, colormap)
      Display ∗display;
      Colormap colormap; XFreeColormap(display, colormap)
      Display ∗display;
      Colormap colormap; XSetWindowColormap(display, w, colormap)
      Display ∗display;
      Window w;
      Colormap colormap;

引数

alloc割り当てるカラーマップエントリを指定します。 AllocNone または AllocAll を渡すことができます。

colormap作成、コピー、設定または破壊したいカラーマップを指定します。

displayX サーバへのコネクションを指定します。

visualスクリーン上でサポートされるビジュアルタイプを指すポインタを指定します。 ビジュアルタイプがスクリーンによってサポートされるものでなければ、 BadMatch エラーが生じます。

wカラーマップを作成または設定したいウィンドウを指定します。

解説

XCreateColormap 関数は、指定されたウィンドウが属しているスクリーンに対して指定された ビジュアルタイプのカラーマップを作成し、そのカラーマップ ID を返します。 なお、指定されたウィンドウはスクリーンを確定するためだけに使用される ことに注意してください。 カラーマップエントリの初期値は、ビジュアルクラス GrayScale、 PseudoColor および DirectColor については未定義です。 StaticGray、 StaticColor および TrueColor については、エントリの値は定義されますが、値はビジュアルに固有であり、 X では定義されません。 StaticGray、 StaticColor および TrueColor については、alloc は AllocNone でなければなりません。 さもなければ BadMatch エラーが生じます。 他のビジュアルクラスについては、 alloc が AllocNone であれば、 colormap は最初はエントリを割り当てられず、クライアントが これらを割り当てることができます。 ビジュアルタイプについては、第 3.1 節を参照してください。 alloc が AllocAll であれば、カラーマップ全体が割り当てられ、書込み可能です。 割り当てられたすべてのエントリの初期値は、未定義です。 GrayScale と PseudoColor の場合、 XAllocColorCells コールがあたかも 0 から N − 1 まですべてのピクセル値を返したかのような 影響を与えます。 ここで N は、指定されたビジュアルのカラーマップエントリ値です。 DirectColor の場合、 XAllocColorPlanes コールがあたかも 0 というピクセル値と、指定されたビジュアルにおける 対応するマスクと同じビットを含む red_mask 、green_mask および blue_mask 値を 返したかのような影響を与えます。 ただし、どんな場合にも、これらのどのエントリも XFreeColors を使用して解放することはできません。 XCreateColormap の返しうるエラーは、 BadAlloc、 BadMatch、 BadValue および BadWindow です。 XCopyColormapAndFree 関数は、同じビジュアルタイプのカラーマップと、指定されたカラーマップと 同じスクリーン用のカラーマップを作成し、新しいカラーマップ ID を 返します。 また、すべてのクライアントの既存の割り当てを、指定されたカラーマップから カラー値およびリードオンリまたは書込み可能特性をもつ新しいカラーマップ へ移動し、指定されたカラーマップのエントリを解放します。 新しいカラーマップ中の他のエントリのカラー値は、未定義です。 指定されたカラーマップが、alloc を AllocAll に設定してクライアントによって作成された場合、新しいカラーマップも AllocAll で作成され、すべてのエントリのすべてのカラーは指定されたカラーマップ からコピーされ、指定されたカラーマップ中のすべてのエントリが 解放されます。 指定されたカラーマップが、 AllocAll でクライアントによって作成されなければ、 XAllocColor、 XAllocNamedColor、 XAllocColorCells または XAllocColorPlanes を使用してクライアントが割り当て、その後解放されなかったすべての ピクセルおよびプレーンが移動されます。 XCopyColormapAndFree の返しうるエラーは、 BadAlloc および BadColor です。 XFreeColormap 関数は、カラーマップリソース ID とカラーマップ間の対応付けを削除し、 カラーマップの領域を解放します。 ただし、この関数は、スクリーンのデフォルトのカラーマップに影響を 与えません。 指定されたカラーマップがスクリーンに対してインストールされたマップであれば、アンインストールされます( XUninstallColormap を参照してください)。 指定されたカラーマップが、ウィンドウのカラーマップとして定義された場合 ( XCreateWindow、 XSetWindowColormap または XChangeWindowAttributes により)、 XFreeColormap は、ウィンドウに対応するカラーマップを None に変更し、 ColormapNotify イベントを発生します。 X は、カラーマップ None でウィンドウに対して表示されたカラーを定義しません。 XFreeColormap の返しうるエラーは、 BadColor です。 XSetWindowColormap 関数は、指定されたウィンドウの指定されたカラーマップを設定します。 カラーマップは、ウィンドウと同じビジュアルタイプをもたなければ なりません。 さもなければ BadMatch エラーが生じます。 XSetWindowColormap の返しうるエラーは、 BadColor、 BadMatch および BadWindow です。

構造体

XColor 構造体は、以下のような内容をしています。

typedef struct {
      unsigned long pixel;/∗ pixel value ∗/
      unsigned short red, green, blue; /∗ rgb values ∗/
      char flags;/∗ DoRed, DoGreen, DoBlue ∗/
      char pad;
} XColor;

red, green, blue の値は、0 から 65535 の間の大きさです。 color がもっとも明るいのは、display hardware に実際に使われる ビットの数に独立に 65535 の値です。 color が半分の明るさなのは 32767 の値で、off が 0 です。 この表現は、異なる screen にわたった color values に対して 同じ形式の結果を与えます。 ある関数で、flags メンバは red, green, blue のどのメンバが使われているか コントロールし、 DoRed, DoGreen, DoBlue のうちの一つ、あるいは複数のフラッグを立てます。

診断

BadAlloc サーバが、要求されたリソースまたはサーバメモリの割当てに失敗した。

BadColor Colormap 引数の値が、定義された Colormap を指さない。

BadMatch InputOnly ウィンドウが Drawable として使用された。

BadMatch ある引数またはひと組の引数の型と範囲は正しいが、リクエストにより 要求されたその他のなにかが一致しない。

BadValue ある数値が許容範囲を超えた。 引数の値の範囲が明示されない限り、引数の型によって決まる最大の範囲まで 指定可能です。 選択形式の引数も、このエラーを生じることがあります。

BadWindow
Window 引数の値が、定義された Window を指さない。

関連事項

XAllocColor(3X11), XChangeWindowAtrributes(3X11), XCreateWindow(3X11), XQueryColor(3X11), XStoreColors(3X11)
Xlib − C Language X Interface

NEWS-OSRelease 4.1C

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