/*====================================================== GGVR98.C ===== */ /* GDC直接アクセスグラフィック関数 */ /* compile for Large Model for Turbo-C */ /* ver 1.0 H04/06/12 by S.F */ /*--------------------------------------------------------------------- */ /*==============================================================*/ /* G_GDCアクセス関数(レベル0) */ /*==============================================================*/ /*-------------- GDCの表示を開始する ------------------------*/ gvr_start() GGDCの gdc_start() と同じです。 /*-------------- GDCの表示を中止する ------------------------*/ gvr_stop() GGDCの gdc_stop() と同じです。 /*-------------- 表示およびアクティブ画面の設定 ----------------*/ gvr_screen( int act_pl, int dsp_pl ) act_pl 描画プレーン(0,1) dsp_pl 表示プレーン(0,1) GGDCの gdc_screen と同じです。 /*==============================================================*/ /* MSDOSコール(漢字パターンの取得) */ /*==============================================================*/ /*-------------- 漢字パターンの取得 ----------------------------*/ ptn_get( int code , uchar *ubf ) code 取得したい漢字のコード ubf パターンを格納するバッファの先頭番地。 (2*16+2バイト必要です) ubf以降にパターンデータを読みだします。 ubf[0]は縦方向に8×8パターンがいくつあるか、 ubf[1]は横方向のバイト数で、実際のパターンは3バイト目からです /*==============================================================*/ /* ダイレクトv_ramアクセス(バイト単位) */ /*--------------------------------------------------------------*/ /*-------------- グラフィックメモリの消去 ----------------------*/ gvr_cls( int bc, int rc, int gc ) bc、rc、gc 各色の消去パターン。下位バイトのみ使用されます。 通常はすべて0としますが、他の数値を指定すると 消去パターンを変えることができます。 /*-------------- 3プレーンにパターンを描画(PSET) --------*/ gvr_put( uchar *ptn, int gx, int gy ) ptn 描画パターンデータの先頭番地 (先頭のバイトは縦方向ドット数、  次のバイトは横方向バイト数で、  実際のパターンは3バイト目からで、  青、赤、緑のバイトデータが順に並びます) gx 描画開始X位置(バイト単位) gy 描画開始Y位置(ドット行単位) ptnに格納されたパターンデータを画面に出力します。 gvr_getで格納されたデータを出力できます。 /*-------------- 3プレーンデータを文字列に格納 ----------------*/ gvr_get( int gx, int gy, int wx, int wy, char *ptn ) gx 格納開始X位置(バイト単位) gy 描画開始Y位置(ドット行単位) wx, wy X方向バイト数、Yドット行数 ptn 格納文字列ポインタ(格納方式はputと同じ) (gx,gy)から(gx+wx,gy+wy)までのデータをptn以降に格納します。 /*-------------- 色指定パターン描画(バイト単位) --------------*/ gvr_set( uchar *ptn, int gx, int gy, int col ) ptn, 描画パターンデータ先頭番地 (先頭のバイトは縦方向ドット数、  次のバイトは横方向バイト数で、  実際のパターンは3バイト目からで、  1色のみのパターンデータデータです) gx 描画開始X位置(バイト単位) gy 描画開始Y位置(ドット行単位) col 描画色(0-7) 漢字パターンなど単色で出力する時に使用します。 ptn_getで読み込んだデータの出力に使用します。 /*-------------- 四辺形指定パターン塗りつぶし(バイト単位)-----*/ gvr_pfill( int gx, int gy, int wx, int wy, uint bptn, uint rptn, uint gptn ) gx 描画開始X位置(バイト単位) gy 描画開始Y位置(ドット行単位) wx, wy X方向バイト数、Yドット行数 bptn 塗りつぶし青パターン rptn 塗りつぶし赤パターン gptn 塗りつぶし緑パターン (各パターンの下位バイトが偶数行に  上位バイトが奇数行に描画されます) 指定されたパターンで四辺形エリアを塗りつぶします。 /*-------------- 4辺形エリアの反転(プレーン、バイト単位)-----*/ gvr_bxor( int pl, int gx, int gy, int wx, int wy, int ptn ) pl 描画指定色プレーン(0-2) gx 描画開始X位置(バイト単位) gy 描画開始Y位置(ドット行単位) wx, wy X方向バイト数、Yドット行数 ptn 反転マスクパターン ptnで指定色プレーンの対象エリアを排他的論理和演算をします。 /*-------------- 漢字パターンの出力(バイト単位)---------------*/ gvr_kput( uint code int gx, int gy, int col ) code 出力漢字コード gx 描画開始X位置(バイト単位) gy 描画開始Y位置(ドット行単位) col 表示色(0-7) 指定された色で(gx,gy)にcodeの漢字を書きます。 /*==============================================================*/ /* ダイレクトv_ramアクセス(ドット単位) */ /*==============================================================*/ /*-------------- 色指定4辺形塗りつぶし(ドット単位) ----------*/ gvr_bfill( int x1, int y1, int x2, int y2, int col ) x1, y1 塗りつぶし開始コーナードット位置 x2, y2 対角コーナードット位置 col 塗りつぶし色 指定した色で(x1,y1)から(x2,y2)で囲まれる4辺形エリアを 塗りつぶします /*-------------- ビットシフトパターンの作成 --------------------*/ gvr_mkptn( uchar *sprn, uchar *lptn ) sptn ソースパターン (最初のバイトは縦方向ドット数、  次のバイトは横方向バイト数(最大3バイトまで)  パターンは単色で3バイト目から)  sptn[0]*sptn[1]+2バイト必要です。 lptn シフトパターン格納ポインタ (最初のバイトは縦方向ドット数、  次のバイトは横方向バイト数で、  以降にロング型(4バイト)のデータが縦方向ドット  数並んだ構造です)  sptn[0]*4+2バイト必要です。 横方向が可変長のパターンデータをビットシフトを行うために 横方向が4バイトの固定長のパターンデータに変換します。 /*-------------- ビットシフトの実行 ----------------------------*/ gvr_shift( char *ptn , int nsft ) ptn ロングエータ化された固定長パターンのポインタ nsft シフトビット数 固定長パターンデータをシフトします。 整数は右にシフト、負数は左にシフトされます。 /*-------------- 色指定パターン描画(ドット用) ----------------*/ gvr_lset( char *ptn, int gx, int gy, int col ) ptn 描画用固定長パターンデータ先頭番地 gx 描画開始X位置(バイト単位) gy 描画開始Y位置(ドット行単位) col 描画色(0-7) 固定長のパターンデータ用の gvr_set です。 /*-------------- マスクパターン付き描画(ドット用)-------------*/ gvr_putm( char *bptn, char *rptn, char *gptn, char *msk, int gx, int gy ) bptn 青描画固定長パターンデータ先頭番地 rptn 赤描画固定長パターンデータ先頭番地 gptn 緑描画パターンデータ先頭番地 msk マスクパターンデータ先頭番地 gx 描画開始X位置(バイト単位) gy 描画開始Y位置(ドット行単位) グラフィックマスク付きパターン出力。 /*-------------- 自動マスク作成(ドット用)---------------------*/ auto_msk( char *bptn, int *rptn, int *gptn, int *msk ) bptn 青描画パターンデータ先頭番地 rptn 赤描画パターンデータ先頭番地 gptn 緑描画パターンデータ先頭番地 msk マスクパターンデータ格納番地 マスクパターンでグラフィックを消去してから、3色で グラフィックパターンを描画します。 カラーのマウスカーソルなどに利用できます。 /*=============== E N D ===============================================*/