libcaca documentation

Main Page | Modules | Directories | File List | Globals

# caca.h

Go to the documentation of this file.

    00001 /*
    00002  *  libcaca       ASCII-Art library
    00003  *  Copyright (c) 2002, 2003 Sam Hocevar <sam@zoy.org>
    00004  *                All Rights Reserved
    00005  *
    00006  *  This library is free software; you can redistribute it and/or
    00007  *  modify it under the terms of the GNU Lesser General Public
    00008  *  License as published by the Free Software Foundation; either
    00009  *  version 2 of the License, or (at your option) any later version.
    00010  *
    00011  *  This library is distributed in the hope that it will be useful,
    00012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    00013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    00014  *  Lesser General Public License for more details.
    00015  *
    00016  *  You should have received a copy of the GNU Lesser General Public
    00017  *  License along with this library; if not, write to the Free Software
    00018  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    00019  *  02111-1307  USA
    00020  */
    00021
    00097 #ifndef __CACA_H__
    00098 #define __CACA_H__
    00099
    00100 #ifdef __cplusplus
    00101 extern "C"
    00102 {
    00103 #endif
    00104
    00109 enum caca_color
    00110 {
    00111     CACA_COLOR_BLACK = 0,
    00112     CACA_COLOR_BLUE = 1,
    00113     CACA_COLOR_GREEN = 2,
    00114     CACA_COLOR_CYAN = 3,
    00115     CACA_COLOR_RED = 4,
    00116     CACA_COLOR_MAGENTA = 5,
    00117     CACA_COLOR_BROWN = 6,
    00118     CACA_COLOR_LIGHTGRAY = 7,
    00119     CACA_COLOR_DARKGRAY = 8,
    00120     CACA_COLOR_LIGHTBLUE = 9,
    00121     CACA_COLOR_LIGHTGREEN = 10,
    00122     CACA_COLOR_LIGHTCYAN = 11,
    00123     CACA_COLOR_LIGHTRED = 12,
    00124     CACA_COLOR_LIGHTMAGENTA = 13,
    00125     CACA_COLOR_YELLOW = 14,
    00126     CACA_COLOR_WHITE = 15
    00127 };
    00128
    00134 enum caca_feature
    00135 {
    00136     CACA_BACKGROUND       = 0x10,
    00137     CACA_BACKGROUND_BLACK = 0x11,
    00138     CACA_BACKGROUND_SOLID = 0x12,
    00139 #define CACA_BACKGROUND_MIN 0x11
    00140 #define CACA_BACKGROUND_MAX 0x12
    00142     CACA_ANTIALIASING           = 0x20,
    00143     CACA_ANTIALIASING_NONE      = 0x21,
    00144     CACA_ANTIALIASING_PREFILTER = 0x22,
    00145 #define CACA_ANTIALIASING_MIN     0x21
    00146 #define CACA_ANTIALIASING_MAX     0x22
    00148     CACA_DITHERING          = 0x30,
    00149     CACA_DITHERING_NONE     = 0x31,
    00150     CACA_DITHERING_ORDERED2 = 0x32,
    00151     CACA_DITHERING_ORDERED4 = 0x33,
    00152     CACA_DITHERING_ORDERED8 = 0x34,
    00153     CACA_DITHERING_RANDOM   = 0x35,
    00154 #define CACA_DITHERING_MIN    0x31
    00155 #define CACA_DITHERING_MAX    0x35
    00157     CACA_FEATURE_UNKNOWN = 0xffff
    00158 };
    00159
    00160 /*
    00161  * Backwards compatibility macros
    00162  */
    00163 #if !defined(_DOXYGEN_SKIP_ME)
    00164 #define caca_dithering caca_feature
    00165 #define caca_set_dithering caca_set_feature
    00166 #define caca_get_dithering_name caca_get_feature_name
    00167 #define CACA_DITHER_NONE    CACA_DITHERING_NONE
    00168 #define CACA_DITHER_ORDERED CACA_DITHERING_ORDERED8
    00169 #define CACA_DITHER_RANDOM  CACA_DITHERING_RANDOM
    00170 #endif
    00171
    00176 enum caca_event
    00177 {
    00178     CACA_EVENT_NONE =          0x00000000,
    00179     CACA_EVENT_KEY_PRESS =     0x01000000,
    00180     CACA_EVENT_KEY_RELEASE =   0x02000000,
    00181     CACA_EVENT_MOUSE_PRESS =   0x04000000,
    00182     CACA_EVENT_MOUSE_RELEASE = 0x08000000,
    00183     CACA_EVENT_MOUSE_MOTION =  0x10000000,
    00184     CACA_EVENT_RESIZE =        0x20000000,
    00185     CACA_EVENT_ANY =           0xff000000
    00186 };
    00187
    00193 enum caca_key
    00194 {
    00195     CACA_KEY_UNKNOWN = 0,
    00197     /* The following keys have ASCII equivalents */
    00198     CACA_KEY_BACKSPACE = 8,
    00199     CACA_KEY_TAB = 9,
    00200     CACA_KEY_RETURN = 13,
    00201     CACA_KEY_PAUSE = 19,
    00202     CACA_KEY_ESCAPE = 27,
    00203     CACA_KEY_DELETE = 127,
    00205     /* The following keys do not have ASCII equivalents but have been
    00206      * chosen to match the SDL equivalents */
    00207     CACA_KEY_UP = 273,
    00208     CACA_KEY_DOWN = 274,
    00209     CACA_KEY_LEFT = 275,
    00210     CACA_KEY_RIGHT = 276,
    00212     CACA_KEY_INSERT = 277,
    00213     CACA_KEY_HOME = 278,
    00214     CACA_KEY_END = 279,
    00215     CACA_KEY_PAGEUP = 280,
    00216     CACA_KEY_PAGEDOWN = 281,
    00218     CACA_KEY_F1 = 282,
    00219     CACA_KEY_F2 = 283,
    00220     CACA_KEY_F3 = 284,
    00221     CACA_KEY_F4 = 285,
    00222     CACA_KEY_F5 = 286,
    00223     CACA_KEY_F6 = 287,
    00224     CACA_KEY_F7 = 288,
    00225     CACA_KEY_F8 = 289,
    00226     CACA_KEY_F9 = 290,
    00227     CACA_KEY_F10 = 291,
    00228     CACA_KEY_F11 = 292,
    00229     CACA_KEY_F12 = 293,
    00230     CACA_KEY_F13 = 294,
    00231     CACA_KEY_F14 = 295,
    00232     CACA_KEY_F15 = 296
    00233 };
    00234
    00241 int caca_init(void);
    00242 void caca_set_delay(unsigned int);
    00243 enum caca_feature caca_get_feature(enum caca_feature);
    00244 void caca_set_feature(enum caca_feature);
    00245 char const *caca_get_feature_name(enum caca_feature);
    00246 unsigned int caca_get_rendertime(void);
    00247 unsigned int caca_get_width(void);
    00248 unsigned int caca_get_height(void);
    00249 int caca_set_window_title(char const *);
    00250 unsigned int caca_get_window_width(void);
    00251 unsigned int caca_get_window_height(void);
    00252 void caca_refresh(void);
    00253 void caca_end(void);
    00254 /*  @} */
    00255
    00262 unsigned int caca_get_event(unsigned int);
    00263 unsigned int caca_wait_event(unsigned int);
    00264 unsigned int caca_get_mouse_x(void);
    00265 unsigned int caca_get_mouse_y(void);
    00266 /*  @} */
    00267
    00273 void caca_set_color(enum caca_color, enum caca_color);
    00274 enum caca_color caca_get_fg_color(void);
    00275 enum caca_color caca_get_bg_color(void);
    00276 char const *caca_get_color_name(enum caca_color);
    00277 void caca_putchar(int, int, char);
    00278 void caca_putstr(int, int, char const *);
    00279 void caca_printf(int, int, char const *, ...);
    00280 void caca_clear(void);
    00281 /*  @} */
    00282
    00289 void caca_draw_line(int, int, int, int, char);
    00290 void caca_draw_polyline(int const x[], int const y[], int, char);
    00291 void caca_draw_thin_line(int, int, int, int);
    00292 void caca_draw_thin_polyline(int const x[], int const y[], int);
    00293
    00294 void caca_draw_circle(int, int, int, char);
    00295 void caca_draw_ellipse(int, int, int, int, char);
    00296 void caca_draw_thin_ellipse(int, int, int, int);
    00297 void caca_fill_ellipse(int, int, int, int, char);
    00298
    00299 void caca_draw_box(int, int, int, int, char);
    00300 void caca_draw_thin_box(int, int, int, int);
    00301 void caca_fill_box(int, int, int, int, char);
    00302
    00303 void caca_draw_triangle(int, int, int, int, int, int, char);
    00304 void caca_draw_thin_triangle(int, int, int, int, int, int);
    00305 void caca_fill_triangle(int, int, int, int, int, int, char);
    00306 /*  @} */
    00307
    00313 int caca_rand(int, int);
    00314 unsigned int caca_sqrt(unsigned int);
    00315 /*  @} */
    00316
    00323 struct caca_sprite;
    00324 struct caca_sprite * caca_load_sprite(char const *);
    00325 int caca_get_sprite_frames(struct caca_sprite const *);
    00326 int caca_get_sprite_width(struct caca_sprite const *, int);
    00327 int caca_get_sprite_height(struct caca_sprite const *, int);
    00328 int caca_get_sprite_dx(struct caca_sprite const *, int);
    00329 int caca_get_sprite_dy(struct caca_sprite const *, int);
    00330 void caca_draw_sprite(int, int, struct caca_sprite const *, int);
    00331 void caca_free_sprite(struct caca_sprite *);
    00332 /*  @} */
    00333
    00340 struct caca_bitmap;
    00341 struct caca_bitmap *caca_create_bitmap(unsigned int, unsigned int,
    00342                                        unsigned int, unsigned int,
    00343                                        unsigned int, unsigned int,
    00344                                        unsigned int, unsigned int);
    00345 void caca_set_bitmap_palette(struct caca_bitmap *,
    00346                              unsigned int r[], unsigned int g[],
    00347                              unsigned int b[], unsigned int a[]);
    00348 void caca_draw_bitmap(int, int, int, int, struct caca_bitmap const *, void *);
    00349 void caca_free_bitmap(struct caca_bitmap *);
    00350 /*  @} */
    00351
    00352 #ifdef __cplusplus
    00353 }
    00354 #endif
    00355
    00356 #endif /* __CACA_H__ */