/*====================================================== GDDC98.C ===== */ /* GDC直接アクセスグラフィック関数 */ /* compile for Large Model for Turbo-C */ /* ver 1.2 H04/06/04 by S.F */ /*----------------------------------------------------------------------*/ +-----------------------------------------------+ | GDCアクセス関数(レベル0) | +-----------------------------------------------+ ハードに近い関数およびサブルーチン的な関数 ----------------------------------- GDCにコマンドを送る gdc_cmd(int cmd) cmd --- GDCコマンド ----------------------------------- GDCにパラメータを送る gdc_par(int dat) dat --- GDC用パラメータ ----------------------------------- 描画実行アドレスのセット gdc_crsw( int ead, int dad ) ead --- 描画実行アドレス(ワードアドレス) dad --- 描画実行ドット位置(0−15) ----------------------------------- 描画時のマスクパターン gdc_mask(uint msk) msk --- マスクパターン(ワードデータ)    GDCはマスクパターンが1のビットのみ描画します。 ----------------------------------- VECTパラメータのセット gdc_vectw(VECTP vp) グラフィック描画用パラメータをGDCに転送します。 構造体 VECTP は以下の様に宣言されています。 struct vect_par{ int dir; /* 描画方向 */ int dc; /* パラメータDC */ int d; /* パラメータD */ int d2; /* パラメータD2 */ int d1; /* パラメータD1 */ int dm; /* パラメータDM */ }; typedef struct vect_par VECTP; ---------------------------------- VECTコマンドの実行 gdc_vecte() この関数で実際のグラフィックの描画を実行します。 ---------------------------------- TEXTパラメータのセット gdc_textw(uchar *ptn) ptn --- 8×8ドットパターンの先頭番地 GDCへ8バイトのグラフィック文字データを転送します。 ---------------------------------- TEXTコマンドの実行 gdc_texte() この関数で実際のグラフィック文字パターン描画を実行します。 ---------------------------------- WRITEコマンドの実行 gdc_write(int md) md --- 描画モード 0: 置き換え(REPLASE)、新しいパターンが転送される。 1: 反転(COMPLEMENT)、元の画像データとXORされる。 2: 消去(CLEAR)、元のデータとANDされる。 3: 追加(SET)、元のデータとORされる。 描画時のモードの指定をします。このコマンド以降の描画から有効。 ---------------------------------- GDC実行開始アドレスのセット set_ead(int x, int y, int col) x --- 画面絶対X座標(0〜639) y --- 画面絶対Y座標(0〜399) col --- 表示色(0〜7) XY系座標と色からGDCアドレスを計算し、GDCに転送します。 表示色は 0:黒  1:青  2:赤  3:紫 4:緑  5:水  6:黄  7:白 ---------------------------------- 直線描画用VECTパラメータの計算 line_vectc(int x1, int y1, int x2, int y2, VECTP *vp) x1 --- 直線の片方の点の絶対X座標値(0〜639) y1 --- 直線の片方の点の絶対Y座標値(0〜399) x2 --- 直線のもう一方の点の絶対X座標値(0〜639) y2 --- 直線のもう一方の点の絶対Y座標値(0〜339) vp --- パラメータの計算結果を返す構造体 XY座標系で示される画面上の2点から描画用パラメータを計算し、その結果 を構造体VPで呼ばれた関数に返します。 ----------------------------------- 円描画用VECTパラメータの計算 circle_vectc(int r, VECTP *vp) r --- 円の半径 vp --- パラメータの計算結果を返す構造体 円の半径を指定すると、それに応じた描画用パラメータを計算し、その結果を 構造体vpで呼ばれた関数に返します。 ---------------------------------- 四辺形描画用VECTパラメータの計算 bline_vectc(int x1, int y1, int x2, int y2, VECTP *vp) x1 --- 四辺形の頂点の絶対X座標値(0〜639) y1 --- 四辺形の頂点の絶対Y座標値(0〜399) x2 --- 四辺形の対角にある頂点の絶対X座標値(0〜639) y2 --- 四辺形の対角にある頂点の絶対Y座標値(0〜339) vp --- パラメータの計算結果を返す構造体 XY座標系で示される画面上の2点から描画用パラメータを計算し、その結果 を構造体VPで呼ばれた関数に返します。 ---------------------------------- 描画モード指定付き4分の1円描画 gdc_circle_0(int dir1, int dir2, int xs, int ys, VECTP vp, int cpl, int md ) dir1 --- 第1描画方向(0〜7) dir2 --- 第2描画方向(0〜7) xs --- 円の中心絶対X座標(0〜639) ys --- 円の中心絶対Y座標(0〜399) vp --- VECTパラメータ構造体 cpl --- 描画色プレーン(0〜2) md --- 描画モード(0〜3) 指定された色プレーンにのみ、描画モード指定で、円の4分の1だけを描画 するサブルーチンです。 ---------------------------------- 4分の1円描画 gdc_circle_1(int dir1, int dir2, int xs, int ys, VECTP vp, int col ) dir1 --- 第1描画方向(0〜7) dir2 --- 第2描画方向(0〜7) xs --- 円の中心絶対X座標(0〜639) ys --- 円の中心絶対Y座標(0〜399) vp --- VECTパラメータ構造体 col --- 描画色(0〜7) 指定された色で、円の4分の1だけを描画するサブルーチンです。 /*----------------------------------------------------------------------*/ +-----------------------------------------------+ | GDCアクセス関数(レベル1) | +-----------------------------------------------+ 通常はこのレベルの関数のみでグラフィックが 使用できます。 ----------------------------------- GDCの表示を開始する gdc_start() ----------------------------------- GDCの表示を中止する gdc_stop() ----------------------------------- 表示およびアクティブ画面の設定 gdc_screen( int act_pl, int dsp_pl ) act_pl --- 描画プレーン(0または1) dsp_pl --- 表示プレーン(0または1) ---------------------------------- 全画面消去(GDCによる) gdc_cls() GDCを使って現在アクティブなrgb画面を消去します。 ---------------------------------- 描画線パターンの登録 gdc_ltype(uint ln) ln --- 線パターン(実線を指定するときは 0FFFFH を与える) VECT実行時の描画線パターンを登録します。 ---------------------------------- 点のプロット gdc_pset(int x, int y,int col ) x --- 点を描画する絶対X座標値(0〜639) y --- 点を描画する絶対Y座標値(0〜339) col --- 点の色(0〜7) (x,y)の位置にcol色で点を描画します。 ---------------------------------- モード指定付き直線描画(1プレーンのみ) gdc_line0(int x1, int y1, int x2, int y2, int cpl, int md) x1 --- 直線の片方の点の絶対X座標値(0〜639) y1 --- 直線の片方の点の絶対Y座標値(0〜399) x2 --- 直線のもう一方の点の絶対X座標値(0〜639) y2 --- 直線のもう一方の点の絶対Y座標値(0〜339) cpl --- 描画プレーン(0:青、1:赤、2:緑) md --- 描画モード(0〜3、writeコマンド参照) 指定された色のプレーンにのみ、指定した描画モードで直線を描画します。 座標値の限界チェックを行っていないので、座標値の値は限界値を越えな いこと。 ---------------------------------- 直線の描画 gdc_line(int x1, int y1, int x2, int y2, int col ) x1 --- 直線の片方の点の絶対X座標値(0〜639) y1 --- 直線の片方の点の絶対Y座標値(0〜399) x2 --- 直線のもう一方の点の絶対X座標値(0〜639) y2 --- 直線のもう一方の点の絶対Y座標値(0〜339) col --- 描画色(0〜7) 指定された色で直線を描画します。(上書きになる) 座標値の限界チェックを行っていないので、座標値の値は限界値を越えな いこと。 ---------------------------------- 描画モード指定付き円描画 gdc_circle0(int x, int y, int r, int cpl, int md ) x --- 円の中心絶対X座標(0〜639) y --- 円の中心絶対Y座標(0〜399) r --- 円の半径 cpl --- 描画色プレーン(0〜2) md --- 描画モード(0〜3) 指定された色プレーンにのみ、描画モード指定で、円を描画します。 クリッピングを行っていないので、描画円が絶対座標値を越えないように 注意すること。 ---------------------------------- 円描画 gdc_circle(int x, int y, int r, int col ) x --- 円の中心絶対X座標(0〜639) y --- 円の中心絶対Y座標(0〜399) r --- 円の半径 col --- 描画色(0〜7) 指定された色で円を描画します。(上書き) クリッピングを行っていないので、描画円が絶対座標値を越えないように 注意すること。 ---------------------------------- 描画モード指定付き四辺形描画 gdc_bline0(int x1, int y1, int x2, int y2, int cpl, int md ) x1 --- 四辺形の頂点の絶対X座標値(0〜639) y1 --- 四辺形の頂点の絶対Y座標値(0〜399) x2 --- 四辺形の対角にある頂点の絶対X座標値(0〜639) y2 --- 四辺形の対角にある頂点の絶対Y座標値(0〜339) cpl --- 描画色プレーン(0〜2) md --- 描画モード(0〜3) 指定された色プレーンにのみ、描画モード指定で、四辺形を描画します。 座標値の限界チェックを行っていないので、座標値の値は限界値を越えな いこと。 ---------------------------------- 四辺形描画 gdc_bline(int x1, int y1, int x2, int y2, int col ) x1 --- 四辺形の頂点の絶対X座標値(0〜639) y1 --- 四辺形の頂点の絶対Y座標値(0〜399) x2 --- 四辺形の対角にある頂点の絶対X座標値(0〜639) y2 --- 四辺形の対角にある頂点の絶対Y座標値(0〜339) cpl --- 表示色(0〜7) vp --- パラメータの計算結果を返す構造体 指定された色で四辺形を描画します。(上書き) 座標値の限界チェックを行っていないので、座標値の値は限界値を越えな いこと。 /*================= e n d ============================== GDDC98.C ===== */