Xcursor

構造体
XcursorImageカーソルイメージ
XcursorImages複数カーソルイメージ
XcursorCursors複数の X カーソル
XcursorAnimateXカーソルのアニメーション
XcursorFileXカーソルファイルのハンドラ
関数
XcursorImageCreateカーソルイメージの作成
XcursorImageDestroyカーソルイメージの破棄
XcursorImagesCreate複数カーソルイメージの作成
XcursorImagesDestroy複数カーソルイメージの破棄
XcursorImagesSetName複数カーソルイメージの名前をセット
XcursorCursorsCreate複数のXカーソルの作成
XcursorCursorsDestroy複数のXカーソルの破棄
XcursorAnimateCreateXカーソルアニメーションの作成
XcursorAnimateDestroyXカーソルアニメーションの破棄
XcursorAnimateNextXカーソルアニメーションで、次のカーソルを取得
Xカーソルファイル (ハンドラ)
XcursorXcFileLoadImageXカーソルファイルからイメージを読み込み
XcursorXcFileLoadImagesXカーソルファイルから複数イメージを読み込み
XcursorXcFileLoadAllImagesXカーソルファイルからすべてのイメージを読み込み
XcursorXcFileLoadXカーソルファイルから、コメントとイメージを読み込み
XcursorXcFileSaveXカーソルファイルに書き込み
Xカーソルファイル (FILE *)
XcursorFileLoadImageXカーソルファイルからイメージを読み込み
XcursorFileLoadImagesXカーソルファイルから複数イメージを読み込み
XcursorFileLoadAllImagesXカーソルファイルからすべてのイメージを読み込み
XcursorFileLoadXカーソルファイルから、コメントとイメージを読み込み
XcursorFileSaveXカーソルファイルに書き込み
Xカーソルファイル (ファイル名)
XcursorFilenameLoadImageXカーソルファイルからイメージを読み込み
XcursorFilenameLoadImagesXカーソルファイルから複数イメージを読み込み
XcursorFilenameLoadAllImagesXカーソルファイルからすべてのイメージを読み込み
XcursorFilenameLoadXカーソルファイルから、コメントとイメージを読み込み
XcursorFilenameSaveImages
XcursorFilenameSave
Xカーソルファイルに書き込み
ライブラリ
XcursorLibraryLoadImageライブラリからイメージを読み込み
XcursorLibraryLoadImagesライブラリから複数イメージを読み込み
XcursorLibraryPathライブラリの検索パスを取得
XcursorLibraryShapeカーソルフォントのテーブルを返す
Xカーソル
XcursorImageLoadCursorカーソルイメージから Cursor を作成
XcursorImagesLoadCursorアニメーションカーソル用の Cursor を作成
XcursorImagesLoadCursors複数カーソルイメージから、複数の XcursorCursors を作成
XcursorFilenameLoadCursorファイルから Cursor 読み込み
XcursorFilenameLoadCursorsファイルから XcursorCursors 読み込み
XcursorLibraryLoadCursorライブラリから Cursor 読み込み
XcursorLibraryLoadCursorsライブラリから XcursorCursors 読み込み
XcursorShapeLoadImage形状から XcursorImage 読み込み
XcursorShapeLoadImages形状から XcursorImages 読み込み
XcursorShapeLoadCursor形状から Cursor 読み込み
XcursorShapeLoadCursors形状から XcursorCursors 読み込み
情報
XcursorSupportsARGBARGB がサポートされているか
XcursorSupportsAnimアニメーションがサポートされているか
XcursorSetDefaultSizeデフォルトのサイズをセット
XcursorGetDefaultSizeデフォルトのサイズを取得
XcursorSetThemeテーマをセット
XcursorGetThemeテーマを取得
XcursorGetThemeCoreコアカーソルのテーマが有効か
XcursorSetThemeCoreコアカーソルのテーマを有効にするか
#include <X11/Xcursor/Xcursor.h>
-lXcursor
[pkgconfig] xcursor

