home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 3 / FREEWARE.BIN / towns_os / fildlg22 / display.h < prev    next >
C/C++ Source or Header  |  1980-01-02  |  7KB  |  326 lines

  1. /*
  2.  *    display.h
  3.  */
  4. #ifndef    _DISPLAY_H
  5. #define    _DISPLAY_H
  6.  
  7.  
  8. /*    ページ番号の定義    */
  9. #define        Page0    0
  10. #define        Page1    1
  11. #define        Page2    2
  12. #define        Page3    3
  13.  
  14.  
  15. /*    表示ピクセル数の定義    */
  16. #define        Mode3VirScrnX    1024
  17. #define        Mode3VirScrnY    512
  18. #define        Mode3RealScrnX    640
  19. #define        Mode3RealScrnY    480
  20.  
  21. #define        Mode10VirScrnX    512
  22. #define        Mode10VirScrnY    256
  23. #define        Mode10RealScrnX    320
  24. #define        Mode10RealScrnY    240
  25.  
  26. #define        Mode12VirScrnX    1024
  27. #define        Mode12VirScrnY    512
  28. #define        Mode12RealScrnX    640
  29. #define        Mode12RealScrnY    480
  30.  
  31. #define        Mode17VirScrnX    512
  32. #define        Mode17VirScrnY    512
  33. #define        Mode17RealScrnX    512
  34. #define        Mode17RealScrnY    480
  35.  
  36.  
  37. /*    カラーテーブルの定義    */
  38. #define        ClutEntries    256
  39.  
  40. typedef    struct    {
  41.     unsigned long    cnt;
  42.     struct    clutEntry    {
  43.         unsigned long    ci;
  44.         unsigned char    blue;
  45.         unsigned char    red;
  46.         unsigned char    green;
  47.         unsigned char    rsv;
  48.     }    clutEntry[ClutEntries];
  49. }    clutDataBlock_t;
  50.  
  51.  
  52. /*    カラーパレット宣言        */
  53. extern    int    _DISP_palette[];
  54.  
  55. /*    カラーバレット設定定数        */
  56. #define        DISP_PalReset        0
  57. #define        DISP_PalColor32k    1
  58. #define        DISP_PalColor256    2
  59. #define        DISP_PalColor16        3
  60.  
  61. /*    カラーパレット用 Color Index    */
  62. #define        CI_Black        (_DISP_palette[0])
  63. #define        CI_DarkBlue        (_DISP_palette[1])
  64. #define        CI_DarkRed        (_DISP_palette[2])
  65. #define        CI_DarkMagenta        (_DISP_palette[3])
  66. #define        CI_DarkGreen        (_DISP_palette[4])
  67. #define        CI_DarkCyan        (_DISP_palette[5])
  68. #define        CI_DarkYellow        (_DISP_palette[6])
  69. #define        CI_Gray            (_DISP_palette[7])
  70. #define        CI_DarkGray        (_DISP_palette[8])
  71. #define        CI_Blue            (_DISP_palette[9])
  72. #define        CI_Red            (_DISP_palette[10])
  73. #define        CI_Magenta        (_DISP_palette[11])
  74. #define        CI_Green        (_DISP_palette[12])
  75. #define        CI_Cyan            (_DISP_palette[13])
  76. #define        CI_Yellow        (_DISP_palette[14])
  77. #define        CI_White        (_DISP_palette[15])
  78.  
  79.  
  80. /*    個別色値から色直値への変換    */
  81. #define        IGRB(i,g,r,b)    (((i & 0xff) << 24) | \
  82.                     ((g & 0xff) << 16) | \
  83.                     ((r & 0xff) << 8) | \
  84.                     (b & 0xff))
  85.  
  86.  
  87. extern    void
  88. DISP_init(void);
  89. /*
  90.  *    PURPOSE
  91.  *        画面とマウスの初期化を実行する.
  92.  *            ページ0 : 320×240 32K色 2倍拡大
  93.  *            ページ1 : 640×480 16色
  94.  *        ページ1を前面にして,両ページを表示する.
  95.  *        初期化後の書き込みページはページ1となる.
  96.  *        マウスの表示ページはページ1となる.
  97.  */
  98. extern    void
  99. DISP_terminate(
  100.     int    consoleMode);    /* コンソール画面モード設定フラグ */
  101. /*
  102.  *    PURPOSE
  103.  *        画面の表示終了処理を行う.
  104.  *        consoleModeが0以外であれば,
  105.  *        コンソール画面モード(640×400 16色)に設定する.
  106.  *        consoleModeが0であれば,画面モードは変更しない.
  107.  */
  108. extern    void
  109. DISP_setScrnMode(
  110.     int    page,        /* 設定対象ページ */
  111.     int    mode);        /* 画面モード番号 */
  112. /*
  113.  *    PURPOSE
  114.  *        画面モードを設定する.
  115.  */
  116. extern    long
  117. DISP_getScrnMode(void);
  118. /*
  119.  *    PURPOSE
  120.  *        現在設定されている画面モードを通知する.
  121.  *    RETURNS
  122.  *        bit31...bit24    : ページ3
  123.  *        bit23...bit16    : ページ2
  124.  *        bit15...bit8    : ページ1
  125.  *        bit7 ...bit0    : ページ0
  126.  *        ページ0が1画面モードの場合,ページ1~ページ3は無効.
  127.  */
  128. extern    void
  129. DISP_clearScreen(
  130.     int    colorIGRB);    /* 画面を消去する色(IGRB値) */
  131. /*
  132.  *    PURPOSE
  133.  *        表示画面を指定された色で消去する.
  134.  */
  135. extern    void
  136. DISP_setClut(
  137.     char    *clutData);    /* EGB_palette()の第3引数を指定 */
  138. /*
  139.  *    PURPOSE
  140.  *        現在選択されているページのハードウェアカラーLUTを
  141.  *        VSYNCを待ち合わて変更する.
  142.  */
  143. extern    void
  144. DISP_getClut(
  145.     int    top,        /* 通知先頭エントリ番号 */
  146.     int    entries,    /* 通知エントリ個数 */
  147.     char    *clutData);    /* 通知領域へのポインタ */
  148. /*
  149.  *    PURPOSE
  150.  *        現在のカラーテーブルのうち,topからentries個数分を
  151.  *        clutDataで指定された領域へ通知する.
  152.  */
  153. extern    void
  154. DISP_initClut16(void);
  155. /*
  156.  *    PURPOSE
  157.  *        現在の書き込みページのハードウェア16色カラーLUTを初期化する.
  158.  */
  159. extern    void
  160. DISP_initClut256(void);
  161. /*
  162.  *    PURPOSE
  163.  *        現在の書き込みページのハードウェア256色カラーLUTを初期化する.
  164.  */
  165. extern    void
  166. DISP_setPalette(
  167.     int    type);        /* 0:1対1, 1:32K色, 2:256色, 3:16色 */
  168. /*
  169.  *    PURPOSE
  170.  *        ソフトウェアパレットを指定された状態に変更する.
  171.  *        カラーLUTが初期状態であれば,CI_xxxxによる指定色が実現される.
  172.  */
  173. extern    void
  174. DISP_getPixelBlock(
  175.     int        luX,
  176.     int        luY,
  177.     int        rdX,
  178.     int        rdY,
  179.     char        *buffer);    /* 表示対象データ */
  180. /*
  181.  *    PURPOSE
  182.  *        座標(x1,y1)から(x2,y2)までのピクセルデータを
  183.  *        bufferへ取り出す.
  184.  */
  185. extern    void
  186. DISP_putPixelBlock(
  187.     int        luX,
  188.     int        luY,
  189.     int        rdX,
  190.     int        rdY,
  191.     char        *buffer);    /* 表示対象データ */
  192. /*
  193.  *    PURPOSE
  194.  *        buffer内のピクセルデータを
  195.  *        座標(x1,y1)から(x2,y2)までに表示する.
  196.  */
  197. extern    void
  198. DISP_putBlock(
  199.     int    luX,
  200.     int    luY,
  201.     int    rdX,
  202.     int    rdY,
  203.     char    *buffer,
  204.     int    colorIx);
  205. /*
  206.  *    PURPOSE
  207.  *        1ビット/ピクセルのモノクロデータを指定色で表示する.
  208.  */
  209. extern    void
  210. DISP_line(
  211.     int    x1,            /* 開始点 */
  212.     int    y1,
  213.     int    x2,            /* 終了点 */
  214.     int    y2,
  215.     int    colorIndex);
  216. /*
  217.  *    PURPOSE
  218.  *        指定座標を結ぶ1本の線分を描く.
  219.  */
  220. extern    void
  221. DISP_xorLine(
  222.     int    x1,            /* 開始点 */
  223.     int    y1,
  224.     int    x2,            /* 終了点 */
  225.     int    y2,
  226.     int    colorIndex);
  227. /*
  228.  *    PURPOSE
  229.  *        指定座標を結ぶ線分をXORモードで描く.
  230.  */
  231. extern    void
  232. DISP_rectangle(
  233.     int    luX,
  234.     int    luY,
  235.     int    rdX,
  236.     int    rdY,
  237.     int    colorIndex);
  238. /*
  239.  *    PURPOSE
  240.  *        指定した位置に指定色の面塗り長方形を表示する.
  241.  */
  242. extern    void
  243. DISP_xorRectangle(
  244.     int    luX,
  245.     int    luY,
  246.     int    rdX,
  247.     int    rdY,
  248.     int    colorIndex);
  249. /*
  250.  *    PURPOSE
  251.  *        指定した位置に指定色の面塗り長方形をXORモードで表示する.
  252.  */
  253. extern    void
  254. DISP_rectBox(
  255.     int    luX,
  256.     int    luY,
  257.     int    rdX,
  258.     int    rdY,
  259.     int    colorIndex);
  260. /*
  261.  *    PURPOSE
  262.  *        指定した位置に指定色の長方形の枠を表示する.
  263.  */
  264. extern    void
  265. DISP_xorRectBox(
  266.     int    luX,
  267.     int    luY,
  268.     int    rdX,
  269.     int    rdY,
  270.     int    colorIndex);
  271. /*
  272.  *    PURPOSE
  273.  *        指定した位置に指定色の長方形の枠をXORモードで表示する.
  274.  */
  275. extern    void
  276. DISP_stringAt(
  277.     char    *string,
  278.     int    x,
  279.     int    y,
  280.     int    colorIndex);
  281. /*
  282.  *    PURPOSE
  283.  *        指定した位置に指定色の文字列を表示する.
  284.  */
  285. extern    void
  286. DISP_stringRect(
  287.     char    *string,
  288.     int    foreColor,        /* 文字列と枠の色 */
  289.     int    backColor);        /* 文字列の背景色 */
  290. /*
  291.  *    PURPOSE
  292.  *        文字出力領域を消去後,
  293.  *        指定した文字列を640×480ドットの画面中央に表示する
  294.  *        文字列は,指定した色の枠で囲む.
  295.  */
  296. extern    void
  297. DISP_setPage(
  298.     int    page);
  299. /*
  300.  *    PURPOSE
  301.  *        書き込みページを設定する.
  302.  */
  303. extern    int
  304. DISP_getPixel(
  305.     int    x,
  306.     int    y);
  307. /*
  308.  *    PURPOSE
  309.  *        指定点のピクセル値をIGRB形式で通知する.
  310.  *    RETURNS
  311.  *        IGRB形式のピクセル値
  312.  */
  313. extern    void
  314. DISP_setPixel(
  315.     int    x,
  316.     int    y,
  317.     int    colorIGRB);
  318. /*
  319.  *    PURPOSE
  320.  *        IGRB形式のピクセル値を指定点に設定する.
  321.  */
  322.  
  323.  
  324. #endif
  325. /*****    display.h  *****/
  326.