source: libcaca/trunk/caca/caca0.h @ 2821

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

Starting refactoring to get rid of libcucul. The initial reason for the
split is rendered moot by the plugin system: when enabled, binaries do
not link directly with libX11 or libGL. I hope this is a step towards
more consisteny and clarity.

  • Property svn:keywords set to Id
File size: 7.2 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: caca0.h 2821 2008-09-27 13:12:46Z 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/*
16 *  This header contains glue code for applications using the pre-1.0
17 *  libcaca API.
18 */
19
20#ifndef __CACA0_H__
21#define __CACA0_H__
22
23#include <caca.h>
24
25#ifdef __cplusplus
26extern "C"
27{
28#endif
29
30/* Function emulation */
31extern int __caca0_init(void);
32extern void __caca0_end(void);
33extern unsigned int __caca0_get_event(unsigned int, int);
34extern unsigned int __caca0_sqrt(unsigned int);
35extern int __caca0_get_feature(int);
36extern void __caca0_set_feature(int);
37extern char const *__caca0_get_feature_name(int);
38extern caca_canvas_t *__caca0_load_sprite(char const *);
39extern caca_dither_t *__caca0_create_bitmap(unsigned int, unsigned int,
40          unsigned int, unsigned int, unsigned long int, unsigned long int,
41          unsigned long int, unsigned long int);
42extern void __caca0_free_bitmap(caca_dither_t *);
43extern char const *__caca0_get_color_name(unsigned char);
44
45/* These variables are needed to emulate old non-thread safe behaviour */
46extern caca_canvas_t *__caca0_cv;
47extern caca_display_t *__caca0_dp;
48extern unsigned char __caca0_fg;
49extern unsigned char __caca0_bg;
50
51/* These enums and macros changed names or values */
52enum caca_color
53{
54    CACA_COLOR_BLACK = CACA_BLACK,
55    CACA_COLOR_BLUE = CACA_BLUE,
56    CACA_COLOR_GREEN = CACA_GREEN,
57    CACA_COLOR_CYAN = CACA_CYAN,
58    CACA_COLOR_RED = CACA_RED,
59    CACA_COLOR_MAGENTA = CACA_MAGENTA,
60    CACA_COLOR_BROWN = CACA_BROWN,
61    CACA_COLOR_LIGHTGRAY = CACA_LIGHTGRAY,
62    CACA_COLOR_DARKGRAY = CACA_DARKGRAY,
63    CACA_COLOR_LIGHTBLUE = CACA_LIGHTBLUE,
64    CACA_COLOR_LIGHTGREEN = CACA_LIGHTGREEN,
65    CACA_COLOR_LIGHTCYAN = CACA_LIGHTCYAN,
66    CACA_COLOR_LIGHTRED = CACA_LIGHTRED,
67    CACA_COLOR_LIGHTMAGENTA = CACA_LIGHTMAGENTA,
68    CACA_COLOR_YELLOW = CACA_YELLOW,
69    CACA_COLOR_WHITE = CACA_WHITE,
70};
71
72enum caca_feature
73{
74    CACA_BACKGROUND       = 0x10,
75    CACA_BACKGROUND_BLACK = 0x11,
76    CACA_BACKGROUND_SOLID = 0x12,
77#define CACA_BACKGROUND_MIN 0x11
78#define CACA_BACKGROUND_MAX 0x12
79    CACA_ANTIALIASING           = 0x20,
80    CACA_ANTIALIASING_NONE      = 0x21,
81    CACA_ANTIALIASING_PREFILTER = 0x22,
82#define CACA_ANTIALIASING_MIN     0x21
83#define CACA_ANTIALIASING_MAX     0x22
84    CACA_DITHERING          = 0x30,
85    CACA_DITHERING_NONE     = 0x31,
86    CACA_DITHERING_ORDERED2 = 0x32,
87    CACA_DITHERING_ORDERED4 = 0x33,
88    CACA_DITHERING_ORDERED8 = 0x34,
89    CACA_DITHERING_RANDOM   = 0x35,
90#define CACA_DITHERING_MIN    0x31
91#define CACA_DITHERING_MAX    0x35
92    CACA_FEATURE_UNKNOWN = 0xffff
93};
94
95/* This enum still exists in libcaca 1.x, thus cannot be redefined */
96#define CACA_EVENT_NONE          0x00000000
97#define CACA_EVENT_KEY_PRESS     0x01000000
98#define CACA_EVENT_KEY_RELEASE   0x02000000
99#define CACA_EVENT_MOUSE_PRESS   0x04000000
100#define CACA_EVENT_MOUSE_RELEASE 0x08000000
101#define CACA_EVENT_MOUSE_MOTION  0x10000000
102#define CACA_EVENT_RESIZE        0x20000000
103#define CACA_EVENT_ANY           0xff000000
104
105/* Backwards compatibility macros for even older shit */
106#define caca_dithering caca_feature
107#define caca_set_dithering caca_set_feature
108#define caca_get_dithering_name caca_get_feature_name
109#define CACA_DITHER_NONE    CACA_DITHERING_NONE
110#define CACA_DITHER_ORDERED CACA_DITHERING_ORDERED8
111#define CACA_DITHER_RANDOM  CACA_DITHERING_RANDOM
112
113/* Macros to redefine all the shit */
114#define caca_init __caca0_init
115#define caca_set_delay(x) caca_set_display_time(__caca0_dp, x)
116#define caca_get_feature __caca0_get_feature
117#define caca_set_feature __caca0_set_feature
118#define caca_get_feature_name __caca0_get_feature_name
119#define caca_get_rendertime() caca_get_display_time(__caca0_dp)
120#define caca_get_width() caca_get_canvas_width(__caca0_cv)
121#define caca_get_height() caca_get_canvas_height(__caca0_cv)
122#define caca_set_window_title(s) caca_set_display_title(__caca0_dp, s)
123#define caca_get_window_width() caca_get_display_width(__caca0_dp)
124#define caca_get_window_height() caca_get_display_height(__caca0_dp)
125#define caca_refresh() caca_refresh_display(__caca0_dp)
126#define caca_end __caca0_end
127
128#define caca_get_event(x) __caca0_get_event(x, 0)
129#define caca_wait_event(x) __caca0_get_event(x, -1)
130#define caca_get_mouse_x() caca_get_mouse_x(__caca0_dp)
131#define caca_get_mouse_y() caca_get_mouse_y(__caca0_dp)
132
133#define caca_set_color(x, y) \
134    (__caca0_fg = (x), __caca0_bg = (y), caca_set_color_ansi(__caca0_cv, x, y))
135#define caca_get_fg_color() __caca0_fg
136#define caca_get_bg_color() __caca0_bg
137#define caca_get_color_name __caca0_get_color_name
138#define caca_putchar(x, y, c) caca_put_char(__caca0_cv, x, y, c)
139#define caca_putstr(x, y, s) caca_put_str(__caca0_cv, x, y, s)
140#define caca_printf(x, y, f, z...) caca_printf(__caca0_cv, x, y, f, ##z)
141#define caca_clear() caca_clear_canvas(__caca0_cv)
142
143#define caca_draw_line(x, y, z, t, c) \
144    caca_draw_line(__caca0_cv, x, y, z, t, c)
145#define caca_draw_polyline(x, y, z, c) \
146    caca_draw_polyline(__caca0_cv, x, y, z, c)
147#define caca_draw_thin_line(x, y, z, t) \
148    caca_draw_thin_line(__caca0_cv, x, y, z, t)
149#define caca_draw_thin_polyline(x, y, z) \
150    caca_draw_thin_polyline(__caca0_cv, x, y, z)
151#define caca_draw_circle(x, y, z, c) \
152    caca_draw_circle(__caca0_cv, x, y, z, c)
153#define caca_draw_ellipse(x, y, z, t, c) \
154    caca_draw_ellipse(__caca0_cv, x, y, z, t, c)
155#define caca_draw_thin_ellipse(x, y, z, t) \
156    caca_draw_thin_ellipse(__caca0_cv, x, y, z, t)
157#define caca_fill_ellipse(x, y, z, t, c) \
158    caca_fill_ellipse(__caca0_cv, x, y, z, t, c)
159#define caca_draw_box(x, y, z, t, c) \
160    caca_draw_box(__caca0_cv, x, y, z, t, c)
161#define caca_draw_thin_box(x, y, z, t) \
162    caca_draw_thin_box(__caca0_cv, x, y, z, t)
163#define caca_fill_box(x, y, z, t, c) \
164    caca_fill_box(__caca0_cv, x, y, z, t, c)
165#define caca_draw_triangle(x, y, z, t, u, v, c) \
166    caca_draw_triangle(__caca0_cv, x, y, z, t, u, v, c)
167#define caca_draw_thin_triangle(x, y, z, t, u, v) \
168    caca_draw_thin_triangle(__caca0_cv, x, y, z, t, u, v)
169#define caca_fill_triangle(x, y, z, t, u, v, c) \
170    caca_fill_triangle(__caca0_cv, x, y, z, t, u, v, c)
171
172#define caca_rand(a, b) caca_rand(a, (b)+1)
173#define caca_sqrt __caca0_sqrt
174
175#define caca_sprite caca_canvas
176#define caca_load_sprite __caca0_load_sprite
177#define caca_get_sprite_frames(c) 1
178#define caca_get_sprite_width(c, f) caca_get_canvas_width(c)
179#define caca_get_sprite_height(c, f) caca_get_canvas_height(c)
180#define caca_get_sprite_dx(c, f) 0
181#define caca_get_sprite_dx(c, f) 0
182#define caca_draw_sprite(x, y, c, f) caca_blit(__caca0_cv, x, y, c, NULL)
183#define caca_free_sprite caca_free_canvas
184
185#define caca_bitmap caca_dither
186#define caca_create_bitmap __caca0_create_bitmap
187#define caca_set_bitmap_palette caca_set_dither_palette
188#define caca_draw_bitmap(x, y, z, t, b, p) \
189    caca_dither_bitmap(__caca0_cv, x, y, z, t, b, p)
190#define caca_free_bitmap __caca0_free_bitmap
191
192#ifdef __cplusplus
193}
194#endif
195
196#endif /* __CACA0_H__ */
Note: See TracBrowser for help on using the repository browser.