From 2e9c6c373643b048bedbe538d0ef41f11d8d557f Mon Sep 17 00:00:00 2001 From: lecoanet Date: Tue, 14 Jan 2003 10:58:04 +0000 Subject: Traite le nouvel attribut -fillrule. --- generic/Item.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) (limited to 'generic/Item.c') diff --git a/generic/Item.c b/generic/Item.c index c66e7b4..9df6130 100644 --- a/generic/Item.c +++ b/generic/Item.c @@ -97,6 +97,7 @@ static char *attribute_type_strings[] = { "gradientlist", "window", "alpha", + "fillrule", }; @@ -842,6 +843,38 @@ ZnConfigureAttributes(WidgetInfo *wi, } break; } + case ZN_CONFIG_FILL_RULE: + { + int fill_rule; + int len; + str = Tcl_GetString(args[i+1]); + len = strlen(str); + if (strncasecmp(str, "odd", len) == 0) { + fill_rule = GLU_TESS_WINDING_ODD; + } + else if (strncasecmp(str, "nonzero", len) == 0) { + fill_rule = GLU_TESS_WINDING_NONZERO; + } + else if (strncasecmp(str, "positive", len) == 0) { + fill_rule = GLU_TESS_WINDING_POSITIVE; + } + else if (strncasecmp(str, "negative", len) == 0) { + fill_rule = GLU_TESS_WINDING_NEGATIVE; + } + else if (strncasecmp(str, "abs_geq_2", len) == 0) { + fill_rule = GLU_TESS_WINDING_ABS_GEQ_TWO; + } + else { + Tcl_AppendResult(wi->interp, " fill rule expected for attribute \"", + Tcl_GetString(args[i]), "\"", NULL); + return ZN_ERROR; + } + if (fill_rule != *((int *) valp)) { + *((int *) valp) = fill_rule; + *flags |= desc->flags; + } + break; + } case ZN_CONFIG_ALIGNMENT: { Tk_Justify justify; @@ -1239,6 +1272,29 @@ AttributeToObj(WidgetInfo *wi, Tcl_SetStringObj(result, str, strlen(str)); break; } + case ZN_CONFIG_FILL_RULE: + { + int fill_rule = *((int *) valp); + switch (fill_rule) { + case GLU_TESS_WINDING_ODD: + str = "odd"; + break; + case GLU_TESS_WINDING_NONZERO: + str = "nonzero"; + break; + case GLU_TESS_WINDING_POSITIVE: + str = "positive"; + break; + case GLU_TESS_WINDING_NEGATIVE: + str = "negative"; + break; + case GLU_TESS_WINDING_ABS_GEQ_TWO: + str = "abs_geq_2"; + break; + } + Tcl_SetStringObj(result, str, strlen(str)); + break; + } case ZN_CONFIG_LINE_STYLE: { LineStyle line_style = *((LineStyle *) valp); -- cgit v1.1