デフォルトの検索パスは「~/.local/share/icons」「~/.icons」「/usr/share/icons」「/usr/share/pixmaps」。
各ディレクトリ下に、テーマのディレクトリがあるか検索し、その cursors ディレクトリ内からカーソルファイルを検索する。
index.theme がある場合、必要に応じて継承されたテーマを見つけて検索する。
テーマが見つからない場合、"default" テーマが検索される。
構造体
typedef struct _XcursorImage {
    XcursorUInt  version;
    XcursorDim   size;
    XcursorDim   width;
    XcursorDim   height;
    XcursorDim   xhot;
    XcursorDim   yhot;
    XcursorUInt  delay;
    XcursorPixel *pixels;
} XcursorImage;
カーソルイメージ
version
イメージデータのバージョン (1)
size
マッチさせるカーソルサイズ
width,height
実際の幅と高さ
xhot,yhot
ホットスポット位置 (イメージ内の位置であること)
delay
アニメーション時、次のフレームまでの時間 (ms)
pixels
カーソルイメージ (uint32_t *)。
0xAARRGGBB の形でピクセルを並べる。
typedef struct _XcursorImages {
    int nimage;
    XcursorImage **images;
    char *name;
} XcursorImages;
複数カーソルイメージ
nimage
イメージの数
images
XcursorImage * の配列
name
画像の読み込み時の名前
typedef struct _XcursorCursors {
    Display  *dpy;
    int      ref;
    int      ncursor;
    Cursor   *cursors;
} XcursorCursors;
複数の X カーソル
ref
参照カウンタ
ncursor
カーソル数
cursors
Cursor の配列
typedef struct _XcursorAnimate {
    XcursorCursors *cursors;
    int sequence; //次のカーソル
} XcursorAnimate;
Xカーソルのアニメーション
struct _XcursorFile {
    void *closure;
    int (*read)(XcursorFile *file, unsigned char *buf, int len);
    int (*write)(XcursorFile *file, unsigned char *buf, int len);
    int (*seek)(XcursorFile *file, long offset, int whence);
};
Xカーソルファイルのハンドラ
関数
XcursorImage *XcursorImageCreate(int width, int height);
カーソルイメージの作成。
size には、width と height の最小値がセットされる。
void XcursorImageDestroy(XcursorImage *image);
カーソルイメージの破棄
XcursorImages *XcursorImagesCreate(int size);
複数カーソルイメージの作成。
nimage には 0 がセットされる。
size
カーソルサイズ
void XcursorImagesDestroy(XcursorImages *images);
複数カーソルイメージの破棄
void XcursorImagesSetName(XcursorImages *images, const char *name);
複数カーソルイメージの名前をセット
XcursorCursors *XcursorCursorsCreate(Display *dpy, int size);
複数のXカーソルの作成。
ncursor と ref には 0 がセットされる。
void XcursorCursorsDestroy(XcursorCursors *cursors);
複数のXカーソルの破棄
XcursorAnimate *XcursorAnimateCreate(XcursorCursors *cursors);
Xカーソルアニメーションの作成
void XcursorAnimateDestroy(XcursorAnimate *animate);
Xカーソルアニメーションの破棄
Cursor XcursorAnimateNext(XcursorAnimate *animate);
配列内の次の Cursor を周期的に返し、シーケンス番号をインクリメントして、次の呼び出しに備えます。
呼び出し元は、一連のカーソル画像を表示する責任があります。Xcursor はそれを行いません。
Xカーソルファイル (ハンドラ)
XcursorImage *XcursorXcFileLoadImage(XcursorFile *file, int size);
Xカーソルファイルからイメージを読み込み
XcursorImages *XcursorXcFileLoadImages(XcursorFile *file, int size);
Xカーソルファイルから複数イメージを読み込み
XcursorImages *XcursorXcFileLoadAllImages(XcursorFile *file);
Xカーソルファイルからすべてのイメージを読み込み
XcursorBool XcursorXcFileLoad(XcursorFile *file, XcursorComments **commentsp, XcursorImages **imagesp);
Xカーソルファイルから、コメントとイメージを読み込み
XcursorBool XcursorXcFileSave(XcursorFile *file, const XcursorComments *comments, const XcursorImages *images);
Xカーソルファイルに書き込み
Xカーソルファイル (FILE *)
XcursorImage *XcursorFileLoadImage(FILE *file, int size);
Xカーソルファイルからイメージを読み込み
XcursorImages *XcursorFileLoadImages(FILE *file, int size);
Xカーソルファイルから複数イメージを読み込み
XcursorImages *XcursorFileLoadAllImages(FILE *file);
Xカーソルファイルからすべてのイメージを読み込み
XcursorBool XcursorFileLoad(FILE *file, XcursorComments **commentsp, XcursorImages **imagesp);
Xカーソルファイルから、コメントとイメージを読み込み
XcursorBool XcursorFileSave(FILE *file, const XcursorComments *comments, const XcursorImages *images);
Xカーソルファイルに書き込み
Xカーソルファイル (ファイル名)
XcursorImage *XcursorFilenameLoadImage(const char *filename, int size);
Xカーソルファイルからイメージを読み込み
XcursorImages *XcursorFilenameLoadImages(const char *filename, int size);
Xカーソルファイルから複数イメージを読み込み
XcursorImages *XcursorFilenameLoadAllImages(const char *filename);
Xカーソルファイルからすべてのイメージを読み込み
XcursorBool XcursorFilenameLoad(const char *file, XcursorComments **commentsp, XcursorImages **imagesp);
Xカーソルファイルから、コメントとイメージを読み込み
XcursorBool XcursorFilenameSaveImages(const char *filename, const XcursorImages *images);

