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

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

Change the dirty rectangle API so that it can handle several rectangles. The
inner implementation still only handles one dirty rectangle, but this way
we can prepare supporting applictions for the future.

  • Property svn:keywords set to Id
File size: 30.9 KB
Line 
1/*
2 *  libcaca       Colour ASCII-Art library
3 *  Copyright (c) 2002-2006 Sam Hocevar <sam@zoy.org>
4 *                All Rights Reserved
5 *
6 *  $Id: caca.h 3470 2009-05-19 00:51:47Z 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 3470 2009-05-19 00:51:47Z sam $
17 *  \author Sam Hocevar <sam@zoy.org>
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_rectangle_count(caca_canvas_t *);
244__extern int caca_get_dirty_rectangle(caca_canvas_t *, int, int *, int *,
245                                      int *, int *);
246__extern int caca_add_dirty_rectangle(caca_canvas_t *, int, int, int, int);
247__extern int caca_remove_dirty_rectangle(caca_canvas_t *, int, int, int, int);
248__extern int caca_clear_dirty_rectangle_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.