home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 3
/
FREEWARE.BIN
/
towns_os
/
fildlg22
/
display.h
< prev
next >
Wrap
C/C++ Source or Header
|
1980-01-02
|
7KB
|
326 lines
/*
* display.h
*/
#ifndef _DISPLAY_H
#define _DISPLAY_H
/* ページ番号の定義 */
#define Page0 0
#define Page1 1
#define Page2 2
#define Page3 3
/* 表示ピクセル数の定義 */
#define Mode3VirScrnX 1024
#define Mode3VirScrnY 512
#define Mode3RealScrnX 640
#define Mode3RealScrnY 480
#define Mode10VirScrnX 512
#define Mode10VirScrnY 256
#define Mode10RealScrnX 320
#define Mode10RealScrnY 240
#define Mode12VirScrnX 1024
#define Mode12VirScrnY 512
#define Mode12RealScrnX 640
#define Mode12RealScrnY 480
#define Mode17VirScrnX 512
#define Mode17VirScrnY 512
#define Mode17RealScrnX 512
#define Mode17RealScrnY 480
/* カラーテーブルの定義 */
#define ClutEntries 256
typedef struct {
unsigned long cnt;
struct clutEntry {
unsigned long ci;
unsigned char blue;
unsigned char red;
unsigned char green;
unsigned char rsv;
} clutEntry[ClutEntries];
} clutDataBlock_t;
/* カラーパレット宣言 */
extern int _DISP_palette[];
/* カラーバレット設定定数 */
#define DISP_PalReset 0
#define DISP_PalColor32k 1
#define DISP_PalColor256 2
#define DISP_PalColor16 3
/* カラーパレット用 Color Index */
#define CI_Black (_DISP_palette[0])
#define CI_DarkBlue (_DISP_palette[1])
#define CI_DarkRed (_DISP_palette[2])
#define CI_DarkMagenta (_DISP_palette[3])
#define CI_DarkGreen (_DISP_palette[4])
#define CI_DarkCyan (_DISP_palette[5])
#define CI_DarkYellow (_DISP_palette[6])
#define CI_Gray (_DISP_palette[7])
#define CI_DarkGray (_DISP_palette[8])
#define CI_Blue (_DISP_palette[9])
#define CI_Red (_DISP_palette[10])
#define CI_Magenta (_DISP_palette[11])
#define CI_Green (_DISP_palette[12])
#define CI_Cyan (_DISP_palette[13])
#define CI_Yellow (_DISP_palette[14])
#define CI_White (_DISP_palette[15])
/* 個別色値から色直値への変換 */
#define IGRB(i,g,r,b) (((i & 0xff) << 24) | \
((g & 0xff) << 16) | \
((r & 0xff) << 8) | \
(b & 0xff))
extern void
DISP_init(void);
/*
* PURPOSE
* 画面とマウスの初期化を実行する.
* ページ0 : 320×240 32K色 2倍拡大
* ページ1 : 640×480 16色
* ページ1を前面にして,両ページを表示する.
* 初期化後の書き込みページはページ1となる.
* マウスの表示ページはページ1となる.
*/
extern void
DISP_terminate(
int consoleMode); /* コンソール画面モード設定フラグ */
/*
* PURPOSE
* 画面の表示終了処理を行う.
* consoleModeが0以外であれば,
* コンソール画面モード(640×400 16色)に設定する.
* consoleModeが0であれば,画面モードは変更しない.
*/
extern void
DISP_setScrnMode(
int page, /* 設定対象ページ */
int mode); /* 画面モード番号 */
/*
* PURPOSE
* 画面モードを設定する.
*/
extern long
DISP_getScrnMode(void);
/*
* PURPOSE
* 現在設定されている画面モードを通知する.
* RETURNS
* bit31...bit24 : ページ3
* bit23...bit16 : ページ2
* bit15...bit8 : ページ1
* bit7 ...bit0 : ページ0
* ページ0が1画面モードの場合,ページ1~ページ3は無効.
*/
extern void
DISP_clearScreen(
int colorIGRB); /* 画面を消去する色(IGRB値) */
/*
* PURPOSE
* 表示画面を指定された色で消去する.
*/
extern void
DISP_setClut(
char *clutData); /* EGB_palette()の第3引数を指定 */
/*
* PURPOSE
* 現在選択されているページのハードウェアカラーLUTを
* VSYNCを待ち合わて変更する.
*/
extern void
DISP_getClut(
int top, /* 通知先頭エントリ番号 */
int entries, /* 通知エントリ個数 */
char *clutData); /* 通知領域へのポインタ */
/*
* PURPOSE
* 現在のカラーテーブルのうち,topからentries個数分を
* clutDataで指定された領域へ通知する.
*/
extern void
DISP_initClut16(void);
/*
* PURPOSE
* 現在の書き込みページのハードウェア16色カラーLUTを初期化する.
*/
extern void
DISP_initClut256(void);
/*
* PURPOSE
* 現在の書き込みページのハードウェア256色カラーLUTを初期化する.
*/
extern void
DISP_setPalette(
int type); /* 0:1対1, 1:32K色, 2:256色, 3:16色 */
/*
* PURPOSE
* ソフトウェアパレットを指定された状態に変更する.
* カラーLUTが初期状態であれば,CI_xxxxによる指定色が実現される.
*/
extern void
DISP_getPixelBlock(
int luX,
int luY,
int rdX,
int rdY,
char *buffer); /* 表示対象データ */
/*
* PURPOSE
* 座標(x1,y1)から(x2,y2)までのピクセルデータを
* bufferへ取り出す.
*/
extern void
DISP_putPixelBlock(
int luX,
int luY,
int rdX,
int rdY,
char *buffer); /* 表示対象データ */
/*
* PURPOSE
* buffer内のピクセルデータを
* 座標(x1,y1)から(x2,y2)までに表示する.
*/
extern void
DISP_putBlock(
int luX,
int luY,
int rdX,
int rdY,
char *buffer,
int colorIx);
/*
* PURPOSE
* 1ビット/ピクセルのモノクロデータを指定色で表示する.
*/
extern void
DISP_line(
int x1, /* 開始点 */
int y1,
int x2, /* 終了点 */
int y2,
int colorIndex);
/*
* PURPOSE
* 指定座標を結ぶ1本の線分を描く.
*/
extern void
DISP_xorLine(
int x1, /* 開始点 */
int y1,
int x2, /* 終了点 */
int y2,
int colorIndex);
/*
* PURPOSE
* 指定座標を結ぶ線分をXORモードで描く.
*/
extern void
DISP_rectangle(
int luX,
int luY,
int rdX,
int rdY,
int colorIndex);
/*
* PURPOSE
* 指定した位置に指定色の面塗り長方形を表示する.
*/
extern void
DISP_xorRectangle(
int luX,
int luY,
int rdX,
int rdY,
int colorIndex);
/*
* PURPOSE
* 指定した位置に指定色の面塗り長方形をXORモードで表示する.
*/
extern void
DISP_rectBox(
int luX,
int luY,
int rdX,
int rdY,
int colorIndex);
/*
* PURPOSE
* 指定した位置に指定色の長方形の枠を表示する.
*/
extern void
DISP_xorRectBox(
int luX,
int luY,
int rdX,
int rdY,
int colorIndex);
/*
* PURPOSE
* 指定した位置に指定色の長方形の枠をXORモードで表示する.
*/
extern void
DISP_stringAt(
char *string,
int x,
int y,
int colorIndex);
/*
* PURPOSE
* 指定した位置に指定色の文字列を表示する.
*/
extern void
DISP_stringRect(
char *string,
int foreColor, /* 文字列と枠の色 */
int backColor); /* 文字列の背景色 */
/*
* PURPOSE
* 文字出力領域を消去後,
* 指定した文字列を640×480ドットの画面中央に表示する
* 文字列は,指定した色の枠で囲む.
*/
extern void
DISP_setPage(
int page);
/*
* PURPOSE
* 書き込みページを設定する.
*/
extern int
DISP_getPixel(
int x,
int y);
/*
* PURPOSE
* 指定点のピクセル値をIGRB形式で通知する.
* RETURNS
* IGRB形式のピクセル値
*/
extern void
DISP_setPixel(
int x,
int y,
int colorIGRB);
/*
* PURPOSE
* IGRB形式のピクセル値を指定点に設定する.
*/
#endif
/***** display.h *****/