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

Last change on this file since 3583 was 3583, checked in by Sam Hocevar, 11 years ago

Allow to temporarily disable dirty rectangle handling. This allows for huge
speedups when the calling application knows the dirty rectangle covered by
a complex operation.

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