return;
}
if(r[0]<0 || phase<0) {
- fprintf(stderr, "gfxtool: invalid (negative) dashes: %f, phase=%f", r[0], phase);
+ fprintf(stderr, "gfxtool: invalid (negative) dashes: %f, phase=%f\n", r[0], phase);
return;
}
void gfxmatrix_dump(gfxmatrix_t*m, FILE*fi, char*prefix)
{
- fprintf(fi, "%f %f | %f\n", m->m00, m->m10, m->tx);
- fprintf(fi, "%f %f | %f\n", m->m01, m->m11, m->ty);
+ fprintf(fi, "%s%f %f | %f\n", prefix, m->m00, m->m10, m->tx);
+ fprintf(fi, "%s%f %f | %f\n", prefix, m->m01, m->m11, m->ty);
}
void gfxmatrix_transform(gfxmatrix_t*m, double* v, double*dest)
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;t<size;t++) {
- data[s+0] = img->data[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);
+ free(params);
}