source: libcaca/trunk/caca/caca.h @ 3603

Last change on this file since 3603 was 3603, checked in by Sam Hocevar, 10 years ago

Move conio functions to the main caca.h header, with their caca_conio_
prefix. The #defines remain in caca_conio.h.

  • Property svn:keywords set to Id
File size: 36.5 KB
Line 
1/*
2 *  libcaca       Colour ASCII-Art library
3 *  Copyright (c) 2002-2009 Sam Hocevar <sam@hocevar.net>
4 *                All Rights Reserved
5 *
6 *  $Id: caca.h 3603 2009-08-02 11:09:16Z sam $
7 *
8 *  This library is free software. It comes without any warranty, to
9 *  the extent permitted by applicable law. You can redistribute it
10 *  and/or modify it under the terms of the Do What The Fuck You Want
11 *  To Public License, Version 2, as published by Sam Hocevar. See
12 *  http://sam.zoy.org/wtfpl/COPYING for more details.
13 */
14
15/** \file caca.h
16 *  \version \$Id: caca.h 3603 2009-08-02 11:09:16Z sam $
17 *  \author Sam Hocevar <sam@hocevar.net>
18 *  \brief The \e libcaca public header.
19 *
20 *  This header contains the public types and functions that applications
21 *  using \e libcaca may use.
22 */
23
24#ifndef __CACA_H__
25#define __CACA_H__
26
27#include <caca_types.h>
28
29#if !defined(__KERNEL__)
30#   include <stdarg.h>
31#   include <stdio.h>
32#endif
33
34#undef __extern
35#if defined(_DOXYGEN_SKIP_ME)
36#elif defined(_WIN32) && defined(__LIBCACA__)
37#   define __extern extern __declspec(dllexport)
38#else
39#   define __extern extern
40#endif
41
42/** libcaca API version */
43#define CACA_API_VERSION_1
44
45#ifdef __cplusplus
46extern "C"
47{
48#endif
49
50/** \e libcaca canvas */
51typedef struct caca_canvas caca_canvas_t;
52/** dither structure */
53typedef struct caca_dither caca_dither_t;
54/** font structure */
55typedef struct caca_font caca_font_t;
56/** file handle structure */
57typedef struct caca_file caca_file_t;
58/** \e libcaca display context */
59typedef struct caca_display caca_display_t;
60/** \e libcaca event structure */
61typedef struct caca_event caca_event_t;
62
63/** \defgroup caca_attr libcaca attribute definitions
64 *
65 *  Colours and styles that can be used with caca_set_attr().
66 *
67 *  @{ */
68#define CACA_BLACK 0x00 /**< The colour index for black. */
69#define CACA_BLUE 0x01 /**< The colour index for blue. */
70#define CACA_GREEN 0x02 /**< The colour index for green. */
71#define CACA_CYAN 0x03 /**< The colour index for cyan. */
72#define CACA_RED 0x04 /**< The colour index for red. */
73#define CACA_MAGENTA 0x05 /**< The colour index for magenta. */
74#define CACA_BROWN 0x06 /**< The colour index for brown. */
75#define CACA_LIGHTGRAY 0x07 /**< The colour index for light gray. */
76#define CACA_DARKGRAY 0x08 /**< The colour index for dark gray. */
77#define CACA_LIGHTBLUE 0x09 /**< The colour index for blue. */
78#define CACA_LIGHTGREEN 0x0a /**< The colour index for light green. */
79#define CACA_LIGHTCYAN 0x0b /**< The colour index for light cyan. */
80#define CACA_LIGHTRED 0x0c /**< The colour index for light red. */
81#define CACA_LIGHTMAGENTA 0x0d /**< The colour index for light magenta. */
82#define CACA_YELLOW 0x0e /**< The colour index for yellow. */
83#define CACA_WHITE 0x0f /**< The colour index for white. */
84#define CACA_DEFAULT 0x10 /**< The output driver's default colour. */
85#define CACA_TRANSPARENT 0x20 /**< The transparent colour. */
86
87#define CACA_BOLD 0x01 /**< The style mask for bold. */
88#define CACA_ITALICS 0x02 /**< The style mask for italics. */
89#define CACA_UNDERLINE 0x04 /**< The style mask for underline. */
90#define CACA_BLINK 0x08 /**< The style mask for blink. */
91/*  @} */
92
93/** \brief User event type enumeration.
94 *
95 *  This enum serves two purposes:
96 *  - Build listening masks for caca_get_event().
97 *  - Define the type of a \e caca_event_t.
98 */
99enum caca_event_type
100{
101    CACA_EVENT_NONE =          0x0000, /**< No event. */
102
103    CACA_EVENT_KEY_PRESS =     0x0001, /**< A key was pressed. */
104    CACA_EVENT_KEY_RELEASE =   0x0002, /**< A key was released. */
105    CACA_EVENT_MOUSE_PRESS =   0x0004, /**< A mouse button was pressed. */
106    CACA_EVENT_MOUSE_RELEASE = 0x0008, /**< A mouse button was released. */
107    CACA_EVENT_MOUSE_MOTION =  0x0010, /**< The mouse was moved. */
108    CACA_EVENT_RESIZE =        0x0020, /**< The window was resized. */
109    CACA_EVENT_QUIT =          0x0040, /**< The user requested to quit. */
110
111    CACA_EVENT_ANY =           0xffff  /**< Bitmask for any event. */
112};
113
114/** \brief Handling of user events.
115 *
116 *  This structure is filled by caca_get_event() when an event is received.
117 *  It is an opaque structure that should only be accessed through
118 *  caca_event_get_type() and similar functions. The struct members may no
119 *  longer be directly accessible in future versions.
120 */
121struct caca_event
122{
123    enum caca_event_type type;
124    union
125    {
126        struct { int x, y, button; } mouse;
127        struct { int w, h; } resize;
128        struct { int ch; uint32_t utf32; char utf8[8]; } key;
129    } data;
130    uint8_t padding[16];
131};
132
133/** \brief Special key values.
134 *
135 *  Special key values returned by caca_get_event() for which there is no
136 *  printable ASCII equivalent.
137 */
138enum caca_key
139{
140    CACA_KEY_UNKNOWN = 0x00, /**< Unknown key. */
141
142    /* The following keys have ASCII equivalents */
143    CACA_KEY_CTRL_A =    0x01, /**< The Ctrl-A key. */
144    CACA_KEY_CTRL_B =    0x02, /**< The Ctrl-B key. */
145    CACA_KEY_CTRL_C =    0x03, /**< The Ctrl-C key. */
146    CACA_KEY_CTRL_D =    0x04, /**< The Ctrl-D key. */
147    CACA_KEY_CTRL_E =    0x05, /**< The Ctrl-E key. */
148    CACA_KEY_CTRL_F =    0x06, /**< The Ctrl-F key. */
149    CACA_KEY_CTRL_G =    0x07, /**< The Ctrl-G key. */
150    CACA_KEY_BACKSPACE = 0x08, /**< The backspace key. */
151    CACA_KEY_TAB =       0x09, /**< The tabulation key. */
152    CACA_KEY_CTRL_J =    0x0a, /**< The Ctrl-J key. */
153    CACA_KEY_CTRL_K =    0x0b, /**< The Ctrl-K key. */
154    CACA_KEY_CTRL_L =    0x0c, /**< The Ctrl-L key. */
155    CACA_KEY_RETURN =    0x0d, /**< The return key. */
156    CACA_KEY_CTRL_N =    0x0e, /**< The Ctrl-N key. */
157    CACA_KEY_CTRL_O =    0x0f, /**< The Ctrl-O key. */
158    CACA_KEY_CTRL_P =    0x10, /**< The Ctrl-P key. */
159    CACA_KEY_CTRL_Q =    0x11, /**< The Ctrl-Q key. */
160    CACA_KEY_CTRL_R =    0x12, /**< The Ctrl-R key. */
161    CACA_KEY_PAUSE =     0x13, /**< The pause key. */
162    CACA_KEY_CTRL_T =    0x14, /**< The Ctrl-T key. */
163    CACA_KEY_CTRL_U =    0x15, /**< The Ctrl-U key. */
164    CACA_KEY_CTRL_V =    0x16, /**< The Ctrl-V key. */
165    CACA_KEY_CTRL_W =    0x17, /**< The Ctrl-W key. */
166    CACA_KEY_CTRL_X =    0x18, /**< The Ctrl-X key. */
167    CACA_KEY_CTRL_Y =    0x19, /**< The Ctrl-Y key. */
168    CACA_KEY_CTRL_Z =    0x1a, /**< The Ctrl-Z key. */
169    CACA_KEY_ESCAPE =    0x1b, /**< The escape key. */
170    CACA_KEY_DELETE =    0x7f, /**< The delete key. */
171
172    /* The following keys do not have ASCII equivalents but have been
173     * chosen to match the SDL equivalents */
174    CACA_KEY_UP =    0x111, /**< The up arrow key. */
175    CACA_KEY_DOWN =  0x112, /**< The down arrow key. */
176    CACA_KEY_LEFT =  0x113, /**< The left arrow key. */
177    CACA_KEY_RIGHT = 0x114, /**< The right arrow key. */
178
179    CACA_KEY_INSERT =   0x115, /**< The insert key. */
180    CACA_KEY_HOME =     0x116, /**< The home key. */
181    CACA_KEY_END =      0x117, /**< The end key. */
182    CACA_KEY_PAGEUP =   0x118, /**< The page up key. */
183    CACA_KEY_PAGEDOWN = 0x119, /**< The page down key. */
184
185    CACA_KEY_F1 =  0x11a, /**< The F1 key. */
186    CACA_KEY_F2 =  0x11b, /**< The F2 key. */
187    CACA_KEY_F3 =  0x11c, /**< The F3 key. */
188    CACA_KEY_F4 =  0x11d, /**< The F4 key. */
189    CACA_KEY_F5 =  0x11e, /**< The F5 key. */
190    CACA_KEY_F6 =  0x11f, /**< The F6 key. */
191    CACA_KEY_F7 =  0x120, /**< The F7 key. */
192    CACA_KEY_F8 =  0x121, /**< The F8 key. */
193    CACA_KEY_F9 =  0x122, /**< The F9 key. */
194    CACA_KEY_F10 = 0x123, /**< The F10 key. */
195    CACA_KEY_F11 = 0x124, /**< The F11 key. */
196    CACA_KEY_F12 = 0x125, /**< The F12 key. */
197    CACA_KEY_F13 = 0x126, /**< The F13 key. */
198    CACA_KEY_F14 = 0x127, /**< The F14 key. */
199    CACA_KEY_F15 = 0x128  /**< The F15 key. */
200};
201
202/** \defgroup libcaca libcaca basic functions
203 *
204 *  These functions provide the basic \e libcaca routines for library
205 *  initialisation, system information retrieval and configuration.
206 *
207 *  @{ */
208__extern caca_canvas_t * caca_create_canvas(int, int);
209__extern int caca_manage_canvas(caca_canvas_t *, int (*)(void *), void *);
210__extern int caca_unmanage_canvas(caca_canvas_t *, int (*)(void *), void *);
211__extern int caca_set_canvas_size(caca_canvas_t *, int, int);
212__extern int caca_get_canvas_width(caca_canvas_t const *);
213__extern int caca_get_canvas_height(caca_canvas_t const *);
214__extern uint8_t const * caca_get_canvas_chars(caca_canvas_t const *);
215__extern uint8_t const * caca_get_canvas_attrs(caca_canvas_t const *);
216__extern int caca_free_canvas(caca_canvas_t *);
217__extern int caca_rand(int, int);
218__extern char const * caca_get_version(void);
219/*  @} */
220
221/** \defgroup caca_canvas libcaca canvas drawing
222 *
223 *  These functions provide low-level character printing routines and
224 *  higher level graphics functions.
225 *
226 *  @{ */
227#define CACA_MAGIC_FULLWIDTH 0x000ffffe /**< Used to indicate that the previous character was a fullwidth glyph. */
228__extern int caca_gotoxy(caca_canvas_t *, int, int);
229__extern int caca_wherex(caca_canvas_t const *);
230__extern int caca_wherey(caca_canvas_t const *);
231__extern int caca_put_char(caca_canvas_t *, int, int, uint32_t);
232__extern uint32_t caca_get_char(caca_canvas_t const *, int, int);
233__extern int caca_put_str(caca_canvas_t *, int, int, char const *);
234__extern int caca_printf(caca_canvas_t *, int, int, char const *, ...);
235__extern int caca_vprintf(caca_canvas_t *, int, int, char const *, va_list);
236__extern int caca_clear_canvas(caca_canvas_t *);
237__extern int caca_set_canvas_handle(caca_canvas_t *, int, int);
238__extern int caca_get_canvas_handle_x(caca_canvas_t const *);
239__extern int caca_get_canvas_handle_y(caca_canvas_t const *);
240__extern int caca_blit(caca_canvas_t *, int, int, caca_canvas_t const *,
241                       caca_canvas_t const *);
242__extern int caca_set_canvas_boundaries(caca_canvas_t *, int, int, int, int);
243/*  @} */
244
245/** \defgroup caca_dirty libcaca dirty rectangle manipulation
246 *
247 *  These functions manipulate dirty rectangles for optimised blitting.
248 *  @{ */
249__extern int caca_disable_dirty_rect(caca_canvas_t *);
250__extern int caca_enable_dirty_rect(caca_canvas_t *);
251__extern int caca_get_dirty_rect_count(caca_canvas_t *);
252__extern int caca_get_dirty_rect(caca_canvas_t *, int, int *, int *,
253                                 int *, int *);
254__extern int caca_add_dirty_rect(caca_canvas_t *, int, int, int, int);
255__extern int caca_remove_dirty_rect(caca_canvas_t *, int, int, int, int);
256__extern int caca_clear_dirty_rect_list(caca_canvas_t *);
257/*  @} */
258
259/** \defgroup caca_transform libcaca canvas transformation
260 *
261 *  These functions perform horizontal and vertical canvas flipping.
262 *
263 *  @{ */
264__extern int caca_invert(caca_canvas_t *);
265__extern int caca_flip(caca_canvas_t *);
266__extern int caca_flop(caca_canvas_t *);
267__extern int caca_rotate_180(caca_canvas_t *);
268__extern int caca_rotate_left(caca_canvas_t *);
269__extern int caca_rotate_right(caca_canvas_t *);
270__extern int caca_stretch_left(caca_canvas_t *);
271__extern int caca_stretch_right(caca_canvas_t *);
272/*  @} */
273
274/** \defgroup caca_attributes libcaca attribute conversions
275 *
276 *  These functions perform conversions between attribute values.
277 *
278 *  @{ */
279__extern uint32_t caca_get_attr(caca_canvas_t const *, int, int);
280__extern int caca_set_attr(caca_canvas_t *, uint32_t);
281__extern int caca_put_attr(caca_canvas_t *, int, int, uint32_t);
282__extern int caca_set_color_ansi(caca_canvas_t *, uint8_t, uint8_t);
283__extern int caca_set_color_argb(caca_canvas_t *, uint16_t, uint16_t);
284__extern uint8_t caca_attr_to_ansi(uint32_t);
285__extern uint8_t caca_attr_to_ansi_fg(uint32_t);
286__extern uint8_t caca_attr_to_ansi_bg(uint32_t);
287__extern uint16_t caca_attr_to_rgb12_fg(uint32_t);
288__extern uint16_t caca_attr_to_rgb12_bg(uint32_t);
289__extern void caca_attr_to_argb64(uint32_t, uint8_t[8]);
290/*  @} */
291
292/** \defgroup caca_charset libcaca character set conversions
293 *
294 *  These functions perform conversions between usual character sets.
295 *
296 *  @{ */
297__extern uint32_t caca_utf8_to_utf32(char const *, size_t *);
298__extern size_t caca_utf32_to_utf8(char *, uint32_t);
299__extern uint8_t caca_utf32_to_cp437(uint32_t);
300__extern uint32_t caca_cp437_to_utf32(uint8_t);
301__extern char caca_utf32_to_ascii(uint32_t);
302__extern int caca_utf32_is_fullwidth(uint32_t);
303/*  @} */
304
305/** \defgroup caca_primitives libcaca primitives drawing
306 *
307 *  These functions provide routines for primitive drawing, such as lines,
308 *  boxes, triangles and ellipses.
309 *
310 *  @{ */
311__extern int caca_draw_line(caca_canvas_t *, int, int, int, int, uint32_t);
312__extern int caca_draw_polyline(caca_canvas_t *, int const x[],
313                                 int const y[], int, uint32_t);
314__extern int caca_draw_thin_line(caca_canvas_t *, int, int, int, int);
315__extern int caca_draw_thin_polyline(caca_canvas_t *, int const x[],
316                                      int const y[], int);
317
318__extern int caca_draw_circle(caca_canvas_t *, int, int, int, uint32_t);
319__extern int caca_draw_ellipse(caca_canvas_t *, int, int, int, int, uint32_t);
320__extern int caca_draw_thin_ellipse(caca_canvas_t *, int, int, int, int);
321__extern int caca_fill_ellipse(caca_canvas_t *, int, int, int, int, uint32_t);
322
323__extern int caca_draw_box(caca_canvas_t *, int, int, int, int, uint32_t);
324__extern int caca_draw_thin_box(caca_canvas_t *, int, int, int, int);
325__extern int caca_draw_cp437_box(caca_canvas_t *, int, int, int, int);
326__extern int caca_fill_box(caca_canvas_t *, int, int, int, int, uint32_t);
327
328__extern int caca_draw_triangle(caca_canvas_t *, int, int, int, int, int,
329                                 int, uint32_t);
330__extern int caca_draw_thin_triangle(caca_canvas_t *, int, int, int, int,
331                                      int, int);
332__extern int caca_fill_triangle(caca_canvas_t *, int, int, int, int, int,
333                                 int, uint32_t);
334/*  @} */
335
336/** \defgroup caca_frame libcaca canvas frame handling
337 *
338 *  These functions provide high level routines for canvas frame insertion,
339 *  removal, copying etc.
340 *
341 *  @{ */
342__extern int caca_get_frame_count(caca_canvas_t const *);
343__extern int caca_set_frame(caca_canvas_t *, int);
344__extern char const *caca_get_frame_name(caca_canvas_t const *);
345__extern int caca_set_frame_name(caca_canvas_t *, char const *);
346__extern int caca_create_frame(caca_canvas_t *, int);
347__extern int caca_free_frame(caca_canvas_t *, int);
348/*  @} */
349
350/** \defgroup caca_dither libcaca bitmap dithering
351 *
352 *  These functions provide high level routines for dither allocation and
353 *  rendering.
354 *
355 *  @{ */
356__extern caca_dither_t *caca_create_dither(int, int, int, int,
357                                             uint32_t, uint32_t,
358                                             uint32_t, uint32_t);
359__extern int caca_set_dither_palette(caca_dither_t *,
360                                      uint32_t r[], uint32_t g[],
361                                      uint32_t b[], uint32_t a[]);
362__extern int caca_set_dither_brightness(caca_dither_t *, float);
363__extern float caca_get_dither_brightness(caca_dither_t const *);
364__extern int caca_set_dither_gamma(caca_dither_t *, float);
365__extern float caca_get_dither_gamma(caca_dither_t const *);
366__extern int caca_set_dither_contrast(caca_dither_t *, float);
367__extern float caca_get_dither_contrast(caca_dither_t const *);
368__extern int caca_set_dither_antialias(caca_dither_t *, char const *);
369__extern char const * const * caca_get_dither_antialias_list(caca_dither_t
370                                                              const *);
371__extern char const * caca_get_dither_antialias(caca_dither_t const *);
372__extern int caca_set_dither_color(caca_dither_t *, char const *);
373__extern char const * const * caca_get_dither_color_list(caca_dither_t
374                                                          const *);
375__extern char const * caca_get_dither_color(caca_dither_t const *);
376__extern int caca_set_dither_charset(caca_dither_t *, char const *);
377__extern char const * const * caca_get_dither_charset_list(caca_dither_t
378                                                            const *);
379__extern char const * caca_get_dither_charset(caca_dither_t const *);
380__extern int caca_set_dither_algorithm(caca_dither_t *, char const *);
381__extern char const * const * caca_get_dither_algorithm_list(caca_dither_t
382                                                              const *);
383__extern char const * caca_get_dither_algorithm(caca_dither_t const *);
384__extern int caca_dither_bitmap(caca_canvas_t *, int, int, int, int,
385                         caca_dither_t const *, void *);
386__extern int caca_free_dither(caca_dither_t *);
387/*  @} */
388
389/** \defgroup caca_font libcaca font handling
390 *
391 *  These functions provide font handling routines and high quality
392 *  canvas to bitmap rendering.
393 *
394 *  @{ */
395__extern caca_font_t *caca_load_font(void const *, size_t);
396__extern char const * const * caca_get_font_list(void);
397__extern int caca_get_font_width(caca_font_t const *);
398__extern int caca_get_font_height(caca_font_t const *);
399__extern uint32_t const *caca_get_font_blocks(caca_font_t const *);
400__extern int caca_render_canvas(caca_canvas_t const *, caca_font_t const *,
401                                 void *, int, int, int);
402__extern int caca_free_font(caca_font_t *);
403/*  @} */
404
405/** \defgroup caca_figfont libcaca FIGfont handling
406 *
407 *  These functions provide FIGlet and TOIlet font handling routines.
408 *
409 *  @{ */
410__extern int caca_canvas_set_figfont(caca_canvas_t *, char const *);
411__extern int caca_put_figchar(caca_canvas_t *, uint32_t);
412__extern int caca_flush_figlet(caca_canvas_t *);
413/*  @} */
414
415/** \defgroup caca_file libcaca file IO
416 *
417 *  These functions allow to read and write files in a platform-independent
418 *  way.
419 *  @{ */
420__extern caca_file_t *caca_file_open(char const *, const char *);
421__extern int caca_file_close(caca_file_t *);
422__extern uint64_t caca_file_tell(caca_file_t *);
423__extern size_t caca_file_read(caca_file_t *, void *, size_t);
424__extern size_t caca_file_write(caca_file_t *, const void *, size_t);
425__extern char * caca_file_gets(caca_file_t *, char *, int);
426__extern int caca_file_eof(caca_file_t *);
427/*  @} */
428
429/** \defgroup caca_importexport libcaca importers/exporters from/to various
430 *  formats
431 *
432 *  These functions import various file formats into a new canvas, or export
433 *  the current canvas to various text formats.
434 *
435 *  @{ */
436__extern ssize_t caca_import_canvas_from_memory(caca_canvas_t *, void const *,
437                                                size_t, char const *);
438__extern ssize_t caca_import_canvas_from_file(caca_canvas_t *, char const *,
439                                              char const *);
440__extern ssize_t caca_import_area_from_memory(caca_canvas_t *, int, int,
441                                              void const *, size_t,
442                                              char const *);
443__extern ssize_t caca_import_area_from_file(caca_canvas_t *, int, int,
444                                            char const *, char const *);
445__extern char const * const * caca_get_import_list(void);
446__extern void *caca_export_canvas_to_memory(caca_canvas_t const *,
447                                            char const *, size_t *);
448__extern void *caca_export_area_to_memory(caca_canvas_t const *, int, int,
449                                          int, int, char const *, size_t *);
450__extern char const * const * caca_get_export_list(void);
451/*  @} */
452
453/** \defgroup caca_display libcaca display functions
454 *
455 *  These functions provide the basic \e libcaca routines for display
456 *  initialisation, system information retrieval and configuration.
457 *
458 *  @{ */
459__extern caca_display_t * caca_create_display(caca_canvas_t *);
460__extern caca_display_t * caca_create_display_with_driver(caca_canvas_t *,
461                                                          char const *);
462__extern char const * const * caca_get_display_driver_list(void);
463__extern char const * caca_get_display_driver(caca_display_t *);
464__extern int caca_set_display_driver(caca_display_t *, char const *);
465__extern int caca_free_display(caca_display_t *);
466__extern caca_canvas_t * caca_get_canvas(caca_display_t *);
467__extern int caca_refresh_display(caca_display_t *);
468__extern int caca_set_display_time(caca_display_t *, int);
469__extern int caca_get_display_time(caca_display_t const *);
470__extern int caca_get_display_width(caca_display_t const *);
471__extern int caca_get_display_height(caca_display_t const *);
472__extern int caca_set_display_title(caca_display_t *, char const *);
473__extern int caca_set_mouse(caca_display_t *, int);
474__extern int caca_set_cursor(caca_display_t *, int);
475/*  @} */
476
477/** \defgroup caca_event libcaca event handling
478 *
479 *  These functions handle user events such as keyboard input and mouse
480 *  clicks.
481 *
482 *  @{ */
483__extern int caca_get_event(caca_display_t *, int, caca_event_t *, int);
484__extern int caca_get_mouse_x(caca_display_t const *);
485__extern int caca_get_mouse_y(caca_display_t const *);
486__extern enum caca_event_type caca_get_event_type(caca_event_t const *);
487__extern int caca_get_event_key_ch(caca_event_t const *);
488__extern uint32_t caca_get_event_key_utf32(caca_event_t const *);
489__extern int caca_get_event_key_utf8(caca_event_t const *, char *);
490__extern int caca_get_event_mouse_button(caca_event_t const *);
491__extern int caca_get_event_mouse_x(caca_event_t const *);
492__extern int caca_get_event_mouse_y(caca_event_t const *);
493__extern int caca_get_event_resize_width(caca_event_t const *);
494__extern int caca_get_event_resize_height(caca_event_t const *);
495/*  @} */
496
497/** \brief DOS colours
498 *
499 *  This enum lists the colour values for the DOS conio.h compatibility
500 *  layer.
501 */
502enum CACA_CONIO_COLORS
503{
504    CACA_CONIO_BLINK = 128,
505    CACA_CONIO_BLACK = 0,
506    CACA_CONIO_BLUE = 1,
507    CACA_CONIO_GREEN = 2,
508    CACA_CONIO_CYAN = 3,
509    CACA_CONIO_RED = 4,
510    CACA_CONIO_MAGENTA = 5,
511    CACA_CONIO_BROWN = 6,
512    CACA_CONIO_LIGHTGRAY = 7,
513    CACA_CONIO_DARKGRAY = 8,
514    CACA_CONIO_LIGHTBLUE = 9,
515    CACA_CONIO_LIGHTGREEN = 10,
516    CACA_CONIO_LIGHTCYAN = 11,
517    CACA_CONIO_LIGHTRED = 12,
518    CACA_CONIO_LIGHTMAGENTA = 13,
519    CACA_CONIO_YELLOW = 14,
520    CACA_CONIO_WHITE = 15,
521};
522
523/** \brief DOS cursor modes
524 *
525 *  This enum lists the cursor mode values for the DOS conio.h compatibility
526 *  layer.
527 */
528enum CACA_CONIO_CURSOR
529{
530    CACA_CONIO__NOCURSOR = 0,
531    CACA_CONIO__SOLIDCURSOR = 1,
532    CACA_CONIO__NORMALCURSOR = 2,
533};
534
535/** \brief DOS video modes
536 *
537 *  This enum lists the video mode values for the DOS conio.h compatibility
538 *  layer.
539 */
540enum CACA_CONIO_MODE
541{
542    CACA_CONIO_LASTMODE = -1,
543    CACA_CONIO_BW40 = 0,
544    CACA_CONIO_C40 = 1,
545    CACA_CONIO_BW80 = 2,
546    CACA_CONIO_C80 = 3,
547    CACA_CONIO_MONO = 7,
548    CACA_CONIO_C4350 = 64,
549};
550
551/** \brief DOS text area information
552 *
553 *  This structure stores text area information for the DOS conio.h
554 *  compatibility layer.
555 */
556struct caca_conio_text_info
557{
558    unsigned char winleft;        /* left window coordinate */
559    unsigned char wintop;         /* top window coordinate */
560    unsigned char winright;       /* right window coordinate */
561    unsigned char winbottom;      /* bottom window coordinate */
562    unsigned char attribute;      /* text attribute */
563    unsigned char normattr;       /* normal attribute */
564    unsigned char currmode;       /* current video mode:
565                                     BW40, BW80, C40, C80, or C4350 */
566    unsigned char screenheight;   /* text screen's height */
567    unsigned char screenwidth;    /* text screen's width */
568    unsigned char curx;           /* x-coordinate in current window */
569    unsigned char cury;           /* y-coordinate in current window */
570};
571
572/** \brief DOS direct video control */
573__extern int caca_conio_directvideo;
574
575/** \brief DOS scrolling control */
576__extern int caca_conio__wscroll;
577
578/** \defgroup conio libcaca DOS conio.h compatibility layer
579 *
580 *  These functions implement DOS-like functions for high-level text
581 *  operations.
582 *
583 *  @{ */
584__extern char * caca_conio_cgets(char *str);
585__extern void   caca_conio_clreol(void);
586__extern void   caca_conio_clrscr(void);
587__extern int    caca_conio_cprintf(const char *format, ...);
588__extern int    caca_conio_cputs(const char *str);
589__extern int    caca_conio_cscanf(char *format, ...);
590__extern void   caca_conio_delay(unsigned int);
591__extern void   caca_conio_delline(void);
592__extern int    caca_conio_getch(void);
593__extern int    caca_conio_getche(void);
594__extern char * caca_conio_getpass(const char *prompt);
595__extern int    caca_conio_gettext(int left, int top, int right, int bottom,
596                                   void *destin);
597__extern void   caca_conio_gettextinfo(struct caca_conio_text_info *r);
598__extern void   caca_conio_gotoxy(int x, int y);
599__extern void   caca_conio_highvideo(void);
600__extern void   caca_conio_insline(void);
601__extern int    caca_conio_kbhit(void);
602__extern void   caca_conio_lowvideo(void);
603__extern int    caca_conio_movetext(int left, int top, int right, int bottom,
604                                    int destleft, int desttop);
605__extern void   caca_conio_normvideo(void);
606__extern void   caca_conio_nosound(void);
607__extern int    caca_conio_printf(const char *format, ...);
608__extern int    caca_conio_putch(int ch);
609__extern int    caca_conio_puttext(int left, int top, int right, int bottom,
610                                   void *destin);
611__extern void   caca_conio__setcursortype(int cur_t);
612__extern void   caca_conio_sleep(unsigned int);
613__extern void   caca_conio_sound(unsigned int);
614__extern void   caca_conio_textattr(int newattr);
615__extern void   caca_conio_textbackground(int newcolor);
616__extern void   caca_conio_textcolor(int newcolor);
617__extern void   caca_conio_textmode(int newmode);
618__extern int    caca_conio_ungetch(int ch);
619__extern int    caca_conio_wherex(void);
620__extern int    caca_conio_wherey(void);
621__extern void   caca_conio_window(int left, int top, int right, int bottom);
622/*  @} */
623
624#if !defined(_DOXYGEN_SKIP_ME)
625    /* Legacy stuff from beta versions, will probably disappear in 1.0 */
626typedef struct cucul_buffer cucul_buffer_t;
627
628#   if defined __GNUC__ && __GNUC__ >= 3
629#       define CACA_DEPRECATED __attribute__ ((__deprecated__))
630#       define CACA_ALIAS(x) __attribute__ ((weak, alias(#x)))
631#   else
632#       define CACA_DEPRECATED
633#       define CACA_ALIAS(x)
634#   endif
635
636
637/* Aliases from old libcaca and libcucul functions */
638__extern int cucul_putchar(caca_canvas_t *, int, int,
639                           unsigned long int) CACA_DEPRECATED;
640__extern unsigned long int cucul_getchar(caca_canvas_t *,
641                                         int, int) CACA_DEPRECATED;
642__extern int cucul_putstr(caca_canvas_t *, int, int,
643                          char const *) CACA_DEPRECATED;
644__extern int cucul_set_color(caca_canvas_t *, unsigned char,
645                             unsigned char) CACA_DEPRECATED;
646__extern int cucul_set_truecolor(caca_canvas_t *, unsigned int,
647                                 unsigned int) CACA_DEPRECATED;
648__extern unsigned int cucul_get_canvas_frame_count(caca_canvas_t *)
649                                                   CACA_DEPRECATED;
650__extern int cucul_set_canvas_frame(caca_canvas_t *,
651                                    unsigned int) CACA_DEPRECATED;
652__extern int cucul_create_canvas_frame(caca_canvas_t *,
653                                       unsigned int) CACA_DEPRECATED;
654__extern int cucul_free_canvas_frame(caca_canvas_t *,
655                                     unsigned int) CACA_DEPRECATED;
656__extern cucul_buffer_t *cucul_load_memory(void *,
657                                           unsigned long int) CACA_DEPRECATED;
658__extern cucul_buffer_t *cucul_load_file(char const *) CACA_DEPRECATED;
659__extern unsigned long int cucul_get_buffer_size(cucul_buffer_t *)
660                                                 CACA_DEPRECATED;
661__extern void * cucul_get_buffer_data(cucul_buffer_t *) CACA_DEPRECATED;
662__extern int cucul_free_buffer(cucul_buffer_t *) CACA_DEPRECATED;
663__extern cucul_buffer_t * cucul_export_canvas(caca_canvas_t *,
664                                              char const *) CACA_DEPRECATED;
665__extern caca_canvas_t * cucul_import_canvas(cucul_buffer_t *,
666                                              char const *) CACA_DEPRECATED;
667__extern ssize_t caca_import_memory(caca_canvas_t *, void const *, size_t,
668                                    char const *) CACA_DEPRECATED;
669__extern ssize_t caca_import_file(caca_canvas_t *, char const *,
670                                  char const *) CACA_DEPRECATED;
671__extern void *caca_export_memory(caca_canvas_t const *, char const *,
672                                  size_t *) CACA_DEPRECATED;
673__extern int cucul_rotate(caca_canvas_t *) CACA_DEPRECATED;
674__extern int cucul_set_dither_invert(caca_dither_t *, int) CACA_DEPRECATED;
675__extern int cucul_set_dither_mode(caca_dither_t *,
676                                   char const *) CACA_DEPRECATED;
677__extern char const * const * cucul_get_dither_mode_list(caca_dither_t const *)
678                                                         CACA_DEPRECATED;
679#   define CUCUL_COLOR_BLACK CACA_BLACK
680#   define CUCUL_COLOR_BLUE CACA_BLUE
681#   define CUCUL_COLOR_GREEN CACA_GREEN
682#   define CUCUL_COLOR_CYAN CACA_CYAN
683#   define CUCUL_COLOR_RED CACA_RED
684#   define CUCUL_COLOR_MAGENTA CACA_MAGENTA
685#   define CUCUL_COLOR_BROWN CACA_BROWN
686#   define CUCUL_COLOR_LIGHTGRAY CACA_LIGHTGRAY
687#   define CUCUL_COLOR_DARKGRAY CACA_DARKGRAY
688#   define CUCUL_COLOR_LIGHTBLUE CACA_LIGHTBLUE
689#   define CUCUL_COLOR_LIGHTGREEN CACA_LIGHTGREEN
690#   define CUCUL_COLOR_LIGHTCYAN CACA_LIGHTCYAN
691#   define CUCUL_COLOR_LIGHTRED CACA_LIGHTRED
692#   define CUCUL_COLOR_LIGHTMAGENTA CACA_LIGHTMAGENTA
693#   define CUCUL_COLOR_YELLOW CACA_YELLOW
694#   define CUCUL_COLOR_WHITE CACA_YELLOW
695#   define CUCUL_COLOR_DEFAULT CACA_DEFAULT
696#   define CUCUL_COLOR_TRANSPARENT CACA_TRANSPARENT
697
698/* Aliases from the libcucul/libcaca merge */
699#   define cucul_canvas_t caca_canvas_t
700#   define cucul_dither_t caca_dither_t
701#   define cucul_font_t caca_font_t
702#   define cucul_file_t caca_file_t
703#   define cucul_display_t caca_display_t
704#   define cucul_event_t caca_event_t
705
706#   define CUCUL_BLACK CACA_BLACK
707#   define CUCUL_BLUE CACA_BLUE
708#   define CUCUL_GREEN CACA_GREEN
709#   define CUCUL_CYAN CACA_CYAN
710#   define CUCUL_RED CACA_RED
711#   define CUCUL_MAGENTA CACA_MAGENTA
712#   define CUCUL_BROWN CACA_BROWN
713#   define CUCUL_LIGHTGRAY CACA_LIGHTGRAY
714#   define CUCUL_DARKGRAY CACA_DARKGRAY
715#   define CUCUL_LIGHTBLUE CACA_LIGHTBLUE
716#   define CUCUL_LIGHTGREEN CACA_LIGHTGREEN
717#   define CUCUL_LIGHTCYAN CACA_LIGHTCYAN
718#   define CUCUL_LIGHTRED CACA_LIGHTRED
719#   define CUCUL_LIGHTMAGENTA CACA_LIGHTMAGENTA
720#   define CUCUL_YELLOW CACA_YELLOW
721#   define CUCUL_WHITE CACA_YELLOW
722#   define CUCUL_DEFAULT CACA_DEFAULT
723#   define CUCUL_TRANSPARENT CACA_TRANSPARENT
724
725#   define CUCUL_BOLD CACA_BOLD
726#   define CUCUL_ITALICS CACA_ITALICS
727#   define CUCUL_UNDERLINE CACA_UNDERLINE
728#   define CUCUL_BLINK CACA_BLINK
729
730#   if !defined __LIBCACA__
731#       define caca_get_cursor_x caca_wherex
732#       define caca_get_cursor_y caca_wherey
733#       define cucul_draw_triangle caca_draw_triangle
734#       define cucul_draw_thin_triangle caca_draw_thin_triangle
735#       define cucul_fill_triangle caca_fill_triangle
736#       define cucul_load_font caca_load_font
737#       define cucul_get_font_list caca_get_font_list
738#       define cucul_get_font_width caca_get_font_width
739#       define cucul_get_font_height caca_get_font_height
740#       define cucul_get_font_blocks caca_get_font_blocks
741#       define cucul_render_canvas caca_render_canvas
742#       define cucul_free_font caca_free_font
743#       define cucul_gotoxy caca_gotoxy
744#       define cucul_get_cursor_x caca_wherex
745#       define cucul_get_cursor_y caca_wherey
746#       define cucul_put_char caca_put_char
747#       define cucul_get_char caca_get_char
748#       define cucul_put_str caca_put_str
749#       define cucul_printf caca_printf
750#       define cucul_clear_canvas caca_clear_canvas
751#       define cucul_set_canvas_handle caca_set_canvas_handle
752#       define cucul_get_canvas_handle_x caca_get_canvas_handle_x
753#       define cucul_get_canvas_handle_y caca_get_canvas_handle_y
754#       define cucul_blit caca_blit
755#       define cucul_set_canvas_boundaries caca_set_canvas_boundaries
756#       define cucul_import_memory caca_import_memory
757#       define cucul_import_file caca_import_file
758#       define cucul_get_import_list caca_get_import_list
759#       define cucul_create_canvas caca_create_canvas
760#       define cucul_manage_canvas caca_manage_canvas
761#       define cucul_unmanage_canvas caca_unmanage_canvas
762#       define cucul_set_canvas_size caca_set_canvas_size
763#       define cucul_get_canvas_width caca_get_canvas_width
764#       define cucul_get_canvas_height caca_get_canvas_height
765#       define cucul_get_canvas_chars caca_get_canvas_chars
766#       define cucul_get_canvas_attrs caca_get_canvas_attrs
767#       define cucul_free_canvas caca_free_canvas
768#       define cucul_rand caca_rand
769#       define cucul_export_memory caca_export_memory
770#       define cucul_get_export_list caca_get_export_list
771#       define cucul_get_version caca_get_version
772#       define cucul_utf8_to_utf32 caca_utf8_to_utf32
773#       define cucul_utf32_to_utf8 caca_utf32_to_utf8
774#       define cucul_utf32_to_cp437 caca_utf32_to_cp437
775#       define cucul_cp437_to_utf32 caca_cp437_to_utf32
776#       define cucul_utf32_to_ascii caca_utf32_to_ascii
777#       define cucul_utf32_is_fullwidth caca_utf32_is_fullwidth
778#       define cucul_draw_circle caca_draw_circle
779#       define cucul_draw_ellipse caca_draw_ellipse
780#       define cucul_draw_thin_ellipse caca_draw_thin_ellipse
781#       define cucul_fill_ellipse caca_fill_ellipse
782#       define cucul_canvas_set_figfont caca_canvas_set_figfont
783#       define cucul_put_figchar caca_put_figchar
784#       define cucul_flush_figlet caca_flush_figlet
785#       define cucul_putchar caca_putchar
786#       define cucul_getchar caca_getchar
787#       define cucul_get_attr caca_get_attr
788#       define cucul_set_attr caca_set_attr
789#       define cucul_put_attr caca_put_attr
790#       define cucul_set_color_ansi caca_set_color_ansi
791#       define cucul_set_color_argb caca_set_color_argb
792#       define cucul_attr_to_ansi caca_attr_to_ansi
793#       define cucul_attr_to_ansi_fg caca_attr_to_ansi_fg
794#       define cucul_attr_to_ansi_bg caca_attr_to_ansi_bg
795#       define cucul_attr_to_rgb12_fg caca_attr_to_rgb12_fg
796#       define cucul_attr_to_rgb12_bg caca_attr_to_rgb12_bg
797#       define cucul_attr_to_argb64 caca_attr_to_argb64
798#       define cucul_invert caca_invert
799#       define cucul_flip caca_flip
800#       define cucul_flop caca_flop
801#       define cucul_rotate_180 caca_rotate_180
802#       define cucul_rotate_left caca_rotate_left
803#       define cucul_rotate_right caca_rotate_right
804#       define cucul_stretch_left caca_stretch_left
805#       define cucul_stretch_right caca_stretch_right
806#       define cucul_file_open caca_file_open
807#       define cucul_file_close caca_file_close
808#       define cucul_file_tell caca_file_tell
809#       define cucul_file_read caca_file_read
810#       define cucul_file_write caca_file_write
811#       define cucul_file_gets caca_file_gets
812#       define cucul_file_eof caca_file_eof
813#       define cucul_create_dither caca_create_dither
814#       define cucul_set_dither_palette caca_set_dither_palette
815#       define cucul_set_dither_brightness caca_set_dither_brightness
816#       define cucul_get_dither_brightness caca_get_dither_brightness
817#       define cucul_set_dither_gamma caca_set_dither_gamma
818#       define cucul_get_dither_gamma caca_get_dither_gamma
819#       define cucul_set_dither_contrast caca_set_dither_contrast
820#       define cucul_get_dither_contrast caca_get_dither_contrast
821#       define cucul_set_dither_antialias caca_set_dither_antialias
822#       define cucul_get_dither_antialias_list caca_get_dither_antialias_list
823#       define cucul_get_dither_antialias caca_get_dither_antialias
824#       define cucul_set_dither_color caca_set_dither_color
825#       define cucul_get_dither_color_list caca_get_dither_color_list
826#       define cucul_get_dither_color caca_get_dither_color
827#       define cucul_set_dither_charset caca_set_dither_charset
828#       define cucul_get_dither_charset_list caca_get_dither_charset_list
829#       define cucul_get_dither_charset caca_get_dither_charset
830#       define cucul_set_dither_algorithm caca_set_dither_algorithm
831#       define cucul_get_dither_algorithm_list caca_get_dither_algorithm_list
832#       define cucul_get_dither_algorithm caca_get_dither_algorithm
833#       define cucul_dither_bitmap caca_dither_bitmap
834#       define cucul_free_dither caca_free_dither
835#       define cucul_draw_line caca_draw_line
836#       define cucul_draw_polyline caca_draw_polyline
837#       define cucul_draw_thin_line caca_draw_thin_line
838#       define cucul_draw_thin_polyline caca_draw_thin_polyline
839#       define cucul_draw_box caca_draw_box
840#       define cucul_draw_thin_box caca_draw_thin_box
841#       define cucul_draw_cp437_box caca_draw_cp437_box
842#       define cucul_fill_box caca_fill_box
843#       define cucul_get_frame_count caca_get_frame_count
844#       define cucul_set_frame caca_set_frame
845#       define cucul_get_frame_name caca_get_frame_name
846#       define cucul_set_frame_name caca_set_frame_name
847#       define cucul_create_frame caca_create_frame
848#       define cucul_free_frame caca_free_frame
849#   endif
850#endif
851
852#ifdef __cplusplus
853}
854#endif
855
856#undef __extern
857
858#endif /* __CACA_H__ */
Note: See TracBrowser for help on using the repository browser.