/* API */

struct clock {	/* 時計 */
	int sec, min, hour;
	int day, month, year;
};
struct mouse {	/* マウス*/
	int x, y;
	int btn;
	int stat;
};
/* int btnで使う定数 */
#define MOUSE_BTN_LEFT	1	/* btnと&を取る, 左 */
#define MOUSE_BTN_CENT	2	/* 中 */
#define MOUSE_BTN_RIGT	3	/* 左 */

/* int statで使う定数 */
#define MOUSE_RELEASED	1	/* ボタンを離された */
#define MOUSE_PRESSED	2	/* ボタンを押された */
#define MOUSE_MOVED	3	/* 動かされた */
#define MOUSE_DRAGGED	4	/* ドラッグされた */

struct pict {	/* 画像 */
	int sx, sy;
	int mode;
};

/* int modeで使う定数 */
#define PICT_BMP	1	/* .bmp形式である */
#define PICT_JPEG	2	/* .jpg形式である */

/* 色番号（推奨される色番号） */
/* 6段階のRGBの指定が出来る。RGB各51ごとに指定できる。色番号の計算は、
 * 16 + (r / 51) + (g / 51) * 6 + (b / 51) * 36
 * で、rgb各種に指定のカラー番号を入れることで可能である。
 */
#define COLOR_000000	0
#define COLOR_FF0000	1
#define COLOR_00FF00	2
#define COLOR_FFFF00	3
#define COLOR_0000FF	4
#define COLOR_FF00FF	5
#define COLOR_00FFFF	6
#define COLOR_FFFFFF	7
#define COLOR_C6C6C6	8
#define COLOR_840000	9
#define COLOR_008400	10
#define COLOR_848400	11
#define COLOR_000084	12
#define COLOR_840084	13
#define COLOR_008484	14
#define COLOR_848484	15

/* マウスでの状態の定数 */
#define MOUSE_RELEASED	1	/* ボタンを離された */
#define MOUSE_PRESSED	2	/* ボタンを押された */
#define MOUSE_MOVED	3	/* 動かされた */
#define MOUSE_DRAGGED	4	/* ドラッグされた */

void api_exit(void);
void api_putc(int c);
void api_puts(char *s);
void api_nputs(char *s, int n);
int api_getd(int mode);
void api_getmouse(struct mouse *mouse, int win, int mode);
char *api_getcmd(char *line, int n, int mode);
char *api_malloc(int size);
void api_mfree(char *addr, int size);
int api_talloc(void);
void api_tfree(int timer);
void api_tinit(int timer, int data);
void api_tset(int timer, int time);
int api_fopen(char *name, int mode);
void api_fclose(int fh);
int api_fsize(int fh, int mode);
int api_fseek(int fh, int mode, int size);
int api_fread(int fh, char *buf, int size);
int api_fwrite(int fh, char *buf, int size);
void api_fdelete(int fh);
void api_beep(int mhz);
struct clock *api_getclock(void);
int api_wopen(char *buf, int sx, int sy, int cinv, char *title);
void api_wclose(int win);
void api_wpoint(int win, int c, int x, int y);
void api_wline(int win, int c, int x0, int y0, int x1, int y1);
void api_wbox(int win, int c, int x0, int y0, int x1, int y1);
void api_wputs(int win, int c, int x, int y, char *str);
void api_wnputs(int win, int c, int x, int y, char *str, int n);
void api_wrefresh(int win, int x0, int y0, int x1, int y1);
int api_getpinfo(int fh, struct pict *pict);
int api_wpict(int fh, int win, int x, int y, int sx, int sy);
