Ignore:
Timestamp:
Apr 22, 2006, 9:10:41 PM (15 years ago)
Author:
Sam Hocevar
Message:
  • Added a simple "text" importer, until the cool ANSI importer arrives.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/cucul/import.c

    r829 r841  
    2828
    2929static cucul_canvas_t *import_caca(void const *, unsigned int);
     30static cucul_canvas_t *import_text(void const *, unsigned int);
    3031
    3132/** \brief Import a buffer into a canvas
     
    4950    if(!strcasecmp("caca", format))
    5051        return import_caca(data, size);
     52    if(!strcasecmp("text", format))
     53        return import_text(data, size);
    5154
    5255    /* FIXME: Try to autodetect */
     
    7174    {
    7275        "", "autodetect",
     76        "text", "plain text",
    7377        "caca", "native libcaca format",
    7478        NULL, NULL
     
    128132}
    129133
     134static cucul_canvas_t *import_text(void const *data, unsigned int size)
     135{
     136    cucul_canvas_t *cv;
     137    char const *text = (char const *)data;
     138    unsigned int width = 1, height = 1, x = 0, y = 0, i;
     139
     140    cv = cucul_create_canvas(width, height);
     141    cucul_set_color(cv, CUCUL_COLOR_DEFAULT, CUCUL_COLOR_TRANSPARENT);
     142
     143    for(i = 0; i < size; i++)
     144    {
     145        unsigned char ch = *text++;
     146
     147        if(ch == '\r')
     148            continue;
     149
     150        if(ch == '\n')
     151        {
     152            x = 0;
     153            y++;
     154            continue;
     155        }
     156
     157        while(x >= width)
     158        {
     159            width++;
     160            cucul_set_canvas_size(cv, width, height);
     161        }
     162
     163        while(y >= height)
     164        {
     165            height++;
     166            cucul_set_canvas_size(cv, width, height);
     167        }
     168
     169        cucul_putchar(cv, x, y, ch);
     170        x++;
     171    }
     172
     173    return cv;
     174}
     175
Note: See TracChangeset for help on using the changeset viewer.