XLC(3X) — UNIX Programmer’s Manual
名称
XlcOffTheSpot, XlcOnTheSpot, XlcFrame, XlcOffset, XlcGetString, XlcMessage
− X Language Conversion ライブラリ
要約
Window XlcOffTheSpot (display, window, conversion)
Display∗display;
Windowwindow;
char∗conversion;
XlcGetString (display, prop_return, event)
Display∗display;
unsigned char∗∗prop_return;
XPropertyEvent∗event;
XlcMessage (event)
XClientMessageEvent∗event;
Window XlcOnTheSpot (display, window, conversion,
foreground, background, border,
border_width, font8, font16,
frame_x, frame_y, frame_width, frame_height,
x_offset, y_offset, line_height,
auto_offset)
Display∗display;
Windowwindow;
char∗conversion;
unsigned longforeground, background, border;
intborder_width, frame_x, frame_y, frame_width, frame_height;
intx_offset, y_offset, line_height;
Fontfont8, font16;
Boolauto_offset;
XlcFrame (display, frame_x, frame_y, frame_width, frame_height, x_offset, y_offset)
Display∗display;
intframe_x, frame_y, frame_width, frame_height, x_offset, y_offset;
XlcOffset (display, x_offset, y_offset)
Display∗display;
intx_offset, y_offset;
解説
X Language Conversion (Xlc) ライブラリを使うことで、 アプリケーションは Language Conversion サーバに接続して 変換結果を得ることができます。 現在は、SJX 仮名漢字変換サーバを使って、 日本語入力を得ることができます。 Xlc ライブラリには、変換サーバのウィンドウを使うインターフェースと、 アプリケーションのウィンドウを使った "その場変換" のインターフェースがあります。
変換サーバのウィンドウを使うインターフェース
XlcOffTheSpot で変換サーバに接続し、変換開始要求をだします。 XlcOffTheSpot は変換サーバのウィンドウ ID を返します。 変換サーバがすでに走っていれば、アプリケーションにたいして 変換開始通知を Client Message で送ります。 ClientMessage Event をアプリケーションが受け取った場合は、 XlcMessage を呼んで同期を取ります。 変換結果が確定したときは、PropertyNotify Event がアプリケーションにきます。 したがって、変換結果を受け取りたいウィンドウは、PropertyChangeMask を SelectInput をするときに加えなければなりません。 PropertyNotify Event がきたときは、 XlcGetString を使って、変換結果を取り出すことができます。 SJX の場合、COMPOUND TEXT で返されます。
Window XlcOffTheSpot (display, window, conversion)
Display∗display;
Windowwindow;
char∗conversion;
displayX サーバへのコネクションを指定します。
window変換を要求するウィンドウを指定します。
conversion要求する変換名を指定します。SJX の場合は、 "JAPANESE_CONVERSION" を指定します。
XlcGetString (display, prop_return, event)
Display∗display;
unsigned char∗∗prop_return;
XPropertyEvent∗event;
displayX サーバへのコネクションを指定します。
prop_returnデータを指すポインタを返します。 この結果のデータを解放するには、XFree を使用します。
event受け取った PropertyNotify Event 構造体を指定します。
XlcMessage (event)
XClientMessageEvent∗event;
event受け取った ClientMessage Event 構造体を指定します。
アプリケーションのウィンドウを使うインターフェース
XlcOnTheSpot で変換サーバに接続し、変換開始要求をだします。 このとき "その場変換" 用のパラメータを指定します。 XlcOffTheSpot は変換サーバのウィンドウ ID を返します。 この要求がくると、SJX は要求されたウィンドウ上に 表示用のウィンドウを作り、このウィンドウに 指定されたフォアグラウンド、バックグラウンド、フォントを使って 変換中の表示をおこないます。
Window XlcOnTheSpot (display, window, conversion,
foreground, background, border,
border_width, font8, font16,
frame_x, frame_y, frame_width, frame_height,
x_offset, y_offset, line_height,
auto_offset)
Display∗display;
Windowwindow;
char∗conversion;
unsigned longforeground, background, border;
intborder_width, frame_x, frame_y, frame_width, frame_height;
intx_offset, y_offset, line_height;
Fontfont8, font16;
Boolauto_offset;
displayX サーバへのコネクションを指定します。
window変換を要求するウィンドウを指定します。
conversion要求する変換名を指定します。SJX の場合は、 "JAPANESE_CONVERSION" を指定します。
foreground表示用のフォアグラウンドを指定します。
background表示用のバックグラウンドを指定します。
border表示用のボーダ・カラーを指定します。
border_width表示用のボーダ幅を指定します。
font8表示用の半角フォントを指定します。
font16表示用の全角フォントを指定します。
frame_x変換用フレームの X 座標を 変換要求ウィンドウの原点からの相対座標で指定します。
frame_y変換用フレームの Y 座標を 変換要求ウィンドウの原点からの相対座標で指定します。
frame_width変換用フレームの幅を指定します。
frame_height変換用フレームの高さを指定します。
x_offset表示用ウィンドウの現在位置の X 座標を 変換要求ウィンドウの原点からの相対座標で指定します。
y_offset表示用ウィンドウの現在位置の Y 座標を 変換要求ウィンドウの原点からの相対座標で指定します。
line_height表示用ウィンドウが 2 行以上になったときのために 1 行の高さを指定します。
auto_offsetTrue ならば、変換が確定したとき、表示用のウィンドウを自動的に移動します。
変換用フレームの概念を以下に示します。
+----------------------------------------------------------------+
| ^ ^ conversion requested window |
| | | |
| |frame_y | |
| | | |
| v | conversion frame |
|<------>+------------|-------------------------+ ^ |
|frame_x | | | | |
| | |y_offset | | |
| | v | | |
|<------------------->+-------+ | |frame_height |
| | x_offset | | | | |
| | +-------+ | | |
| | display window | | |
| +--------------------------------------+ v |
| <-------------- frame_width -----------> |
| |
+----------------------------------------------------------------+
変換用フレームとは、変換サーバの作る表示用ウィンドウの表示指定領域であり、 アプリケーションは変換サーバにこの領域を指定することができます。 frame_x, frame_y, frame_width, frame_height に 0 を指定すると変換要求ウィンドウすべての領域が変換用フレームに選ばれます。 さらにアプリケーションは、x_offset, y_offset で 表示用ウィンドウの現在値を指定することができます。 SJX は指定された位置から表示用ウィンドウに変換中の表示をおこないます。 入力されていくにつれ表示用ウィンドウは右に伸びていきますが、 指定されたフレームの右端まできたら、表示用ウィンドウは左に移動し始めます。 さらに左端まできて 1 行がいっぱいになったら、 表示用ウィンドウは 2 行になります。 もし指定されたフレームの下までいっぱいになったら、 それ以上入力することはできません。 確定した場合、auto_offset に True が指定されているならば、 自動的に確定した長さ分だけ表示用ウィンドウを移動します。 (改行が入力された場合の特別な処理などはおこないません。)
アプリケーションウィンドウのリサイズがおこった場合などに 変換用フレームの変更が必要な場合は、XlcFrame で サーバに通知します。
XlcFrame (display, frame_x, frame_y, frame_width, frame_height, x_offset, y_offset)
Display∗display;
intframe_x, frame_y, frame_width, frame_height, x_offset, y_offset;
アプリケーションで、表示用ウィンドウの移動が必要な場合は、 XlcOffset でサーバに通知します。
XlcOffset (display, x_offset, y_offset)
Display∗display;
intx_offset, y_offset;
ClientMessage Event をアプリケーションが受け取った場合は、 XlcMessage を呼んで同期を取ります。 変換結果が確定したときは、PropertyNotify Event がアプリケーションにきます。 したがって、変換結果を受け取りたいウィンドウは、PropertyChangeMask を SelectInput をするときに加えなければなりません。 PropertyNotify Event がきたときは、 XlcGetString を使って、変換結果を取り出すことができます。 SJX の場合、COMPOUND TEXT で返されます。
関連事項
NEWS ソフトウェア取扱説明書 SJX
Compound Text Encoding
/usr/lib/libXlc.a
Copyright
(c) 1989 Sony Corporation
NEWS-OSRelease 3.3