home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / ms_dos / fmgraph / fmgraph.h next >
Text File  |  1990-06-14  |  12KB  |  281 lines

  1. #ifndef __FMGRAPH_
  2. #define __FMGRAPH_
  3.  
  4. /*--複数パレットを一回の呼び出しで設定するさいのデータ構造体                 */
  5. struct PALETLIST {
  6.     unsigned    size;                   /* データサイズ  6 * 指定パレット数  */
  7.     struct PALETTE {
  8.         unsigned        colorid;        /* 色番号                            */
  9.         unsigned char   reserve;
  10.         unsigned char   red;            /* 赤階調                            */
  11.         unsigned char   green;          /* 緑階調                            */
  12.         unsigned char   blue;           /* 青階調                            */
  13.     }   pltbl[16];
  14. };
  15.  
  16. /*==グラフィックBIOS初期化 このライブラリを使う際には必ず最初に呼び出すこと  */
  17. void g_init(char far *); /*  作業領域アドレスの指定 先頭1ワードに領域サイズ */
  18.                          /*  -2の値を設定しておく。                        */
  19.                          /* アドレスが0000:0000ならば、BIOS内のデフォルトを */
  20.                          /*  使用する。                                      */
  21. /*==境界線色                矩形、円、扇形、楕円、楕円扇形などの外枠線の色   */
  22. int  g_bordercolor(unsigned); /*  ハードウェアで指定可能な範囲の値           */
  23.  
  24. /*==境界線種  */
  25. int  g_borderlineid(char); /* 1~127のID 1~5までは初期パターン有り 以後は   */
  26.                            /* ユーザー設定(設定されるまではNULLとなる)       */
  27.  
  28. /*==境界線モード            外枠線を描画するかどうか                         */
  29. int  g_bordermode(unsigned char);
  30. #define BORDER_DRAW     1  /* 描画する (デフォルト)                          */
  31. #define BORDER_NODRAW   0  /* 描画しない                                     */
  32.  
  33. /*==矩形  */
  34. int  g_box(int,int,int,int); /* 基点X座標,基点Y座標,対角X座標,対角Y座標      */
  35.  
  36. /*==図形出力中止  */
  37. void g_break(void);
  38.  
  39. /*==文字色  */
  40. int  g_charcolor(unsigned);
  41.  
  42. /*==文字の方向  */
  43. int  g_chardirection(int,int,int,int);
  44.  /* 高さ方向X成分,高さ方向Y成分,幅方向X成分,幅方向X成分      (-1,0,1の範囲?) */
  45.  /* 高さ方向のX成分とY成分はどちらかが0でなければならない。両方が0だとエラー */
  46.  /* 幅方向は両方が0だとエラーだが、両方0以外は良い                           */
  47.  
  48. /*==文字の扱い  */
  49. int  g_charhandling(unsigned char);
  50. #define HANDLE_STR      0       /* 文字間空白、文字方向、文字列方向を無視し、*/
  51.                                 /* 空白無し、文字をXY軸の正方向、文字列を右に*/
  52.                                 /* 描画する (デフォルト)                     */
  53. #define HANDLE_CHAR     1       /* 各設定値に従う                            */
  54.  
  55. /*==文字高さ  */
  56. int  g_charheight(unsigned);
  57.  
  58. /*==文字間空白          を文字高さに対する比率(分数)で指定する  */
  59. int  g_charspace(unsigned,unsigned); /* 分子,分母                            */
  60.  
  61. /*==文字幅              を文字高さに対する比率(分数)で指定する  */
  62. int  g_charwidth(unsigned,unsigned); /* 分子,分母                            */
  63.  
  64. /*==円  */
  65. int  g_circle(int,int,int); /* 中心X座標,中心Y座標,半径                      */
  66.  
  67. /*==円弧  */
  68. int  g_circle_arc(int,int,int,int,int,int,int);
  69.  /* 中心X座標,中心Y座標,開始軸X成分,開始軸Y成分,終了軸X成分,終了軸Y成分,半径 */
  70.  
  71. /*==円扇形  */
  72. int  g_circle_sector(int,int,int,int,int,int,int);
  73.  /* 中心X座標,中心Y座標,開始軸X成分,開始軸Y成分,終了軸X成分,終了軸Y成分,半径 */
  74.  
  75. /*==クリップ枠  */
  76. int  g_clip(int,int,int,int); /* 基点X座標,基点Y座標,対角X座標,対角Y座標     */
  77.  
  78. /*==クリップモード  */
  79. int  g_clipmode(unsigned char);
  80. #define CLIP_HARD       0       /* 画面枠                                    */
  81. #define CLIP_CLIPFRAME  1       /* クリップ枠 (デフォルト)                   */
  82. #define CLIP_VIEWPORT   2       /* ビューポート                              */
  83.  
  84. /*==全画面消去  */
  85. void g_cls(void);
  86.  
  87. /*==色指定のビットイメージ読み出し  */
  88. int  g_colorget(unsigned char far *,unsigned char,int,int,int,int,unsigned,unsigned *);
  89.  /* バッファアドレス,読み出しページ,基点X座標,基点Y座標,対角X座標,対角Y座標, */
  90.  /* 読み出し指定色数(1~16),指定色配列アドレス                               */
  91.  
  92. /*==色指定のビットイメージ書き込み  */
  93. int  g_colorput(unsigned char far *,unsigned char,int,int,int,int,unsigned,unsigned char);
  94.  /* バッファアドレス,書き込みページ,基点X座標,基点Y座標,対角X座標,対角Y座標, */
  95.  /* 書き込み色,書き込みモード(描画モードに同じ)                              */
  96.  
  97. /*==ユーザー座標系設定  */
  98. int  g_coodinate(int,int,int,int); /* 左下X座標,左下Y座標,右上X座標,右上Y座標*/
  99.  
  100. /*==描画モード  */
  101. int  g_drawmode(unsigned char);
  102. #define DRAW_PRESET     0       /* 背景色で描画する                          */
  103. #define DRAW_AND        1       /* 描画先の色番号と AND する                 */
  104. #define DRAW_PSET       3       /* 指定の色で描画する (デフォルト)           */
  105. #define DRAW_XOR        6       /* 描画先の色番号と XOR する                 */
  106. #define DRAW_OR         7       /* 描画先の色番号と OR する                  */
  107. #define DRAW_NOT        12      /* 文字描画時のみ有効  反転表示を行う        */
  108.  
  109. /*==グラフィックカーソル表示  */
  110. void g_gcurdisp(unsigned char);
  111. #define GCUR_DISP        0      /* グラフィックカーソルを表示する            */
  112. #define GCUR_NODISP     !0      /* グラフィックカーソルを表示しない          */
  113.  
  114. /*==グラフィックカーソル形状  */
  115. int  g_gcurform(char,char,unsigned,unsigned,unsigned,unsigned char *,unsigned char *);
  116.  /* カーソル図形内の中心X座標,同Y座標,横ドット数(8の倍数),縦ドット数(1~32), */
  117.  /* 色番号,ANDパターンアドレス,XORパターンアドレス                           */
  118.  
  119. /*==グラフィックカーソル位置  */
  120. void g_gcurpos(unsigned,unsigned); /* X座標,Y座標 (ハードウェア座標系)       */
  121.  
  122. /*==汎用の図形出力  */
  123. int  g_generaloutput(char far *);
  124.  
  125. /*==全プレーンのビットイメージ読み出し  */
  126. void g_get(unsigned char far *,unsigned char,int,int,int,int);
  127.  /* バッファアドレス,読み出しページ,基点X座標,基点Y座標,対角X座標,対角Y座標, */
  128.  
  129. /*==バックグラウンドカラー読み出し  */
  130. int  g_getbgcolor(void);
  131.  
  132. /*==16β互換モードの読み出し  値は設定の方を参照                             */
  133. int  g_getcompatiblemode(void);
  134.  
  135. /*==表示中ページ番号の読み出し  */
  136. int  g_getdisplaypage(void);
  137.  
  138. /*==書き込みページ番号の読み出し  */
  139. int  g_getdrawpage(void);
  140.  
  141. /*==使用可能ページ数の読み出し  */
  142. int  g_geteffectpage(void);
  143.  
  144. /*==ハッチング種別指定  */
  145. int  g_hatchid(char);      /* 1~127のID 1~6までは初期パターン有り 以後は   */
  146.                            /* ユーザー設定(設定されるまではNULLとなる)       */
  147.  
  148. /*==ハッチングパターン設定  */
  149. int  g_hatchpattern(char,unsigned,unsigned char *);
  150.  /* パターンID,縦ドット数(1~20),パターンデータ配列アドレス                  */
  151.  
  152. /*==線分  */
  153. int  g_line(int,int,int,int); /* 始点X座標,始点Y座標,終点X座標,終点Y座標     */
  154.  
  155. /*==線分色  */
  156. int  g_linecolor(unsigned);
  157.  
  158. /*==線分種別指定  */
  159. int  g_lineid(char); /* 境界線種別に同じ                                     */
  160.  
  161. /*==線分パターン設定その1  */
  162. int  g_linepattern(char,unsigned); /* パターンID,パターンデータ(16ビット)    */
  163.  
  164. /*==線分パターン設定その2  */
  165. int  g_linepattern2(char,unsigned char,unsigned char);
  166.  /* パターンID,パターンデータ1(初めの8ビット),パターンデータ2(後の8ビット) */
  167.  
  168. /*==パレット設定(複数)  */
  169. void g_multipalette(struct PALETLIST far *); /* パレット指定データのアドレス */
  170.  
  171. /*==楕円  */
  172. int  g_oval(int,int,int,int); /* 中心X座標,中心Y座標,X方向半径,Y方向半径     */
  173.  
  174. /*==楕円弧  */
  175. int  g_oval_arc(int,int,int,int,double,double);
  176.  /* 中心X座標,中心Y座標,X方向半径,Y方向半径,開始角(ラジアン),終了角(ラジアン)      */
  177.  /* 使用するのに mathlib.lib が必要である                                    */
  178.  
  179. /*==楕円扇形  */
  180. int  g_oval_sector(int,int,int,int,double,double);
  181.  /* 中心X座標,中心Y座標,X方向半径,Y方向半径,開始角(ラジアン),終了角(ラジアン)      */
  182.  /* 使用するのに mathlib.lib が必要である                                    */
  183.  
  184. /*==ペイント  */
  185. int  g_paint(int,int,unsigned,unsigned *);
  186.  /* 中心X座標,中心Y座標,境界色数(1~16),境界色配列アドレス                   */
  187.  
  188. /*==ペイント色  */
  189. int  g_paintcolor(unsigned);
  190.  
  191. /*==ペイントモード ペイントや矩形、円、扇形、楕円、楕円扇形描画時の面塗り指定*/
  192. int  g_paintmode(unsigned char);
  193. #define PAINT_NO        0       /* 塗り潰しをしない (デフォルト)             */
  194. #define PAINT_FILL      1       /* ベタ塗り                                  */
  195. #define PAINT_TILE      2       /* タイル塗り                                */
  196. #define PAINT_HATCH     3       /* ハッチング塗り                            */
  197.  
  198. /*==パレット設定(単独)  */
  199. void g_palette(unsigned,unsigned char,unsigned char,unsigned char);
  200.  /* 色番号,赤階調,緑階調,青階調                                              */
  201.  
  202. /*==部分画面消去  */
  203. void g_partclear(unsigned char,int,int,int,int);
  204.  /* 対象ページ番号,基点X座標,基点Y座標,対角X座標,対角Y座標                   */
  205.  
  206. /*==部分画面複写  */
  207. int  g_partcopy(unsigned char,int,int,int,int,unsigned char,int,int,unsigned char);
  208.  /* 複写元ページ番号,基点X座標,基点Y座標,対角X座標,対角Y座標,                */
  209.  /* 複写先ページ番号,基点X座標,基点Y座標,書き込みモード(描画モードに同じ)    */
  210.  
  211. /*==使用プレーン数設定  */
  212. void g_plane(unsigned char);
  213.  
  214. /*==点色  */
  215. int  g_pointcolor(unsigned);
  216.  
  217. /*==点  */
  218. int  g_pset(int,int); /* 描画X座標,描画Y座標                                 */
  219.  
  220. /*==全プレーンのビットイメージ書き込み  */
  221. int  g_put(unsigned char far *,unsigned char,int,int,int,int,unsigned char);
  222.  /* バッファアドレス,書き込みページ,基点X座標,基点Y座標,対角X座標,対角Y座標, */
  223.  /* 書き込みモード(描画モードに同じ)                                         */
  224.  
  225. /*==解像度の設定  */
  226. int  g_resolution(unsigned,unsigned); /* 水平ドット数,垂直ドット数           */
  227.  
  228. /*==スクロール  */
  229. void g_scroll(int,int); /* 水平移動ドット数,垂直移動ドット数                 */
  230.  
  231. /*==バックグラウンドカラー設定  */
  232. void g_setbgcolor(int);
  233.  
  234. /*==16β互換モードの設定  */
  235. void g_setcompatiblemode(unsigned char);
  236. #define COMPATI_BETA    0       /* 16β互換モード                            */
  237. #define COMPATI_EXTD    1
  238.                       /* 拡張モード(読み出し時の値、設定時は0以外ならば良い) */
  239.  
  240. /*==表示ページの設定  */
  241. void g_setdisplaypage(unsigned char);
  242.  
  243. /*==書き込みページの設定  */
  244. void g_setdrawpage(unsigned char);
  245.  
  246. /*==文字列描画の方向  */
  247. int  g_strdirection(unsigned char);
  248. #define DIRECT_RIGHT    0       /* 右                                        */
  249. #define DIRECT_LEFT     1       /* 左                                        */
  250. #define DIRECT_UP       2       /* 上                                        */
  251. #define DIRECT_DOWN     3       /* 下                                        */
  252.  
  253. /*==文字列出力          MAX 255バイト                                        */
  254. int  g_string(int,int,unsigned char,char far *);
  255.  /* 開始X座標,開始Y座標,継続フラグ,文字列アドレス                            */
  256.  /* 開始XY座標は、文字の左下角の座標である                                   */
  257.  /* 使用するのに farstr.lib が必要である                                     */
  258. #define STR_CONTINUE    1       /* この文字列描画の後に、継続描画する文字あり*/
  259. #define STR_STOP        0       /* 継続描画する文字なし                      */
  260.  
  261. /*==継続した文字列出力  MAX 255バイト                                        */
  262. int  g_string_cont(unsigned char,char far *); /* 継続フラグ,文字列アドレス   */
  263.  /* 使用するのに farstr.lib が必要である                                     */
  264.  
  265. /*==タイリング種別指定  */
  266. int  g_tileid(char); /* 1~127のID 初期パターンは無し                        */
  267.  
  268. /*==タイリングパターンの設定その1  */
  269. int  g_tilepattern(char,unsigned,unsigned char *,unsigned char *,unsigned char *,unsigned char *);
  270.  /* パターンID,縦ドット数(1~32),プレーン0データ配列アドレス,               */
  271.  /* 以下プレーン1~3データ配列アドレス、と続く                             */
  272.  
  273. /*==タイリングパターンの設定その2  */
  274. int  g_tilepattern2(char,unsigned,unsigned *);
  275.  /* パターンID,縦ドット数(1~16),色番号データ配列アドレス                    */
  276.  
  277. /*==ビューポートの設定  */
  278. int  g_viewport(int,int,int,int); /* 基点X座標,基点Y座標,対角X座標,対角Y座標 */
  279.  
  280. #endif
  281.