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

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

Change the dirty rectangle API once again so that calling applications get
a more natural (x,y,w,h) 4-tuple to handle.

  • Property svn:keywords set to Id
File size: 30.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 3494 2009-05-21 20:55:13Z 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 3494 2009-05-21 20:55:13Z 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_get_dirty_rect_count(caca_canvas_t *);
244__extern int caca_get_dirty_rect(caca_canvas_t *, int, int *, int *,
245                                 int *, int *);
246__extern int caca_add_dirty_rect(caca_canvas_t *, int, int, int, int);
247__extern int caca_remove_dirty_rect(caca_canvas_t *, int, int, int, int);
248__extern int caca_clear_dirty_rect_list(caca_canvas_t *);
249/*  @} */
250
251/** \defgroup caca_transform libcaca canvas transformation
252 *
253 *  These functions perform horizontal and vertical canvas flipping.
254 *
255 *  @{ */
256__extern int caca_invert(caca_canvas_t *);
257__extern int caca_flip(caca_canvas_t *);
258__extern int caca_flop(caca_canvas_t *);
259__extern int caca_rotate_180(caca_canvas_t *);
260__extern int caca_rotate_left(caca_canvas_t *);
261__extern int caca_rotate_right(caca_canvas_t *);
262__extern int caca_stretch_left(caca_canvas_t *);
263__extern int caca_stretch_right(caca_canvas_t *);
264/*  @} */
265
266/** \defgroup caca_attributes libcaca attribute conversions
267 *
268 *  These functions perform conversions between attribute values.
269 *
270 *  @{ */
271__extern uint32_t caca_get_attr(caca_canvas_t const *, int, int);
272__extern int caca_set_attr(caca_canvas_t *, uint32_t);
273__extern int caca_put_attr(caca_canvas_t *, int, int, uint32_t);
274__extern int caca_set_color_ansi(caca_canvas_t *, uint8_t, uint8_t);
275__extern int caca_set_color_argb(caca_canvas_t *, uint16_t, uint16_t);
276__extern uint8_t caca_attr_to_ansi(uint32_t);
277__extern uint8_t caca_attr_to_ansi_fg(uint32_t);
278__extern uint8_t caca_attr_to_ansi_bg(uint32_t);
279__extern uint16_t caca_attr_to_rgb12_fg(uint32_t);
280__extern uint16_t caca_attr_to_rgb12_bg(uint32_t);
281__extern void caca_attr_to_argb64(uint32_t, uint8_t[8]);
282/*  @} */
283
284/** \defgroup caca_charset libcaca character set conversions
285 *
286 *  These functions perform conversions between usual character sets.
287 *
288 *  @{ */
289__extern uint32_t caca_utf8_to_utf32(char const *, size_t *);
290__extern size_t caca_utf32_to_utf8(char *, uint32_t);
291__extern uint8_t caca_utf32_to_cp437(uint32_t);
292__extern uint32_t caca_cp437_to_utf32(uint8_t);
293__extern char caca_utf32_to_ascii(uint32_t);
294__extern int caca_utf32_is_fullwidth(uint32_t);
295/*  @} */
296
297/** \defgroup caca_primitives libcaca primitives drawing
298 *
299 *  These functions provide routines for primitive drawing, such as lines,
300 *  boxes, triangles and ellipses.
301 *
302 *  @{ */
303__extern int caca_draw_line(caca_canvas_t *, int, int, int, int, uint32_t);
304__extern int caca_draw_polyline(caca_canvas_t *, int const x[],
305                                 int const y[], int, uint32_t);
306__extern int caca_draw_thin_line(caca_canvas_t *, int, int, int, int);
307__extern int caca_draw_thin_polyline(caca_canvas_t *, int const x[],
308                                      int const y[], int);
309
310__extern int caca_draw_circle(caca_canvas_t *, int, int, int, uint32_t);
311__extern int caca_draw_ellipse(caca_canvas_t *, int, int, int, int, uint32_t);
312__extern int caca_draw_thin_ellipse(caca_canvas_t *, int, int, int, int);
313__extern int caca_fill_ellipse(caca_canvas_t *, int, int, int, int, uint32_t);
314
315__extern int caca_draw_box(caca_canvas_t *, int, int, int, int, uint32_t);
316__extern int caca_draw_thin_box(caca_canvas_t *, int, int, int, int);
317__extern int caca_draw_cp437_box(caca_canvas_t *, int, int, int, int);
318__extern int caca_fill_box(caca_canvas_t *, int, int, int, int, uint32_t);
319
320__extern int caca_draw_triangle(caca_canvas_t *, int, int, int, int, int,
321                                 int, uint32_t);
322__extern int caca_draw_thin_triangle(caca_canvas_t *, int, int, int, int,
323                                      int, int);
324__extern int caca_fill_triangle(caca_canvas_t *, int, int, int, int, int,
325                                 int, uint32_t);
326/*  @} */
327
328/** \defgroup caca_frame libcaca canvas frame handling
329 *
330 *  These functions provide high level routines for canvas frame insertion,
331 *  removal, copying etc.
332 *
333 *  @{ */
334__extern int caca_get_frame_count(caca_canvas_t const *);
335__extern int caca_set_frame(caca_canvas_t *, int);
336__extern char const *caca_get_frame_name(caca_canvas_t const *);
337__extern int caca_set_frame_name(caca_canvas_t *, char const *);
338__extern int caca_create_frame(caca_canvas_t *, int);
339__extern int caca_free_frame(caca_canvas_t *, int);
340/*  @} */
341
342/** \defgroup caca_dither libcaca bitmap dithering
343 *
344 *  These functions provide high level routines for dither allocation and
345 *  rendering.
346 *
347 *  @{ */
348__extern caca_dither_t *caca_create_dither(int, int, int, int,
349                                             uint32_t, uint32_t,
350                                             uint32_t, uint32_t);
351__extern int caca_set_dither_palette(caca_dither_t *,
352                                      uint32_t r[], uint32_t g[],
353                                      uint32_t b[], uint32_t a[]);
354__extern int caca_set_dither_brightness(caca_dither_t *, float);
355__extern float caca_get_dither_brightness(caca_dither_t const *);
356__extern int caca_set_dither_gamma(caca_dither_t *, float);
357__extern float caca_get_dither_gamma(caca_dither_t const *);
358__extern int caca_set_dither_contrast(caca_dither_t *, float);
359__extern float caca_get_dither_contrast(caca_dither_t const *);
360__extern int caca_set_dither_antialias(caca_dither_t *, char const *);
361__extern char const * const * caca_get_dither_antialias_list(caca_dither_t
362                                                              const *);
363__extern char const * caca_get_dither_antialias(caca_dither_t const *);
364__extern int caca_set_dither_color(caca_dither_t *, char const *);
365__extern char const * const * caca_get_dither_color_list(caca_dither_t
366                                                          const *);
367__extern char const * caca_get_dither_color(caca_dither_t const *);
368__extern int caca_set_dither_charset(caca_dither_t *, char const *);
369__extern char const * const * caca_get_dither_charset_list(caca_dither_t
370                                                            const *);
371__extern char const * caca_get_dither_charset(caca_dither_t const *);
372__extern int caca_set_dither_algorithm(caca_dither_t *, char const *);
373__extern char const * const * caca_get_dither_algorithm_list(caca_dither_t
374                                                              const *);
375__extern char const * caca_get_dither_algorithm(caca_dither_t const *);
376__extern int caca_dither_bitmap(caca_canvas_t *, int, int, int, int,
377                         caca_dither_t const *, void *);
378__extern int caca_free_dither(caca_dither_t *);
379/*  @} */
380
381/** \defgroup caca_font libcaca font handling
382 *
383 *  These functions provide font handling routines and high quality
384 *  canvas to bitmap rendering.
385 *
386 *  @{ */
387__extern caca_font_t *caca_load_font(void const *, size_t);
388__extern char const * const * caca_get_font_list(void);
389__extern int caca_get_font_width(caca_font_t const *);
390__extern int caca_get_font_height(caca_font_t const *);
391__extern uint32_t const *caca_get_font_blocks(caca_font_t const *);
392__extern int caca_render_canvas(caca_canvas_t const *, caca_font_t const *,
393                                 void *, int, int, int);
394__extern int caca_free_font(caca_font_t *);
395/*  @} */
396
397/** \defgroup caca_figfont libcaca FIGfont handling
398 *
399 *  These functions provide FIGlet and TOIlet font handling routines.
400 *
401 *  @{ */
402__extern int caca_canvas_set_figfont(caca_canvas_t *, char const *);
403__extern int caca_put_figchar(caca_canvas_t *, uint32_t);
404__extern int caca_flush_figlet(caca_canvas_t *);
405/*  @} */
406
407/** \defgroup caca_file libcaca file IO
408 *
409 *  These functions allow to read and write files in a platform-independent
410 *  way.
411 *  @{ */
412__extern caca_file_t *caca_file_open(char const *, const char *);
413__extern int caca_file_close(caca_file_t *);
414__extern uint64_t caca_file_tell(caca_file_t *);
415__extern size_t caca_file_read(caca_file_t *, void *, size_t);
416__extern size_t caca_file_write(caca_file_t *, const void *, size_t);
417__extern char * caca_file_gets(caca_file_t *, char *, int);
418__extern int caca_file_eof(caca_file_t *);
419/*  @} */
420
421/** \defgroup caca_importexport libcaca importers/exporters from/to various
422 *  formats
423 *
424 *  These functions import various file formats into a new canvas, or export
425 *  the current canvas to various text formats.
426 *
427 *  @{ */
428__extern ssize_t caca_import_memory(caca_canvas_t *, void const *,
429                                     size_t, char const *);
430__extern ssize_t caca_import_file(caca_canvas_t *, char const *,
431                                   char const *);
432__extern char const * const * caca_get_import_list(void);
433__extern void *caca_export_memory(caca_canvas_t const *, char const *,
434                                   size_t *);
435__extern char const * const * caca_get_export_list(void);
436/*  @} */
437
438/** \defgroup caca_display libcaca display functions
439 *
440 *  These functions provide the basic \e libcaca routines for display
441 *  initialisation, system information retrieval and configuration.
442 *
443 *  @{ */
444__extern caca_display_t * caca_create_display(caca_canvas_t *);
445__extern caca_display_t * caca_create_display_with_driver(caca_canvas_t *,
446                                                          char const *);
447__extern char const * const * caca_get_display_driver_list(void);
448__extern char const * caca_get_display_driver(caca_display_t *);
449__extern int caca_set_display_driver(caca_display_t *, char const *);
450__extern int caca_free_display(caca_display_t *);
451__extern caca_canvas_t * caca_get_canvas(caca_display_t *);
452__extern int caca_refresh_display(caca_display_t *);
453__extern int caca_set_display_time(caca_display_t *, int);
454__extern int caca_get_display_time(caca_display_t const *);
455__extern int caca_get_display_width(caca_display_t const *);
456__extern int caca_get_display_height(caca_display_t const *);
457__extern int caca_set_display_title(caca_display_t *, char const *);
458__extern int caca_set_mouse(caca_display_t *, int);
459__extern int caca_set_cursor(caca_display_t *, int);
460/*  @} */
461
462/** \defgroup caca_event libcaca event handling
463 *
464 *  These functions handle user events such as keyboard input and mouse
465 *  clicks.
466 *
467 *  @{ */
468__extern int caca_get_event(caca_display_t *, int, caca_event_t *, int);
469__extern int caca_get_mouse_x(caca_display_t const *);
470__extern int caca_get_mouse_y(caca_display_t const *);
471__extern enum caca_event_type caca_get_event_type(caca_event_t const *);
472__extern int caca_get_event_key_ch(caca_event_t const *);
473__extern uint32_t caca_get_event_key_utf32(caca_event_t const *);
474__extern int caca_get_event_key_utf8(caca_event_t const *, char *);
475__extern int caca_get_event_mouse_button(caca_event_t const *);
476__extern int caca_get_event_mouse_x(caca_event_t const *);
477__extern int caca_get_event_mouse_y(caca_event_t const *);
478__extern int caca_get_event_resize_width(caca_event_t const *);
479__extern int caca_get_event_resize_height(caca_event_t const *);
480/*  @} */
481
482#if !defined(_DOXYGEN_SKIP_ME)
483    /* Legacy stuff from beta versions, will probably disappear in 1.0 */
484typedef struct cucul_buffer cucul_buffer_t;
485
486#   if defined __GNUC__ && __GNUC__ >= 3
487#       define CACA_DEPRECATED __attribute__ ((__deprecated__))
488#       define CACA_ALIAS(x) __attribute__ ((weak, alias(#x)))
489#   else
490#       define CACA_DEPRECATED
491#       define CACA_ALIAS(x)
492#   endif
493
494
495/* Aliases from old libcucul functions */
496__extern int cucul_putchar(caca_canvas_t *, int, int,
497                           unsigned long int) CACA_DEPRECATED;
498__extern unsigned long int cucul_getchar(caca_canvas_t *,
499                                         int, int) CACA_DEPRECATED;
500__extern int cucul_putstr(caca_canvas_t *, int, int,
501                          char const *) CACA_DEPRECATED;
502__extern int cucul_set_color(caca_canvas_t *, unsigned char,
503                             unsigned char) CACA_DEPRECATED;
504__extern int cucul_set_truecolor(caca_canvas_t *, unsigned int,
505                                 unsigned int) CACA_DEPRECATED;
506__extern unsigned int cucul_get_canvas_frame_count(caca_canvas_t *)
507                                                   CACA_DEPRECATED;
508__extern int cucul_set_canvas_frame(caca_canvas_t *,
509                                    unsigned int) CACA_DEPRECATED;
510__extern int cucul_create_canvas_frame(caca_canvas_t *,
511                                       unsigned int) CACA_DEPRECATED;
512__extern int cucul_free_canvas_frame(caca_canvas_t *,
513                                     unsigned int) CACA_DEPRECATED;
514__extern cucul_buffer_t *cucul_load_memory(void *,
515                                           unsigned long int) CACA_DEPRECATED;
516__extern cucul_buffer_t *cucul_load_file(char const *) CACA_DEPRECATED;
517__extern unsigned long int cucul_get_buffer_size(cucul_buffer_t *)
518                                                 CACA_DEPRECATED;
519__extern void * cucul_get_buffer_data(cucul_buffer_t *) CACA_DEPRECATED;
520__extern int cucul_free_buffer(cucul_buffer_t *) CACA_DEPRECATED;
521__extern cucul_buffer_t * cucul_export_canvas(caca_canvas_t *,
522                                              char const *) CACA_DEPRECATED;
523__extern caca_canvas_t * cucul_import_canvas(cucul_buffer_t *,
524                                              char const *) CACA_DEPRECATED;
525__extern int cucul_rotate(caca_canvas_t *) CACA_DEPRECATED;
526__extern int cucul_set_dither_invert(caca_dither_t *, int) CACA_DEPRECATED;
527__extern int cucul_set_dither_mode(caca_dither_t *,
528                                   char const *) CACA_DEPRECATED;
529__extern char const * const * cucul_get_dither_mode_list(caca_dither_t const *)
530                                                         CACA_DEPRECATED;
531#   define CUCUL_COLOR_BLACK CACA_BLACK
532#   define CUCUL_COLOR_BLUE CACA_BLUE
533#   define CUCUL_COLOR_GREEN CACA_GREEN
534#   define CUCUL_COLOR_CYAN CACA_CYAN
535#   define CUCUL_COLOR_RED CACA_RED
536#   define CUCUL_COLOR_MAGENTA CACA_MAGENTA
537#   define CUCUL_COLOR_BROWN CACA_BROWN
538#   define CUCUL_COLOR_LIGHTGRAY CACA_LIGHTGRAY
539#   define CUCUL_COLOR_DARKGRAY CACA_DARKGRAY
540#   define CUCUL_COLOR_LIGHTBLUE CACA_LIGHTBLUE
541#   define CUCUL_COLOR_LIGHTGREEN CACA_LIGHTGREEN
542#   define CUCUL_COLOR_LIGHTCYAN CACA_LIGHTCYAN
543#   define CUCUL_COLOR_LIGHTRED CACA_LIGHTRED
544#   define CUCUL_COLOR_LIGHTMAGENTA CACA_LIGHTMAGENTA
545#   define CUCUL_COLOR_YELLOW CACA_YELLOW
546#   define CUCUL_COLOR_WHITE CACA_YELLOW
547#   define CUCUL_COLOR_DEFAULT CACA_DEFAULT
548#   define CUCUL_COLOR_TRANSPARENT CACA_TRANSPARENT
549
550/* Aliases from the libcucul/libcaca merge */
551#   define cucul_canvas_t caca_canvas_t
552#   define cucul_dither_t caca_dither_t
553#   define cucul_font_t caca_font_t
554#   define cucul_file_t caca_file_t
555#   define cucul_display_t caca_display_t
556#   define cucul_event_t caca_event_t
557
558#   define CUCUL_BLACK CACA_BLACK
559#   define CUCUL_BLUE CACA_BLUE
560#   define CUCUL_GREEN CACA_GREEN
561#   define CUCUL_CYAN CACA_CYAN
562#   define CUCUL_RED CACA_RED
563#   define CUCUL_MAGENTA CACA_MAGENTA
564#   define CUCUL_BROWN CACA_BROWN
565#   define CUCUL_LIGHTGRAY CACA_LIGHTGRAY
566#   define CUCUL_DARKGRAY CACA_DARKGRAY
567#   define CUCUL_LIGHTBLUE CACA_LIGHTBLUE
568#   define CUCUL_LIGHTGREEN CACA_LIGHTGREEN
569#   define CUCUL_LIGHTCYAN CACA_LIGHTCYAN
570#   define CUCUL_LIGHTRED CACA_LIGHTRED
571#   define CUCUL_LIGHTMAGENTA CACA_LIGHTMAGENTA
572#   define CUCUL_YELLOW CACA_YELLOW
573#   define CUCUL_WHITE CACA_YELLOW
574#   define CUCUL_DEFAULT CACA_DEFAULT
575#   define CUCUL_TRANSPARENT CACA_TRANSPARENT
576
577#   define CUCUL_BOLD CACA_BOLD
578#   define CUCUL_ITALICS CACA_ITALICS
579#   define CUCUL_UNDERLINE CACA_UNDERLINE
580#   define CUCUL_BLINK CACA_BLINK
581
582#   if !defined __LIBCACA__
583#       define cucul_draw_triangle caca_draw_triangle
584#       define cucul_draw_thin_triangle caca_draw_thin_triangle
585#       define cucul_fill_triangle caca_fill_triangle
586#       define cucul_load_font caca_load_font
587#       define cucul_get_font_list caca_get_font_list
588#       define cucul_get_font_width caca_get_font_width
589#       define cucul_get_font_height caca_get_font_height
590#       define cucul_get_font_blocks caca_get_font_blocks
591#       define cucul_render_canvas caca_render_canvas
592#       define cucul_free_font caca_free_font
593#       define cucul_gotoxy caca_gotoxy
594#       define cucul_get_cursor_x caca_get_cursor_x
595#       define cucul_get_cursor_y caca_get_cursor_y
596#       define cucul_put_char caca_put_char
597#       define cucul_get_char caca_get_char
598#       define cucul_put_str caca_put_str
599#       define cucul_printf caca_printf
600#       define cucul_clear_canvas caca_clear_canvas
601#       define cucul_set_canvas_handle caca_set_canvas_handle
602#       define cucul_get_canvas_handle_x caca_get_canvas_handle_x
603#       define cucul_get_canvas_handle_y caca_get_canvas_handle_y
604#       define cucul_blit caca_blit
605#       define cucul_set_canvas_boundaries caca_set_canvas_boundaries
606#       define cucul_import_memory caca_import_memory
607#       define cucul_import_file caca_import_file
608#       define cucul_get_import_list caca_get_import_list
609#       define cucul_create_canvas caca_create_canvas
610#       define cucul_manage_canvas caca_manage_canvas
611#       define cucul_unmanage_canvas caca_unmanage_canvas
612#       define cucul_set_canvas_size caca_set_canvas_size
613#       define cucul_get_canvas_width caca_get_canvas_width
614#       define cucul_get_canvas_height caca_get_canvas_height
615#       define cucul_get_canvas_chars caca_get_canvas_chars
616#       define cucul_get_canvas_attrs caca_get_canvas_attrs
617#       define cucul_free_canvas caca_free_canvas
618#       define cucul_rand caca_rand
619#       define cucul_export_memory caca_export_memory
620#       define cucul_get_export_list caca_get_export_list
621#       define cucul_get_version caca_get_version
622#       define cucul_utf8_to_utf32 caca_utf8_to_utf32
623#       define cucul_utf32_to_utf8 caca_utf32_to_utf8
624#       define cucul_utf32_to_cp437 caca_utf32_to_cp437
625#       define cucul_cp437_to_utf32 caca_cp437_to_utf32
626#       define cucul_utf32_to_ascii caca_utf32_to_ascii
627#       define cucul_utf32_is_fullwidth caca_utf32_is_fullwidth
628#       define cucul_draw_circle caca_draw_circle
629#       define cucul_draw_ellipse caca_draw_ellipse
630#       define cucul_draw_thin_ellipse caca_draw_thin_ellipse
631#       define cucul_fill_ellipse caca_fill_ellipse
632#       define cucul_canvas_set_figfont caca_canvas_set_figfont
633#       define cucul_put_figchar caca_put_figchar
634#       define cucul_flush_figlet caca_flush_figlet
635#       define cucul_putchar caca_putchar
636#       define cucul_getchar caca_getchar
637#       define cucul_get_attr caca_get_attr
638#       define cucul_set_attr caca_set_attr
639#       define cucul_put_attr caca_put_attr
640#       define cucul_set_color_ansi caca_set_color_ansi
641#       define cucul_set_color_argb caca_set_color_argb
642#       define cucul_attr_to_ansi caca_attr_to_ansi
643#       define cucul_attr_to_ansi_fg caca_attr_to_ansi_fg
644#       define cucul_attr_to_ansi_bg caca_attr_to_ansi_bg
645#       define cucul_attr_to_rgb12_fg caca_attr_to_rgb12_fg
646#       define cucul_attr_to_rgb12_bg caca_attr_to_rgb12_bg
647#       define cucul_attr_to_argb64 caca_attr_to_argb64
648#       define cucul_invert caca_invert
649#       define cucul_flip caca_flip
650#       define cucul_flop caca_flop
651#       define cucul_rotate_180 caca_rotate_180
652#       define cucul_rotate_left caca_rotate_left
653#       define cucul_rotate_right caca_rotate_right
654#       define cucul_stretch_left caca_stretch_left
655#       define cucul_stretch_right caca_stretch_right
656#       define cucul_file_open caca_file_open
657#       define cucul_file_close caca_file_close
658#       define cucul_file_tell caca_file_tell
659#       define cucul_file_read caca_file_read
660#       define cucul_file_write caca_file_write
661#       define cucul_file_gets caca_file_gets
662#       define cucul_file_eof caca_file_eof
663#       define cucul_create_dither caca_create_dither
664#       define cucul_set_dither_palette caca_set_dither_palette
665#       define cucul_set_dither_brightness caca_set_dither_brightness
666#       define cucul_get_dither_brightness caca_get_dither_brightness
667#       define cucul_set_dither_gamma caca_set_dither_gamma
668#       define cucul_get_dither_gamma caca_get_dither_gamma
669#       define cucul_set_dither_contrast caca_set_dither_contrast
670#       define cucul_get_dither_contrast caca_get_dither_contrast
671#       define cucul_set_dither_antialias caca_set_dither_antialias
672#       define cucul_get_dither_antialias_list caca_get_dither_antialias_list
673#       define cucul_get_dither_antialias caca_get_dither_antialias
674#       define cucul_set_dither_color caca_set_dither_color
675#       define cucul_get_dither_color_list caca_get_dither_color_list
676#       define cucul_get_dither_color caca_get_dither_color
677#       define cucul_set_dither_charset caca_set_dither_charset
678#       define cucul_get_dither_charset_list caca_get_dither_charset_list
679#       define cucul_get_dither_charset caca_get_dither_charset
680#       define cucul_set_dither_algorithm caca_set_dither_algorithm
681#       define cucul_get_dither_algorithm_list caca_get_dither_algorithm_list
682#       define cucul_get_dither_algorithm caca_get_dither_algorithm
683#       define cucul_dither_bitmap caca_dither_bitmap
684#       define cucul_free_dither caca_free_dither
685#       define cucul_draw_line caca_draw_line
686#       define cucul_draw_polyline caca_draw_polyline
687#       define cucul_draw_thin_line caca_draw_thin_line
688#       define cucul_draw_thin_polyline caca_draw_thin_polyline
689#       define cucul_draw_box caca_draw_box
690#       define cucul_draw_thin_box caca_draw_thin_box
691#       define cucul_draw_cp437_box caca_draw_cp437_box
692#       define cucul_fill_box caca_fill_box
693#       define cucul_get_frame_count caca_get_frame_count
694#       define cucul_set_frame caca_set_frame
695#       define cucul_get_frame_name caca_get_frame_name
696#       define cucul_set_frame_name caca_set_frame_name
697#       define cucul_create_frame caca_create_frame
698#       define cucul_free_frame caca_free_frame
699#   endif
700#endif
701
702#ifdef __cplusplus
703}
704#endif
705
706#undef __extern
707
708#endif /* __CACA_H__ */
Note: See TracBrowser for help on using the repository browser.