Changeset 1237
- Timestamp:
- Oct 26, 2006, 11:04:55 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/cucul/export.c
r1229 r1237 32 32 #include "cucul_internals.h" 33 33 34 static voidexport_caca(cucul_canvas_t *, cucul_buffer_t *);35 static voidexport_ansi(cucul_canvas_t *, cucul_buffer_t *);36 static voidexport_utf8(cucul_canvas_t *, cucul_buffer_t *);37 static voidexport_html(cucul_canvas_t *, cucul_buffer_t *);38 static voidexport_html3(cucul_canvas_t *, cucul_buffer_t *);39 static voidexport_irc(cucul_canvas_t *, cucul_buffer_t *);40 static voidexport_ps(cucul_canvas_t *, cucul_buffer_t *);41 static voidexport_svg(cucul_canvas_t *, cucul_buffer_t *);42 static voidexport_tga(cucul_canvas_t *, cucul_buffer_t *);34 static int export_caca(cucul_canvas_t *, cucul_buffer_t *); 35 static int export_ansi(cucul_canvas_t *, cucul_buffer_t *); 36 static int export_utf8(cucul_canvas_t *, cucul_buffer_t *); 37 static int export_html(cucul_canvas_t *, cucul_buffer_t *); 38 static int export_html3(cucul_canvas_t *, cucul_buffer_t *); 39 static int export_irc(cucul_canvas_t *, cucul_buffer_t *); 40 static int export_ps(cucul_canvas_t *, cucul_buffer_t *); 41 static int export_svg(cucul_canvas_t *, cucul_buffer_t *); 42 static int export_tga(cucul_canvas_t *, cucul_buffer_t *); 43 43 44 44 /** \brief Export a canvas into a foreign format. … … 61 61 * 62 62 * If an error occurs, NULL is returned and \b errno is set accordingly: 63 * - \c EINVAL Invalid format requested.63 * - \c EINVAL Unsupported format requested. 64 64 * - \c ENOMEM Not enough memory to allocate output buffer. 65 65 * … … 71 71 { 72 72 cucul_buffer_t *ex; 73 int ret = -1; 73 74 74 75 ex = malloc(sizeof(cucul_buffer_t)); … … 86 87 87 88 if(!strcasecmp("caca", format)) 88 export_caca(cv, ex);89 ret = export_caca(cv, ex); 89 90 else if(!strcasecmp("ansi", format)) 90 export_ansi(cv, ex);91 ret = export_ansi(cv, ex); 91 92 else if(!strcasecmp("utf8", format)) 92 export_utf8(cv, ex);93 ret = export_utf8(cv, ex); 93 94 else if(!strcasecmp("html", format)) 94 export_html(cv, ex);95 ret = export_html(cv, ex); 95 96 else if(!strcasecmp("html3", format)) 96 export_html3(cv, ex);97 ret = export_html3(cv, ex); 97 98 else if(!strcasecmp("irc", format)) 98 export_irc(cv, ex);99 ret = export_irc(cv, ex); 99 100 else if(!strcasecmp("ps", format)) 100 export_ps(cv, ex);101 ret = export_ps(cv, ex); 101 102 else if(!strcasecmp("svg", format)) 102 export_svg(cv, ex);103 ret = export_svg(cv, ex); 103 104 else if(!strcasecmp("tga", format)) 104 export_tga(cv, ex);105 106 if( ex->size ==0)105 ret = export_tga(cv, ex); 106 107 if(ret < 0) 107 108 { 108 109 free(ex); … … 151 152 152 153 /* Generate a native libcaca canvas file. */ 153 static voidexport_caca(cucul_canvas_t *cv, cucul_buffer_t *ex)154 static int export_caca(cucul_canvas_t *cv, cucul_buffer_t *ex) 154 155 { 155 156 uint32_t *attr = cv->attr; … … 189 190 *cur++ = a & 0xff; 190 191 } 192 193 return 0; 191 194 } 192 195 193 196 /* Generate UTF-8 representation of current canvas. */ 194 static voidexport_utf8(cucul_canvas_t *cv, cucul_buffer_t *ex)197 static int export_utf8(cucul_canvas_t *cv, cucul_buffer_t *ex) 195 198 { 196 199 static uint8_t const palette[] = … … 266 269 ex->size = (uintptr_t)(cur - ex->data); 267 270 ex->data = realloc(ex->data, ex->size); 271 272 return 0; 268 273 } 269 274 270 275 /* Generate ANSI representation of current canvas. */ 271 static voidexport_ansi(cucul_canvas_t *cv, cucul_buffer_t *ex)276 static int export_ansi(cucul_canvas_t *cv, cucul_buffer_t *ex) 272 277 { 273 278 static uint8_t const palette[] = … … 342 347 ex->size = (uintptr_t)(cur - ex->data); 343 348 ex->data = realloc(ex->data, ex->size); 349 350 return 0; 344 351 } 345 352 346 353 /* Generate HTML representation of current canvas. */ 347 static voidexport_html(cucul_canvas_t *cv, cucul_buffer_t *ex)354 static int export_html(cucul_canvas_t *cv, cucul_buffer_t *ex) 348 355 { 349 356 char *cur; … … 406 413 ex->size = strlen(ex->data) + 1; 407 414 ex->data = realloc(ex->data, ex->size); 415 416 return 0; 408 417 } 409 418 … … 412 421 * will not work under gecko (mozilla rendering engine) unless you set a 413 422 * correct header. */ 414 static voidexport_html3(cucul_canvas_t *cv, cucul_buffer_t *ex)423 static int export_html3(cucul_canvas_t *cv, cucul_buffer_t *ex) 415 424 { 416 425 char *cur; … … 480 489 ex->size = (uintptr_t)(cur - ex->data); 481 490 ex->data = realloc(ex->data, ex->size); 491 492 return 0; 482 493 } 483 494 484 495 /* Export a text file with IRC colours */ 485 static voidexport_irc(cucul_canvas_t *cv, cucul_buffer_t *ex)496 static int export_irc(cucul_canvas_t *cv, cucul_buffer_t *ex) 486 497 { 487 498 static uint8_t const palette[] = … … 579 590 ex->size = (uintptr_t)(cur - ex->data); 580 591 ex->data = realloc(ex->data, ex->size); 592 593 return 0; 581 594 } 582 595 583 596 /* Export a PostScript document. */ 584 static voidexport_ps(cucul_canvas_t *cv, cucul_buffer_t *ex)597 static int export_ps(cucul_canvas_t *cv, cucul_buffer_t *ex) 585 598 { 586 599 static char const *ps_header = … … 613 626 614 627 /* 200 is arbitrary but should be ok */ 615 ex->size = strlen(ps_header) + (cv->width * cv->height* 200);628 ex->size = strlen(ps_header) + 100 + cv->height * (32 + cv->width * 200); 616 629 ex->data = malloc(ex->size); 617 630 … … 686 699 ex->size = (uintptr_t)(cur - ex->data); 687 700 ex->data = realloc(ex->data, ex->size); 701 702 return 0; 688 703 } 689 704 690 705 /* Export an SVG vector image */ 691 static voidexport_svg(cucul_canvas_t *cv, cucul_buffer_t *ex)706 static int export_svg(cucul_canvas_t *cv, cucul_buffer_t *ex) 692 707 { 693 708 static char const svg_header[] = … … 702 717 703 718 /* 200 is arbitrary but should be ok */ 704 ex->size = strlen(svg_header) + (cv->width * cv->height * 200);719 ex->size = strlen(svg_header) + 128 + cv->width * cv->height * 200; 705 720 ex->data = malloc(ex->size); 706 721 … … 770 785 ex->size = (uintptr_t)(cur - ex->data); 771 786 ex->data = realloc(ex->data, ex->size); 787 788 return 0; 772 789 } 773 790 774 791 /* Export a TGA image */ 775 static voidexport_tga(cucul_canvas_t *cv, cucul_buffer_t *ex)776 { 777 char const * const * 792 static int export_tga(cucul_canvas_t *cv, cucul_buffer_t *ex) 793 { 794 char const * const *fontlist; 778 795 char * cur; 779 796 cucul_font_t *f; … … 782 799 fontlist = cucul_get_font_list(); 783 800 if(!fontlist[0]) 784 return ;801 return -1; 785 802 786 803 f = cucul_load_font(fontlist[0], 0); … … 826 843 827 844 cucul_free_font(f); 828 } 829 845 846 return 0; 847 } 848
Note: See TracChangeset
for help on using the changeset viewer.