From c69d91d204f227f02ddc92cc9c4cf135a526f2c7 Mon Sep 17 00:00:00 2001 From: lecoanet Date: Fri, 15 Mar 2002 14:25:48 +0000 Subject: Ajustement des ressources couleurs pour tenir compte de la g�n�ralisation des gradients. Traitement centralis� des images. Les reliefs ont leur propre alpha. --- generic/Rectangle.c | 41 ++++++++++++----------------------------- 1 file changed, 12 insertions(+), 29 deletions(-) (limited to 'generic/Rectangle.c') diff --git a/generic/Rectangle.c b/generic/Rectangle.c index 8d083a3..6ebc137 100644 --- a/generic/Rectangle.c +++ b/generic/Rectangle.c @@ -197,8 +197,8 @@ Init(Item item, rect->tile_name = ""; rect->tile = ZnUnspecifiedImage; rect->fill_pattern = ZnUnspecifiedPattern; - rect->line_color = ZnGetGradientByValue(wi->fore_gradient); - rect->fill_color = ZnGetGradientByValue(wi->fore_gradient); + rect->line_color = ZnGetGradientByValue(wi->fore_color); + rect->fill_color = ZnGetGradientByValue(wi->fore_color); return ZN_OK; } @@ -222,7 +222,7 @@ Clone(Item item) rect->gradient = ZnGetGradientByValue(rect->gradient); } rect->grad_geo = NULL; - if (strlen(rect->tile_name) != 0) { + if (rect->tile != ZnUnspecifiedImage) { text = ZnMalloc((strlen(rect->tile_name) + 1) * sizeof(char)); strcpy(text, rect->tile_name); rect->tile_name = text; @@ -295,6 +295,8 @@ Configure(Item item, WidgetInfo *wi = item->wi; RectangleItem rect = (RectangleItem) item; int status = ZN_OK; + XColor *color; + int alpha; status = ITEM_P.ConfigureAttributes((char *) item, -1, argc, argv, flags); @@ -304,35 +306,18 @@ Configure(Item item, rect->gradient = NULL; } if ((rect->relief != RELIEF_FLAT) && !rect->gradient) { + color = ZnGetGradientColor(rect->line_color, 51.0, &alpha); rect->gradient = ZnGetReliefGradient(wi->interp, wi->win, - ZnNameOfColor(ZnGetGradientColor(rect->fill_color, - 50.0, - NULL))); + ZnNameOfColor(color), alpha); if (rect->gradient == NULL) { status = ZN_ERROR; } } if (ISSET(*flags, ZN_TILE_FLAG)) { - Tk_Image tile; - - if (strcmp(rect->tile_name, "") != 0) { - tile = Tk_GetImage(wi->interp, wi->win, rect->tile_name, - RectTileChange, (ClientData) rect); - if (tile == NULL) { - /* - * The name will not be in sync with the image in - * this case. - */ - status = ZN_ERROR; - } - } - else { - tile = ZnUnspecifiedImage; - } - if (rect->tile != ZnUnspecifiedImage) { - Tk_FreeImage(rect->tile); + if (ValidateImage(wi, item, rect->tile_name, RectTileChange, + &rect->tile, "rectangle -tile") == ZN_ERROR) { + status = ZN_ERROR; } - rect->tile = tile; } return status; @@ -713,8 +698,6 @@ Render(Item item) } if (rect->line_width) { - color = ZnGetGradientColor(rect->line_color, 0, &alpha); - alpha = ZnComposeAlpha(alpha, wi->alpha); if (rect->relief != RELIEF_FLAT) { ZnPoint p[5]; for (i = 0; i < 4; i++) { @@ -722,8 +705,8 @@ Render(Item item) p[4-i].y = rect->dev[i].y; } p[0] = p[4]; - RenderPolygonRelief(wi, rect->relief, rect->gradient, - alpha, 0, p, 5, rect->line_width); + RenderPolygonRelief(wi, rect->relief, rect->gradient, False, + p, 5, rect->line_width); } else { if ((rect->line_width <= wi->max_line_width) && -- cgit v1.1