#include <assert.h>
#include "gfxtools.h"
#include "gfxfont.h"
+#include "jpeg.h"
typedef struct _linedraw_internal
{
static void linedraw_lineTo(gfxdrawer_t*d, gfxcoord_t x, gfxcoord_t y)
{
linedraw_internal_t*i = (linedraw_internal_t*)d->internal;
- gfxline_t*l = (gfxline_t*)rfx_alloc(sizeof(gfxline_t));
-
if(!i->has_moveto) {
/* starts with a line, not with a moveto. As this is the first
entry in the list, this is probably *meant* to be a moveto */
linedraw_moveTo(d, x, y);
return;
}
-
+
+ gfxline_t*l = (gfxline_t*)rfx_alloc(sizeof(gfxline_t));
l->type = gfx_lineTo;
d->x = l->x = x;
d->y = l->y = y;
static void linedraw_splineTo(gfxdrawer_t*d, gfxcoord_t sx, gfxcoord_t sy, gfxcoord_t x, gfxcoord_t y)
{
linedraw_internal_t*i = (linedraw_internal_t*)d->internal;
- gfxline_t*l = (gfxline_t*)rfx_alloc(sizeof(gfxline_t));
-
if(!i->has_moveto) {
linedraw_moveTo(d, x, y);
return;
}
+ gfxline_t*l = (gfxline_t*)rfx_alloc(sizeof(gfxline_t));
l->type = gfx_splineTo;
d->x = l->x = x;
d->y = l->y = y;
}
return 0;
}
-gfxfontlist_t*gfxfontlist_addfont(gfxfontlist_t*list, gfxfont_t*font)
+void*gfxfontlist_getuserdata(gfxfontlist_t*list, const char*id)
+{
+ gfxfontlist_t*l = list;
+ while(l) {
+ if(!strcmp((char*)l->font->id, id)) {
+ return l->user;
+ }
+ l = l->next;
+ }
+ return 0;
+}
+gfxfontlist_t*gfxfontlist_addfont2(gfxfontlist_t*list, gfxfont_t*font, void*user)
{
gfxfontlist_t*last=0,*l = list;
while(l) {
}
l = (gfxfontlist_t*)rfx_calloc(sizeof(gfxfontlist_t));
l->font = font;
+ l->user = user;
l->next = 0;
if(last) {
last->next = l;
return l;
}
}
+gfxfontlist_t*gfxfontlist_addfont(gfxfontlist_t*list, gfxfont_t*font)
+{
+ return gfxfontlist_addfont2(list, font, 0);
+}
void gfxfontlist_free(gfxfontlist_t*list, char deletefonts)
{
gfxfontlist_t*l = list;
}
}
-gfxline_t*gfxline_makerectangle(int x1,int y1,int x2, int y2)
+gfxline_t*gfxline_makerectangle(double x1,double y1,double x2, double y2)
{
gfxline_t* line = (gfxline_t*)rfx_calloc(sizeof(gfxline_t)*5);
line[0].x = x1;line[0].y = y1;line[0].type = gfx_moveTo;line[0].next = &line[1];
}
}
+void gfximage_save_jpeg(gfximage_t*img, char*filename, int quality)
+{
+ 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;
+ }
+ jpeg_save(data, img->width, img->height, quality, filename);
+}
+