/* not defined in compatibility layer */ static void draw_beziergon (DiaRenderer *self, BezPoint *points, /* Last point must be same as first point */ int numpoints, Color *fill, Color *stroke) { if (fill) _bezier(self, points, numpoints, fill, TRUE, TRUE); if (stroke) _bezier(self, points, numpoints, stroke, FALSE, TRUE); }
static void draw_bezier(DiaRenderer *self, BezPoint *points, int numpoints, Color *stroke) { _bezier(self, points, numpoints, NULL, stroke, FALSE); }
static void fill_bezier(DiaRenderer *self, BezPoint *points, int numpoints, Color *color) { _bezier (self, points, numpoints, color, TRUE); }
static void draw_bezier(DiaRenderer *self, BezPoint *points, int numpoints, Color *color) { _bezier (self, points, numpoints, color, FALSE); }
static void draw_beziergon (DiaRenderer *self, BezPoint *points, int numpoints, Color *fill, Color *stroke) { DiaSvgRenderer *renderer = DIA_SVG_RENDERER (self); /* optimize for stroke-width==0 && fill==stroke */ if ( fill && stroke && renderer->linewidth == 0.0 && memcmp(fill, stroke, sizeof(Color))==0) stroke = NULL; _bezier(self, points, numpoints, fill, stroke, TRUE); }
static void draw_bezier(DiaRenderer *self, BezPoint *points, int numpoints, Color *colour) { #ifndef DIRECT_WMF _bezier(self, points, numpoints, colour, FALSE, FALSE); #else WmfRenderer *renderer = WMF_RENDERER (self); W32::HPEN hPen; W32::POINT * pts; int i; DIAG_NOTE(renderer, "draw_bezier n:%d %fx%f ...\n", numpoints, points->p1.x, points->p1.y); pts = g_new(W32::POINT, (numpoints-1) * 3 + 1); pts[0].x = SCX(points[0].p1.x); pts[0].y = SCY(points[0].p1.y); for (i = 1; i < numpoints; i++) { switch(points[i].type) { case _BezPoint::BEZ_MOVE_TO: g_warning("only first BezPoint can be a BEZ_MOVE_TO"); break; case _BezPoint::BEZ_LINE_TO: /* everyhing the same ?*/ pts[i*3-2].x = pts[i*3-1].x = pts[i*3 ].x = SCX(points[i].p1.x); pts[i*3-2].y = pts[i*3-1].y = pts[i*3 ].y = SCY(points[i].p1.y); break; case _BezPoint::BEZ_CURVE_TO: /* control points */ pts[i*3-2].x = SCX(points[i].p1.x); pts[i*3-2].y = SCY(points[i].p1.y); pts[i*3-1].x = SCX(points[i].p2.x); pts[i*3-1].y = SCY(points[i].p2.y); /* end point */ pts[i*3 ].x = SCX(points[i].p3.x); pts[i*3 ].y = SCY(points[i].p3.y); break; default: break; } } hPen = UsePen(renderer, colour); W32::PolyBezier(renderer->hFileDC, pts, (numpoints-1)*3+1); DonePen(renderer, hPen); g_free(pts); #endif }