aboutsummaryrefslogtreecommitdiff
path: root/generic/Arc.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/Arc.c')
-rw-r--r--generic/Arc.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/generic/Arc.c b/generic/Arc.c
index 53d6367..155bc06 100644
--- a/generic/Arc.c
+++ b/generic/Arc.c
@@ -1599,17 +1599,21 @@ GetClipVertices(Item item,
ZnTriStrip *tristrip)
{
ArcItem arc = (ArcItem) item;
-
- if (ISCLEAR(arc->flags, USING_POLY_BIT)) {
+ ZnPoint center;
+
+ if (ISCLEAR(arc->flags, USING_POLY_BIT) || !arc->render_shape) {
UpdateRenderShapeX(arc);
SET(arc->flags, USING_POLY_BIT);
}
- TRI_STRIP1(tristrip, ZnListArray(arc->render_shape),
- ZnListSize(arc->render_shape));
- tristrip->fan = True;
- tristrip->center.x = (item->item_bounding_box.corner.x + item->item_bounding_box.orig.x) / 2.0;
- tristrip->center.y = (item->item_bounding_box.corner.y + item->item_bounding_box.orig.y) / 2.0;
+
+ center.x = (item->item_bounding_box.corner.x + item->item_bounding_box.orig.x) / 2.0;
+ center.y = (item->item_bounding_box.corner.y + item->item_bounding_box.orig.y) / 2.0;
+ ZnListEmpty(item->wi->work_pts);
+ ZnListAdd(item->wi->work_pts, &center, ZnListTail);
+ ZnListAppend(item->wi->work_pts, arc->render_shape);
+ TRI_STRIP1(tristrip, ZnListArray(item->wi->work_pts),
+ ZnListSize(item->wi->work_pts), True);
return False;
}
@@ -1636,7 +1640,9 @@ GetContours(Item item,
POLY_CONTOUR1(poly, ZnListArray(arc->render_shape),
ZnListSize(arc->render_shape));
-
+ poly->contour1.cw = 1;
+ poly->contour1.controls = NULL;
+
return False;
}
@@ -1655,6 +1661,7 @@ Coords(Item item,
int index,
int cmd,
ZnPoint **pts,
+ char **controls,
int *num_pts)
{
ArcItem arc = (ArcItem) item;