ピクスマップは作成されたスクリーン上でのみ使える。 ピクスマップはさまざまな操作に使えるオフスクリーンリソースである。 このような操作にはカーソルの定義や模様の描画、 ラスター操作に関するものなどがある。 大部分のグラフィックリクエストはウィンドウあるいはピクスマップのどちらかを 操作する。 ビットマップは単一のビットプレーンを持つピクスマップである。
与えられたサイズのピクスマップを作成するには、 XCreatePixmap を使う。
Pixmap XCreatePixmap(display, d, width, height, depth)
Display *display;
Drawable d;
unsigned int width, height;
unsigned int depth;
関数 XCreatePixmap指定した幅、高さ、深さのピックスマップを生成し、それを一意に 示すピックスマップIDを返す。 引き数 drawble には InputOnlyウィンドウを渡しても良い。 ウィンドウの高さと幅はゼロ以外の値でなければならない。 そうでない場合にはエラー BadValueとなる。 引き数 depth は指定したドロウアブルのスクリーンがサポートしている 深さのうちのいずれかでなければならない。 そうでない場合には、エラー BadValueとなる。
- display
- Xサーバへの接続を指定。
- d
- ピックスマップが生成される先のスクリーンを指定。
- width
- height
- 幅と高さを指定。この値はピックスマップのディメンジョンを定義する。
- depth
- ピックスマップの深さを指定。
X サーバはどのスクリーン上にピックスマップを生成するか決定するため、 引き数で指定されたドロウアブルを利用する。 このピックスマップは他のスクリーン上では使えない。 また、異なる深さを持つドロウアブルと共に使うことはできない (この規則の例外については XCopyPlaneを参照のこと)。 ピックスマップの内容の初期状態は未定義である。
XCreatePixmapはエラー BadAlloc ,BadDrawable ,BadValue を起こすことがある。
指定されたピクスマップに関連づけられている全ての記憶領域を 解放するには、 XFreePixmap を使う。
XFreePixmap(display, pixmap)
Display *display;
Pixmap pixmap;
関数 XFreePixmapは最初にピックスマップIDとピックスマップの関係を削除する。 次に X サーバはピックスマップへの参照が無くなった時に、ピックスマップのメモリ領域を解放する。 以降はこのピックスマップを参照してはならない。
- display
- Xサーバへの接続を指定。
- pixmap
- ピクスマップを指定。
XFreePixmapはエラー BadPixmap を起こすことがある。
それぞれのウィンドウはそのウィンドウに定義された異なるカーソルを持つ。 ポインタが可視ウィンドウの中に入った時に、 そのウィンドウに定義されたカーソルがセットされる。 カーソルがそのウィンドウに対してまったく定義されていないなら、 カーソルは親ウィンドウに定義されているものになる。
Xの方針から、カーソルはカーソルのソース、マスク、色、ホットスポットからなる。 ピクスマップのマスクはカーソルの形を決定し、深さが1でなければならない。 ピクスマップのソースは深さが1でなければならず、 色は色のソースを決定する。 ポインタのイベントが起きた時、 ホストスポットにより報告されるカーソルにあるポイントが定義される。 サイズについてカーソル上のハードウェアによる制限や、 マスクが実装されてるかどうかについての制限がある。 XQueryBestCursorはどんなサイズが利用可能かどうかを見つけ出すのに使われる。 カーソルを作るための標準的なフォントはあるが、 Xlibは任意のフォントやビットマップからカーソルを作るために使う 関数を提供する。
標準のフォントからカーソルを作るには、 XCreateFontCursor を使う。
#include <X11/cursorfont.h>Cursor XCreateFontCursor(display, shape)
Display *display;
unsigned int shape;
X は標準的なカーソル形状のセットを特殊なフォントとして提供している。 これはカーソルと呼ばれている。 アプリケーションはインタフェースを使ってカーソルを用いるとよい。 なぜなら、フォントは個々のディスプレイの種類に応じてカスタマイズすることができるからである。 引き数 shape では標準フォントのどのグリフを使うのかを指定する。
- display
- X サーバへの接続を指定。
- shape
- カーソルの形状を指定。
ホットスポットはカーソルフォントに格納されている情報から得られる。 カーソルの初期状態の色は、前景色が黒で背景色が白である( XRecolorCursor を参照)。 カーソルの形についてのより詳しい情報に関しては Appendix Bを参照すること。
XCreateFontCursorはエラー BadAlloc, BadValue を起こすことがある。
フォントグリフからカーソルを作成するには、 XCreateGlyphCursor を使う。
Cursor XCreateGlyphCursor(display, source_font, mask_font, source_char, mask_char,
foreground_color, background_color)
Display *display;
Font source_font, mask_font;
unsigned int source_char, mask_char;
XColor *foreground_color;
XColor *background_color;
関数 XCreateGlyphCursorはソースとマスクのビットマップを指定したフォントグリフから得る点を除き、 XCreatePixmapCursorと同様の関数である。 source_char は source_font で定義されているグリフでなければならず、 そうでなければエラー BadValueとなる。 mask_font を与える場合は、 mask_char は mask_font で定義されているグリフでなければならず、 そうでなければエラー BadValueとなる。 mask_font と mask_char は指定しなくてもかまわない。 source_char と(もし定義されているならば)mask_char のグリフの原点は、 一致するよう配置され、ホットスポットを定義する。 source_char と mask_char とでバウンディングボックスの寸法が同じである必要は無く、 バウンディングボックスに対してのホットスポットの配置の制限は無い。 mask_char が与えられない場合、ソースの全てのピックスマップが表示される。 フォントは明示的な参照がそれ以上されないことが分かった時点で、 すぐに XFreeFontを呼び出して解放してよい。
- display
- X サーバへの接続を指定。
- source_font
- ソースグリフのためのフォントを指定。
- mask_font
- マスクのグリフのためのフォントか None を指定。
- source_char
- ソースに対する文字グリフを指定。
- mask_char
- マスクのためのグリフ文字を指定。
- foreground_color
- ソースの前景色に対する RGB 値を指定。
- background_color
- ソースの背景色に対する RGB 値を指定。
2バイト行列形式のインデックスを持つフォントについては、 16ビットの値は byte1 メンバが最上位バイトで byte2 が 最下位ビットとなるようにしなければならない。
XCreateGlyphCursorはエラー BadAlloc ,BadFont ,BadValue を起こすことがある。
2つのビットマップからカーソルを作るには、 XCreatePixmapCursor を使う。
Cursor XCreatePixmapCursor(display, source, mask, foreground_color, background_color, x, y)
Display *display;
Pixmap source;
Pixmap mask;
XColor *foreground_color;
XColor *background_color;
unsigned int x, y;
関数 XCreatePixmapCursorはカーソルを生成し、これに対応するカーソルIDを返す。 X サーバが StaticGrayや GrayScaleのスクリーンしか持っていない場合であっても、 前景色と背景色の RGB 値は foreground_color と background_color を使って指定しなければならない。 ソースピックスマップ内で1にセットされているピクセルに対しては 前景色が使用され、0にセットされているピクセルに対しては背景色が使用される。 指定する場合には、ソースとマスクの両者は深さ(depth)が1でなければならない (さもなくば BadMatchエラーとなる)が、ルートウィンドウは任意のものでよい。 引き数 mask はカーソルの形状を定義する。 マスク内で1にセットされているピクセルは、ソースのどのピクセルが表示されるかを定義し、 0にセットされているピクセルは無視されるピクセルを定義する。 マスクが与えられない場合は、ソースの全てのピクセルが表示される。 もしマスクを与えるならば、マスクは引き数 source で定義される ピックスマップと同じ大きさでなければならず、 そうでない場合にはエラー BadMatchとなる。 ホットスポットはソースの内部の点でなければならず、 そうでない場合にはエラー BadMatchとなる。
- display
- X サーバへの接続を指定。
- source
- ソースカーソルの形状を指定。
- mask
- カーソルのソースのうち表示されるビット、あるいは None を指定。
- foreground_color
- ソースの前景色に対する RGB 値を指定。
- background_color
- ソースの背景色に対する RGB 値を指定。
- x
- y
- x, y 座標を指定する。これはソースの原点からの相対座標でホットスポット(hotspot)を示す。
ディスプレイの制限を満たすため、カーソルの構成要素に対して 任意の変換が行われるかもしれない。 ピックスマップは明示的な参照がそれ以上されないことが分かった時点で、 すぐに解放してよい。 その後にソースやマスクのピックスマップへの描画を行った場合の カーソルへの影響は未定義である。 X サーバはピックスマップのコピーを作るかもしれないし、作らないかもしれない。
XCreatePixmapCursorはエラー BadAlloc, BadPixmapを起こすことがある。
便利なカーソルサイズを決定するには、 XQueryBestCursor を使う。
Status XQueryBestCursor(display, d, width, height, width_return, height_return)
Display *display;
Drawable d;
unsigned int width, height;
unsigned int *width_return, *height_return;
ディスプレイによっては、他のディスプレイより大きなカーソルを使用できる。 関数 XQueryBestCursorを使えば、そのディスプレイ上で実際に利用できるカーソルのサイズを知ること ができる。 この関数は表示できる最大のサイズを返す。 大きいカーソルをサポートしていないディスプレイ上では、 アプリケーションは小さいカーソルを使わなければならない。
- display
- Xサーバへの接続を指定。
- d
- スクリーンを指示するためのドロウアブルを指定。
- width
- height
- \ サイズ情報を得ようとしているカーソルの幅と高さを指定。
- width_return
- height_return
- 指定した幅と高さにできるだけ近い、最善の幅と高さが返される。
XQueryBestCursorはエラー BadDrawable を起こすことがある。
与えられたカーソルの色を変更するには、 XRecolorCursor を使う。
XRecolorCursor(display, cursor, foreground_color, background_color)
Display *display;
Cursor cursor;
XColor *foreground_color, *background_color;
関数 XRecolorCursorは指定したカーソルの色を変更する。 カーソルがスクリーン上に表示されている場合、 色の変更は即座に反映される。 XColor構造体の pixel メンバは無視され、RGB 値のみが使用される。
- display
- Xサーバへの接続を指定。
- cursor
- カーソルを指定。
- foreground_color
- 操作元の前景色の RGB 値を指定。
- background_color
- 操作元の背景色の RGB 値を指定。
XRecolorCursorはエラー BadCursor を起こすことがある。
与えられたカーソルを解放(破棄)するには、 XFreeCursor を使う。
XFreeCursor(display, cursor)
Display *display;
Cursor cursor;
関数 XFreeCursorはカーソルリソースIDと指定したカーソルとの間の関連を削除する。 カーソルのメモリは、他のリソースからの参照が無くなった時点で解放される。 これ以降は指定したカーソルIDにアクセスしてはならない。
- display
- Specifies the connection to the X server.
- cursor
- Specifies the cursor.
XFreeCursorはエラー BadCursor を起こすことがある。