部品ライブラリ Copyright T.Kobayashi 1991.5.3  ライブラリは PARTS.A の内部で定義されています。ライブラリ内からウインドウ サーバが呼び出されることはありません。このライブラリを使用する時は WLIB.H の 後に PARTS.H をインクルードします。 1 クリップ ( ClipClass )  矩形領域に対する処理です。  これらの関数は以下の SliderClass, InputClass に対しても実行できます。 void ClipSet( clip, x, y, h, v ) ---------------------------------------------------------------------------- ClipClass *clip ; 矩形領域 int x, y ; 左上座標 int h, v ; 大きさ  矩形領域を設定します。 ---------------------------------------------------------------------------- void ClipMove( clip, x, y ); ---------------------------------------------------------------------------- ClipClass *clip ; 矩形領域 int x, y ; 左上座標  矩形領域を移動します。 ---------------------------------------------------------------------------- int ClipInner( clip, x, y ); ---------------------------------------------------------------------------- ClipClass *clip ; 矩形領域 int x, y ; 座標  座標( x, y )が矩形領域の内部にあるか検査します。  戻り値は内部にあれば TRUE なければ FALSE です。 ---------------------------------------------------------------------------- void ClipGetSize( clip, hp, vp ); ---------------------------------------------------------------------------- ClipClass *clip ; 矩形領域 int *hp, *vp ; 格納バッファ  矩形領域の大きさを hp, vp で示されるアドレスに格納します。 ---------------------------------------------------------------------------- int ClipOverlap( ret, clip1, clip2 ); ---------------------------------------------------------------------------- ClipClass ret, *clip1, *clip2 ; 矩形領域  矩形領域 clip1 と clip2 の重なった領域を ret に格納します。  戻り値は重なった領域が存在する時は TRUE 存在しない時は FALSE です。存在し ない時は ret は保証されません。 ---------------------------------------------------------------------------- 2 スライドスイッチ ( SliderClass )  スクロールウインドウについているようなスライドスイッチに対する処理です。 void SliderSet( slider, x, y, dir, width, length, min, max ) ---------------------------------------------------------------------------- SliderClass *slider ; スライドスイッチ構造体 int x, y ; 左上座標 int dir ; スライドスイッチの方向 int width, length ; スライドスイッチの幅と長さ(ドット単位) int min, max ; スライドスイッチの最大値、最小値(仮想座標)  スライドスイッチ構造体にパラメータを設定します。  dir は DirectionX, DirectionY のどちらかを選択します。  min, max はスライドスイッチから値を得たり、値を設定したりする時の仮想座標 の定義です。 ---------------------------------------------------------------------------- int SliderGetCurrentPosition( slider ) ---------------------------------------------------------------------------- SliderClass *slider ; スライドスイッチ構造体  スライドスイッチの現在位置を得ます。戻り値は仮想座標で与えられます。 ---------------------------------------------------------------------------- int SliderGetMaxPosition( slider ) ---------------------------------------------------------------------------- SliderClass *slider ; スライドスイッチ構造体  スライドスイッチの最大位置を与えます。戻り値は仮想座標で与えられます。  スライドスイッチの最小位置は SlideSet で与えられた min になりますが最大位 置は max よりスライドスイッチの大きさ分だけ小さくなります。 ---------------------------------------------------------------------------- int SliderGetPosition( slider, x, y ) ---------------------------------------------------------------------------- SliderClass *slider ; スライドスイッチ構造体 int x, y ; 参照座標(ドット単位)  座標 x, y に対応するスライドスイッチの位置を得ます。通常は x, y にマウスの 座標を設定し、マウスがどこを示しているかを得るために使用します。  戻り値は仮想座標で与えられます。 ---------------------------------------------------------------------------- int SliderGetScroll( slider, step ) ---------------------------------------------------------------------------- SliderClass *slider ; スライドスイッチ構造体 int step ; 移動量(仮想座標)  スライドスイッチを step だけ移動しようとしたときの変化すべき位置を得ます。 スライドスイッチの最大値、最小値も考慮します。この関数では実際の位置は変化し ません。  戻り値は仮想座標で与えられます。 ---------------------------------------------------------------------------- int SliderSetPosition( buf, slider, top, size ) ---------------------------------------------------------------------------- DrawBuf *buf ; 描画バッファ SliderClass *slider ; スライドスイッチ構造体 int top, size ; スライドスイッチの位置および大きさ(仮想座標)  スライドスイッチを移動させます。移動する時の描画の手続きを描画バッファに設 定します。戻り値は設定した描画バッファの数です。  buf に NULL を設定すると構造体の内部状態だけ変化させ、描画バッファには設定 されません。 ---------------------------------------------------------------------------- int SliderSetDraw( buf, slider ) ---------------------------------------------------------------------------- DrawBuf *buf ; 描画バッファ SliderClass *slider ; スライドスイッチ構造体  スライドスイッチを再表示するための手続きを描画バッファに設定します。戻り値 は設定した描画バッファの数です。 ---------------------------------------------------------------------------- 3 ビットマップバッファ ( Sheet )  ヒットマップバッファに対する処理です。 Sheet *SheetOpen( h, v ) ---------------------------------------------------------------------------- int h, v ; ビットマップバッファの大きさ(ドット単位)  ビットマップバッファを確保します。必要なメモリ領域はヒープから確保します。 ---------------------------------------------------------------------------- void SheetClose( sp ) ---------------------------------------------------------------------------- Sheet *sp ; ビットマップバッファ  SheetOpen 関数で確保したビットマップバッファを開放します。 ---------------------------------------------------------------------------- void SheetClear( sp, clip, code ) ---------------------------------------------------------------------------- Sheet *sp ; ビットマップバッファ ClipClass *clip ; クリッピング領域 int code ; カラーコード  ビットマップバッファを code でクリアします。  clip に設定された領域でクリッピングします。 ---------------------------------------------------------------------------- void SheetLine( sp, clip, x1, y1, x2, y2, code, option ) ---------------------------------------------------------------------------- Sheet *sp ; ビットマップバッファ ClipClass *clip ; クリッピング領域 int x1, y1 ; 頂点座標 int x2, y2 ; 頂点座標 int color ; カラーコード int option ; 描画オプション  ビットマップバッファに直線を引く、矩形領域を塗りつぶす、長方形を描く、のど れかの処理します。  x1, y1, x2, y2, color, option は DrawSetLine 関数と同じです。  clip に設定された領域でクリッピングします。 ---------------------------------------------------------------------------- void SheetPutPattern( sp, clip, sp2 ) ---------------------------------------------------------------------------- Sheet *sp ; ビットマップバッファ ClipClass *clip ; クリッピング領域 Sheet *sp2 ; 表示パターン  ビットマップバッファにパターンの表示します。クリッピング領域よりよりパター ンが小さい場合は繰り返し表示されます。  clip に設定された領域でクリッピングします。 ---------------------------------------------------------------------------- void SheetCopy( sp, clip, x, y, sp2 ) ---------------------------------------------------------------------------- Sheet *sp ; ビットマップバッファ ClipClass *clip ; クリッピング領域 int x, y ; 表示座標 Sheet *sp2 ; 表示パターン  ビットマップバッファにパターンの表示します。  clip に設定された領域でクリッピングします。 ---------------------------------------------------------------------------- void SheetSymbol( sp, clip, x, y, str, attr, font ) ---------------------------------------------------------------------------- Sheet *sp ; ビットマップバッファ ClipClass *clip ; クリッピング領域 int x, y ; 表示座標 char *str ; 表示文字列 int attr ; 表示属性 int font ; フォント  ビットマップバッファに文字列の表示します。  x, y, str, attr, font は DrawSetSymbol 関数と同じです。  clip に設定された領域でクリッピングします。 ---------------------------------------------------------------------------- void SheetScroll( sp, clip, dx, dy ) ---------------------------------------------------------------------------- Sheet *sp ; ビットマップバッファ ClipClass *clip ; クリッピング領域 int dx, dy ; スクロール量  ビットマップバッファをスクロールさせます。dx, dy のどちらかは 0 でなければ なりません。  clip に設定された領域でクリッピングします。 ---------------------------------------------------------------------------- 4 ウインドウでのキー入力 ( InputClass )  ウインドウでキー入力するための処理です。 void InputSet( input, x, y, str, max, attr, font ) ---------------------------------------------------------------------------- InputClass *input ; インプット構造体 int x, y ; 入力位置 char *str ; 入力文字列バッファ int max ; 入力最大カラム int attr ; 表示属性 int font ; フォント ---------------------------------------------------------------------------- void InputSetCursor( input, cur ) ---------------------------------------------------------------------------- InputClass *input ; インプット構造体 int cur ; カーソル位置  カーソル位置を設定します。 ---------------------------------------------------------------------------- int InputGetCursor( input ) ---------------------------------------------------------------------------- InputClass *input ; インプット構造体  現在のカーソル位置を得ます。  戻り値はカーソル位置です。 ---------------------------------------------------------------------------- int InputSetCursorVisible( buf, input, sw ) ---------------------------------------------------------------------------- DrawBuf *buf ; 描画バッファ InputClass *input ; インプット構造体 int sw ; スイッチ  カーソルを ON または OFF します。sw が TRUE の時はカーソル ON、sw が FALSE の時は OFF です。  カーソルが変化した時は buf に描画手続きを設定します。 buf が NULL の時は設 定しません。  戻り値は設定した描画バッファの数です。 ---------------------------------------------------------------------------- int InputSetDraw( buf, input ) ---------------------------------------------------------------------------- DrawBuf *buf ; 描画バッファ InputClass *input ; インプット構造体  入力バッファの再表示のための描画手続きを設定します。  戻り値は設定した描画バッファの数です。 ---------------------------------------------------------------------------- int InputKey( buf, input, keycode, shift ) ---------------------------------------------------------------------------- DrawBuf *buf ; 描画バッファ InputClass *input ; インプット構造体 int keycode ; キーコード int shift ; シフトキーの状態  キー入力の処理をします。buf に描画手続きを設定します。  keycode, shift は EventInfo のメンバの KeyCode, ShiftStat を設定します。 keycode は通常のキーコードの他に ^A ^S ^D ^F ^G ^H BS DEL も受け付けます。機 能はカーソルの移動および文字の削除です。  戻り値は設定した描画バッファの数です。 ----------------------------------------------------------------------------