README: mention SDL2 backend
[rofl0r-concol.git] / console.h
blob0ac7b31ba91e326be2ae795afce577788a5cd0c7
1 #ifndef CONSOLE_H
2 #define CONSOLE_H
4 #include "console_sel.h"
6 #pragma RcB2 DEP "console.c"
8 #include "point.h"
9 #include "rect.h"
10 #include "console_events.h"
11 #include "console_chars.h"
13 #include "sdlconsole.h"
14 #include "tbconsole.h"
15 #include "ncconsole.h"
16 #include "nopconsole.h"
18 #include "fonts/font.h"
20 extern unsigned int console_chartab[CC_MAX];
21 #define CCT(charname) (console_chartab[charname])
23 #include "fonts/allfonts.h"
25 enum ConsoleBackend {
26 cb_sdl = 0,
27 cb_ncurses,
28 cb_termbox,
29 cb_nop,
32 typedef struct Console {
33 enum ConsoleBackend backendtype;
34 point cursor;
35 point dim; //dimensions
36 mouse_event mouse;
37 int automove:1; // flag which affects putchar and printf (cursor will be advanced)
38 int isblinking:1;
39 union {
40 TbConsole tb;
41 SDLConsole sdl;
42 NcConsole nc;
43 NopConsole nop;
44 } backend;
45 } Console;
47 #include "rgb.h"
49 /* initialize a Console struct and set backend type. does not initialize
50 graphics mode yet so console_getbackendtype() can be queried before the
51 terminal goes into some weird mode. */
52 void console_init(struct Console* self);
54 /* must be called after console_init() - initializes the graphics mode.
55 in case the backend is a terminal, the terminal will be put into
56 a "painters mode", and the resolution and font arguments ignored. */
57 void console_init_graphics(Console* self, point resolution, font* fnt);
59 /* cleanup restores the original term behaviour and releases acquired resources. */
60 void console_cleanup(struct Console* self);
61 int console_getcolorcount(Console *self);
63 int console_setcolor(struct Console* self, int is_fg, rgb_t mycolor);
64 int console_setcolors(struct Console* self, rgb_t bgcolor, rgb_t fgcolor);
65 void console_initoutput(struct Console* self);
66 /* get width and height of the console display (in characters) */
67 void console_getbounds(struct Console* self, int* width, int* height);
68 void console_getcursor(struct Console* self, int* x, int* y);
69 void console_goto(struct Console* self, int x, int y);
70 /* prints a char and NOT advances cursor */
71 void console_addchar(struct Console* self, int c, unsigned int attributes);
72 /* prints a char and advances cursor */
73 void console_printchar(struct Console* self, int c, unsigned int attributes);
75 /* prints a char and updates (redraws) the screen when doupdate is 1. advances cursor if automove is set. */
76 void console_putchar(Console* self, int ch, int doupdate);
78 //void console_printfxy (struct Console* con, int x, int y, const char* fmt, ...);
80 #define console_printfxy(con, x, y, ...) do { console_goto(con, x, y); console_printf(con, __VA_ARGS__); } while (0)
82 void console_printf (struct Console* con, const char* fmt, ...);
83 /* blocking */
84 int console_getkey(struct Console* self);
85 /* non-blocking */
86 int console_getkey_nb(struct Console* self);
87 void console_sleep(struct Console* self, int ms);
89 #define console_draw(C) console_refresh(C)
90 void console_refresh(struct Console* self);
91 void console_clear(struct Console* self);
93 void console_lock(void);
94 void console_unlock(void);
95 void console_blink_cursor(struct Console* self);
97 // generic
98 void console_fill(Console *c, rect* area, int ch);
99 mouse_event console_getmouse(Console* c);
100 void console_advance_cursor(Console* c, int steps);
101 void console_setautomove(Console* c, int automove);
102 void console_linebreak(Console* c);
103 void console_cursor_up(Console* c);
104 void console_cursor_down(Console* c);
105 void console_cursor_left(Console* c);
106 void console_cursor_right(Console* c);
107 void console_unblink(Console* c);
108 enum ConsoleBackend console_getbackendtype(Console *c);
110 /* sdl-specific, only implemented in SDL backend. */
111 void console_toggle_fullscreen(Console *c);
112 void console_settitle(Console *c, const char *title);
115 TODO :
117 rgb_tuple sdlconsole_getcolors(sdlconsole* c);
118 void sdlconsole_putchar(sdlconsole* c, int ch, int doupdate);
119 int sdlconsole_getchar(sdlconsole* c);
120 void sdlconsole_cursor_up(sdlconsole* c);
121 void sdlconsole_cursor_down(sdlconsole* c);
122 void sdlconsole_cursor_left(sdlconsole* c);
123 void sdlconsole_cursor_right(sdlconsole* c);
125 OK void sdlconsole_cleanup(sdlconsole* c);
126 OK void sdlconsole_goto(sdlconsole* c, int x, int y);
127 OK void sdlconsole_setcolor(sdlconsole* c, int is_fg, sdl_rgb_t color);
128 OK void sdlconsole_setcolors(sdlconsole* c, sdl_rgb_t bgcolor, sdl_rgb_t fgcolor);
129 OK void sdlconsole_getcursor(sdlconsole* c, int* x, int* y);
130 OK void sdlconsole_getbounds(sdlconsole* c, int* x, int* y);
131 OK void sdlconsole_printf(sdlconsole* c, const char* fmt, ...);
133 EVAL:
135 void sdlconsole_draw(sdlconsole* c);
136 void sdlconsole_blink_cursor(sdlconsole* c);
137 void sdlconsole_unblink(sdlconsole* c);
138 void sdlconsole_scrollup(sdlconsole* c);
139 void sdlconsole_linebreak(sdlconsole* c);
140 void sdlconsole_advance_cursor(sdlconsole* c, int steps);
141 void sdlconsole_toggle_fullscreen(sdlconsole* c);
143 void sdlconsole_resize(sdlconsole *c, int w, int h);
144 void sdlconsole_setautomove(sdlconsole* c, int automove);
145 mouse_event sdlconsole_getmouse(sdlconsole* c);
146 void sdlconsole_fill(sdlconsole *c, rect* area, int ch);
147 int sdlconsole_translate_event(sdlconsole* c, SDL_Event* ev);
148 void sdlconsole_lock(void);
149 void sdlconsole_unlock(void); */
152 #endif