XcursorBool XcursorFilenameSave(const char *file, const XcursorComments *comments, const XcursorImages *images);
Xカーソルファイルに書き込み
ライブラリ
XcursorImage *XcursorLibraryLoadImage(const char *library, const char *theme, int size);
ライブラリ (カーソルテーマ) からイメージを読み込み。
ライブラリの検索パスから、対象のテーマが検索される。
library
ライブラリ内のカーソルファイル名
theme
テーマ (ディレクトリ名)。
NULL が指定されているか、指定テーマが見つからない場合、"default" が検索される。
戻り値
テーマが見つからなかった場合、NULL
XcursorImages *XcursorLibraryLoadImages(const char *library, const char *theme, int size);
ライブラリから複数イメージを読み込み
const char *XcursorLibraryPath(void);
ライブラリの検索パスを取得。
複数パスは ':' で区切られている。
XCURSOR_PATH 環境変数がセットされている場合、その値が返る。それ以外は、デフォルトの検索パス。
int XcursorLibraryShape(const char *library);
ライブラリの shape name で指定されているカーソルフォント名の Xcursor テーブルを返す。
戻り値
見つかった場合は、テーブルのインデックスを 2 倍にして返します (X カーソルフォントで使用されるソース値とマスク値を考慮するため)。
見つからなかった場合、-1。
Xカーソル
Cursor XcursorImageLoadCursor(Display *dpy, const XcursorImage *image);
カーソルイメージから Cursor を作成する。

ARGB がサポートされている場合、XRenderCreateCursor が使用される。
サポートされていない場合、XCreatePixmapCursor が使用される。
Cursor XcursorImagesLoadCursor(Display *dpy, const XcursorImages *images);
image 配列に複数の画像が含まれている場合、アニメーションカーソルを作成する。
(XcursorSupportsAnim が true を返した場合。それ以外の場合は、XcursorImageLoadCursor を呼び出します)

この場合、Cursor には、複数のカーソルイメージが含まれている。
XcursorCursors *XcursorImagesLoadCursors(Display *dpy, const XcursorImages *images);
XcursorCursorsCreate() で XcursorCursors を作成し、各イメージごとに XcursorImageLoadCursor() を使用して Cursor を作成する。
戻り値
失敗した場合、XcursorCursorsDestroy で破棄され、NULL が返されます。
Cursor XcursorFilenameLoadCursor(Display *dpy, const char *file);
ファイルから Cursor 読み込み
XcursorCursors *XcursorFilenameLoadCursors(Display *dpy, const char *file);
ファイルから XcursorCursors 読み込み
Cursor XcursorLibraryLoadCursor(Display *dpy, const char *file);
現在のテーマから、指定ファイルのカーソルを読み込み。
XcursorCursors *XcursorLibraryLoadCursors(Display *dpy, const char *file);
ライブラリから XcursorCursors 読み込み
XcursorImage *XcursorShapeLoadImage(unsigned int shape, const char *theme, int size);
標準の X カーソル名を使用して、形状をライブラリ名にマップし、イメージを読み込みます。
XcursorImages *XcursorShapeLoadImages(unsigned int shape, const char *theme, int size);
形状から XcursorImages 読み込み
Cursor XcursorShapeLoadCursor(Display *dpy, unsigned int shape);
形状から Cursor 読み込み
XcursorCursors *XcursorShapeLoadCursors(Display *dpy, unsigned int shape);
形状から XcursorCursors 読み込み
情報
XcursorBool XcursorSupportsARGB(Display *dpy);
ARGB がサポートされているか
XcursorBool XcursorSupportsAnim(Display *dpy);
アニメーションがサポートされているか
XcursorBool XcursorSetDefaultSize(Display *dpy, int size);
デフォルトのサイズをセット
int XcursorGetDefaultSize(Display *dpy);
デフォルトのサイズを取得
XcursorBool XcursorSetTheme(Display *dpy, const char *theme);
テーマをセット
char *XcursorGetTheme(Display *dpy);
テーマを取得
戻り値
内部で確保されているポインタが返るので、解放しないこと。
XcursorBool XcursorGetThemeCore(Display *dpy);
コアカーソルのテーマが有効か
XcursorBool XcursorSetThemeCore(Display *dpy, XcursorBool theme_core);
コアカーソルのテーマを有効にするか