- Timestamp:
- Apr 25, 2006, 1:05:25 PM (15 years ago)
- Location:
- libcaca/trunk/cucul
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/cucul/canvas.c
r870 r874 59 59 * \return This function always returns 0. 60 60 */ 61 void cucul_putchar(cucul_canvas_t *cv, int x, int y, char ch) 62 { 63 if(x < 0 || x >= (int)cv->width || 64 y < 0 || y >= (int)cv->height) 65 return; 61 int cucul_putchar(cucul_canvas_t *cv, int x, int y, char ch) 62 { 63 if(x < 0 || x >= (int)cv->width || y < 0 || y >= (int)cv->height) 64 return 0; 66 65 67 66 if((unsigned char)ch < 0x20 || (unsigned char)ch > 0x7f) … … 70 69 cv->chars[x + y * cv->width] = ch; 71 70 cv->attr[x + y * cv->width] = (cv->bgcolor << 16) | cv->fgcolor; 71 72 return 0; 72 73 } 73 74 … … 87 88 * \return This function always returns 0. 88 89 */ 89 voidcucul_putstr(cucul_canvas_t *cv, int x, int y, char const *s)90 int cucul_putstr(cucul_canvas_t *cv, int x, int y, char const *s) 90 91 { 91 92 uint32_t *chars, *attr; … … 93 94 94 95 if(y < 0 || y >= (int)cv->height || x >= (int)cv->width) 95 return ;96 return 0; 96 97 97 98 len = _cucul_strlen_utf8(s); … … 100 101 { 101 102 if(len < (unsigned int)-x) 102 return ;103 return 0; 103 104 len -= -x; 104 105 s = _cucul_skip_utf8(s, -x); … … 120 121 len--; 121 122 } 123 124 return 0; 122 125 } 123 126 … … 139 142 * \return This function always returns 0. 140 143 */ 141 voidcucul_printf(cucul_canvas_t *cv, int x, int y, char const *format, ...)144 int cucul_printf(cucul_canvas_t *cv, int x, int y, char const *format, ...) 142 145 { 143 146 char tmp[BUFSIZ]; … … 146 149 147 150 if(y < 0 || y >= (int)cv->height || x >= (int)cv->width) 148 return ;151 return 0; 149 152 150 153 if(cv->width - x + 1 > BUFSIZ) … … 164 167 if(buf != tmp) 165 168 free(buf); 169 170 return 0; 166 171 } 167 172 … … 175 180 * \return This function always returns 0. 176 181 */ 177 voidcucul_clear_canvas(cucul_canvas_t *cv)182 int cucul_clear_canvas(cucul_canvas_t *cv) 178 183 { 179 184 uint32_t color = (cv->bgcolor << 16) | cv->fgcolor; … … 186 191 cv->attr[n] = color; 187 192 } 193 194 return 0; 188 195 } 189 196 … … 193 200 * An optional mask canvas can be used. 194 201 * 202 * If an error occurs, -1 is returned and \b errno is set accordingly: 203 * - \c EINVAL A mask was specified but the mask size and source canvas 204 * size do not match. 205 * 195 206 * \param dst The destination canvas. 196 207 * \param x X coordinate. … … 198 209 * \param src The source canvas. 199 210 * \param mask The mask canvas. 200 * \return 0 in case of success, -1 otherwise.211 * \return 0 in case of success, -1 if an error occurred. 201 212 */ 202 213 int cucul_blit(cucul_canvas_t *dst, int x, int y, -
libcaca/trunk/cucul/colour.c
r859 r874 20 20 #include "common.h" 21 21 22 #if defined(HAVE_ERRNO_H) 23 # include <errno.h> 24 #endif 25 22 26 #include "cucul.h" 23 27 #include "cucul_internals.h" … … 38 42 * or CUCUL_COLOR_TRANSPARENT. 39 43 * 44 * If an error occurs, -1 is returned and \b errno is set accordingly: 45 * - \c EINVAL At least one of the colour values is invalid. 46 * 40 47 * \param cv A handle to the libcucul canvas. 41 48 * \param fg The requested foreground colour. 42 49 * \param bg The requested background colour. 43 */ 44 void cucul_set_color(cucul_canvas_t *cv, unsigned char fg, unsigned char bg) 50 * \return 0 in case of success, -1 if an error occurred. 51 */ 52 int cucul_set_color(cucul_canvas_t *cv, unsigned char fg, unsigned char bg) 45 53 { 46 54 if(fg > 0x20 || bg > 0x20) 47 return; 55 { 56 #if defined(HAVE_ERRNO_H) 57 errno = EINVAL; 58 #endif 59 return -1; 60 } 48 61 49 62 cv->fgcolor = fg; 50 63 cv->bgcolor = bg; 64 65 return 0; 51 66 } 52 67 … … 61 76 * white with 50% alpha (A=8 R=15 G=15 B=15). 62 77 * 78 * If an error occurs, -1 is returned and \b errno is set accordingly: 79 * - \c EINVAL At least one of the colour values is invalid. 80 * 63 81 * \param cv A handle to the libcucul canvas. 64 82 * \param fg The requested foreground colour. 65 83 * \param bg The requested background colour. 66 */ 67 void cucul_set_truecolor(cucul_canvas_t *cv, unsigned int fg, unsigned int bg) 84 * \return 0 in case of success, -1 if an error occurred. 85 */ 86 int cucul_set_truecolor(cucul_canvas_t *cv, unsigned int fg, unsigned int bg) 68 87 { 69 88 if(fg > 0xffff || bg > 0xffff) 70 return; 89 { 90 #if defined(HAVE_ERRNO_H) 91 errno = EINVAL; 92 #endif 93 return -1; 94 } 71 95 72 96 if(fg < 0x100) … … 78 102 cv->fgcolor = fg; 79 103 cv->bgcolor = bg; 104 105 return 0; 80 106 } 81 107 -
libcaca/trunk/cucul/cucul.c
r859 r874 24 24 # include <stdlib.h> 25 25 # include <string.h> 26 # if defined(HAVE_ERRNO_H) 27 # include <errno.h> 28 # endif 26 29 #endif 27 30 … … 39 42 * of 80x32 is used instead. 40 43 * 44 * If an error occurs, -1 is returned and \b errno is set accordingly: 45 * - \c ENOMEM Not enough memory for the requested canvas size. 46 * 41 47 * \param width The desired canvas width 42 48 * \param height The desired canvas height … … 46 52 { 47 53 cucul_canvas_t *cv = malloc(sizeof(cucul_canvas_t)); 54 int ret; 55 56 if(!cv) 57 goto nomem; 48 58 49 59 cv->refcount = 0; … … 59 69 cv->framecount = 1; 60 70 cv->allchars = malloc(sizeof(uint32_t *)); 71 if(!cv->allchars) 72 { 73 free(cv); 74 goto nomem; 75 } 61 76 cv->allattr = malloc(sizeof(uint32_t *)); 77 if(!cv->allattr) 78 { 79 free(cv->allchars); 80 free(cv); 81 goto nomem; 82 } 62 83 cv->allchars[0] = NULL; 63 84 cv->allattr[0] = NULL; … … 67 88 * a different size. */ 68 89 if(width && height) 69 _cucul_set_canvas_size(cv, width, height);90 ret = _cucul_set_canvas_size(cv, width, height); 70 91 else 71 _cucul_set_canvas_size(cv, 80, 32); 72 73 if(_cucul_init_dither()) 74 { 92 ret = _cucul_set_canvas_size(cv, 80, 32); 93 94 if(ret < 0) 95 { 96 #if defined(HAVE_ERRNO_H) 97 int saved_errno = errno; 98 #endif 99 free(cv->allattr); 100 free(cv->allchars); 75 101 free(cv); 102 #if defined(HAVE_ERRNO_H) 103 errno = saved_errno; 104 #endif 76 105 return NULL; 77 106 } 78 107 108 /* FIXME: this shouldn't happen here */ 109 _cucul_init_dither(); 110 79 111 return cv; 112 113 nomem: 114 #if defined(HAVE_ERRNO_H) 115 errno = ENOMEM; 116 #endif 117 return NULL; 80 118 } 81 119 … … 95 133 * for more about this. 96 134 * 135 * If an error occurs, -1 is returned and \b errno is set accordingly: 136 * - \c EBUSY The canvas is in use by a display driver and cannot be resized. 137 * - \c ENOMEM Not enough memory for the requested canvas size. If this 138 * happens, the canvas handle becomes invalid and should not be used. 139 * 97 140 * \param cv A libcucul canvas 98 141 * \param width The desired canvas width 99 142 * \param height The desired canvas height 100 */ 101 void cucul_set_canvas_size(cucul_canvas_t *cv, unsigned int width, 102 unsigned int height) 143 * \return 0 in case of success, -1 if an error occurred. 144 */ 145 int cucul_set_canvas_size(cucul_canvas_t *cv, unsigned int width, 146 unsigned int height) 103 147 { 104 148 if(cv->refcount) 105 return; 106 107 _cucul_set_canvas_size(cv, width, height); 149 { 150 #if defined(HAVE_ERRNO_H) 151 errno = EBUSY; 152 #endif 153 return -1; 154 } 155 156 return _cucul_set_canvas_size(cv, width, height); 108 157 } 109 158 … … 111 160 * 112 161 * This function returns the current canvas width, in character cells. 162 * 163 * This function never fails. 113 164 * 114 165 * \param cv A libcucul canvas … … 124 175 * This function returns the current canvas height, in character cells. 125 176 * 177 * This function never fails. 178 * 126 179 * \param cv A libcucul canvas 127 180 * \return The canvas height. … … 137 190 * description string of the associated colour. 138 191 * 192 * This function never fails. 193 * 139 194 * \param color The colour value. 140 * \return A static string containing the colour's name. 195 * \return A static string containing the colour's name, or \c "unknown" if 196 * the colour is unknown. 141 197 */ 142 198 char const *cucul_get_color_name(unsigned int color) … … 174 230 * used unless a new call to cucul_create_canvas() is done. 175 231 * 232 * If an error occurs, -1 is returned and \b errno is set accordingly: 233 * - \c EBUSY The canvas is in use by a display driver and cannot be freed. 234 * 176 235 * \param cv A libcucul canvas 177 */ 178 void cucul_free_canvas(cucul_canvas_t *cv) 236 * \return 0 in case of success, -1 if an error occurred. 237 */ 238 int cucul_free_canvas(cucul_canvas_t *cv) 179 239 { 180 240 unsigned int f; 181 241 242 if(cv->refcount) 243 { 244 #if defined(HAVE_ERRNO_H) 245 errno = EBUSY; 246 #endif 247 return -1; 248 } 249 250 /* FIXME: this shouldn't be here either (see above) */ 182 251 _cucul_end_dither(); 183 252 … … 189 258 190 259 free(cv); 260 261 return 0; 191 262 } 192 263 193 264 /** \brief Generate a random integer within a range. 265 * 266 * This function never fails. 194 267 * 195 268 * \param min The lower bound of the integer range. … … 207 280 */ 208 281 209 void_cucul_set_canvas_size(cucul_canvas_t *cv, unsigned int width,210 282 int _cucul_set_canvas_size(cucul_canvas_t *cv, unsigned int width, 283 unsigned int height) 211 284 { 212 285 unsigned int x, y, f, old_width, old_height, new_size, old_size; … … 229 302 cv->allattr[f] = realloc(cv->allattr[f], 230 303 new_size * sizeof(uint32_t)); 304 if(!cv->allchars[f] || !cv->allattr[f]) 305 { 306 #if defined(HAVE_ERRNO_H) 307 errno = ENOMEM; 308 #endif 309 return -1; 310 } 231 311 } 232 312 } … … 311 391 cv->allattr[f] = realloc(cv->allattr[f], 312 392 new_size * sizeof(uint32_t)); 393 if(!cv->allchars[f] || !cv->allattr[f]) 394 { 395 #if defined(HAVE_ERRNO_H) 396 errno = ENOMEM; 397 #endif 398 return -1; 399 } 313 400 } 314 401 } … … 317 404 cv->chars = cv->allchars[cv->frame]; 318 405 cv->attr = cv->allattr[cv->frame]; 319 } 320 406 407 return 0; 408 } 409 -
libcaca/trunk/cucul/cucul.h
r870 r874 73 73 * @{ */ 74 74 cucul_canvas_t * cucul_create_canvas(unsigned int, unsigned int); 75 voidcucul_set_canvas_size(cucul_canvas_t *, unsigned int, unsigned int);75 int cucul_set_canvas_size(cucul_canvas_t *, unsigned int, unsigned int); 76 76 unsigned int cucul_get_canvas_width(cucul_canvas_t *); 77 77 unsigned int cucul_get_canvas_height(cucul_canvas_t *); 78 voidcucul_free_canvas(cucul_canvas_t *);78 int cucul_free_canvas(cucul_canvas_t *); 79 79 int cucul_rand(int, int); 80 80 /* @} */ … … 96 96 * 97 97 * @{ */ 98 voidcucul_set_color(cucul_canvas_t *, unsigned char, unsigned char);99 voidcucul_set_truecolor(cucul_canvas_t *, unsigned int, unsigned int);98 int cucul_set_color(cucul_canvas_t *, unsigned char, unsigned char); 99 int cucul_set_truecolor(cucul_canvas_t *, unsigned int, unsigned int); 100 100 char const *cucul_get_color_name(unsigned int); 101 voidcucul_putchar(cucul_canvas_t *, int, int, char);102 voidcucul_putstr(cucul_canvas_t *, int, int, char const *);103 voidcucul_printf(cucul_canvas_t *, int, int, char const *, ...);104 voidcucul_clear_canvas(cucul_canvas_t *);101 int cucul_putchar(cucul_canvas_t *, int, int, char); 102 int cucul_putstr(cucul_canvas_t *, int, int, char const *); 103 int cucul_printf(cucul_canvas_t *, int, int, char const *, ...); 104 int cucul_clear_canvas(cucul_canvas_t *); 105 105 int cucul_blit(cucul_canvas_t *, int, int, cucul_canvas_t const *, cucul_canvas_t const *); 106 106 /* @} */ -
libcaca/trunk/cucul/cucul_internals.h
r859 r874 51 51 52 52 /* Canvas functions */ 53 extern void_cucul_set_canvas_size(cucul_canvas_t *, unsigned int, unsigned int);53 extern int _cucul_set_canvas_size(cucul_canvas_t *, unsigned int, unsigned int); 54 54 extern void _cucul_putchar32(cucul_canvas_t *, int, int, uint32_t); 55 55
Note: See TracChangeset
for help on using the changeset viewer.