Main Page | Modules | 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__ */