X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=lib%2Fgfxtools.c;h=36c9508a56347811be1843993b1753468c7a6602;hb=006f7afc9efc533175af7eba679998af948adfa3;hp=55c4925f508663a9a8129d7b930c493c6c8feb67;hpb=0b38eabf882d8bdcd0e92995e8a2478db9cb5ed8;p=swftools.git diff --git a/lib/gfxtools.c b/lib/gfxtools.c index 55c4925..36c9508 100644 --- a/lib/gfxtools.c +++ b/lib/gfxtools.c @@ -1137,18 +1137,46 @@ gfxline_t* gfxline_reverse(gfxline_t*line) return b; } -void gfximage_save_jpeg(gfximage_t*img, char*filename, int quality) +gfxparams_t* gfxparams_new() { - unsigned char*data = malloc(img->width*img->height*3); - int t; - int size = img->width*img->height; - int s = 0; - for(t=0;tdata[t].r; - data[s+1] = img->data[t].g; - data[s+2] = img->data[t].b; - s+=3; + return (gfxparams_t*)rfx_calloc(sizeof(gfxparams_t)); +} + +void gfxparams_store(gfxparams_t*params, const char*key, const char*value) +{ + gfxparam_t*o = params->params; + while(o) { + if(!strcmp(key, o->key)) { + /* overwrite old value */ + free((void*)o->value); + o->value = strdup(value); + return; + } + o = o->next; + } + gfxparam_t*p = (gfxparam_t*)malloc(sizeof(gfxparam_t)); + p->key = strdup(key); + p->value = strdup(value); + p->next = 0; + + if(params->last) { + params->last->next = p; + params->last = p; + } else { + params->params = p; + params->last = p; + } +} + +void gfxparams_free(gfxparams_t*params) +{ + gfxparam_t*p = params->params; + while(p) { + gfxparam_t*next = p->next; + free((void*)p->key); + if(p->value) free((void*)p->value); + free(p); + p = next; } - jpeg_save(data, img->width, img->height, quality, filename); }