Changeset 1079
- Timestamp:
- Sep 22, 2006, 2:20:06 AM (17 years ago)
- Location:
- libcaca/trunk/cucul
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/cucul/canvas.c
r1066 r1079 290 290 } 291 291 292 /** \brief Set a canvas' new boundaries. 293 * 294 * This function sets new boundaries for a canvas. It can be used to crop a 295 * canvas, to expand it or for combinations of both actions. 296 * 297 * If an error occurs, -1 is returned and \b errno is set accordingly: 298 * - \c EBUSY The canvas is in use by a display driver and cannot be resized. 299 * - \c ENOMEM Not enough memory for the requested canvas size. If this 300 * happens, the canvas handle becomes invalid and should not be used. 301 * 302 * \param cv The canvas to crop. 303 * \param x X coordinate of the top-left corner. 304 * \param y Y coordinate of the top-left corner. 305 * \param w The width of the cropped area. 306 * \param h The height of the cropped area. 307 * \return 0 in case of success, -1 if an error occurred. 308 */ 309 int cucul_set_canvas_boundaries(cucul_canvas_t *cv, int x, int y, 310 unsigned int w, unsigned int h) 311 { 312 cucul_canvas_t *new; 313 unsigned int f, saved_f, framecount; 314 315 if(cv->refcount) 316 { 317 #if defined(HAVE_ERRNO_H) 318 errno = EBUSY; 319 #endif 320 return -1; 321 } 322 323 new = cucul_create_canvas(w, h); 324 325 framecount = cucul_get_canvas_frame_count(cv); 326 saved_f = cv->frame; 327 328 for(f = 0; f < framecount; f++) 329 { 330 if(f) 331 cucul_create_canvas_frame(new, framecount); 332 333 cucul_set_canvas_frame(cv, f); 334 cucul_set_canvas_frame(new, f); 335 cucul_blit(new, -x, -y, cv, NULL); 336 337 free(cv->allchars[f]); 338 free(cv->allattr[f]); 339 } 340 341 memcpy(cv, new, sizeof(cucul_canvas_t)); 342 free(new); 343 344 cucul_set_canvas_frame(cv, saved_f); 345 346 return 0; 347 } 348 -
libcaca/trunk/cucul/cucul.h
r1066 r1079 106 106 int cucul_printf(cucul_canvas_t *, int, int, char const *, ...); 107 107 int cucul_clear_canvas(cucul_canvas_t *); 108 int cucul_blit(cucul_canvas_t *, int, int, cucul_canvas_t const *, cucul_canvas_t const *); 108 int cucul_blit(cucul_canvas_t *, int, int, cucul_canvas_t const *, 109 cucul_canvas_t const *); 110 int cucul_set_canvas_boundaries(cucul_canvas_t *, int, int, 111 unsigned int, unsigned int); 109 112 /* @} */ 110 113
Note: See TracChangeset
for help on using the changeset viewer.