sdk-world v2026.11.05
PS2 SDK - world tier (copyleft-allowed, non-essential packages)
Loading...
Searching...
No Matches
aalib.h
Go to the documentation of this file.
1
5#ifndef __AALIB_INCLUDED__
6#define __AALIB_INCLUDED__
7#include <stdio.h>
8#ifdef __cplusplus
9extern "C" {
10#endif
11#define AA_LIB_VERSION 1
12#define AA_LIB_MINNOR 2
13#define AA_LIB_VERSIONCODE 102000
14
15#define AA_NATTRS 5
16#define AA_NPARAMS 5
17
18#define AA_NONE 0 /*special keycodes */
19#define AA_RESIZE 258
20#define AA_MOUSE 259
21#define AA_UP 300
22#define AA_DOWN 301
23#define AA_LEFT 302
24#define AA_RIGHT 303
25#define AA_BACKSPACE 304
26#define AA_ESC 305
27#define AA_UNKNOWN 400
28#define AA_RELEASE 65536
29
30
31#define AA_NORMAL_MASK 1 /*masks for attributes */
32#define AA_DIM_MASK 2
33#define AA_BOLD_MASK 4
34#define AA_BOLDFONT_MASK 8
35#define AA_REVERSE_MASK 16
36#define AA_ALL 128
37#define AA_EIGHT 256
38#define AA_EXTENDED (AA_ALL|AA_EIGHT)
39
40#define AA_NORMAL 0 /*attribute numbers */
41#define AA_DIM 1
42#define AA_BOLD 2
43#define AA_BOLDFONT 3
44#define AA_REVERSE 4
45#define AA_SPECIAL 5
46
47#define AA_ERRORDISTRIB 1 /*dithering types + AA_NONE */
48#define AA_FLOYD_S 2
49#define AA_DITHERTYPES 3
50
51#define AA_BUTTON1 1 /*mouse */
52#define AA_BUTTON2 2
53#define AA_BUTTON3 4
54#define AA_MOUSEMOVEMASK 1
55#define AA_MOUSEPRESSMASK 2
56#define AA_PRESSEDMOVEMASK 4
57#define AA_MOUSEALLMASK 7
58#define AA_HIDECURSOR 8
59
60#define AA_SENDRELEASE 1
61#define AA_KBDALLMASK 1
62
63#define AA_USE_PAGES 1 /*save format flags */
64#define AA_NORMAL_SPACES 8
65
66
68 struct aa_font *font;
69 int supported;
70 int minwidth, minheight;
71 int maxwidth, maxheight;
72 int recwidth, recheight;
73 int mmwidth, mmheight;
74 int width, height;
75 double dimmul, boldmul;
76};
77
78struct aa_context {
79 struct aa_driver *driver;
80 struct aa_kbddriver *kbddriver;
81 struct aa_mousedriver *mousedriver;
82 struct aa_hardware_params params,driverparams;
83 int mulx, muly;
84 int imgwidth, imgheight;
85 unsigned char *imagebuffer;
86 unsigned char *textbuffer;
87 unsigned char *attrbuffer;
88 unsigned short *table;
89 unsigned short *filltable;
90 struct parameters *parameters;
91 int cursorx, cursory, cursorstate;
92 int mousex, mousey, buttons,mousemode;
93 void (*resizehandler) (struct aa_context *);
94 void *driverdata;
95 void *kbddriverdata;
96 void *mousedriverdata;
97};
98
99struct aa_driver {
100 char *shortname, *name;
101 int (*init) (struct aa_hardware_params *, void *, struct aa_hardware_params *,void **);
102 void (*uninit) (struct aa_context *);
103 void (*getsize) (struct aa_context *, int *, int *);
104 void (*setattr) (struct aa_context *, int);
105 void (*print) (struct aa_context *, char *);
106 void (*gotoxy) (struct aa_context *, int, int);
107 void (*flush) (struct aa_context *);
108 void (*cursormode) (struct aa_context *, int);
109};
110
112 char *shortname, *name;
113 int flags;
114 int (*init) (struct aa_context *, int mode);
115 void (*uninit) (struct aa_context *);
116 int (*getkey) (struct aa_context *, int);
117};
118
120 char *shortname, *name;
121 int flags;
122 int (*init) (struct aa_context *, int mode);
123 void (*uninit) (struct aa_context *);
124 void (*getmouse) (struct aa_context *, int *, int *, int *);
125 void (*cursormode) (struct aa_context *,int);
126};
127
129 int bright, contrast;
130 float gamma;
131 int dither;
132 int inversion;
133 int randomval;
134};
135
136struct aa_edit {
137 int maxsize;
138 char *data;
139 int cursor;
140 int clearafterpress;
141 int printpos;
142 int x, y, size;
143 struct aa_context *c;
144};
145
147 unsigned int p[AA_NPARAMS];
148};
149
150struct aa_font {
151 unsigned char *data;
152 int height;
153 char *name;
154 char *shortname;
155};
156
157struct aa_format {
158 int width, height;
159 int pagewidth, pageheight;
160 int flags;
161 int supported;
162 struct aa_font *font;
163 char *formatname;
164 char *extension;
165 /*fields after this line may change in future versions*/
166 char *head;
167 char *end;
168 char *newline;
169 char *prints[AA_NATTRS];
170 char *begin[AA_NATTRS];
171 char *ends[AA_NATTRS];
172 char **conversions;
173};
174
176 char *name;
177 struct aa_format *format;
178 FILE *file; /*You might specify filename by this way too, in case name is NULL*/
179};
180
182 char *text;
183 struct aa_linkedlist *next, *previous;
184};
185
186typedef struct aa_context aa_context;
187typedef struct aa_linkedlist aa_linkedlist;
188typedef struct aa_linkedlist aa_reclist;
189typedef struct aa_renderparams aa_renderparams;
190typedef struct aa_hardwareparams aa_hardware_params;
191typedef struct aa_driver aa_driver;
192typedef struct aa_font aa_font;
193typedef struct aa_format aa_format;
194typedef struct aa_savedata aa_savedata;
195typedef int aa_palette[256];
196
197extern struct aa_driver save_d, mem_d;
198extern char *aa_help;
199extern struct aa_format aa_htmlk_format, *aa_formats[];
200extern struct aa_format aa_nhtml_format, aa_html_format, aa_html_alt_format,
201 aa_ansi_format, aa_text_format, aa_more_format, aa_hp_format,
202 aa_hp2_format, aa_irc_format, aa_zephyr_format;
203extern struct aa_font *aa_fonts[];
204extern int nfonts;
205extern struct aa_font aa_font8, aa_font14, aa_font16, aa_font9, aa_fontline, aa_fontgl,
206 aa_fontX13, aa_fontX16, aa_fontX13B, aa_fontcourier, aa_fontvyhen;
207extern char *aa_dithernames[];
208extern struct aa_hardware_params aa_defparams;
209extern struct aa_renderparams aa_defrenderparams;
210extern struct aa_driver *aa_drivers[], curses_d, dos_d, linux_d, slang_d,
211 stdout_d, stderr_d, X11_d, os2vio_d;
212extern struct aa_kbddriver *aa_kbddrivers[], kbd_curses_d, kbd_slang_d,
213 kbd_stdin_d, kbd_dos_d, kbd_X11_d, kbd_os2_d;
214extern struct aa_mousedriver *aa_mousedrivers[], mouse_curses_d, mouse_gpm_d,
215 mouse_X11_d, mouse_dos_d, mouse_os2_d;
216extern aa_linkedlist *aa_kbdrecommended, *aa_mouserecommended, *aa_displayrecommended;
217
218
219#define aa_callnonull(c,x) ((x)!=NULL?((x)(c)):0)
220#define aa_scrwidth(a) ((a)->params.width)
221#define aa_scrheight(a) ((a)->params.height)
222#define aa_mmwidth(a) ((a)->params.mmwidth)
223#define aa_mmheight(a) ((a)->params.mmheight)
224#define aa_imgwidth(a) ((a)->imgwidth)
225#define aa_imgheight(a) ((a)->imgheight)
226#define aa_putpixel(c,x,y,color) ((c)->imagebuffer[(x)+(y)*(aa_imgwidth(c))]=(color))
227#define aa_image(c) ((c)->imagebuffer)
228#define aa_text(c) ((c)->textbuffer)
229#define aa_attrs(c) ((c)->attrbuffer)
230#define aa_setpalette(palette,index,r,g,b) ((palette)[index]=(((r)*30+(g)*59+(b)*11)>>8))
231#define aa_recommendhikbd(t) aa_recommendhi(&aa_kbdrecommended,t);
232#define aa_recommendhimouse(t) aa_recommendhi(&aa_mouserecommended,t);
233#define aa_recommendhidisplay(t) aa_recommendhi(&aa_displayrecommended,t);
234#define aa_recommendlowkbd(t) aa_recommendlow(&aa_kbdrecommended,t);
235#define aa_recommendlowmouse(t) aa_recommendlow(&aa_mouserecommended,t);
236#define aa_recommendlowdisplay(t) aa_recommendlow(&aa_displayrecommended,t);
237
238/*automatical init functions */
239aa_context *aa_autoinit(struct aa_hardware_params *params);
240int aa_autoinitkbd(struct aa_context *context, int mode);
241int aa_autoinitmouse(struct aa_context *c, int mode);
242void aa_recommendhi(aa_linkedlist ** l, char *name);
243void aa_recommendlow(aa_linkedlist ** l, char *name);
244char *aa_getfirst(aa_linkedlist ** l);
245
246/*init functions */
247aa_context *aa_init(struct aa_driver *driver, struct aa_hardware_params *defparams, void *driverdata);
248int aa_initkbd(struct aa_context *context, struct aa_kbddriver *drv, int mode);
249int aa_initmouse(struct aa_context *c, struct aa_mousedriver *d, int mode);
250
251/*uninicializing functions */
252void aa_close(aa_context * c);
253void aa_uninitkbd(struct aa_context *context);
254void aa_uninitmouse(struct aa_context *context);
255
256/*rendering functions */
257void aa_fastrender(aa_context * c, int x1, int y1, int x2, int y2);
258void aa_render(aa_context * c, aa_renderparams * p, int x1, int y1, int x2, int y2);
259void aa_renderpalette(aa_context * c, aa_palette table, aa_renderparams * p, int x1, int y1, int x2, int y2);
260aa_renderparams *aa_getrenderparams(void);
261void aa_flush(aa_context * c);
262
263/*text i/o functions */
264void aa_puts(aa_context * c, int x, int y, int attr, char *s);
265int aa_printf(aa_context *c, int x, int y, int attr, char *fmt, ...);
266void aa_gotoxy(aa_context * c, int x, int y);
267void aa_hidecursor(aa_context * c);
268void aa_showcursor(aa_context * c);
269void aa_getmouse(aa_context * c, int *x, int *y, int *b);
270void aa_hidemouse(aa_context *c);
271void aa_showmouse(aa_context *c);
272
273/*hardware parameters control */
274int aa_registerfont(struct aa_font *f);
275void aa_setsupported(aa_context * c, int supported);
276void aa_setfont(aa_context * c, struct aa_font *font);
277
278/*keyboard functions */
279int aa_getevent(aa_context * c, int wait);
280int aa_getkey(aa_context * c, int wait);
281
282/*resize functions */
283int aa_resize(aa_context * c);
284void aa_resizehandler(aa_context * c, void (*handler) (aa_context *));
285
286/*utility */
287int aa_parseoptions(struct aa_hardware_params *p, aa_renderparams * r, int *argc, char **argv);
288void aa_edit(aa_context * c, int x, int y, int size, char *s, int maxsize);
289struct aa_edit *aa_createedit(aa_context * c, int x, int y, int size, char *s, int maxsize);
290void aa_editkey(struct aa_edit *e, int c);
291
292#ifdef __cplusplus
293}
294#endif
295#endif