From b99f23c5a8e3359c66b50c5bfd056850006dfb75 Mon Sep 17 00:00:00 2001 From: lecoanet Date: Fri, 15 Feb 2002 08:59:37 +0000 Subject: Le type d'attribut DIM devient un flottant. Correction du bug de redimensionnement du label lors d'un changement du contenu d'un des champs. R�am�nagement de la validation des valeurs d'angle. R�am�nagement des flags d'invalidation concernant les attributs des champs impliquant la g�om�trie. L'�paisseur des traits est pass�e en flottant. --- generic/Item.c | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) (limited to 'generic/Item.c') diff --git a/generic/Item.c b/generic/Item.c index 44a07e8..2ac02b0 100644 --- a/generic/Item.c +++ b/generic/Item.c @@ -82,7 +82,7 @@ typedef struct _FieldStruct { Border border_edges; ZnJustify alignment; ReliefStyle relief; - int relief_thickness; + ZnDim relief_thickness; AutoAlign auto_alignment; /* Private data */ @@ -115,7 +115,7 @@ ZnAttrConfig field_attrs[] = { Tk_Offset(FieldStruct, fill_color), 0, ZN_DRAW_FLAG|ZN_BORDER_FLAG, False }, { ZN_CONFIG_BORDER, "-border", NULL, - Tk_Offset(FieldStruct, border_edges), 0, ZN_COORDS_FLAG, False }, + Tk_Offset(FieldStruct, border_edges), 0, ZN_DRAW_FLAG, False }, { ZN_CONFIG_COLOR, "-bordercolor", NULL, Tk_Offset(FieldStruct, border_color), 0, ZN_DRAW_FLAG, False }, { ZN_CONFIG_COLOR, "-color", NULL, @@ -125,21 +125,22 @@ ZnAttrConfig field_attrs[] = { { ZN_CONFIG_PATTERN, "-fillpattern", NULL, Tk_Offset(FieldStruct, fill_pattern), 0, ZN_DRAW_FLAG, False }, { ZN_CONFIG_FONT, "-font", NULL, - Tk_Offset(FieldStruct, font), 0, ZN_DRAW_FLAG|ZN_CLFC_FLAG, False }, + Tk_Offset(FieldStruct, font), 0, ZN_COORDS_FLAG|ZN_CLFC_FLAG, False }, { ZN_CONFIG_IMAGE, "-image", NULL, Tk_Offset(FieldStruct, image_name), 0, ZN_COORDS_FLAG|ZN_IMAGE_FLAG|ZN_CLFC_FLAG, False }, { ZN_CONFIG_RELIEF, "-relief", NULL, - Tk_Offset(FieldStruct, relief), 0, ZN_COORDS_FLAG, False }, + Tk_Offset(FieldStruct, relief), 0, ZN_DRAW_FLAG, False }, { ZN_CONFIG_DIM, "-reliefthickness", NULL, Tk_Offset(FieldStruct, relief_thickness), 0, ZN_DRAW_FLAG, False }, { ZN_CONFIG_BOOL, "-sensitive", NULL, - Tk_Offset(FieldStruct, flags), FIELD_SENSITIVE_BIT, ZN_REPICK_FLAG, False }, + Tk_Offset(FieldStruct, flags), + FIELD_SENSITIVE_BIT, ZN_REPICK_FLAG, False }, { ZN_CONFIG_TEXT, "-text", NULL, Tk_Offset(FieldStruct, text), 0, ZN_COORDS_FLAG|ZN_CLFC_FLAG, False }, { ZN_CONFIG_IMAGE, "-tile", NULL, Tk_Offset(FieldStruct, tile_name), 0, - ZN_COORDS_FLAG|ZN_TILE_FLAG|ZN_CLFC_FLAG, False }, + ZN_COORDS_FLAG|ZN_TILE_FLAG, False }, { ZN_CONFIG_BOOL, "-visible", NULL, Tk_Offset(FieldStruct, flags), FIELD_VISIBLE_BIT, ZN_COORDS_FLAG|ZN_CLFC_FLAG, False }, /* Keep ZN_COORDS_FLAG here */ @@ -902,15 +903,14 @@ ConfigureAttributes(char *record, } case ZN_CONFIG_DIM: { - int size; - if (Tk_GetPixels(wi->interp, wi->win, - Tcl_GetString(args[i+1]), &size) == ZN_ERROR) { + ZnDim dim; + if (Tcl_GetDoubleFromObj(wi->interp, args[i+1], &dim) == ZN_ERROR) { Tcl_AppendResult(wi->interp, " dimension expected for attribute \"", - Tcl_GetString(args[i]), "\"", NULL); + Tcl_GetString(args[i+1]), "\"", NULL); return ZN_ERROR; } - if (size != *((int *) valp)) { - *((int *) valp) = size; + if (dim != *((ZnDim *) valp)) { + *((ZnDim *) valp) = dim; *flags |= desc->flags; } break; @@ -1019,11 +1019,9 @@ ConfigureAttributes(char *record, } switch (desc->type) { case ZN_CONFIG_ANGLE: + integer = integer % 360; if (integer < 0) { - integer = 0; - } - if (integer > 360) { - integer = 360; + integer = 360 + integer; } break; case ZN_CONFIG_UINT: @@ -1518,12 +1516,14 @@ AttributeToObj(WidgetInfo *wi, break; case ZN_CONFIG_INT: case ZN_CONFIG_UINT: - case ZN_CONFIG_DIM: case ZN_CONFIG_PRI: case ZN_CONFIG_ANGLE: case ZN_CONFIG_ALPHA: Tcl_SetIntObj(result, *((int *) valp)); break; + case ZN_CONFIG_DIM: + Tcl_SetDoubleObj(result, *((ZnDim *) valp)); + break; case ZN_CONFIG_JUSTIFY: str = Tk_NameOfJustify(*((ZnJustify *) valp)); Tcl_SetStringObj(result, str, strlen(str)); @@ -2048,6 +2048,7 @@ ClearFieldCache(FieldSet field_set, &x_spec, &y_spec, &width_spec, &height_spec); if ((x_dim != LF_DIM_PIXEL) || (y_dim != LF_DIM_PIXEL)) { CLEAR(field_set->fields[field].flags, CACHE_OK); + clear_bbox = True; } for (i = 0; i < num_fields; i++) { LabelFormatGetField(field_set->label_format, i, @@ -3365,8 +3366,8 @@ PushClip(WidgetInfo *wi, if (set_gc) { if (wi->render) { #ifdef GLX - glEnable(GL_STENCIL_TEST); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + glEnable(GL_STENCIL_TEST); glStencilFunc(GL_EQUAL, num_clips, 0xFF); glStencilOp(GL_KEEP, GL_INCR, GL_INCR); glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); -- cgit v1.1