aboutsummaryrefslogtreecommitdiff
path: root/generic/Item.c
diff options
context:
space:
mode:
authorlecoanet2003-01-14 10:58:04 +0000
committerlecoanet2003-01-14 10:58:04 +0000
commit2e9c6c373643b048bedbe538d0ef41f11d8d557f (patch)
tree1a0b9bf247fbe21832bde3d42430f48325e45ea9 /generic/Item.c
parent03d363068d49fea792640a015a24644b81efffe6 (diff)
downloadtkzinc-2e9c6c373643b048bedbe538d0ef41f11d8d557f.zip
tkzinc-2e9c6c373643b048bedbe538d0ef41f11d8d557f.tar.gz
tkzinc-2e9c6c373643b048bedbe538d0ef41f11d8d557f.tar.bz2
tkzinc-2e9c6c373643b048bedbe538d0ef41f11d8d557f.tar.xz
Traite le nouvel attribut -fillrule.
Diffstat (limited to 'generic/Item.c')
-rw-r--r--generic/Item.c56
1 files changed, 56 insertions, 0 deletions
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);