home *** CD-ROM | disk | FTP | other *** search
- #ifndef __FMGRAPH_
- #define __FMGRAPH_
-
- /*--複数パレットを一回の呼び出しで設定するさいのデータ構造体 */
- struct PALETLIST {
- unsigned size; /* データサイズ 6 * 指定パレット数 */
- struct PALETTE {
- unsigned colorid; /* 色番号 */
- unsigned char reserve;
- unsigned char red; /* 赤階調 */
- unsigned char green; /* 緑階調 */
- unsigned char blue; /* 青階調 */
- } pltbl[16];
- };
-
- /*==グラフィックBIOS初期化 このライブラリを使う際には必ず最初に呼び出すこと */
- void g_init(char far *); /* 作業領域アドレスの指定 先頭1ワードに領域サイズ */
- /* -2の値を設定しておく。 */
- /* アドレスが0000:0000ならば、BIOS内のデフォルトを */
- /* 使用する。 */
- /*==境界線色 矩形、円、扇形、楕円、楕円扇形などの外枠線の色 */
- int g_bordercolor(unsigned); /* ハードウェアで指定可能な範囲の値 */
-
- /*==境界線種 */
- int g_borderlineid(char); /* 1~127のID 1~5までは初期パターン有り 以後は */
- /* ユーザー設定(設定されるまではNULLとなる) */
-
- /*==境界線モード 外枠線を描画するかどうか */
- int g_bordermode(unsigned char);
- #define BORDER_DRAW 1 /* 描画する (デフォルト) */
- #define BORDER_NODRAW 0 /* 描画しない */
-
- /*==矩形 */
- int g_box(int,int,int,int); /* 基点X座標,基点Y座標,対角X座標,対角Y座標 */
-
- /*==図形出力中止 */
- void g_break(void);
-
- /*==文字色 */
- int g_charcolor(unsigned);
-
- /*==文字の方向 */
- int g_chardirection(int,int,int,int);
- /* 高さ方向X成分,高さ方向Y成分,幅方向X成分,幅方向X成分 (-1,0,1の範囲?) */
- /* 高さ方向のX成分とY成分はどちらかが0でなければならない。両方が0だとエラー */
- /* 幅方向は両方が0だとエラーだが、両方0以外は良い */
-
- /*==文字の扱い */
- int g_charhandling(unsigned char);
- #define HANDLE_STR 0 /* 文字間空白、文字方向、文字列方向を無視し、*/
- /* 空白無し、文字をXY軸の正方向、文字列を右に*/
- /* 描画する (デフォルト) */
- #define HANDLE_CHAR 1 /* 各設定値に従う */
-
- /*==文字高さ */
- int g_charheight(unsigned);
-
- /*==文字間空白 を文字高さに対する比率(分数)で指定する */
- int g_charspace(unsigned,unsigned); /* 分子,分母 */
-
- /*==文字幅 を文字高さに対する比率(分数)で指定する */
- int g_charwidth(unsigned,unsigned); /* 分子,分母 */
-
- /*==円 */
- int g_circle(int,int,int); /* 中心X座標,中心Y座標,半径 */
-
- /*==円弧 */
- int g_circle_arc(int,int,int,int,int,int,int);
- /* 中心X座標,中心Y座標,開始軸X成分,開始軸Y成分,終了軸X成分,終了軸Y成分,半径 */
-
- /*==円扇形 */
- int g_circle_sector(int,int,int,int,int,int,int);
- /* 中心X座標,中心Y座標,開始軸X成分,開始軸Y成分,終了軸X成分,終了軸Y成分,半径 */
-
- /*==クリップ枠 */
- int g_clip(int,int,int,int); /* 基点X座標,基点Y座標,対角X座標,対角Y座標 */
-
- /*==クリップモード */
- int g_clipmode(unsigned char);
- #define CLIP_HARD 0 /* 画面枠 */
- #define CLIP_CLIPFRAME 1 /* クリップ枠 (デフォルト) */
- #define CLIP_VIEWPORT 2 /* ビューポート */
-
- /*==全画面消去 */
- void g_cls(void);
-
- /*==色指定のビットイメージ読み出し */
- int g_colorget(unsigned char far *,unsigned char,int,int,int,int,unsigned,unsigned *);
- /* バッファアドレス,読み出しページ,基点X座標,基点Y座標,対角X座標,対角Y座標, */
- /* 読み出し指定色数(1~16),指定色配列アドレス */
-
- /*==色指定のビットイメージ書き込み */
- int g_colorput(unsigned char far *,unsigned char,int,int,int,int,unsigned,unsigned char);
- /* バッファアドレス,書き込みページ,基点X座標,基点Y座標,対角X座標,対角Y座標, */
- /* 書き込み色,書き込みモード(描画モードに同じ) */
-
- /*==ユーザー座標系設定 */
- int g_coodinate(int,int,int,int); /* 左下X座標,左下Y座標,右上X座標,右上Y座標*/
-
- /*==描画モード */
- int g_drawmode(unsigned char);
- #define DRAW_PRESET 0 /* 背景色で描画する */
- #define DRAW_AND 1 /* 描画先の色番号と AND する */
- #define DRAW_PSET 3 /* 指定の色で描画する (デフォルト) */
- #define DRAW_XOR 6 /* 描画先の色番号と XOR する */
- #define DRAW_OR 7 /* 描画先の色番号と OR する */
- #define DRAW_NOT 12 /* 文字描画時のみ有効 反転表示を行う */
-
- /*==グラフィックカーソル表示 */
- void g_gcurdisp(unsigned char);
- #define GCUR_DISP 0 /* グラフィックカーソルを表示する */
- #define GCUR_NODISP !0 /* グラフィックカーソルを表示しない */
-
- /*==グラフィックカーソル形状 */
- int g_gcurform(char,char,unsigned,unsigned,unsigned,unsigned char *,unsigned char *);
- /* カーソル図形内の中心X座標,同Y座標,横ドット数(8の倍数),縦ドット数(1~32), */
- /* 色番号,ANDパターンアドレス,XORパターンアドレス */
-
- /*==グラフィックカーソル位置 */
- void g_gcurpos(unsigned,unsigned); /* X座標,Y座標 (ハードウェア座標系) */
-
- /*==汎用の図形出力 */
- int g_generaloutput(char far *);
-
- /*==全プレーンのビットイメージ読み出し */
- void g_get(unsigned char far *,unsigned char,int,int,int,int);
- /* バッファアドレス,読み出しページ,基点X座標,基点Y座標,対角X座標,対角Y座標, */
-
- /*==バックグラウンドカラー読み出し */
- int g_getbgcolor(void);
-
- /*==16β互換モードの読み出し 値は設定の方を参照 */
- int g_getcompatiblemode(void);
-
- /*==表示中ページ番号の読み出し */
- int g_getdisplaypage(void);
-
- /*==書き込みページ番号の読み出し */
- int g_getdrawpage(void);
-
- /*==使用可能ページ数の読み出し */
- int g_geteffectpage(void);
-
- /*==ハッチング種別指定 */
- int g_hatchid(char); /* 1~127のID 1~6までは初期パターン有り 以後は */
- /* ユーザー設定(設定されるまではNULLとなる) */
-
- /*==ハッチングパターン設定 */
- int g_hatchpattern(char,unsigned,unsigned char *);
- /* パターンID,縦ドット数(1~20),パターンデータ配列アドレス */
-
- /*==線分 */
- int g_line(int,int,int,int); /* 始点X座標,始点Y座標,終点X座標,終点Y座標 */
-
- /*==線分色 */
- int g_linecolor(unsigned);
-
- /*==線分種別指定 */
- int g_lineid(char); /* 境界線種別に同じ */
-
- /*==線分パターン設定その1 */
- int g_linepattern(char,unsigned); /* パターンID,パターンデータ(16ビット) */
-
- /*==線分パターン設定その2 */
- int g_linepattern2(char,unsigned char,unsigned char);
- /* パターンID,パターンデータ1(初めの8ビット),パターンデータ2(後の8ビット) */
-
- /*==パレット設定(複数) */
- void g_multipalette(struct PALETLIST far *); /* パレット指定データのアドレス */
-
- /*==楕円 */
- int g_oval(int,int,int,int); /* 中心X座標,中心Y座標,X方向半径,Y方向半径 */
-
- /*==楕円弧 */
- int g_oval_arc(int,int,int,int,double,double);
- /* 中心X座標,中心Y座標,X方向半径,Y方向半径,開始角(ラジアン),終了角(ラジアン) */
- /* 使用するのに mathlib.lib が必要である */
-
- /*==楕円扇形 */
- int g_oval_sector(int,int,int,int,double,double);
- /* 中心X座標,中心Y座標,X方向半径,Y方向半径,開始角(ラジアン),終了角(ラジアン) */
- /* 使用するのに mathlib.lib が必要である */
-
- /*==ペイント */
- int g_paint(int,int,unsigned,unsigned *);
- /* 中心X座標,中心Y座標,境界色数(1~16),境界色配列アドレス */
-
- /*==ペイント色 */
- int g_paintcolor(unsigned);
-
- /*==ペイントモード ペイントや矩形、円、扇形、楕円、楕円扇形描画時の面塗り指定*/
- int g_paintmode(unsigned char);
- #define PAINT_NO 0 /* 塗り潰しをしない (デフォルト) */
- #define PAINT_FILL 1 /* ベタ塗り */
- #define PAINT_TILE 2 /* タイル塗り */
- #define PAINT_HATCH 3 /* ハッチング塗り */
-
- /*==パレット設定(単独) */
- void g_palette(unsigned,unsigned char,unsigned char,unsigned char);
- /* 色番号,赤階調,緑階調,青階調 */
-
- /*==部分画面消去 */
- void g_partclear(unsigned char,int,int,int,int);
- /* 対象ページ番号,基点X座標,基点Y座標,対角X座標,対角Y座標 */
-
- /*==部分画面複写 */
- int g_partcopy(unsigned char,int,int,int,int,unsigned char,int,int,unsigned char);
- /* 複写元ページ番号,基点X座標,基点Y座標,対角X座標,対角Y座標, */
- /* 複写先ページ番号,基点X座標,基点Y座標,書き込みモード(描画モードに同じ) */
-
- /*==使用プレーン数設定 */
- void g_plane(unsigned char);
-
- /*==点色 */
- int g_pointcolor(unsigned);
-
- /*==点 */
- int g_pset(int,int); /* 描画X座標,描画Y座標 */
-
- /*==全プレーンのビットイメージ書き込み */
- int g_put(unsigned char far *,unsigned char,int,int,int,int,unsigned char);
- /* バッファアドレス,書き込みページ,基点X座標,基点Y座標,対角X座標,対角Y座標, */
- /* 書き込みモード(描画モードに同じ) */
-
- /*==解像度の設定 */
- int g_resolution(unsigned,unsigned); /* 水平ドット数,垂直ドット数 */
-
- /*==スクロール */
- void g_scroll(int,int); /* 水平移動ドット数,垂直移動ドット数 */
-
- /*==バックグラウンドカラー設定 */
- void g_setbgcolor(int);
-
- /*==16β互換モードの設定 */
- void g_setcompatiblemode(unsigned char);
- #define COMPATI_BETA 0 /* 16β互換モード */
- #define COMPATI_EXTD 1
- /* 拡張モード(読み出し時の値、設定時は0以外ならば良い) */
-
- /*==表示ページの設定 */
- void g_setdisplaypage(unsigned char);
-
- /*==書き込みページの設定 */
- void g_setdrawpage(unsigned char);
-
- /*==文字列描画の方向 */
- int g_strdirection(unsigned char);
- #define DIRECT_RIGHT 0 /* 右 */
- #define DIRECT_LEFT 1 /* 左 */
- #define DIRECT_UP 2 /* 上 */
- #define DIRECT_DOWN 3 /* 下 */
-
- /*==文字列出力 MAX 255バイト */
- int g_string(int,int,unsigned char,char far *);
- /* 開始X座標,開始Y座標,継続フラグ,文字列アドレス */
- /* 開始XY座標は、文字の左下角の座標である */
- /* 使用するのに farstr.lib が必要である */
- #define STR_CONTINUE 1 /* この文字列描画の後に、継続描画する文字あり*/
- #define STR_STOP 0 /* 継続描画する文字なし */
-
- /*==継続した文字列出力 MAX 255バイト */
- int g_string_cont(unsigned char,char far *); /* 継続フラグ,文字列アドレス */
- /* 使用するのに farstr.lib が必要である */
-
- /*==タイリング種別指定 */
- int g_tileid(char); /* 1~127のID 初期パターンは無し */
-
- /*==タイリングパターンの設定その1 */
- int g_tilepattern(char,unsigned,unsigned char *,unsigned char *,unsigned char *,unsigned char *);
- /* パターンID,縦ドット数(1~32),プレーン0データ配列アドレス, */
- /* 以下プレーン1~3データ配列アドレス、と続く */
-
- /*==タイリングパターンの設定その2 */
- int g_tilepattern2(char,unsigned,unsigned *);
- /* パターンID,縦ドット数(1~16),色番号データ配列アドレス */
-
- /*==ビューポートの設定 */
- int g_viewport(int,int,int,int); /* 基点X座標,基点Y座標,対角X座標,対角Y座標 */
-
- #endif