#include <X11/extensions/Xrender.h>
-lXrender
[pkgconfig] xrender
-lXrender
[pkgconfig] xrender
構造体など
typedef struct { short red; short redMask; short green; short greenMask; short blue; short blueMask; short alpha; short alphaMask; } XRenderDirectFormat;
RGBA コンポーネント。
red,green,blue,alpha は、各コンポーネントのビット位置。
(例: red=16, green=8, blue = 0)
*Mask は、マスク値 (値の最大値と等しい)。
(例: redMask=255, blueMask=255, greenMask = 255, alphaMask = 0)
alphaMask が 0 の場合は、常に A = 最大値で、不透明になる。
{red,green,blue}Mask のいずれかが 0 の場合、R,G,B の値はすべて 0 になる。
red,green,blue,alpha は、各コンポーネントのビット位置。
(例: red=16, green=8, blue = 0)
*Mask は、マスク値 (値の最大値と等しい)。
(例: redMask=255, blueMask=255, greenMask = 255, alphaMask = 0)
alphaMask が 0 の場合は、常に A = 最大値で、不透明になる。
{red,green,blue}Mask のいずれかが 0 の場合、R,G,B の値はすべて 0 になる。
typedef struct { PictFormat id; int type; int depth; XRenderDirectFormat direct; Colormap colormap; } XRenderPictFormat;
Picture のピクセルフォーマット
id
このフォーマットの XID
type
カラータイプ。
PictTypeIndexed (0) : インデックス。アルファチャンネルはない。
PictTypeDirect (1) : RGBA
PictTypeIndexed (0) : インデックス。アルファチャンネルはない。
PictTypeDirect (1) : RGBA
depth
ピクセルの深さ
direct
カラーコンポーネントの詳細
colormap
インデックスカラーのカラーマップ。
Direct タイプの場合はカラーマップがないため、スクリーンに依存しない。
Direct タイプの場合はカラーマップがないため、スクリーンに依存しない。
typedef struct _XRenderPictureAttributes { int repeat; Picture alpha_map; int alpha_x_origin; int alpha_y_origin; int clip_x_origin; int clip_y_origin; Pixmap clip_mask; Bool graphics_exposures; int subwindow_mode; int poly_edge; int poly_mode; Atom dither; Bool component_alpha; } XRenderPictureAttributes;
Picture の属性
repeat
範囲外のピクセルの処理方法 (default = RepeatNone)
RepeatNone | 透明に置き換える |
---|---|
RepeatNormal | 画像がタイル状に並んでいるものとして、ピクセルを選択します。 タイリングが座標をカバーしない場合は、選択した Constant モードまたは Nearest モードを使用します。 |
RepeatPad | (ver 0.10) 最も近い、利用可能なピクセルに置き換えます。 複数のピクセルが等距離にある場合は、最小の Y 座標、次に最小の X 座標のピクセルを選択します。 |
RepeatReflect | (ver 0.10) 画像がタイル状に反転して並んでいるものとして、ピクセルを選択します。 |
alpha_map
(default = None)
すべてのレンダリング時、drawable のアルファチャンネルの代わりとして使われる Picture。
alpha_map ピクチャ自体にアルファマップがある場合、結果は未定義です。
すべてのレンダリング時、drawable のアルファチャンネルの代わりとして使われる Picture。
alpha_map ピクチャ自体にアルファマップがある場合、結果は未定義です。
alpha_{x,y}_origin
drawable を基準とした原点位置
clip_mask
(default = None)
drawable への書き込みと読み込み時のクリップマスク。ビットが 1 で許可。
None で常に描画される。
depth = 1 で、drawable と同じルートを持つ必要があります。
変形、フィルタ、リピートモードはクリップマスクには影響しません。
drawable への書き込みと読み込み時のクリップマスク。ビットが 1 で許可。
None で常に描画される。
depth = 1 で、drawable と同じルートを持つ必要があります。
変形、フィルタ、リピートモードはクリップマスクには影響しません。
clip_{x,y}_origin
Picture を基準とした原点位置
graphics_exposures
※無効なフィールド
subwindow_mode
出力先がウィンドウの場合、サブウィンドウのクリップ方法。
ClipByChildren (default) : 下層や兄弟ウィンドウによってクリップされる。
IncludeInferiors : 兄弟によるクリップが行われるが、下層によるクリップは行われない。
ウィンドウがソースまたはマスクとして使用される場合は、無視される。
ClipByChildren (default) : 下層や兄弟ウィンドウによってクリップされる。
IncludeInferiors : 兄弟によるクリップが行われるが、下層によるクリップは行われない。
ウィンドウがソースまたはマスクとして使用される場合は、無視される。
poly_edge
ポリゴンの端の部分のアルファマスクの生成モード。
PolyEdgeSharp : 非アンチエイリアス
PolyEdgeSmooth (default) : アンチエイリアス
PolyEdgeSharp : 非アンチエイリアス
PolyEdgeSmooth (default) : アンチエイリアス
poly_mode
アルファ値のラスタライズモード。
PolyModePrecise (default) : 規則的なグリッド
PolyModeImprecise
PolyModePrecise (default) : 規則的なグリッド
PolyModeImprecise
dither
※無効なフィールド
component_alpha
(default = False)
Picture がマスクオペランドとして使用されるときに、各画像コンポーネントが、個別のアルファ値として意図されているかどうかを示します。
Picture がマスクオペランドとして使用されるときに、各画像コンポーネントが、個別のアルファ値として意図されているかどうかを示します。
typedef struct { unsigned short red; unsigned short green; unsigned short blue; unsigned short alpha; } XRenderColor;
描画色の色。
※0〜0xffff の範囲。
※0〜0xffff の範囲。
typedef struct _XGlyphInfo { unsigned short width; unsigned short height; short x; short y; short xOff; short yOff; } XGlyphInfo;
グリフの情報
width,height
グリフの幅と高さ
x,y
左上を基準としたグリフの中心オフセット位置
xOff,yOff
次のグリフ位置への余白
typedef struct _XGlyphElt8 { GlyphSet glyphset; _Xconst char *chars; int nchars; int xOff; int yOff; } XGlyphElt8; typedef struct _XGlyphElt16 { GlyphSet glyphset; _Xconst unsigned short *chars; int nchars; int xOff; int yOff; } XGlyphElt16; typedef struct _XGlyphElt32 { GlyphSet glyphset; _Xconst unsigned int *chars; int nchars; int xOff; int yOff; } XGlyphElt32;
グリフ要素
typedef int XFixed; #define XDoubleToFixed(f) ((XFixed)((f)*65536)) #define XFixedToDouble(f) (((XDouble)(f)) / 65536)
固定少数点数 (16:16)
合成オペランド
色は、以下のように計算される。
C = src * Fa + dst * Fb
■ ver 0.11 で追加された合成モード
C = src * Fa + dst * Fb
OP | Fa(src) | Fb(dst) |
PictOpClear | 0 | 0 |
---|---|---|
PictOpSrc | 1 | 0 |
PictOpDst | 0 | 1 |
PictOpOver | 1 | 1-sa |
PictOpOverReverse | 1-da | 1 |
PictOpIn | da | 0 |
PictOpInReverse | 0 | sa |
PictOpOut | 1-da | 0 |
PictOpOutReverse | 0 | 1-sa |
PictOpAtop | da | 1-sa |
PictOpAtopReverse | 1-da | sa |
PictOpXor | 1-da | 1-sa |
PictOpAdd | 1 | 1 |
PictOpSaturate | min(1,(1-da)/sa) | 1 |
PictOpDisjointClear | 0 | 0 |
PictOpDisjointSrc | 1 | 0 |
PictOpDisjointDst | 0 | 1 |
PictOpDisjointOver | 1 | min(1,(1-sa)/da) |
PictOpDisjointOverReverse | min(1,(1-da)/sa) | 1 |
PictOpDisjointIn | max(1-(1-da)/sa,0) | 0 |
PictOpDisjointInReverse | 0 | max(1-(1-sa)/da,0) |
PictOpDisjointOut | min(1,(1-da)/sa) | 0 |
PictOpDisjointOutReverse | 0 | min(1,(1-sa)/da) |
PictOpDisjointAtop | max(1-(1-da)/sa,0) | min(1,(1-sa)/da) |
PictOpDisjointAtopReverse | min(1,(1-da)/sa) | max(1-(1-sa)/da,0) |
PictOpDisjointXor | min(1,(1-da)/sa) | min(1,(1-sa)/da) |
PictOpConjointClear | 0 | 0 |
PictOpConjointSrc | 1 | 0 |
PictOpConjointDst | 0 | 1 |
PictOpConjointOver | 1 | max(1-sa/da,0) |
PictOpConjointOverReverse | max(1-da/sa,0) | 1 |
PictOpConjointIn | min(1,da/sa) | 0 |
PictOpConjointInReverse | 0 | min(sa/da,1) |
PictOpConjointOut | max(1-da/sa,0) | 0 |
PictOpConjointOutReverse | 0 | max(1-sa/da,0) |
PictOpConjointAtop | min(1,da/sa) | max(1-sa/da,0) |
PictOpConjointAtopReverse | max(1-da/sa,0) | min(1,sa/da) |
PictOpConjointXor | max(1-da/sa,0) | max(1-sa/da,0) |
■ ver 0.11 で追加された合成モード
#define PictOpMultiply 0x30 #define PictOpScreen 0x31 #define PictOpOverlay 0x32 #define PictOpDarken 0x33 #define PictOpLighten 0x34 #define PictOpColorDodge 0x35 #define PictOpColorBurn 0x36 #define PictOpHardLight 0x37 #define PictOpSoftLight 0x38 #define PictOpDifference 0x39 #define PictOpExclusion 0x3a #define PictOpHSLHue 0x3b #define PictOpHSLSaturation 0x3c #define PictOpHSLColor 0x3d #define PictOpHSLLuminosity 0x3e
情報
Bool XRenderQueryExtension(Display *dpy, int *event_basep, int *error_basep);
拡張機能の情報を取得
event_basep
拡張機能のイベントタイプのベース値
error_base
拡張機能のエラーコードのベース値
戻り値
True で拡張機能が使用できる
Status XRenderQueryVersion(Display *dpy, int *major_versionp, int *minor_versionp);
拡張機能のバージョンを取得。
ライブラリ内部では、XRenderQueryFormats() も行われている。
ライブラリ内部では、XRenderQueryFormats() も行われている。
major_versionp,minor_versionp
実際に使用できるバージョンが返る。最大で ver 0.11。
戻り値
拡張機能がサポートされている場合、True
int XRenderQuerySubpixelOrder(Display *dpy, int screen);
スクリーンのサブピクセルオーダーを取得。
0.6
0.6
戻り値
SubPixelUnknown (エラー), SubPixelHorizontalRGB, SubPixelHorizontalBGR, SubPixelVerticalRGB, SubPixelVerticalBGR, SubPixelNone
Bool XRenderSetSubpixelOrder(Display *dpy, int screen, int subpixel);
スクリーンのサブピクセルオーダーを変更。
0.6
0.6
subpixel
SubPixelHorizontalRGB, SubPixelHorizontalBGR, SubPixelVerticalRGB, SubPixelVerticalBGR, SubPixelNone
戻り値
True で成功
XRenderPictFormat *XRenderFindVisualFormat(Display *dpy, _Xconst Visual *visual);
ビジュアルの PictFormat を取得
戻り値
ライブラリ内部でキャッシュされているポインタが返るので、解放しなくて良い。NULL で失敗。
XRenderPictFormat *XRenderFindFormat(Display *dpy, unsigned long mask, _Xconst XRenderPictFormat *templ, int count);
テンプレートにマッチする、最初の PictFormat を取得する。
mask
templ で使用する値のマスク。
#define PictFormatID (1 << 0) #define PictFormatType (1 << 1) #define PictFormatDepth (1 << 2) #define PictFormatRed (1 << 3) #define PictFormatRedMask (1 << 4) #define PictFormatGreen (1 << 5) #define PictFormatGreenMask (1 << 6) #define PictFormatBlue (1 << 7) #define PictFormatBlueMask (1 << 8) #define PictFormatAlpha (1 << 9) #define PictFormatAlphaMask (1 << 10) #define PictFormatColormap (1 << 11)
templ
テンプレート
count
一致するフォーマットを、先頭から指定個数スキップする
戻り値
NULL で見つからなかった。ポインタは解放しないこと。
XRenderPictFormat *XRenderFindStandardFormat(Display *dpy, int format);
事前定義された標準フォーマットを取得する。
これは、一般的な形式を検索するための XRenderFindFormat の短縮形です。
これは、一般的な形式を検索するための XRenderFindFormat の短縮形です。
format
フォーマット。
#define PictStandardARGB32 0 #define PictStandardRGB24 1 #define PictStandardA8 2 #define PictStandardA4 3 #define PictStandardA1 4
戻り値
NULL で見つからなかった。ポインタは解放しないこと。
XIndexValue *XRenderQueryPictIndexValues(Display *dpy, _Xconst XRenderPictFormat *format, int *num); typedef struct _XIndexValue { unsigned long pixel; unsigned short red, green, blue, alpha; } XIndexValue;
Indexed フォーマットからインデックスカラーを取得
num
配列の数が返る
戻り値
XIndexValue の配列。XFree() で解放する。NULL で失敗。
XFilters *XRenderQueryFilters(Display *dpy, Drawable drawable); typedef struct _XFilters { int nfilter; //フィルタ名の数 char **filter; //フィルタ名の配列 int nalias; //エイリアスの数 short *alias; //フィルタのインデックス or 0xffff } XFilters;
drawable に適用できるフィルタを取得
戻り値
XFree() で解放する。NULL で失敗。
Picture
Picture XRenderCreatePicture(Display *dpy, Drawable drawable, _Xconst XRenderPictFormat *format, unsigned long valuemask, _Xconst XRenderPictureAttributes *attributes);
指定 drawable に、作成した Picture オブジェクトを関連付けて、Picture を返す。
Picture には、drawable, format, attributes が関連付けられる。
画像内のピクセルデータは、format に従って解釈されます。
drawable が破棄された場合は、Picture も自動的に破棄される。
drawable と異なる深さのフォーマットを指定すると、Match エラーになります。
drawable がウィンドウの場合、R,G,B のマスクはウィンドウのビジュアル内のマスクと一致する必要があり、一致しない場合は Match エラーが生成されます。
Picture には、drawable, format, attributes が関連付けられる。
画像内のピクセルデータは、format に従って解釈されます。
drawable が破棄された場合は、Picture も自動的に破棄される。
drawable と異なる深さのフォーマットを指定すると、Match エラーになります。
drawable がウィンドウの場合、R,G,B のマスクはウィンドウのビジュアル内のマスクと一致する必要があり、一致しない場合は Match エラーが生成されます。
valuemask
属性のマスク。
#define CPRepeat (1 << 0) #define CPAlphaMap (1 << 1) #define CPAlphaXOrigin (1 << 2) #define CPAlphaYOrigin (1 << 3) #define CPClipXOrigin (1 << 4) #define CPClipYOrigin (1 << 5) #define CPClipMask (1 << 6) #define CPGraphicsExposure (1 << 7) #define CPSubwindowMode (1 << 8) #define CPPolyEdge (1 << 9) #define CPPolyMode (1 << 10) #define CPDither (1 << 11) #define CPComponentAlpha (1 << 12)
void XRenderChangePicture(Display *dpy, Picture picture, unsigned long valuemask, _Xconst XRenderPictureAttributes *attributes);
Picture の属性を変更
void XRenderSetPictureClipRectangles(Display *dpy, Picture picture, int xOrigin, int yOrigin, _Xconst XRectangle *rects, int n);
クリップマスクを複数の矩形でセット
void XRenderSetPictureTransform(Display *dpy, Picture picture, XTransform *transform); typedef struct _XTransform { XFixed matrix[3][3]; } XTransform;
変形行列をセット
void XRenderSetPictureFilter(Display *dpy, Picture picture, const char *filter, XFixed *params, int nparams);
picture がソースまたはマスクオペランドの場合に使用される、現在のフィルターを設定します。
フィルターは、画像に関連付けられたスクリーンでサポートされているフィルターの 1 つである必要があります。そうでない場合は、Match エラーが生成されます。
フィルターが追加のパラメーターを受け入れる場合は、それらを値で指定できます。
値が正しくない場合は Value エラーが生成され、値が多すぎると Match エラーが生成されます。
値が少なすぎると、フィルターは欠落しているパラメーターのデフォルト値を想定します。
作成時に、画像は nearest フィルターに設定されます。
フィルターは、画像に関連付けられたスクリーンでサポートされているフィルターの 1 つである必要があります。そうでない場合は、Match エラーが生成されます。
フィルターが追加のパラメーターを受け入れる場合は、それらを値で指定できます。
値が正しくない場合は Value エラーが生成され、値が多すぎると Match エラーが生成されます。
値が少なすぎると、フィルターは欠落しているパラメーターのデフォルト値を想定します。
作成時に、画像は nearest フィルターに設定されます。
filter
フィルタ名
params
フィルタのパラメータ
nparams
params の数
Cursor XRenderCreateCursor(Display *dpy, Picture source, unsigned int x, unsigned int y);
Picture からカーソルを作成する。
カーソルのコンポーネントは、表示制限に合わせて任意に変換できます。
特に、ディスプレイが完全不透明な 2 色のカーソルのみをサポートしている場合、alpha 0.5 未満の領域は透明、それ以外の領域は不透明、グレイスケール 50% より暗い領域は黒、その他の領域は白になるように、カーソルが変換されます。
ソースピクチャへの明示的な参照が行われない場合、ソースピクチャは直ちに解放できます。
ソース内での後続の描画は、カーソルに未定義の影響を与えます。
サーバーは画像のコピーを作成する場合もあれば、作成しない場合もあります。
カーソルのコンポーネントは、表示制限に合わせて任意に変換できます。
特に、ディスプレイが完全不透明な 2 色のカーソルのみをサポートしている場合、alpha 0.5 未満の領域は透明、それ以外の領域は不透明、グレイスケール 50% より暗い領域は黒、その他の領域は白になるように、カーソルが変換されます。
ソースピクチャへの明示的な参照が行われない場合、ソースピクチャは直ちに解放できます。
ソース内での後続の描画は、カーソルに未定義の影響を与えます。
サーバーは画像のコピーを作成する場合もあれば、作成しない場合もあります。
x,y
ソースを基準としたホットスポット位置。ソース内の位置であること。
戻り値
X カーソル。PictOpOver (通常のアルファ合成) を使用して画面に描画されます。
Cursor XRenderCreateAnimCursor(Display *dpy, int ncursor, XAnimCursor *cursors); typedef struct _XAnimCursor { Cursor cursor; unsigned long delay; //遅延時間 } XAnimCursor;
アニメーションカーソルを作成する。
0.8
0.8
void XRenderAddTraps(Display *dpy, Picture picture, int xOff, int yOff, _Xconst XTrap *traps, int ntrap); typedef struct _XSpanFix { XFixed left, right, y; } XSpanFix; typedef struct _XTrap { XSpanFix top, bottom; } XTrap;
Picture のアルファチャンネルに台形を追加。
0.9
0.9
picture
アルファ値のみの画像であること。
PictOpAdd で合成される。
PictOpAdd で合成される。
Picture XRenderCreateSolidFill(Display *dpy, const XRenderColor *color);
指定色で塗りつぶされた Picture を作成。
0.10
0.10
Picture XRenderCreateLinearGradient(Display *dpy, const XLinearGradient *gradient, const XFixed *stops, const XRenderColor *colors, int nstops); typedef struct _XLinearGradient { XPointFixed p1; XPointFixed p2; } XLinearGradient;
線形グラデーションで塗りつぶされた Picture を作成。
0.10
0.10
gradient
線形の始点と終点
stops
0.0〜1.0 までの停止点。小さい順であること。
colors
各停止点の色
nstops
停止点の数
Picture XRenderCreateRadialGradient(Display *dpy, const XRadialGradient *gradient, const XFixed *stops, const XRenderColor *colors, int nstops); typedef struct _XCircle { XFixed x; XFixed y; XFixed radius; } XCircle; typedef struct _XRadialGradient { XCircle inner; XCircle outer; } XRadialGradient;
放射状グラデーションで塗りつぶされた Picture を作成
Picture XRenderCreateConicalGradient(Display *dpy, const XConicalGradient *gradient, const XFixed *stops, const XRenderColor *colors, int nstops); typedef struct _XConicalGradient { XPointFixed center; XFixed angle; //角度 } XConicalGradient;
円錐形のラデーションで塗りつぶされた Picture を作成
合成
void XRenderComposite(Display *dpy, int op, Picture src, Picture mask, Picture dst, int src_x, int src_y, int mask_x, int mask_y, int dst_x, int dst_y, unsigned int width, unsigned int height);
src を mask でマスクし、dst の指定範囲と合成する。
座標は、それぞれの (変換された) drawable の原点を基準とした相対座標です。
レンダリングは、dst の drawable のジオメトリにクリップされてから、dst クリップリストでクリップされます。
src、mask、dst が同じ PictFormat ではなく、いずれかのフォーマットが精度を損なうことなくすべてを保持できる場合、そのフォーマットに変換されます。
あるいは、サーバーは、各オペランドをフォールバック形式に変換します。
座標は、それぞれの (変換された) drawable の原点を基準とした相対座標です。
レンダリングは、dst の drawable のジオメトリにクリップされてから、dst クリップリストでクリップされます。
src、mask、dst が同じ PictFormat ではなく、いずれかのフォーマットが精度を損なうことなくすべてを保持できる場合、そのフォーマットに変換されます。
あるいは、サーバーは、各オペランドをフォールバック形式に変換します。
mask
アルファチャンネルとして使われる Picture。
None の場合、定数アルファ値 1.0 に置き換えられます。
None の場合、定数アルファ値 1.0 に置き換えられます。
void XRenderFillRectangle(Display *dpy, int op, Picture dst, _Xconst XRenderColor *color, int x, int y, unsigned int width, unsigned int height); void XRenderFillRectangles(Display *dpy, int op, Picture dst, _Xconst XRenderColor *color, _Xconst XRectangle *rectangles, int n_rects);
指定色で塗りつぶされたソースと合成します。
各長方形は個別に結合されます。重なっている領域は、複数回レンダリングされます。
各長方形は個別に結合されます。重なっている領域は、複数回レンダリングされます。
void XRenderCompositeTrapezoids(Display *dpy, int op, Picture src, Picture dst, _Xconst XRenderPictFormat *maskFormat, int xSrc, int ySrc, _Xconst XTrapezoid *traps, int ntrap); typedef int XFixed; typedef struct _XPointFixed { XFixed x, y; } XPointFixed; typedef struct _XLineFixed { XPointFixed p1, p2; } XLineFixed; typedef struct _XTrapezoid { XFixed top, bottom; XLineFixed left, right; } XTrapezoid;
台形のマスクを使用して2つの Picture を合成
void XRenderCompositeTriangles(Display *dpy, int op, Picture src, Picture dst, _Xconst XRenderPictFormat *maskFormat, int xSrc, int ySrc, _Xconst XTriangle *triangles, int ntriangle); typedef struct _XTriangle { XPointFixed p1, p2, p3; } XTriangle;
三角形のマスクを使用して Picture を合成
void XRenderCompositeTriStrip(Display *dpy, int op, Picture src, Picture dst, _Xconst XRenderPictFormat *maskFormat, int xSrc, int ySrc, _Xconst XPointFixed *points, int npoint);
1-2-3-4 の頂点がある場合、1-2-3, 3-2-4, ... の三角形になる。
最後の2つの辺が、次の最初の辺と同じになる。
最後の2つの辺が、次の最初の辺と同じになる。
void XRenderCompositeTriFan(Display *dpy, int op, Picture src, Picture dst, _Xconst XRenderPictFormat *maskFormat, int xSrc, int ySrc, _Xconst XPointFixed *points, int npoint);
1-2-3-4 の頂点がある場合、1-2-3, 1-3-4, ... の三角形になる。
最初の点を中心に、扇形に展開していく。
最初の点を中心に、扇形に展開していく。
void XRenderCompositeDoublePoly(Display *dpy, int op, Picture src, Picture dst, _Xconst XRenderPictFormat *maskFormat, int xSrc, int ySrc, int xDst, int yDst, _Xconst XPointDouble *fpoints, int npoints, int winding); typedef struct _XPointDouble { XDouble x, y; } XPointDouble;
多角形のマスクを使用して Picture を合成 (double)
グリフ
GlyphSet XRenderCreateGlyphSet(Display *dpy, _Xconst XRenderPictFormat *format);
グリフセットを作成
format
Direct フォーマットであること。
RGB 値が含まれる場合、グリフは component_alpha = True を使用して合成され、それ以外の場合は component_alpha = False を使用して合成されます。
RGB 値が含まれる場合、グリフは component_alpha = True を使用して合成され、それ以外の場合は component_alpha = False を使用して合成されます。
GlyphSet XRenderReferenceGlyphSet(Display *dpy, GlyphSet existing);
既存のグリフセットの追加の名前を作成します。
グリフセットへの参照がすべて破棄されるまで、グリフセットは解放されません。
グリフセットへの参照がすべて破棄されるまで、グリフセットは解放されません。
void XRenderFreeGlyphSet(Display *dpy, GlyphSet glyphset);
グリフセットを解放する。
すべての参照が解放されると、グリフセットと、それに含まれるすべてのグリフが解放されます。
すべての参照が解放されると、グリフセットと、それに含まれるすべてのグリフが解放されます。
void XRenderAddGlyphs(Display *dpy, GlyphSet glyphset, _Xconst Glyph *gids, _Xconst XGlyphInfo *glyphs, int nglyphs, _Xconst char *images, int nbyte_images);
グリフセットにグリフを追加します。
グリフのイメージは、32 bit 境界にパディングされた個別の Z 形式イメージ内の各グリフとともに保存されます。
同じ名前の既存のグリフは置き換えられます。
グリフのイメージは、32 bit 境界にパディングされた個別の Z 形式イメージ内の各グリフとともに保存されます。
同じ名前の既存のグリフは置き換えられます。
nglyphs
グリフ数
images
グリフグラフィック
nbyte_images
images のバイト数
void XRenderFreeGlyphs(Display *dpy, GlyphSet glyphset, _Xconst Glyph *gids, int nglyphs);
グリフセットからグリフを削除します。
各グリフはグリフセット内に存在する必要があります (そうでない場合は Match エラーが発生します)。
各グリフはグリフセット内に存在する必要があります (そうでない場合は Match エラーが発生します)。
void XRenderCompositeString8(Display *dpy, int op, Picture src, Picture dst, _Xconst XRenderPictFormat *maskFormat, GlyphSet glyphset, int xSrc, int ySrc, int xDst, int yDst, _Xconst char *string, int nchar); void XRenderCompositeString16(Display *dpy, int op, Picture src, Picture dst, _Xconst XRenderPictFormat *maskFormat, GlyphSet glyphset, int xSrc, int ySrc, int xDst, int yDst, _Xconst unsigned short *string, int nchar); void XRenderCompositeString32(Display *dpy, int op, Picture src, Picture dst, _Xconst XRenderPictFormat *maskFormat, GlyphSet glyphset, int xSrc, int ySrc, int xDst, int yDst, _Xconst unsigned int *string, int nchar);
Picture に 8bit/16bit/32bit 文字列を描画
maskFormat
None でない場合、グリフは、maskFormat で計算された有効なマスクを使用して、次の方法でレンダリングされます。
None の場合、グリフは dst に直接指定された順序でレンダリングされます。
tmp = 作業用アルファ Picture Combine (Zero, tmp, tmp, None) for each glyph Combine (Add, tmp, glyph, None) Combine (op, dst, source, tmp)
None の場合、グリフは dst に直接指定された順序でレンダリングされます。
xDst,yDst
drawable の原点を基準としたベースライン位置
void XRenderCompositeText8(Display *dpy, int op, Picture src, Picture dst, _Xconst XRenderPictFormat *maskFormat, int xSrc, int ySrc, int xDst, int yDst, _Xconst XGlyphElt8 *elts, int nelt); void XRenderCompositeText16(Display *dpy, int op, Picture src, Picture dst, _Xconst XRenderPictFormat *maskFormat, int xSrc, int ySrc, int xDst, int yDst, _Xconst XGlyphElt16 *elts, int nelt); void XRenderCompositeText32(Display *dpy, int op, Picture src, Picture dst, _Xconst XRenderPictFormat *maskFormat, int xSrc, int ySrc, int xDst, int yDst, _Xconst XGlyphElt32 *elts, int nelt);
8bit/16bit/32bit 文字列のグリフを描画