From 30d759dca916b6ac62eebeaf420d0318f3491d1f Mon Sep 17 00:00:00 2001 From: kramm Date: Sun, 22 Jan 2006 13:51:06 +0000 Subject: [PATCH] automatically add a moveTo (0,0) to the start of a gfxline, if required --- lib/gfxtools.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lib/gfxtools.c b/lib/gfxtools.c index 77088ee..60d3f30 100644 --- a/lib/gfxtools.c +++ b/lib/gfxtools.c @@ -56,9 +56,17 @@ 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 = rfx_alloc(sizeof(gfxline_t)); + + if(!i->start) { + /* starts with a line, not with a moveto. That needs we first + need an explicit moveto to (0,0) */ + linedraw_moveTo(d, 0, 0); + } + l->type = gfx_lineTo; d->x = l->x = x; d->y = l->y = y; + l->next = 0; if(i->next) i->next->next = l; @@ -70,6 +78,13 @@ static void linedraw_splineTo(gfxdrawer_t*d, gfxcoord_t sx, gfxcoord_t sy, gfxco { linedraw_internal_t*i = (linedraw_internal_t*)d->internal; gfxline_t*l = rfx_alloc(sizeof(gfxline_t)); + + if(!i->start) { + /* starts with a line, not with a moveto. That needs we first + need an explicit moveto to (0,0) */ + linedraw_moveTo(d, 0, 0); + } + l->type = gfx_splineTo; d->x = l->x = x; d->y = l->y = y; @@ -94,6 +109,8 @@ static void* linedraw_result(gfxdrawer_t*d) void gfxdrawer_target_gfxline(gfxdrawer_t*d) { linedraw_internal_t*i = (linedraw_internal_t*)rfx_calloc(sizeof(linedraw_internal_t)); + d->x = 0x7fffffff; + d->y = 0x7fffffff; d->internal = i; d->moveTo = linedraw_moveTo; d->lineTo = linedraw_lineTo; -- 1.7.10.4