以下、大川先生のコメントの続きです。
直接的な営利目的とは,このライブラリそのもの,あるいは このライブラリをそのままの形で組み込んだパッケージソフトを 市販したりするようなことを指します.ただし,著作権は早稲田大学に帰属させてありますので, 再配布する場合には,その旨の記述を残してください. また,公式なサポートはできません. (個人的な質問にはお答えできるかもしれませんが)
あと,細かいことですが,X11R6 以降で,RPM resource の1つと して libXp.a なる,私のものとは全く無関係の同名ライブラリが 標準で添付されるようになり,少々困っています. とりあえず,使用時には LIBRARY_PATH の設定等に気をつけてください.
最後に,もし可能でしたら,このライブラリを使われてのご意見などを お聞かせいただけると幸いです.
#include "Xp.h" #include <stdio.h> void main() { char ch; int pos[2]; XpInitWindow( 1000, 800 ); /* ウィンドウ生成 */ XpSetWindowName( "test" ); /* ウィンドウ名 */ XpDrawPoint( 100, 100 ); /* 点 */ XpDrawLine( 200, 100, 700, 100 ); /* 線 */ XpDrawBox( 200, 200, 400, 300 ); /* 四角形 */ XpFillBox( 500, 300, 600, 400 ); /* 塗り潰した四角形 */ XpFillCircle( 600, 500, 30 ); /* 塗り潰した円 */ XpSetFont( "rk24" ); /* フォント */ XpDrawString( "Test", 100, 500 ); /* 文字列 */ XpDrawChar( 'x', 600, 600 ); /* 文字 */ XpSetFont( "kanji16" ); /* 漢字フォント */ XpDrawString16( "テスト", 100, 600 ); /* 2バイト系文字列 */ XpSetColor( "#ff0000" ); /* カラー(#RGB) */ XpFillBox( 800, 100, 900, 200 ); /* 塗り潰した四角形 */ XpDrawCircle( 600, 400, 60 ); /* 円 */ for( ;; ) { /* 無限ループ */ XpWaitEvent( &ch, pos ); /* イベント待ち */ if ( ch == 'A' ) /* 左ボタンでクリア */ XpClearWindow(); if ( ch == 'B' ) /* 中ボタンで座標表示 */ printf("X:%d Y:%d\n", pos[0], pos[1] ); if ( ch == 'C' ) /* 右ボタンで終了 */ exit(0); } }
void XpInitWindow ( int x, int y );
横 x ドット、縦 y ドットのウィンドウを生成し、 マウスやキーボードからのイベントの受け入れ準備および カラーマップの初期設定などを行います。
void XpFlushWindow ( );
リクエストバッファの内容を強制的に送り出します。
ウィンドウへのリクエスト(描画など)は、発生と同時にサーバに
送られるのではなく、通常はクライアント側のリクエストバッファに
蓄積されます。
こうして一定量のリクエストがたまった段階で、まとめてサーバに
送ることで処理効率を高めていますが、強制的にバッファの内容を
すべてサーバに送ってウィンドウ上に表示などをするために、
この関数を用います。
void XpSetWindowName ( char *name );
生成したウィンドウに name という名前をつけます。 ウィンドウマネージャの設定に応じて、 画面上部などにこの名前が表示されます。
void XpClearWindow ( );
ウィンドウの中のすべての部品を消去します。
void XpLineWidth ( int width );
この関数をコールしたあとで描画する線の幅(太さ)を width ドット にします。
void XpWaitEvent ( char *c_data, int *pos );
この関数を実行後、ウィンドウ上でキーボードまたはマウス操作のイベントが
起こると、c_data にその原因、pos[0] にマウスの X座標、pos[1] に
マウスの Y座標が入ります。
イベントの原因は、
マウス押下:左ボタンが'A'、中ボタンが'B'、右ボタンが'C' で、
マウス離し:左ボタンが'a'、中ボタンが'b'、右ボタンが'c' 。
キーボードの場合は、そのキーのキャラクターそのもの。
void XpSetColor ( char *color );
この関数をコールした後で描画される部品の色を
color に設定します。
色名はこのリスト にある
名前を用いるか、または HTML の色指定と同じ
"#RRGGBB"形式を用いてください(半角#に続いて
RED成分・GREEN成分・BLUE成分を各16進2文字で表記)。
void XpSetBlack ( );
この関数をコールした後で描画される部品の色を 黒に設定します (頻繁に用いるので別途関数を設けました)。
void XpSetWhite ( );
この関数をコールした後で描画される部品の色を 白に設定します (頻繁に用いるので別途関数を設けました)。
void XpDrawPoint ( int x1, int y1 );
( x1, y1 ) に1ドットの点を描きます。
void XpDrawLine ( int x1, int y1, int x2, int y2 );
( x1, y1 ) から ( x2, y2 ) に線を引きます。 線幅は、事前に XpLineWidth で 設定した場合はそれに従い、していない場合はデフォルトの 1ドットとなります。
void XpDrawBox ( int x1, int y1, int x2, int y2 );
( x1, y1 ) と ( x2, y2 ) を対頂点とした四角形を描きます (線幅については XpDrawLine に同じ)。
void XpFillBox ( int x1, int y1, int x2, int y2 );
( x1, y1 ) と ( x2, y2 ) を対頂点とした四角形を描き、 中を塗り潰します。
void XpDrawCircle ( int x, int y, int r );
中心 ( x, y ) 、半径 r の円を描きます。
void XpFillCircle ( int x, int y, int r );
中心 ( x, y ) 、半径 r の円を描き、中を塗り潰します。