diff options
Diffstat (limited to 'generic/Arc.c')
-rw-r--r-- | generic/Arc.c | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/generic/Arc.c b/generic/Arc.c index f3699c8..43aeb5c 100644 --- a/generic/Arc.c +++ b/generic/Arc.c @@ -73,8 +73,7 @@ typedef struct _ArcItemStruct { int angle_extent; Pixmap line_pattern; Pixmap fill_pattern; - ZnColorGradient fill_color; - ZnGradientGeom grad_geom; + ZnGradient *fill_color; ZnColor line_color; int line_width; LineStyle line_style; @@ -112,7 +111,7 @@ static ZnAttrConfig arc_attrs[] = { Tk_Offset(ArcItemStruct, angle_extent), 0, ZN_COORDS_FLAG, False }, { ZN_CONFIG_UINT, "-fillalpha", NULL, Tk_Offset(ArcItemStruct, fill_alpha), 0, ZN_DRAW_FLAG, False }, - { ZN_CONFIG_GRADIENT_COLOR, "-fillcolor", NULL, + { ZN_CONFIG_GRADIENT, "-fillcolor", NULL, Tk_Offset(ArcItemStruct, fill_color), 0, ZN_DRAW_FLAG, False }, { ZN_CONFIG_BOOL, "-filled", NULL, Tk_Offset(ArcItemStruct, flags), FILLED_BIT, ZN_COORDS_FLAG, False }, @@ -120,8 +119,6 @@ static ZnAttrConfig arc_attrs[] = { Tk_Offset(ArcItemStruct, fill_pattern), 0, ZN_DRAW_FLAG, False }, { ZN_CONFIG_LINE_END, "-firstend", NULL, Tk_Offset(ArcItemStruct, first_end), 0, ZN_COORDS_FLAG, False }, - { ZN_CONFIG_GRADIENT_GEOM, "-gradient", NULL, - Tk_Offset(ArcItemStruct, grad_geom), 0, ZN_COORDS_FLAG, False }, { ZN_CONFIG_LINE_END, "-lastend", NULL, Tk_Offset(ArcItemStruct, last_end), 0, ZN_COORDS_FLAG, False }, { ZN_CONFIG_UINT, "-linealpha", NULL, @@ -237,11 +234,10 @@ Init(Item item, (*argc)--; arc->fill_alpha = 255; - arc->fill_color = ZnGetColorGradient(wi->interp, wi->win, - ZnNameOfColor(wi->fore_color)); + arc->fill_color = ZnGetGradient(wi->interp, wi->win, + ZnNameOfColor(wi->fore_color)); arc->line_alpha = 255; arc->line_color = ZnGetColorByValue(wi->win, wi->fore_color); - arc->grad_geom = NULL; #ifdef LIBART arc->outline_svp = arc->fill_svp = NULL; #endif @@ -286,10 +282,7 @@ Clone(Item item) Tk_NameOfBitmap(wi->dpy, arc->fill_pattern)); } arc->line_color = ZnGetColorByValue(wi->win, arc->line_color); - arc->fill_color = ZnGetColorGradientByValue(arc->fill_color); - if (arc->grad_geom) { - arc->grad_geom = GradientGeomDuplicate(arc->grad_geom); - } + arc->fill_color = ZnGetGradientByValue(arc->fill_color); #ifdef LIBART arc->outline_svp = arc->fill_svp = NULL; #endif @@ -340,11 +333,8 @@ Destroy(Item item) if (arc->fill_pattern != ZnUnspecifiedPattern) { Tk_FreeBitmap(wi->dpy, arc->fill_pattern); } - ZnFreeColorGradient(arc->fill_color); + ZnFreeGradient(arc->fill_color); ZnFreeColor(arc->line_color); - if (arc->grad_geom) { - GradientGeomDelete(arc->grad_geom); - } } @@ -534,7 +524,7 @@ ComputeCoordinates(Item item, width_2 = (arc->coords[1].x - arc->coords[0].x)/2.0; height_2 = (arc->coords[1].y - arc->coords[0].y)/2.0; if (((angle >= PRECISION_LIMIT) && ((width_2 - height_2) > PRECISION_LIMIT)) || - arc->grad_geom || wi->render) { + !ZnGradientFlat(arc->fill_color) || wi->render) { SET(arc->flags, USING_POLY_BIT); if (!arc->render_shape) { arc->render_shape = ZnListNew(4, sizeof(ZnPoint)); @@ -1067,14 +1057,15 @@ Draw(Item item) /* Fill if requested */ if (ISSET(arc->flags, FILLED_BIT)) { - if (arc->grad_geom) { + if (!ZnGradientFlat(arc->fill_color)) { ZnPoly poly; POLY_CONTOUR1(&poly, p, num_points); - DrawPolygonGradient(wi, arc->grad_geom, arc->fill_color, &poly, + DrawPolygonGradient(wi, arc->fill_color, &poly, &item->item_bounding_box); } else { - values.foreground = ZnPixel(ZnColorGradientMidColor(wi->win, arc->fill_color)); + values.foreground = ZnPixel(ZnGetGradientColor(wi->win, + arc->fill_color, 50.0)); values.arc_mode = ISSET(arc->flags, PIE_SLICE_BIT) ? ArcPieSlice : ArcChord; if (arc->tile != ZnUnspecifiedImage) { /* Fill Tiled */ Pixmap pmap = GetImagePixmap(wi->win, arc->tile_name, arc->tile, NULL); @@ -1232,7 +1223,7 @@ Render(Item item) #ifdef LIBART WidgetInfo *wi = item->wi; ArcItem arc = (ArcItem) item; - XColor *color = ZnColorGradientMidColor(wi->win, arc->fill_color); + XColor *color = ZnGetGradientColor(wi->win, arc->fill_color, 50.0); ArtPixBuf *pixbuf = NULL; if (arc->fill_svp != NULL) { |