Hengband  2.2.1
z-term.h
[詳解]
1 /* File: z-term.h */
2 
3 /*
4  * Copyright (c) 1997 Ben Harrison
5  *
6  * This software may be copied and distributed for educational, research,
7  * and not for profit purposes provided that this copyright and statement
8  * are included in all such copies.
9  */
10 
11 #ifndef INCLUDED_Z_TERM_H
12 #define INCLUDED_Z_TERM_H
13 
14 #include "h-basic.h"
15 
16 typedef struct term_win term_win;
17  /*!
18  * @brief A term_win is a "window" for a Term
19  */
20  struct term_win
21 {
22  bool cu, cv; //!< Cursor Useless / Visible codes
23  TERM_LEN cx, cy; //!< Cursor Location (see "Useless")
24 
25  TERM_COLOR **a; //!< Array[h*w] -- Attribute array
26  char **c; //!< Array[h*w] -- Character array
27 
28  TERM_COLOR *va; //!< Array[h] -- Access to the attribute array
29  char *vc; //!< Array[h] -- Access to the character array
30 
31  TERM_COLOR **ta; //!< Note that the attr pair at(x, y) is a[y][x]
32  char **tc; //!< Note that the char pair at(x, y) is c[y][x]
33 
34  TERM_COLOR *vta; //!< Note that the row of attr at(0, y) is a[y]
35  char *vtc; //!< Note that the row of chars at(0, y) is c[y]
36 };
37 
38 
39 
40 /*!
41  * @brief term実装構造体 / An actual "term" structure
42  */
43 typedef struct term term;
44 struct term
45 {
46  vptr user; //!< Extra "user" info (used by application)
47  vptr data; //!< Extra "data" info (used by implementation)
48 
49  bool user_flag; //!< Flag "user_flag" An extra "user" flag (used by application)
50  bool data_flag; //!< Flag "data_flag" An extra "data" flag (used by implementation)
51 
52  bool active_flag; //!< Flag "active_flag" This "term" is "active"
53  bool mapped_flag; //!< Flag "mapped_flag" This "term" is "mapped"
54  bool total_erase; //!< Flag "total_erase" This "term" should be fully erased
55  bool fixed_shape; //!< Flag "fixed_shape" This "term" is not allowed to resize
56  bool icky_corner; //!< Flag "icky_corner" This "term" has an "icky" corner grid
57  bool soft_cursor; //!< Flag "soft_cursor" This "term" uses a "software" cursor
58  bool always_pict; //!< Flag "always_pict" Use the "Term_pict()" routine for all text
59  bool higher_pict; //!< Flag "higher_pict" Use the "Term_pict()" routine for special text
60  bool always_text; //!< Flag "always_text" Use the "Term_text()" routine for invisible text
61  bool unused_flag; //!< Flag "unused_flag" Reserved for future use
62  bool never_bored; //!< Flag "never_bored" Never call the "TERM_XTRA_BORED" action
63  bool never_frosh; //!< Flag "never_frosh" Never call the "TERM_XTRA_FROSH" action
64 
65  byte attr_blank; //!< Value "attr_blank" Use this "attr" value for "blank" grids
66  char char_blank; //!< Value "char_blank" Use this "char" value for "blank" grids
67 
68  char *key_queue; //!< Keypress Queue -- various data / Keypress Queue -- pending keys
73 
74  TERM_LEN wid; //!< Window Width(max 255)
75  TERM_LEN hgt; //!< Window Height(max 255)
76 
77  TERM_LEN y1; //!< Minimum modified row
78  TERM_LEN y2; //!< Maximum modified row
79 
80  TERM_LEN *x1; //!< Minimum modified column(per row)
81  TERM_LEN *x2; //!< Maximum modified column(per row)
82 
83  term_win *old; //!< Displayed screen image
84  term_win *scr; //!< Requested screen image
85 
86  term_win *tmp; //!< Temporary screen image
87  term_win *mem; //!< Memorized screen image
88 
89  void (*init_hook)(term *t); //!< Hook for init - ing the term
90  void (*nuke_hook)(term *t); //!< Hook for nuke - ing the term
91 
92  errr (*user_hook)(int n); //!< ユーザ設定項目実装部 / Hook for user actions
93  errr (*xtra_hook)(int n, int v); //!< 拡張機能実装部 / Hook for extra actions
94  errr (*curs_hook)(TERM_LEN x, TERM_LEN y); //!< カーソル描画実装部 / Hook for placing the cursor
95  errr (*bigcurs_hook)(TERM_LEN x, TERM_LEN y); //!< 大型タイル時カーソル描画実装部 / Hook for placing the cursor on bigtile mode
96  errr (*wipe_hook)(TERM_LEN x, TERM_LEN y, int n); //!< 指定座標テキスト消去実装部 / Hook for drawing some blank spaces
97  errr (*text_hook)(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR a, concptr s); //!< テキスト描画実装部 / Hook for drawing a string of chars using an attr
98  void (*resize_hook)(void); //!< 画面リサイズ実装部
99  errr (*pict_hook)(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR *ap, concptr cp, const TERM_COLOR *tap, concptr tcp); //!< タイル描画実装部 / Hook for drawing a sequence of special attr / char pairs
100 };
101 
102 
103 
104 
105 
106 
107 
108 /**** Available Constants ****/
109 
110 
111 /*
112  * Definitions for the "actions" of "Term_xtra()"
113  *
114  * These values may be used as the first parameter of "Term_xtra()",
115  * with the second parameter depending on the "action" itself. Many
116  * of the actions shown below are optional on at least one platform.
117  *
118  * The "TERM_XTRA_EVENT" action uses "v" to "wait" for an event
119  * The "TERM_XTRA_SHAPE" action uses "v" to "show" the cursor
120  * The "TERM_XTRA_FROSH" action uses "v" for the index of the row
121  * The "TERM_XTRA_SOUND" action uses "v" for the index of a sound
122  * The "TERM_XTRA_ALIVE" action uses "v" to "activate" (or "close")
123  * The "TERM_XTRA_LEVEL" action uses "v" to "resume" (or "suspend")
124  * The "TERM_XTRA_DELAY" action uses "v" as a "millisecond" value
125  *
126  * The other actions do not need a "v" code, so "zero" is used.
127  */
128 #define TERM_XTRA_EVENT 1 /* Process some pending events */
129 #define TERM_XTRA_FLUSH 2 /* Flush all pending events */
130 #define TERM_XTRA_CLEAR 3 /* Clear the entire window */
131 #define TERM_XTRA_SHAPE 4 /* Set cursor shape (optional) */
132 #define TERM_XTRA_FROSH 5 /* Flush one row (optional) */
133 #define TERM_XTRA_FRESH 6 /* Flush all rows (optional) */
134 #define TERM_XTRA_NOISE 7 /* Make a noise (optional) */
135 #define TERM_XTRA_SOUND 8 /* Make a sound (optional) */
136 #define TERM_XTRA_BORED 9 /* Handle stuff when bored (optional) */
137 #define TERM_XTRA_REACT 10 /* React to global changes (optional) */
138 #define TERM_XTRA_ALIVE 11 /* Change the "hard" level (optional) */
139 #define TERM_XTRA_LEVEL 12 /* Change the "soft" level (optional) */
140 #define TERM_XTRA_DELAY 13 /* Delay some milliseconds (optional) */
141 #define TERM_XTRA_MUSIC_BASIC 14 /* Play a music(basic) (optional) */
142 #define TERM_XTRA_MUSIC_DUNGEON 15 /* Play a music(dungeon) (optional) */
143 #define TERM_XTRA_MUSIC_QUEST 16 /* Play a music(quest) (optional) */
144 #define TERM_XTRA_MUSIC_TOWN 17 /* Play a music(floor) (optional) */
145 #define TERM_XTRA_MUSIC_MUTE 18
146 
147 /**** Available Variables ****/
148 
149 extern term *Term;
150 
151 
152 /**** Available Functions ****/
153 
154 extern errr Term_user(int n);
155 extern errr Term_xtra(int n, int v);
156 
157 extern void Term_queue_char(TERM_LEN x, TERM_LEN y, TERM_COLOR a, char c, TERM_COLOR ta, char tc);
158 extern void Term_queue_bigchar(TERM_LEN x, TERM_LEN y, TERM_COLOR a, char c, TERM_COLOR ta, char tc);
159 
160 extern void Term_queue_line(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR *a, char *c, TERM_COLOR *ta, char *tc);
161 
162 extern void Term_queue_chars(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR a, concptr s);
163 
164 extern errr Term_fresh(void);
165 extern errr Term_set_cursor(int v);
166 extern errr Term_gotoxy(TERM_LEN x, TERM_LEN y);
167 extern errr Term_draw(TERM_LEN x, TERM_LEN y, TERM_COLOR a, char c);
168 extern errr Term_addch(TERM_COLOR a, char c);
169 extern errr Term_add_bigch(TERM_COLOR a, char c);
170 extern errr Term_addstr(int n, TERM_COLOR a, concptr s);
171 extern errr Term_putch(TERM_LEN x, TERM_LEN y, TERM_COLOR a, char c);
172 extern errr Term_putstr(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR a, concptr s);
173 #ifdef JP
174 extern errr Term_putstr_v(TERM_LEN x, TERM_LEN y, int n, byte a, concptr s);
175 #endif
176 extern errr Term_erase(TERM_LEN x, TERM_LEN y, int n);
177 extern errr Term_clear(void);
178 extern errr Term_redraw(void);
180 
181 extern errr Term_get_cursor(int *v);
182 extern errr Term_get_size(TERM_LEN *w, TERM_LEN *h);
183 extern errr Term_locate(int *x, int *y);
184 extern errr Term_what(TERM_LEN x, TERM_LEN y, TERM_COLOR *a, char *c);
185 
186 extern errr Term_flush(void);
187 extern errr Term_keypress(int k);
188 extern errr Term_key_push(int k);
189 extern errr Term_inkey(char *ch, bool wait, bool take);
190 
191 extern errr Term_save(void);
192 extern errr Term_load(void);
193 
194 extern errr Term_exchange(void);
195 
196 extern errr Term_resize(int w, int h);
197 
198 extern errr Term_activate(term *t);
199 
200 extern errr term_nuke(term *t);
201 extern errr term_init(term *t, int w, int h, int k);
202 
203 
204 #endif
205 
206 
u16b key_head
Definition: z-term.h:69
bool never_bored
Flag "never_bored" Never call the "TERM_XTRA_BORED" action
Definition: z-term.h:62
errr Term_gotoxy(TERM_LEN x, TERM_LEN y)
Definition: z-term.c:1805
errr Term_keypress(int k)
Definition: z-term.c:2388
errr Term_redraw(void)
Definition: z-term.c:2211
bool soft_cursor
Flag "soft_cursor" This "term" uses a "software" cursor
Definition: z-term.h:57
void(* resize_hook)(void)
画面リサイズ実装部
Definition: z-term.h:98
const char * concptr
文字列定数用ポインタ定義 / A simple pointer (to unmodifiable strings)
Definition: h-type.h:47
void Term_queue_char(TERM_LEN x, TERM_LEN y, TERM_COLOR a, char c, TERM_COLOR ta, char tc)
Definition: z-term.c:513
bool always_pict
Flag "always_pict" Use the "Term_pict()" routine for all text
Definition: z-term.h:58
errr Term_erase(TERM_LEN x, TERM_LEN y, int n)
Definition: z-term.c:2050
char ** tc
Note that the char pair at(x, y) is c[y][x]
Definition: z-term.h:32
errr(* wipe_hook)(TERM_LEN x, TERM_LEN y, int n)
指定座標テキスト消去実装部 / Hook for drawing some blank spaces
Definition: z-term.h:96
bool never_frosh
Flag "never_frosh" Never call the "TERM_XTRA_FROSH" action
Definition: z-term.h:63
bool icky_corner
Flag "icky_corner" This "term" has an "icky" corner grid
Definition: z-term.h:56
void * vptr
void型ポインタ定義 / A standard pointer (to "void" because ANSI C says so)
Definition: h-type.h:46
errr Term_get_size(TERM_LEN *w, TERM_LEN *h)
Definition: z-term.c:2314
bool active_flag
Flag "active_flag" This "term" is "active"
Definition: z-term.h:52
TERM_LEN hgt
Window Height(max 255)
Definition: z-term.h:75
vptr data
Extra "data" info (used by implementation)
Definition: z-term.h:47
errr Term_exchange(void)
Definition: z-term.c:2576
errr Term_what(TERM_LEN x, TERM_LEN y, TERM_COLOR *a, char *c)
Definition: z-term.c:2347
TERM_COLOR * va
Array[h] – Access to the attribute array
Definition: z-term.h:28
char * key_queue
Keypress Queue – various data / Keypress Queue – pending keys
Definition: z-term.h:68
errr Term_activate(term *t)
Definition: z-term.c:2809
errr term_init(term *t, int w, int h, int k)
Definition: z-term.c:2915
errr(* text_hook)(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR a, concptr s)
テキスト描画実装部 / Hook for drawing a string of chars using an attr
Definition: z-term.h:97
TERM_COLOR * vta
Note that the row of attr at(0, y) is a[y]
Definition: z-term.h:34
term_win * scr
Requested screen image
Definition: z-term.h:84
errr(* curs_hook)(TERM_LEN x, TERM_LEN y)
カーソル描画実装部 / Hook for placing the cursor
Definition: z-term.h:94
bool unused_flag
Flag "unused_flag" Reserved for future use
Definition: z-term.h:61
errr(* bigcurs_hook)(TERM_LEN x, TERM_LEN y)
大型タイル時カーソル描画実装部 / Hook for placing the cursor on bigtile mode
Definition: z-term.h:95
errr Term_fresh(void)
Definition: z-term.c:1488
term_win * old
Displayed screen image
Definition: z-term.h:83
bool always_text
Flag "always_text" Use the "Term_text()" routine for invisible text
Definition: z-term.h:60
errr Term_save(void)
Definition: z-term.c:2508
errr Term_resize(int w, int h)
Definition: z-term.c:2622
errr(* user_hook)(int n)
ユーザ設定項目実装部 / Hook for user actions
Definition: z-term.h:92
TERM_LEN cx
Definition: z-term.h:23
TERM_LEN cy
Cursor Location (see "Useless")
Definition: z-term.h:23
char ** c
Array[h*w] – Character array
Definition: z-term.h:26
u16b key_xtra
Definition: z-term.h:71
errr Term_set_cursor(int v)
Definition: z-term.c:1787
byte attr_blank
Value "attr_blank" Use this "attr" value for "blank" grids
Definition: z-term.h:65
errr Term_flush(void)
Definition: z-term.c:2371
変愚時追加された基本事項のヘッダーファイル / The most basic "include" file.
u16b key_size
Definition: z-term.h:72
int TERM_LEN
コンソール表示座標の型定義
Definition: h-type.h:236
bool fixed_shape
Flag "fixed_shape" This "term" is not allowed to resize
Definition: z-term.h:55
bool mapped_flag
Flag "mapped_flag" This "term" is "mapped"
Definition: z-term.h:53
int errr
エラーコードの定義 / Error codes for function return values
Definition: h-type.h:57
errr term_nuke(term *t)
Definition: z-term.c:2845
char * vc
Array[h] – Access to the character array
Definition: z-term.h:29
unsigned short u16b
Definition: h-type.h:99
bool cv
Cursor Useless / Visible codes
Definition: z-term.h:22
errr Term_putstr(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR a, concptr s)
Definition: z-term.c:2000
char char_blank
Value "char_blank" Use this "char" value for "blank" grids
Definition: z-term.h:66
errr Term_key_push(int k)
Definition: z-term.c:2415
errr Term_clear(void)
Definition: z-term.c:2153
void(* nuke_hook)(term *t)
Hook for nuke - ing the term
Definition: z-term.h:90
errr Term_locate(int *x, int *y)
Definition: z-term.c:2328
TERM_LEN y2
Maximum modified row
Definition: z-term.h:78
term * Term
Definition: z-term.c:290
errr Term_load(void)
Definition: z-term.c:2536
TERM_LEN y1
Minimum modified row
Definition: z-term.h:77
errr Term_putch(TERM_LEN x, TERM_LEN y, TERM_COLOR a, char c)
Definition: z-term.c:1982
TERM_LEN * x2
Maximum modified column(per row)
Definition: z-term.h:81
errr(* pict_hook)(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR *ap, concptr cp, const TERM_COLOR *tap, concptr tcp)
タイル描画実装部 / Hook for drawing a sequence of special attr / char pairs
Definition: z-term.h:99
errr Term_redraw_section(TERM_LEN x1, TERM_LEN y1, TERM_LEN x2, TERM_LEN y2)
Definition: z-term.c:2227
errr(* xtra_hook)(int n, int v)
拡張機能実装部 / Hook for extra actions
Definition: z-term.h:93
TERM_COLOR ** a
Array[h*w] – Attribute array
Definition: z-term.h:25
errr Term_user(int n)
Definition: z-term.c:413
term_win * mem
Memorized screen image
Definition: z-term.h:87
byte TERM_COLOR
テキスト表示色の型定義
Definition: h-type.h:237
vptr user
Extra "user" info (used by application)
Definition: z-term.h:46
bool data_flag
Flag "data_flag" An extra "data" flag (used by implementation)
Definition: z-term.h:50
bool user_flag
Flag "user_flag" An extra "user" flag (used by application)
Definition: z-term.h:49
errr Term_inkey(char *ch, bool wait, bool take)
Definition: z-term.c:2447
Definition: z-term.h:44
void Term_queue_chars(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR a, concptr s)
Definition: z-term.c:711
char * vtc
Note that the row of chars at(0, y) is c[y]
Definition: z-term.h:35
errr Term_addstr(int n, TERM_COLOR a, concptr s)
Definition: z-term.c:1947
u16b key_tail
Definition: z-term.h:70
TERM_LEN * x1
Minimum modified column(per row)
Definition: z-term.h:80
bool cu
Definition: z-term.h:22
errr Term_xtra(int n, int v)
Definition: z-term.c:425
errr Term_get_cursor(int *v)
Definition: z-term.c:2301
A term_win is a "window" for a Term
Definition: z-term.h:20
void Term_queue_bigchar(TERM_LEN x, TERM_LEN y, TERM_COLOR a, char c, TERM_COLOR ta, char tc)
Definition: z-term.c:558
term_win * tmp
Temporary screen image
Definition: z-term.h:86
TERM_LEN wid
Window Width(max 255)
Definition: z-term.h:74
TERM_COLOR ** ta
Note that the attr pair at(x, y) is a[y][x]
Definition: z-term.h:31
void Term_queue_line(TERM_LEN x, TERM_LEN y, int n, TERM_COLOR *a, char *c, TERM_COLOR *ta, char *tc)
Definition: z-term.c:640
bool higher_pict
Flag "higher_pict" Use the "Term_pict()" routine for special text
Definition: z-term.h:59
bool total_erase
Flag "total_erase" This "term" should be fully erased
Definition: z-term.h:54
errr Term_addch(TERM_COLOR a, char c)
Definition: z-term.c:1866
errr Term_add_bigch(TERM_COLOR a, char c)
Definition: z-term.c:1901
errr Term_draw(TERM_LEN x, TERM_LEN y, TERM_COLOR a, char c)
Definition: z-term.c:1831
void(* init_hook)(term *t)
Hook for init - ing the term
Definition: z-term.h:89