From 3261805fee19e346b4d1f84b23816daa1628764a Mon Sep 17 00:00:00 2001 From: lecoanet Date: Wed, 16 Apr 2003 09:49:22 +0000 Subject: Update from the Windows port and general cleanup/restructure --- generic/Track.c | 1223 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 626 insertions(+), 597 deletions(-) (limited to 'generic/Track.c') diff --git a/generic/Track.c b/generic/Track.c index ab3a79e..95f6ac1 100644 --- a/generic/Track.c +++ b/generic/Track.c @@ -27,12 +27,12 @@ */ +#include "Types.h" #include "Track.h" #include "Draw.h" #include "Geo.h" #include "Item.h" #include "Group.h" -#include "Types.h" #include "WidgetInfo.h" #include "Image.h" #include "tkZinc.h" @@ -50,6 +50,17 @@ static const char compile_id[]="$Compile: " __FILE__ " " __DATE__ " " __TIME__ " */ #undef DP +/* + * Some default values +*/ +#define DEFAULT_MARKER_SIZE 0 +#define DEFAULT_LABEL_ANGLE 20 +#define DEFAULT_LABEL_DISTANCE 50 +#define DEFAULT_LINE_WIDTH 1 +#define DEFAULT_LABEL_PREFERRED_ANGLE 0 +#define DEFAULT_CONVERGENCE_STYLE 0 +#define DEFAULT_VISIBLE_HISTORY_SIZE 6 + #define SPEED_VECTOR_PICKING_THRESHOLD 5 /* In pixels */ /* @@ -76,12 +87,12 @@ static const char compile_id[]="$Compile: " __FILE__ " " __DATE__ " " __TIME__ " /* - ********************************************************************************** - * - * Specific Track item record - * - ********************************************************************************** - */ +********************************************************************************** +* +* Specific Track item record +* +********************************************************************************** +*/ typedef struct { ZnPoint world; /* world coord of pos */ ZnPoint dev; /* dev coord of pos */ @@ -89,7 +100,7 @@ typedef struct { } HistoryStruct, *History; typedef struct _TrackItemStruct { - ItemStruct header; + ZnItemStruct header; /* Public data */ unsigned short flags; @@ -101,30 +112,30 @@ typedef struct _TrackItemStruct { ZnDim label_dy; int label_preferred_angle; int label_convergence_style; - ZnAnchor label_anchor; - LeaderAnchors leader_anchors; /* Spec of the leader attachment */ + Tk_Anchor label_anchor; + ZnLeaderAnchors leader_anchors; /* Spec of the leader attachment */ ZnGradient *leader_color; /* leader color */ - LineStyle leader_style; - LineShape leader_shape; + ZnLineStyle leader_style; + ZnLineShape leader_shape; ZnLineEnd leader_first_end; ZnLineEnd leader_last_end; ZnDim leader_width; ZnDim marker_size; /* world size of error circle */ ZnGradient *marker_color; /* error circle color */ - LineStyle marker_style; /* error circle style */ + ZnLineStyle marker_style; /* error circle style */ ZnImage marker_fill_pattern; /* error circle fill pattern */ ZnGradient *connection_color; /* connection color */ - LineStyle connection_style; + ZnLineStyle connection_style; ZnDim connection_width; ZnGradient *speed_vector_color; /* s. v. color */ - int visible_history_size; /* Number of visible positions */ + unsigned int visible_history_size; /* Number of visible positions */ ZnPoint pos; /* item world coordinates */ ZnPoint speed_vector; /* s. v. slope in world coord */ ZnDim speed_vector_width; ZnGradient *history_color; /* Private data */ - FieldSetStruct field_set; + ZnFieldSetStruct field_set; ZnPoint dev; /* device coords of current pos */ ZnPoint speed_vector_dev; /* s. v. end in device coord */ ZnDim marker_size_dev; /* dev size of error circle */ @@ -137,13 +148,13 @@ static ZnAttrConfig track_attrs[] = { { ZN_CONFIG_BOOL, "-circlehistory", NULL, Tk_Offset(TrackItemStruct, flags), CIRCLE_HISTORY_BIT, ZN_DRAW_FLAG, False }, { ZN_CONFIG_BOOL, "-composealpha", NULL, - Tk_Offset(TrackItemStruct, header.flags), COMPOSE_ALPHA_BIT, + Tk_Offset(TrackItemStruct, header.flags), ZN_COMPOSE_ALPHA_BIT, ZN_DRAW_FLAG, False }, { ZN_CONFIG_BOOL, "-composerotation", NULL, - Tk_Offset(TrackItemStruct, header.flags), COMPOSE_ROTATION_BIT, + Tk_Offset(TrackItemStruct, header.flags), ZN_COMPOSE_ROTATION_BIT, ZN_COORDS_FLAG, False }, { ZN_CONFIG_BOOL, "-composescale", NULL, - Tk_Offset(TrackItemStruct, header.flags), COMPOSE_SCALE_BIT, + Tk_Offset(TrackItemStruct, header.flags), ZN_COMPOSE_SCALE_BIT, ZN_COORDS_FLAG, False }, { ZN_CONFIG_ITEM, "-connecteditem", NULL, Tk_Offset(TrackItemStruct, header.connected_item), 0, @@ -151,7 +162,7 @@ static ZnAttrConfig track_attrs[] = { { ZN_CONFIG_GRADIENT, "-connectioncolor", NULL, Tk_Offset(TrackItemStruct, connection_color), 0, ZN_DRAW_FLAG, False }, { ZN_CONFIG_BOOL, "-connectionsensitive", NULL, - Tk_Offset(TrackItemStruct, header.part_sensitive), PART_NUMBER_TO_BIT(CONNECTION), + Tk_Offset(TrackItemStruct, header.part_sensitive), ZnPartToBit(CONNECTION), ZN_REPICK_FLAG, False }, { ZN_CONFIG_LINE_STYLE, "-connectionstyle", NULL, Tk_Offset(TrackItemStruct, connection_style), 0, ZN_DRAW_FLAG, False }, @@ -197,7 +208,7 @@ static ZnAttrConfig track_attrs[] = { { ZN_CONFIG_LINE_END, "-leaderlastend", NULL, Tk_Offset(TrackItemStruct, leader_last_end), 0, ZN_COORDS_FLAG, False }, { ZN_CONFIG_BOOL, "-leadersensitive", NULL, - Tk_Offset(TrackItemStruct, header.part_sensitive), PART_NUMBER_TO_BIT(LEADER), + Tk_Offset(TrackItemStruct, header.part_sensitive), ZnPartToBit(LEADER), ZN_REPICK_FLAG, False }, { ZN_CONFIG_LINE_STYLE, "-leaderstyle", NULL, Tk_Offset(TrackItemStruct, leader_style), 0, ZN_DRAW_FLAG, False }, @@ -223,7 +234,7 @@ static ZnAttrConfig track_attrs[] = { Tk_Offset(TrackItemStruct, header.priority), 0, ZN_DRAW_FLAG|ZN_REPICK_FLAG, False }, { ZN_CONFIG_BOOL, "-sensitive", NULL, - Tk_Offset(TrackItemStruct, header.flags), SENSITIVE_BIT, ZN_REPICK_FLAG, False }, + Tk_Offset(TrackItemStruct, header.flags), ZN_SENSITIVE_BIT, ZN_REPICK_FLAG, False }, { ZN_CONFIG_POINT, "-speedvector", NULL, Tk_Offset(TrackItemStruct, speed_vector), 0, ZN_COORDS_FLAG, False }, { ZN_CONFIG_GRADIENT, "-speedvectorcolor", NULL, @@ -231,7 +242,7 @@ static ZnAttrConfig track_attrs[] = { { ZN_CONFIG_BOOL, "-speedvectormark", NULL, Tk_Offset(TrackItemStruct, flags), SV_MARK_BIT, ZN_COORDS_FLAG, False }, { ZN_CONFIG_BOOL, "-speedvectorsensitive", NULL, - Tk_Offset(TrackItemStruct, header.part_sensitive), PART_NUMBER_TO_BIT(SPEED_VECTOR), + Tk_Offset(TrackItemStruct, header.part_sensitive), ZnPartToBit(SPEED_VECTOR), ZN_REPICK_FLAG, False }, { ZN_CONFIG_BOOL, "-speedvectorticks", NULL, Tk_Offset(TrackItemStruct, flags), SV_TICKS_BIT, ZN_DRAW_FLAG, False }, @@ -242,28 +253,28 @@ static ZnAttrConfig track_attrs[] = { { ZN_CONFIG_GRADIENT, "-symbolcolor", NULL, Tk_Offset(TrackItemStruct, symbol_color), 0, ZN_DRAW_FLAG, False }, { ZN_CONFIG_BOOL, "-symbolsensitive", NULL, - Tk_Offset(TrackItemStruct, header.part_sensitive), PART_NUMBER_TO_BIT(CURRENT_POSITION), + Tk_Offset(TrackItemStruct, header.part_sensitive), ZnPartToBit(CURRENT_POSITION), ZN_REPICK_FLAG, False }, { ZN_CONFIG_TAG_LIST, "-tags", NULL, Tk_Offset(TrackItemStruct, header.tags), 0, 0, False }, { ZN_CONFIG_BOOL, "-visible", NULL, - Tk_Offset(TrackItemStruct, header.flags), VISIBLE_BIT, + Tk_Offset(TrackItemStruct, header.flags), ZN_VISIBLE_BIT, ZN_DRAW_FLAG|ZN_REPICK_FLAG|ZN_VIS_FLAG, False }, { ZN_CONFIG_UINT, "-visiblehistorysize", NULL, Tk_Offset(TrackItemStruct, visible_history_size), 0, ZN_DRAW_FLAG, False }, - { ZN_CONFIG_END, NULL, NULL, 0, 0, 0 } + { ZN_CONFIG_END, NULL, NULL, 0, 0, 0, False } }; static ZnAttrConfig wp_attrs[] = { { ZN_CONFIG_BOOL, "-composealpha", NULL, - Tk_Offset(TrackItemStruct, header.flags), COMPOSE_ALPHA_BIT, + Tk_Offset(TrackItemStruct, header.flags), ZN_COMPOSE_ALPHA_BIT, ZN_DRAW_FLAG, False }, { ZN_CONFIG_BOOL, "-composerotation", NULL, - Tk_Offset(TrackItemStruct, header.flags), COMPOSE_ROTATION_BIT, + Tk_Offset(TrackItemStruct, header.flags), ZN_COMPOSE_ROTATION_BIT, ZN_COORDS_FLAG, False }, { ZN_CONFIG_BOOL, "-composescale", NULL, - Tk_Offset(TrackItemStruct, header.flags), COMPOSE_SCALE_BIT, + Tk_Offset(TrackItemStruct, header.flags), ZN_COMPOSE_SCALE_BIT, ZN_COORDS_FLAG, False }, { ZN_CONFIG_ITEM, "-connecteditem", NULL, Tk_Offset(TrackItemStruct, header.connected_item), 0, @@ -271,7 +282,7 @@ static ZnAttrConfig wp_attrs[] = { { ZN_CONFIG_GRADIENT, "-connectioncolor", NULL, Tk_Offset(TrackItemStruct, connection_color), 0, ZN_DRAW_FLAG, False }, { ZN_CONFIG_BOOL, "-connectionsensitive", NULL, - Tk_Offset(TrackItemStruct, header.part_sensitive), PART_NUMBER_TO_BIT(CONNECTION), + Tk_Offset(TrackItemStruct, header.part_sensitive), ZnPartToBit(CONNECTION), ZN_REPICK_FLAG, False }, { ZN_CONFIG_LINE_STYLE, "-connectionstyle", NULL, Tk_Offset(TrackItemStruct, connection_style), 0, ZN_DRAW_FLAG, False }, @@ -305,7 +316,7 @@ static ZnAttrConfig wp_attrs[] = { { ZN_CONFIG_LINE_END, "-leaderlastend", NULL, Tk_Offset(TrackItemStruct, leader_last_end), 0, ZN_COORDS_FLAG, False }, { ZN_CONFIG_BOOL, "-leadersensitive", NULL, - Tk_Offset(TrackItemStruct, header.part_sensitive), PART_NUMBER_TO_BIT(LEADER), + Tk_Offset(TrackItemStruct, header.part_sensitive), ZnPartToBit(LEADER), ZN_REPICK_FLAG, False }, { ZN_CONFIG_LINE_SHAPE, "-leadershape", NULL, Tk_Offset(TrackItemStruct, leader_shape), 0, ZN_COORDS_FLAG, False }, @@ -329,55 +340,56 @@ static ZnAttrConfig wp_attrs[] = { Tk_Offset(TrackItemStruct, header.priority), 0, ZN_DRAW_FLAG|ZN_REPICK_FLAG, False }, { ZN_CONFIG_BOOL, "-sensitive", NULL, - Tk_Offset(TrackItemStruct, header.flags), SENSITIVE_BIT, ZN_REPICK_FLAG, False }, + Tk_Offset(TrackItemStruct, header.flags), ZN_SENSITIVE_BIT, ZN_REPICK_FLAG, False }, { ZN_CONFIG_BITMAP, "-symbol", NULL, Tk_Offset(TrackItemStruct, symbol), 0, ZN_COORDS_FLAG, False }, { ZN_CONFIG_GRADIENT, "-symbolcolor", NULL, Tk_Offset(TrackItemStruct, symbol_color), 0, ZN_DRAW_FLAG, False }, { ZN_CONFIG_BOOL, "-symbolsensitive", NULL, - Tk_Offset(TrackItemStruct, header.part_sensitive), PART_NUMBER_TO_BIT(CURRENT_POSITION), + Tk_Offset(TrackItemStruct, header.part_sensitive), ZnPartToBit(CURRENT_POSITION), ZN_REPICK_FLAG, False }, { ZN_CONFIG_TAG_LIST, "-tags", NULL, Tk_Offset(TrackItemStruct, header.tags), 0, 0, False }, { ZN_CONFIG_BOOL, "-visible", NULL, - Tk_Offset(TrackItemStruct, header.flags), VISIBLE_BIT, + Tk_Offset(TrackItemStruct, header.flags), ZN_VISIBLE_BIT, ZN_DRAW_FLAG|ZN_REPICK_FLAG|ZN_VIS_FLAG, False }, - { ZN_CONFIG_END, NULL, NULL, 0, 0, 0 } + { ZN_CONFIG_END, NULL, NULL, 0, 0, 0, False } }; /* - ********************************************************************************** - * - * Init -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* Init -- +* +********************************************************************************** +*/ static int -Init(Item item, +Init(ZnItem item, int *argc, Tcl_Obj *CONST *args[]) { TrackItem track = (TrackItem) item; - FieldSet field_set = &track->field_set; - WidgetInfo *wi = item->wi; - + ZnFieldSet field_set = &track->field_set; + ZnWInfo *wi = item->wi; + int num_fields; + /*printf("size of a track = %d\n", sizeof(TrackItemStruct));*/ - SET(item->flags, VISIBLE_BIT); - SET(item->flags, SENSITIVE_BIT); - SET(item->flags, COMPOSE_ALPHA_BIT); - SET(item->flags, COMPOSE_ROTATION_BIT); - SET(item->flags, COMPOSE_SCALE_BIT); - SET(item->part_sensitive, PART_NUMBER_TO_BIT(CURRENT_POSITION)); - SET(item->part_sensitive, PART_NUMBER_TO_BIT(LEADER)); - SET(item->part_sensitive, PART_NUMBER_TO_BIT(CONNECTION)); - SET(item->part_sensitive, PART_NUMBER_TO_BIT(SPEED_VECTOR)); + SET(item->flags, ZN_VISIBLE_BIT); + SET(item->flags, ZN_SENSITIVE_BIT); + SET(item->flags, ZN_COMPOSE_ALPHA_BIT); + SET(item->flags, ZN_COMPOSE_ROTATION_BIT); + SET(item->flags, ZN_COMPOSE_SCALE_BIT); + SET(item->part_sensitive, ZnPartToBit(CURRENT_POSITION)); + SET(item->part_sensitive, ZnPartToBit(LEADER)); + SET(item->part_sensitive, ZnPartToBit(CONNECTION)); + SET(item->part_sensitive, ZnPartToBit(SPEED_VECTOR)); track->symbol_color = ZnGetGradientByValue(wi->fore_color); track->symbol = ZnGetBitmap(wi, Tk_GetUid("AtcSymbol15")); - track->label_anchor = ZnAnchorCenter; + track->label_anchor = TK_ANCHOR_CENTER; track->label_angle = DEFAULT_LABEL_ANGLE; track->label_distance = DEFAULT_LABEL_DISTANCE; SET(track->flags, POLAR_BIT); @@ -388,14 +400,14 @@ Init(Item item, track->leader_anchors = NULL; track->leader_color = ZnGetGradientByValue(wi->fore_color); - track->leader_style = LINE_SIMPLE; - track->leader_shape = LINE_STRAIGHT; + track->leader_style = ZN_LINE_SIMPLE; + track->leader_shape = ZN_LINE_STRAIGHT; track->leader_width = DEFAULT_LINE_WIDTH; track->connection_color = ZnGetGradientByValue(wi->fore_color); - track->connection_style = LINE_SIMPLE; + track->connection_style = ZN_LINE_SIMPLE; track->connection_width = DEFAULT_LINE_WIDTH; track->marker_color = ZnGetGradientByValue(wi->fore_color); - track->marker_style = LINE_SIMPLE; + track->marker_style = ZN_LINE_SIMPLE; track->marker_fill_pattern = ZnUnspecifiedImage; track->speed_vector_color = ZnGetGradientByValue(wi->fore_color); track->history_color = ZnGetGradientByValue(wi->fore_color); @@ -408,7 +420,7 @@ Init(Item item, CLEAR(track->flags, SV_TICKS_BIT); if (item->class == ZnTrack) { - item->priority = DEFAULT_TRACK_PRIORITY; + item->priority = 1; track->visible_history_size = DEFAULT_VISIBLE_HISTORY_SIZE; track->marker_size = DEFAULT_MARKER_SIZE; track->speed_vector.x = 0; @@ -416,7 +428,7 @@ Init(Item item, track->speed_vector_width = DEFAULT_LINE_WIDTH; } else { - item->priority = DEFAULT_WAY_POINT_PRIORITY; + item->priority = 1; track->visible_history_size = 0; track->marker_size = 0; track->speed_vector.x = 0.0; @@ -428,14 +440,15 @@ Init(Item item, * Then try to see if some fields are needed. */ if ((*argc > 0) && (Tcl_GetString((*args)[0])[0] != '-') && - (Tcl_GetIntFromObj(wi->interp, (*args)[0], &field_set->num_fields) != ZN_ERROR)) { + (Tcl_GetIntFromObj(wi->interp, (*args)[0], &num_fields) != TCL_ERROR)) { + field_set->num_fields = num_fields; *args += 1; *argc -= 1; - FIELD.InitFields(field_set); + ZnFIELD.InitFields(field_set); } else { Tcl_AppendResult(wi->interp, " number of fields expected", NULL); - return ZN_ERROR; + return TCL_ERROR; } track->pos.x = 0; @@ -453,19 +466,19 @@ Init(Item item, track->marker_size_dev = 0; track->leader_points = NULL; - return ZN_OK; + return TCL_OK; } /* - ********************************************************************************** - * - * Clone -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* Clone -- +* +********************************************************************************** +*/ static void -Clone(Item item) +Clone(ZnItem item) { TrackItem track = (TrackItem) item; @@ -481,13 +494,13 @@ Clone(Item item) track->leader_points = ZnListDuplicate(track->leader_points); } if (track->leader_first_end) { - LineEndDuplicate(track->leader_first_end); + ZnLineEndDuplicate(track->leader_first_end); } if (track->leader_last_end) { - LineEndDuplicate(track->leader_last_end); + ZnLineEndDuplicate(track->leader_last_end); } - FIELD.CloneFields(&track->field_set); + ZnFIELD.CloneFields(&track->field_set); track->field_set.item = item; /* @@ -509,14 +522,14 @@ Clone(Item item) /* - ********************************************************************************** - * - * Destroy -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* Destroy -- +* +********************************************************************************** +*/ static void -Destroy(Item item) +Destroy(ZnItem item) { TrackItem track = (TrackItem) item; @@ -524,10 +537,10 @@ Destroy(Item item) ZnListFree(track->leader_points); } if (track->leader_first_end) { - LineEndDelete(track->leader_first_end); + ZnLineEndDelete(track->leader_first_end); } if (track->leader_last_end) { - LineEndDelete(track->leader_last_end); + ZnLineEndDelete(track->leader_last_end); } if (track->history) { @@ -552,22 +565,22 @@ Destroy(Item item) track->marker_fill_pattern = ZnUnspecifiedImage; } - FIELD.FreeFields(&track->field_set); + ZnFIELD.FreeFields(&track->field_set); } /* - ********************************************************************************** - * - * Configure -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* Configure -- +* +********************************************************************************** +*/ static void AddToHistory(TrackItem track, ZnPoint old_pos) { - WidgetInfo *wi = ((Item) track)->wi; + ZnWInfo *wi = ((ZnItem) track)->wi; /*printf("Track moved, manage history: %d\n", wi->track_manage_history);*/ if (track->history) { @@ -586,26 +599,26 @@ AddToHistory(TrackItem track, * is not valid. */ /*printf("creating history\n");*/ track->history = ZnListNew(wi->track_managed_history_size+1, - sizeof(HistoryStruct)); + sizeof(HistoryStruct)); } } static int -Configure(Item item, +Configure(ZnItem item, int argc, Tcl_Obj *CONST argv[], int *flags) { TrackItem track = (TrackItem) item; - WidgetInfo *wi = item->wi; - Item old_connected; + ZnWInfo *wi = item->wi; + ZnItem old_connected; ZnPoint old_pos; old_pos = track->pos; old_connected = item->connected_item; - if (ZnConfigureAttributes(wi, item, track_attrs, argc, argv, flags) == ZN_ERROR) { - return ZN_ERROR; + if (ZnConfigureAttributes(wi, item, track_attrs, argc, argv, flags) == TCL_ERROR) { + return TCL_ERROR; } if (track->label_angle < 0) { @@ -638,7 +651,7 @@ Configure(Item item, (((item->connected_item->class == ZnTrack) || (item->connected_item->class == ZnWayPoint)) && (item->parent == item->connected_item->parent))) { - ITEM.UpdateItemDependency(item, old_connected); + ZnITEM.UpdateItemDependency(item, old_connected); } else { item->connected_item = old_connected; @@ -647,7 +660,7 @@ Configure(Item item, if (ISSET(*flags, ZN_VIS_FLAG)) { /* Record the change to trigger the overlap manager latter */ - if ((item->class == ZnTrack) && ISSET(item->flags, VISIBLE_BIT)) { + if ((item->class == ZnTrack) && ISSET(item->flags, ZN_VISIBLE_BIT)) { ZnGroupSetCallOm(item->parent, True); } } @@ -660,56 +673,56 @@ Configure(Item item, } } - return ZN_OK; + return TCL_OK; } /* - ********************************************************************************** - * - * Query -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* Query -- +* +********************************************************************************** +*/ static int -Query(Item item, - int argc, +Query(ZnItem item, + int argc __unused, Tcl_Obj *CONST argv[]) { - if (ZnQueryAttribute(item->wi, item, track_attrs, argv[0]) == ZN_ERROR) { - return ZN_ERROR; + if (ZnQueryAttribute(item->wi, item, track_attrs, argv[0]) == TCL_ERROR) { + return TCL_ERROR; } - return ZN_OK; + return TCL_OK; } /* - ********************************************************************************** - * - * ComputeCoordinates -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* ComputeCoordinates -- +* +********************************************************************************** +*/ static void -ComputeCoordinates(Item item, - ZnBool force) +ComputeCoordinates(ZnItem item, + ZnBool force __unused) { - WidgetInfo *wi = item->wi; + ZnWInfo *wi = item->wi; TrackItem track = (TrackItem) item; - FieldSet field_set = &track->field_set; - Item c_item; + ZnFieldSet field_set = &track->field_set; + ZnItem c_item; History hist; ZnPoint old_label_pos, old_pos, p, xp; ZnDim old_label_width, old_label_height; ZnReal rotation; ZnBBox bbox; ZnPoint *points; - int num_acc_pos, i; - int num_points, alignment; + unsigned int num_points, num_acc_pos, i; + int alignment; int w2=0, h2=0, w=0, h=0; - ResetBBox(&item->item_bounding_box); + ZnResetBBox(&item->item_bounding_box); old_label_pos = field_set->label_pos; old_label_width = field_set->label_width; old_label_height = field_set->label_height; @@ -724,8 +737,8 @@ ComputeCoordinates(Item item, old_pos = track->dev; ZnTransformPoint(wi->current_transfo, &track->pos, &track->dev); - track->dev.x = REAL_TO_INT(track->dev.x); - track->dev.y = REAL_TO_INT(track->dev.y); + track->dev.x = ZnNearestInt(track->dev.x); + track->dev.y = ZnNearestInt(track->dev.y); /*printf("track pos %g %g --> %g %g\n", track->pos.x, track->pos.y, track->dev.x, track->dev.y);*/ if (track->symbol != ZnUnspecifiedImage) { ZnSizeOfImage(track->symbol, &w, &h); @@ -737,16 +750,16 @@ ComputeCoordinates(Item item, bbox.corner.x = bbox.orig.x + w; bbox.corner.y = bbox.orig.y + h; - AddBBoxToBBox(&item->item_bounding_box, &bbox); + ZnAddBBoxToBBox(&item->item_bounding_box, &bbox); } /* Here we approximate the past position sizes to the size of the current position. They are actually smaller but who care :-). In fact it is even worse as we use the overall information from the symbol font. - */ + */ if ((item->class == ZnTrack) && track->history) { - ResetBBox(&bbox); + ZnResetBBox(&bbox); num_acc_pos = ZnListSize(track->history); hist = ZnListArray(track->history); for (i = 0; i < num_acc_pos; i++) { @@ -756,7 +769,7 @@ ComputeCoordinates(Item item, bbox.orig.y = hist[i].dev.y - h2; bbox.corner.x = bbox.orig.x + w; bbox.corner.y = bbox.orig.y + h; - AddBBoxToBBox(&item->item_bounding_box, &bbox); + ZnAddBBoxToBBox(&item->item_bounding_box, &bbox); } } } @@ -768,20 +781,20 @@ ComputeCoordinates(Item item, p.x = track->pos.x + track->speed_vector.x * wi->speed_vector_length; p.y = track->pos.y + track->speed_vector.y * wi->speed_vector_length; ZnTransformPoint(wi->current_transfo, &p, &track->speed_vector_dev); - track->speed_vector_dev.x = REAL_TO_INT(track->speed_vector_dev.x); - track->speed_vector_dev.y = REAL_TO_INT(track->speed_vector_dev.y); + track->speed_vector_dev.x = ZnNearestInt(track->speed_vector_dev.x); + track->speed_vector_dev.y = ZnNearestInt(track->speed_vector_dev.y); if (ISSET(track->flags, SV_MARK_BIT)) { - int w = track->speed_vector_width + 1; - AddPointToBBox(&item->item_bounding_box, - track->speed_vector_dev.x - w, - track->speed_vector_dev.y - w); - AddPointToBBox(&item->item_bounding_box, - track->speed_vector_dev.x + w, - track->speed_vector_dev.y + w); + int w = (int) track->speed_vector_width + 1; + ZnAddPointToBBox(&item->item_bounding_box, + track->speed_vector_dev.x - w, + track->speed_vector_dev.y - w); + ZnAddPointToBBox(&item->item_bounding_box, + track->speed_vector_dev.x + w, + track->speed_vector_dev.y + w); } else { - AddPointToBBox(&item->item_bounding_box, track->speed_vector_dev.x, - track->speed_vector_dev.y); + ZnAddPointToBBox(&item->item_bounding_box, track->speed_vector_dev.x, + track->speed_vector_dev.y); } } @@ -790,11 +803,11 @@ ComputeCoordinates(Item item, */ c_item = item->connected_item; if ((c_item != ZN_NO_ITEM) && (track->connection_width > 0)) { - ResetBBox(&bbox); - w2 = track->connection_width/2; - AddPointToBBox(&item->item_bounding_box, track->dev.x-w2, track->dev.y-w2); - AddPointToBBox(&item->item_bounding_box, ((TrackItem)c_item)->dev.x+w2, - ((TrackItem)c_item)->dev.y+w2); + ZnResetBBox(&bbox); + w2 = (int) track->connection_width/2; + ZnAddPointToBBox(&item->item_bounding_box, track->dev.x-w2, track->dev.y-w2); + ZnAddPointToBBox(&item->item_bounding_box, ((TrackItem)c_item)->dev.x+w2, + ((TrackItem)c_item)->dev.y+w2); } /* @@ -806,14 +819,14 @@ ComputeCoordinates(Item item, xp.x = xp.x - track->dev.x; xp.y = xp.y - track->dev.y; track->marker_size_dev = sqrt(xp.x*xp.x + xp.y*xp.y); - track->marker_size_dev = REAL_TO_INT(track->marker_size_dev); + track->marker_size_dev = ZnNearestInt(track->marker_size_dev); if (track->marker_size_dev > PRECISION_LIMIT) { - AddPointToBBox(&item->item_bounding_box, - track->dev.x - (ZnPos) track->marker_size_dev, - track->dev.y - (ZnPos) track->marker_size_dev); - AddPointToBBox(&item->item_bounding_box, - track->dev.x + (ZnPos) track->marker_size_dev, - track->dev.y + (ZnPos) track->marker_size_dev); + ZnAddPointToBBox(&item->item_bounding_box, + track->dev.x - (ZnPos) track->marker_size_dev, + track->dev.y - (ZnPos) track->marker_size_dev); + ZnAddPointToBBox(&item->item_bounding_box, + track->dev.x + (ZnPos) track->marker_size_dev, + track->dev.y + (ZnPos) track->marker_size_dev); } /* Compute the new label bounding box. */ @@ -821,7 +834,7 @@ ComputeCoordinates(Item item, ZnDim bb_width, bb_height, dist; ZnPoint leader_end; - FIELD.GetLabelBBox(field_set, &bb_width, &bb_height); + ZnFIELD.GetLabelBBox(field_set, &bb_width, &bb_height); /* * Compute the label position. */ @@ -829,7 +842,7 @@ ComputeCoordinates(Item item, #ifdef DP /* Alternative on ne calcule pas une distance minimum mais * on fait confiance à la distance effective track->label_distance - * attention aux problemes d'arrondi de PointPolarToCartesian !!! + * attention aux problemes d'arrondi de ZnPointPolarToCartesian !!! */ dist = track->label_distance ; #else @@ -837,9 +850,9 @@ ComputeCoordinates(Item item, * Adjust the min dist spec given in label_distance by * the size of the label. */ - if ((track->label_anchor == ZnAnchorN) || - (track->label_anchor == ZnAnchorCenter) || - (track->label_anchor == ZnAnchorS)) { + if ((track->label_anchor == TK_ANCHOR_N) || + (track->label_anchor == TK_ANCHOR_CENTER) || + (track->label_anchor == TK_ANCHOR_S)) { dist = sqrt(bb_width*bb_width/4+bb_height*bb_height/4); } else { @@ -852,31 +865,31 @@ ComputeCoordinates(Item item, */ ZnTransfoDecompose(wi->current_transfo, NULL, NULL, &rotation, NULL); /*printf("rotation=%g, heading=%g, angle=%d\n", rotation, - ProjectionToAngle(track->speed_vector.x, track->speed_vector.y), + ZnProjectionToAngle(track->speed_vector.x, track->speed_vector.y), track->label_angle);*/ - rotation = ProjectionToAngle(track->speed_vector.x, track->speed_vector.y)-rotation; - PointPolarToCartesian(rotation, dist, track->label_angle, - &track->label_dx, &track->label_dy); + rotation = ZnProjectionToAngle(track->speed_vector.x, track->speed_vector.y)-rotation; + ZnPointPolarToCartesian(rotation, dist, (ZnReal) track->label_angle, + &track->label_dx, &track->label_dy); } field_set->label_pos.x = track->dev.x + track->label_dx; field_set->label_pos.y = track->dev.y - track->label_dy; - Anchor2Origin(&field_set->label_pos, bb_width, bb_height, - track->label_anchor, &field_set->label_pos); - field_set->label_pos.x = REAL_TO_INT(field_set->label_pos.x); - field_set->label_pos.y = REAL_TO_INT(field_set->label_pos.y); - - AddPointToBBox(&item->item_bounding_box, field_set->label_pos.x, - field_set->label_pos.y); - AddPointToBBox(&item->item_bounding_box, - field_set->label_pos.x + (ZnPos) bb_width, - field_set->label_pos.y + (ZnPos) bb_height); + ZnAnchor2Origin(&field_set->label_pos, bb_width, bb_height, + track->label_anchor, &field_set->label_pos); + field_set->label_pos.x = ZnNearestInt(field_set->label_pos.x); + field_set->label_pos.y = ZnNearestInt(field_set->label_pos.y); + + ZnAddPointToBBox(&item->item_bounding_box, field_set->label_pos.x, + field_set->label_pos.y); + ZnAddPointToBBox(&item->item_bounding_box, + field_set->label_pos.x + (ZnPos) bb_width, + field_set->label_pos.y + (ZnPos) bb_height); /* * Process the leader. */ if (track->leader_width > 0) { int left_x, left_y, right_x, right_y; - ZnPoint end_points[LINE_END_POINTS]; + ZnPoint end_points[ZN_LINE_END_POINTS]; /* * Compute the actual leader end in the label. @@ -892,7 +905,7 @@ ComputeCoordinates(Item item, } if (track->label_angle >= 270 || track->label_angle < 90) { if (track->leader_anchors && (left_y < 0)) { - FIELD.GetFieldBBox(field_set, left_x, &bbox); + ZnFIELD.GetFieldBBox(field_set, (unsigned int) left_x, &bbox); leader_end.x = bbox.orig.x; leader_end.y = bbox.corner.y; } @@ -900,11 +913,11 @@ ComputeCoordinates(Item item, leader_end.x = field_set->label_pos.x + left_x*bb_width/100; leader_end.y = field_set->label_pos.y + left_y*bb_height/100; } - alignment = AA_LEFT; + alignment = ZN_AA_LEFT; } else { if (track->leader_anchors && (right_y < 0)) { - FIELD.GetFieldBBox(field_set, right_x, &bbox); + ZnFIELD.GetFieldBBox(field_set, (unsigned int) right_x, &bbox); leader_end.x = bbox.corner.x; leader_end.y = bbox.corner.y; } @@ -912,34 +925,34 @@ ComputeCoordinates(Item item, leader_end.x = field_set->label_pos.x + right_x*bb_width/100; leader_end.y = field_set->label_pos.y + right_y*bb_height/100; } - alignment = AA_RIGHT; + alignment = ZN_AA_RIGHT; } - FIELD.SetFieldsAutoAlign(field_set, alignment); + ZnFIELD.SetFieldsAutoAlign(field_set, alignment); /* Clip the leader on the label's fields */ - FIELD.LeaderToLabel(field_set, &track->dev, &leader_end); + ZnFIELD.LeaderToLabel(field_set, &track->dev, &leader_end); /* Setup leader shape points */ if (!track->leader_points) { - track->leader_points = ZnListNew(LINE_SHAPE_POINTS, sizeof(ZnPoint)); + track->leader_points = ZnListNew(ZN_LINE_SHAPE_POINTS, sizeof(ZnPoint)); } - ZnGetLineShape(&track->dev, &leader_end, track->leader_width, - track->leader_shape, &bbox, track->leader_points); - AddBBoxToBBox(&item->item_bounding_box, &bbox); + ZnLineShapePoints(&track->dev, &leader_end, track->leader_width, + track->leader_shape, &bbox, track->leader_points); + ZnAddBBoxToBBox(&item->item_bounding_box, &bbox); points = (ZnPoint *) ZnListArray(track->leader_points); num_points = ZnListSize(track->leader_points); /* Setup leader ends */ if (track->leader_first_end != NULL) { - GetLineEnd(&points[0], &points[1], track->leader_width, - CapRound, track->leader_first_end, end_points); - AddPointsToBBox(&item->item_bounding_box, end_points, LINE_END_POINTS); + ZnGetLineEnd(&points[0], &points[1], track->leader_width, + CapRound, track->leader_first_end, end_points); + ZnAddPointsToBBox(&item->item_bounding_box, end_points, ZN_LINE_END_POINTS); } if (track->leader_last_end != NULL) { - GetLineEnd(&points[num_points-1], &points[num_points-2], track->leader_width, - CapRound, track->leader_last_end, end_points); - AddPointsToBBox(&item->item_bounding_box, end_points, LINE_END_POINTS); + ZnGetLineEnd(&points[num_points-1], &points[num_points-2], track->leader_width, + CapRound, track->leader_last_end, end_points); + ZnAddPointsToBBox(&item->item_bounding_box, end_points, ZN_LINE_END_POINTS); } } } @@ -952,22 +965,22 @@ ComputeCoordinates(Item item, (old_pos.x != track->dev.x) || (old_pos.y != track->dev.y)) { /* Update connected items */ - SET(item->flags, UPDATE_DEPENDENT_BIT); + SET(item->flags, ZN_UPDATE_DEPENDENT_BIT); } } /* - ********************************************************************************** - * - * ToArea -- - * Tell if the object is entirely outside (-1), - * entirely inside (1) or in between (0). - * - ********************************************************************************** - */ +********************************************************************************** +* +* ToArea -- +* Tell if the object is entirely outside (-1), +* entirely inside (1) or in between (0). +* +********************************************************************************** +*/ static int -ToArea(Item item, +ToArea(ZnItem item, ZnToArea ta) { TrackItem track = (TrackItem) item; @@ -980,7 +993,7 @@ ToArea(Item item, /* * Try the current position. */ - ResetBBox(&bbox); + ZnResetBBox(&bbox); if (track->symbol != ZnUnspecifiedImage) { ZnSizeOfImage(track->symbol, &width, &height); bbox.orig.x = track->dev.x-(width+1)/2; @@ -988,7 +1001,7 @@ ToArea(Item item, bbox.corner.x = bbox.orig.x + width; bbox.corner.y = bbox.orig.y + height; } - inside = BBoxInBBox(&bbox, area); + inside = ZnBBoxInBBox(&bbox, area); if (inside == 0) { /*printf("track pos\n");*/ return 0; @@ -997,9 +1010,9 @@ ToArea(Item item, /* * Try the fields. */ - FIELD.GetLabelBBox(&track->field_set, &lwidth, &lheight); + ZnFIELD.GetLabelBBox(&track->field_set, &lwidth, &lheight); if ((lwidth > 0.0) && (lheight > 0.0)) { - if (FIELD.FieldsToArea(&track->field_set, area) != inside) { + if (ZnFIELD.FieldsToArea(&track->field_set, area) != inside) { return 0; } } @@ -1008,30 +1021,30 @@ ToArea(Item item, * Try the leader. */ if (track->field_set.label_format && (track->leader_width > 0)) { - ZnPoint end_points[LINE_END_POINTS]; - ZnPoint *points; - int num_points; + ZnPoint end_points[ZN_LINE_END_POINTS]; + ZnPoint *points; + unsigned int num_points; points = (ZnPoint *) ZnListArray(track->leader_points); num_points = ZnListSize(track->leader_points); - width = track->leader_width > 1 ? track->leader_width : 0; - if (PolylineInBBox(points, num_points, width, - CapRound, JoinRound, area) != inside) { + lwidth = track->leader_width > 1 ? track->leader_width : 0; + if (ZnPolylineInBBox(points, num_points, lwidth, + CapRound, JoinRound, area) != inside) { /*printf("track leader\n");*/ return 0; } if (track->leader_first_end != NULL) { - GetLineEnd(&points[0], &points[1], track->leader_width, - CapRound, track->leader_first_end, end_points); - if (PolygonInBBox(end_points, LINE_END_POINTS, area, NULL) != inside) { + ZnGetLineEnd(&points[0], &points[1], track->leader_width, + CapRound, track->leader_first_end, end_points); + if (ZnPolygonInBBox(end_points, ZN_LINE_END_POINTS, area, NULL) != inside) { /*printf("track leader\n");*/ return 0; } } if (track->leader_last_end != NULL) { - GetLineEnd(&points[num_points-1], &points[num_points-2], track->leader_width, - CapRound, track->leader_last_end, end_points); - if (PolygonInBBox(end_points, LINE_END_POINTS, area, NULL) != inside) { + ZnGetLineEnd(&points[num_points-1], &points[num_points-2], track->leader_width, + CapRound, track->leader_last_end, end_points); + if (ZnPolygonInBBox(end_points, ZN_LINE_END_POINTS, area, NULL) != inside) { /*printf("track leader\n");*/ return 0; } @@ -1044,8 +1057,8 @@ ToArea(Item item, if ((item->class == ZnTrack) && (track->speed_vector_width > 0)) { pts[0] = track->dev; pts[1] = track->speed_vector_dev; - width = track->speed_vector_width > 1 ? track->speed_vector_width : 0; - if (PolylineInBBox(pts, 2, width, CapRound, JoinRound, area) != inside) { + lwidth = track->speed_vector_width > 1 ? track->speed_vector_width : 0; + if (ZnPolylineInBBox(pts, 2, lwidth, CapRound, JoinRound, area) != inside) { /*printf("track speed vector\n");*/ return 0; } @@ -1057,8 +1070,8 @@ ToArea(Item item, if ((item->connected_item != ZN_NO_ITEM) && (track->connection_width > 0)) { pts[0] = track->dev; pts[1] = ((TrackItem) item->connected_item)->dev; - width = track->connection_width > 1 ? track->connection_width : 0; - if (PolylineInBBox(pts, 2, width, CapRound, JoinRound, area) != inside) { + lwidth = track->connection_width > 1 ? track->connection_width : 0; + if (ZnPolylineInBBox(pts, 2, lwidth, CapRound, JoinRound, area) != inside) { /*printf("track connection\n");*/ return 0; } @@ -1069,27 +1082,28 @@ ToArea(Item item, /* - ********************************************************************************** - * - * Draw -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* Draw -- +* +********************************************************************************** +*/ static void -Draw(Item item) +Draw(ZnItem item) { - WidgetInfo *wi = item->wi; + ZnWInfo *wi = item->wi; TrackItem track = (TrackItem) item; - Item c_item; + ZnItem c_item; XGCValues values; History hist; - int h_side_size, side_size, width=0, height=0; - int i, nb_hist, num_acc_pos; + unsigned int h_side_size, side_size, width=0, height=0; + unsigned int i, nb_hist, num_acc_pos, visible_history_size; + int x, y; /* Draw the marker */ if (track->marker_size_dev != 0) { ZnSetLineStyle(wi, track->marker_style); - values.foreground = ZnPixel(ZnGetGradientColor(track->marker_color, 0, NULL)); + values.foreground = ZnPixel(ZnGetGradientColor(track->marker_color, 0.0, NULL)); values.line_width = 0; if (ISSET(track->flags, MARKER_FILLED_BIT)) { if (track->marker_fill_pattern == ZnUnspecifiedImage) { @@ -1100,23 +1114,25 @@ Draw(Item item) else { /* Fill stippled */ values.fill_style = FillStippled; - values.stipple = ZnImagePixmap(track->marker_fill_pattern, NULL); + values.stipple = ZnImagePixmap(track->marker_fill_pattern); XChangeGC(wi->dpy, wi->gc, GCFillStyle | GCStipple | GCLineWidth | GCForeground, &values); } XFillArc(wi->dpy, wi->draw_buffer, wi->gc, - track->dev.x - (ZnPos) track->marker_size_dev, - track->dev.y - (ZnPos) track->marker_size_dev, - track->marker_size_dev * 2, track->marker_size_dev * 2, + (int) (track->dev.x - (ZnPos) track->marker_size_dev), + (int) (track->dev.y - (ZnPos) track->marker_size_dev), + (unsigned int) track->marker_size_dev * 2, + (unsigned int) track->marker_size_dev * 2, 0, 360 * 64); } else { values.fill_style = FillSolid; XChangeGC(wi->dpy, wi->gc, GCFillStyle | GCLineWidth | GCForeground, &values); XDrawArc(wi->dpy, wi->draw_buffer, wi->gc, - track->dev.x - (ZnPos) track->marker_size_dev, - track->dev.y - (ZnPos) track->marker_size_dev, - track->marker_size_dev * 2, track->marker_size_dev * 2, + (int) (track->dev.x - (ZnPos) track->marker_size_dev), + (int) (track->dev.y - (ZnPos) track->marker_size_dev), + (unsigned int) (track->marker_size_dev * 2), + (unsigned int) (track->marker_size_dev * 2), 0, 360 * 64); } } @@ -1131,56 +1147,59 @@ Draw(Item item) pts[0] = track->dev; pts[1] = ((TrackItem) item->connected_item)->dev; ZnDrawLineShape(wi, pts, 2, track->connection_style, - ZnGetGradientColor(track->connection_color, 0, NULL), - track->connection_width, LINE_STRAIGHT); + ZnGetGradientColor(track->connection_color, 0.0, NULL), + track->connection_width, ZN_LINE_STRAIGHT); } /* * Draw the speed vector. */ if ((item->class == ZnTrack) && (track->speed_vector_width > 0)) { - values.foreground = ZnPixel(ZnGetGradientColor(track->speed_vector_color, 0, NULL)); - values.line_width = track->speed_vector_width > 1 ? track->speed_vector_width : 0; + values.foreground = ZnPixel(ZnGetGradientColor(track->speed_vector_color, 0.0, NULL)); + values.line_width = (int) (track->speed_vector_width > 1 ? track->speed_vector_width : 0); values.line_style = LineSolid; values.fill_style = FillSolid; XChangeGC(wi->dpy, wi->gc, GCForeground | GCLineWidth | GCLineStyle | GCFillStyle, &values); - XDrawLine(wi->dpy, wi->draw_buffer, wi->gc, track->dev.x, track->dev.y, - track->speed_vector_dev.x, track->speed_vector_dev.y); + XDrawLine(wi->dpy, wi->draw_buffer, wi->gc, + (int) track->dev.x, + (int) track->dev.y, + (int) track->speed_vector_dev.x, + (int) track->speed_vector_dev.y); } /* * Draw the leader. */ if (track->field_set.label_format && (track->leader_width > 0)) { - ZnPoint end_points[LINE_END_POINTS]; - XPoint xpoints[LINE_END_POINTS]; - ZnPoint *points; - int num_points; + ZnPoint end_points[ZN_LINE_END_POINTS]; + XPoint xpoints[ZN_LINE_END_POINTS]; + ZnPoint *points; + unsigned int num_points; points = (ZnPoint *) ZnListArray(track->leader_points); num_points = ZnListSize(track->leader_points); ZnDrawLineShape(wi, points, num_points, track->leader_style, - ZnGetGradientColor(track->leader_color, 0, NULL), + ZnGetGradientColor(track->leader_color, 0.0, NULL), track->leader_width, track->leader_shape); if (track->leader_first_end != NULL) { - GetLineEnd(&points[0], &points[1], track->leader_width, - CapRound, track->leader_first_end, end_points); - for (i = 0; i < LINE_END_POINTS; i++) { - xpoints[i].x = end_points[i].x; - xpoints[i].y = end_points[i].y; + ZnGetLineEnd(&points[0], &points[1], track->leader_width, + CapRound, track->leader_first_end, end_points); + for (i = 0; i < ZN_LINE_END_POINTS; i++) { + xpoints[i].x = (short) end_points[i].x; + xpoints[i].y = (short) end_points[i].y; } - XFillPolygon(wi->dpy, wi->draw_buffer, wi->gc, xpoints, LINE_END_POINTS, + XFillPolygon(wi->dpy, wi->draw_buffer, wi->gc, xpoints, ZN_LINE_END_POINTS, Nonconvex, CoordModeOrigin); } if (track->leader_last_end != NULL) { - GetLineEnd(&points[num_points-1], &points[num_points-2], track->leader_width, - CapRound, track->leader_last_end, end_points); - for (i = 0; i < LINE_END_POINTS; i++) { - xpoints[i].x = end_points[i].x; - xpoints[i].y = end_points[i].y; + ZnGetLineEnd(&points[num_points-1], &points[num_points-2], track->leader_width, + CapRound, track->leader_last_end, end_points); + for (i = 0; i < ZN_LINE_END_POINTS; i++) { + xpoints[i].x = (short) end_points[i].x; + xpoints[i].y = (short) end_points[i].y; } - XFillPolygon(wi->dpy, wi->draw_buffer, wi->gc, xpoints, LINE_END_POINTS, + XFillPolygon(wi->dpy, wi->draw_buffer, wi->gc, xpoints, ZN_LINE_END_POINTS, Nonconvex, CoordModeOrigin); } } @@ -1193,7 +1212,7 @@ Draw(Item item) * Draw the history, current pos excepted. */ if ((item->class == ZnTrack) && track->history) { - values.foreground = ZnPixel(ZnGetGradientColor(track->history_color, 0, NULL)); + values.foreground = ZnPixel(ZnGetGradientColor(track->history_color, 0.0, NULL)); values.fill_style = FillSolid; XChangeGC(wi->dpy, wi->gc, GCForeground|GCFillStyle, &values); if (ISCLEAR(track->flags, FILLED_HISTORY_BIT)) { @@ -1202,13 +1221,13 @@ Draw(Item item) XChangeGC(wi->dpy, wi->gc, GCLineWidth | GCLineStyle, &values); } num_acc_pos = MIN(track->visible_history_size, ZnListSize(track->history)); + visible_history_size = MIN(track->visible_history_size-1, 0); hist = ZnListArray(track->history); side_size = MAX(width, height); for (i = 0, nb_hist = 0; i < num_acc_pos; i++) { - if (ISSET(track->flags, LAST_AS_FIRST_BIT) && - (i == track->visible_history_size-1)) { - values.foreground = ZnPixel(ZnGetGradientColor(track->symbol_color, 0, NULL)); + if (ISSET(track->flags, LAST_AS_FIRST_BIT) && (i == visible_history_size)) { + values.foreground = ZnPixel(ZnGetGradientColor(track->symbol_color, 0.0, NULL)); XChangeGC(wi->dpy, wi->gc, GCForeground, &values); } side_size--; @@ -1216,31 +1235,32 @@ Draw(Item item) h_side_size = (side_size+1)/2; if (hist[i].visible) { if (ISSET(track->flags, DOT_MIXED_HISTORY_BIT) && !(nb_hist++ % 2)) { - XDrawPoint(wi->dpy, wi->draw_buffer, wi->gc, hist[i].dev.x, hist[i].dev.y); + x = (int) hist[i].dev.x; + y = (int) hist[i].dev.y; + /* Draw a point (portability layer doesn't define a XDrawPoint) */ + XDrawLine(wi->dpy, wi->draw_buffer, wi->gc, x, y, x, y); } else { + x = ((int) hist[i].dev.x) - h_side_size; + y = ((int) hist[i].dev.y) - h_side_size; if (ISSET(track->flags, CIRCLE_HISTORY_BIT)) { if (ISSET(track->flags, FILLED_HISTORY_BIT)) { XFillArc(wi->dpy, wi->draw_buffer, wi->gc, - hist[i].dev.x - h_side_size, hist[i].dev.y - h_side_size, - side_size, side_size, 0, 360*64); + x, y, side_size, side_size, 0, 360*64); } else { XDrawArc(wi->dpy, wi->draw_buffer, wi->gc, - hist[i].dev.x - h_side_size, hist[i].dev.y - h_side_size, - side_size - 1, side_size - 1, 0, 360*64); + x, y, side_size - 1, side_size - 1, 0, 360*64); } } else { if (ISSET(track->flags, FILLED_HISTORY_BIT)) { XFillRectangle(wi->dpy, wi->draw_buffer, wi->gc, - hist[i].dev.x - h_side_size, hist[i].dev.y - h_side_size, - side_size, side_size); + x, y, side_size, side_size); } else { XDrawRectangle(wi->dpy, wi->draw_buffer, wi->gc, - hist[i].dev.x - h_side_size, hist[i].dev.y - h_side_size, - side_size - 1, side_size - 1); + x, y, side_size - 1, side_size - 1); } } } @@ -1252,11 +1272,11 @@ Draw(Item item) * Draw the current position using a pattern for Tk. */ if (track->symbol != ZnUnspecifiedImage) { - int x = track->dev.x - (width+1)/2; - int y = track->dev.y - (height+1)/2; - values.foreground = ZnPixel(ZnGetGradientColor(track->symbol_color, 0, NULL)); + x = ((int) track->dev.x) - (width+1)/2; + y = ((int) track->dev.y) - (height+1)/2; + values.foreground = ZnPixel(ZnGetGradientColor(track->symbol_color, 0.0, NULL)); values.fill_style = FillStippled; - values.stipple = ZnImagePixmap(track->symbol, NULL); + values.stipple = ZnImagePixmap(track->symbol); values.ts_x_origin = x; values.ts_y_origin = y; XChangeGC(wi->dpy, wi->gc, @@ -1268,39 +1288,40 @@ Draw(Item item) /* * Draw the label. */ - FIELD.DrawFields(&track->field_set); + ZnFIELD.DrawFields(&track->field_set); } /* - ********************************************************************************** - * - * Render -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* Render -- +* +********************************************************************************** +*/ +#ifdef GL static void -Render(Item item) +Render(ZnItem item) { -#ifdef GLX - WidgetInfo *wi = item->wi; + ZnWInfo *wi = item->wi; TrackItem track = (TrackItem) item; TrackItem c_item; History hist; - int h_side_size, side_size, width=0, height=0; - int i, j, nb_hist, num_acc_pos, alpha; + unsigned int h_side_size, side_size, width=0, height=0; + unsigned int i, j, nb_hist, num_acc_pos, visible_history_size; + unsigned short alpha; XColor *color; ZnPoint *points; - int num_points; + unsigned int num_points; ZnReal x0, y0, size; /* Draw the marker */ if (track->marker_size_dev != 0) { - points = GetCirclePoints(3, ZN_CIRCLE_MEDIUM, 0, 2*M_PI, &num_points, NULL); + points = ZnGetCirclePoints(3, ZN_CIRCLE_MEDIUM, 0.0, 2*M_PI, &num_points, NULL); x0 = track->dev.x; y0 = track->dev.y; size = track->marker_size_dev; - color = ZnGetGradientColor(track->marker_color, 0, &alpha); + color = ZnGetGradientColor(track->marker_color, 0.0, &alpha); alpha = ZnComposeAlpha(alpha, wi->alpha); glColor4us(color->red, color->green, color->blue, alpha); if (ISSET(track->flags, MARKER_FILLED_BIT)) { @@ -1310,21 +1331,21 @@ Render(Item item) * Setup polygon stippling. */ glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple(ZnImagePattern(track->marker_fill_pattern, NULL)); + glPolygonStipple(ZnImageMask(track->marker_fill_pattern, NULL)); } glBegin(GL_TRIANGLE_FAN); for (i = 0; i < num_points; i++) { - glVertex2f(x0, y0); - glVertex2f(x0 + points[i].x*size, y0 + points[i].y*size); + glVertex2d(x0, y0); + glVertex2d(x0 + points[i].x*size, y0 + points[i].y*size); } glEnd(); } else { - glLineWidth(1); + glLineWidth(1.0); ZnSetLineStyle(wi, track->marker_style); glBegin(GL_LINE_LOOP); for (i = 0; i < num_points; i++) { - glVertex2f(x0 + points[i].x*size, y0 + points[i].y*size); + glVertex2d(x0 + points[i].x*size, y0 + points[i].y*size); } glEnd(); } @@ -1335,13 +1356,13 @@ Render(Item item) */ c_item = (TrackItem) item->connected_item; if ((c_item != ZN_NO_ITEM) && (track->connection_width > 0)) { - color = ZnGetGradientColor(track->connection_color, 0, &alpha); + color = ZnGetGradientColor(track->connection_color, 0.0, &alpha); alpha = ZnComposeAlpha(alpha, wi->alpha); glColor4us(color->red, color->green, color->blue, alpha); - glLineWidth(track->connection_width); + glLineWidth((GLfloat)track->connection_width); glBegin(GL_LINES); - glVertex2f(track->dev.x, track->dev.y); - glVertex2f(c_item->dev.x, c_item->dev.y); + glVertex2d(track->dev.x, track->dev.y); + glVertex2d(c_item->dev.x, c_item->dev.y); glEnd(); } @@ -1349,13 +1370,14 @@ Render(Item item) * Draw the speed vector. */ if ((item->class == ZnTrack) && (track->speed_vector_width > 0)) { - int num_clips=0, svlength=0, ticksize=0; - ZnReal svxstep=0, svystep=0; + unsigned int num_clips=0, svlength=0; + ZnReal svxstep=0, svystep=0; + GLfloat ticksize=0; - color = ZnGetGradientColor(track->speed_vector_color, 0, &alpha); + color = ZnGetGradientColor(track->speed_vector_color, 0.0, &alpha); alpha = ZnComposeAlpha(alpha, wi->alpha); glColor4us(color->red, color->green, color->blue, alpha); - glLineWidth(track->speed_vector_width); + glLineWidth((GLfloat)track->speed_vector_width); /* * Turn off AA to obtain a square point precisely defined @@ -1371,25 +1393,25 @@ Render(Item item) svxstep = (track->speed_vector_dev.x-track->dev.x)/svlength; svystep = (track->speed_vector_dev.y-track->dev.y)/svlength; glPointSize(ticksize); - GLX_START_CLIP(num_clips, False); + ZnGlStartClip(num_clips, False); glBegin(GL_POINTS); for (i = 1; i < svlength; i++) { - glVertex2f(track->dev.x + i*svxstep, track->dev.y + i*svystep); + glVertex2d(track->dev.x + i*svxstep, track->dev.y + i*svystep); } glEnd(); - GLX_RENDER_CLIPPED(); + ZnGlRenderClipped(); } } glBegin(GL_LINES); - glVertex2f(track->dev.x, track->dev.y); - glVertex2f(track->speed_vector_dev.x, track->speed_vector_dev.y); + glVertex2d(track->dev.x, track->dev.y); + glVertex2d(track->speed_vector_dev.x, track->speed_vector_dev.y); glEnd(); if (ISSET(track->flags, SV_MARK_BIT)) { - glPointSize(track->speed_vector_width + 2); + glPointSize((GLfloat) (track->speed_vector_width + 2.0)); glBegin(GL_POINTS); - glVertex2f(track->speed_vector_dev.x, track->speed_vector_dev.y); + glVertex2d(track->speed_vector_dev.x, track->speed_vector_dev.y); glEnd(); } @@ -1399,13 +1421,13 @@ Render(Item item) if (ISSET(track->flags, SV_TICKS_BIT)) { glPointSize(ticksize); - GLX_RESTORE_STENCIL(num_clips, False); + ZnGlRestoreStencil(num_clips, False); glBegin(GL_POINTS); for (i = 1; i < svlength; i++) { - glVertex2f(track->dev.x + i*svxstep, track->dev.y + i*svystep); + glVertex2d(track->dev.x + i*svxstep, track->dev.y + i*svystep); } glEnd(); - GLX_END_CLIP(num_clips); + ZnGlEndClip(num_clips); } } } @@ -1431,13 +1453,14 @@ Render(Item item) * Draw the history, current pos excepted. */ if ((item->class == ZnTrack) && track->history) { - points = GetCirclePoints(3, ZN_CIRCLE_COARSE, 0, 2*M_PI, &num_points, NULL); - color = ZnGetGradientColor(track->history_color, 0, &alpha); + points = ZnGetCirclePoints(3, ZN_CIRCLE_COARSE, 0.0, 2*M_PI, &num_points, NULL); + color = ZnGetGradientColor(track->history_color, 0.0, &alpha); alpha = ZnComposeAlpha(alpha, wi->alpha); glColor4us(color->red, color->green, color->blue, alpha); - glLineWidth(1); + glLineWidth(1.0); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); num_acc_pos = MIN(track->visible_history_size, ZnListSize(track->history)); + visible_history_size = MIN(track->visible_history_size-1, 0); hist = ZnListArray(track->history); side_size = MAX(width, height); /* @@ -1447,9 +1470,8 @@ Render(Item item) glDisable(GL_LINE_SMOOTH); glDisable(GL_POINT_SMOOTH); for (i = 0, nb_hist = 0; i < num_acc_pos; i++) { - if (ISSET(track->flags, LAST_AS_FIRST_BIT) && - (i == track->visible_history_size-1)) { - color = ZnGetGradientColor(track->symbol_color, 0, &alpha); + if (ISSET(track->flags, LAST_AS_FIRST_BIT) && (i == visible_history_size)) { + color = ZnGetGradientColor(track->symbol_color, 0.0, &alpha); alpha = ZnComposeAlpha(alpha, wi->alpha); glColor4us(color->red, color->green, color->blue, alpha); } @@ -1461,24 +1483,24 @@ Render(Item item) y0 = hist[i].dev.y; if ((ISSET(track->flags, DOT_MIXED_HISTORY_BIT) && !(nb_hist++ % 2)) || (side_size == 1)) { - glPointSize(1); + glPointSize(1.0); glBegin(GL_POINTS); - glVertex2f(x0, y0); + glVertex2d(x0, y0); glEnd(); } else { if (ISSET(track->flags, CIRCLE_HISTORY_BIT)) { if (ISSET(track->flags, FILLED_HISTORY_BIT)) { - glPointSize(side_size); + glPointSize((GLfloat) side_size); glBegin(GL_POINTS); - glVertex2f(x0, y0); + glVertex2d(x0, y0); glEnd(); } else { #if 1 glBegin(GL_LINE_LOOP); for (j = 0; j < num_points; j++) { - glVertex2f(x0 + points[j].x*h_side_size, + glVertex2d(x0 + points[j].x*h_side_size, y0 + points[j].y*h_side_size); } glEnd(); @@ -1490,18 +1512,18 @@ Render(Item item) else { if (ISSET(track->flags, FILLED_HISTORY_BIT)) { glBegin(GL_QUADS); - glVertex2f(x0 - h_side_size, y0 - h_side_size); - glVertex2f(x0 - h_side_size, y0 + h_side_size); - glVertex2f(x0 + h_side_size, y0 + h_side_size); - glVertex2f(x0 + h_side_size, y0 - h_side_size); + glVertex2d(x0 - h_side_size, y0 - h_side_size); + glVertex2d(x0 - h_side_size, y0 + h_side_size); + glVertex2d(x0 + h_side_size, y0 + h_side_size); + glVertex2d(x0 + h_side_size, y0 - h_side_size); glEnd(); } else { glBegin(GL_LINE_LOOP); - glVertex2f(x0 - h_side_size, y0 - h_side_size); - glVertex2f(x0 - h_side_size, y0 + h_side_size); - glVertex2f(x0 + h_side_size, y0 + h_side_size); - glVertex2f(x0 + h_side_size, y0 - h_side_size); + glVertex2d(x0 - h_side_size, y0 - h_side_size); + glVertex2d(x0 - h_side_size, y0 + h_side_size); + glVertex2d(x0 + h_side_size, y0 + h_side_size); + glVertex2d(x0 + h_side_size, y0 - h_side_size); glEnd(); } } @@ -1526,52 +1548,58 @@ Render(Item item) /* * Render the label. */ - FIELD.RenderFields(&track->field_set); -#endif + ZnFIELD.RenderFields(&track->field_set); } +#else +static void +Render(ZnItem item __unused) +{ +} +#endif + /* - ********************************************************************************** - * - * IsSensitive -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* IsSensitive -- +* +********************************************************************************** +*/ static ZnBool -IsSensitive(Item item, +IsSensitive(ZnItem item, int item_part) { - if (ISCLEAR(item->flags, SENSITIVE_BIT) || + if (ISCLEAR(item->flags, ZN_SENSITIVE_BIT) || !item->parent->class->IsSensitive(item->parent, ZN_NO_PART)) { return False; } if (item_part < ZN_NO_PART) { - return ISSET(item->part_sensitive, PART_NUMBER_TO_BIT(item_part)); + return ISSET(item->part_sensitive, ZnPartToBit(item_part)); } else if (item_part >= 0) { - return FIELD.IsFieldSensitive(&((TrackItem) item)->field_set, item_part); + return ZnFIELD.IsFieldSensitive(&((TrackItem) item)->field_set, item_part); } else if (item_part == ZN_NO_PART) { - return ISSET(item->flags, SENSITIVE_BIT); + return ISSET(item->flags, ZN_SENSITIVE_BIT); } return True; } /* - ********************************************************************************** - * - * Pick -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* Pick -- +* +********************************************************************************** +*/ static double -Pick(Item item, +Pick(ZnItem item, ZnPick ps) { TrackItem track = (TrackItem) item; - Item c_item; + ZnItem c_item; ZnBBox bbox; double dist=0, new_dist; ZnPoint *points, *p = ps->point; @@ -1584,7 +1612,7 @@ Pick(Item item, /* * Try one of the fields. */ - dist = FIELD.FieldsPick(&track->field_set, p, &best_part); + dist = ZnFIELD.FieldsPick(&track->field_set, p, &best_part); if (dist <= 0.0) { goto report0; } @@ -1592,7 +1620,7 @@ Pick(Item item, /* * Try the current position symbol. */ - ResetBBox(&bbox); + ZnResetBBox(&bbox); if (track->symbol != ZnUnspecifiedImage) { ZnSizeOfImage(track->symbol, &width, &height); bbox.orig.x = track->dev.x-(width+1)/2; @@ -1601,7 +1629,7 @@ Pick(Item item, bbox.corner.y = bbox.orig.y + height; } - new_dist = RectangleToPointDist(&bbox, p); + new_dist = ZnRectangleToPointDist(&bbox, p); if (new_dist < dist) { best_part = CURRENT_POSITION; dist = new_dist; @@ -1615,13 +1643,13 @@ Pick(Item item, */ if (track->field_set.label_format && (track->leader_width > 0) && track->leader_points) { - ZnPoint end_points[LINE_END_POINTS]; + ZnPoint end_points[ZN_LINE_END_POINTS]; width_2 = (track->leader_width>1) ? ((double) track->leader_width)/2.0 : 0; points = (ZnPoint *) ZnListArray(track->leader_points); num_points = ZnListSize(track->leader_points)-1; for (i = 0; i < num_points; i++) { - new_dist = LineToPointDist(&points[i], &points[i+1], p); + new_dist = ZnLineToPointDist(&points[i], &points[i+1], p); new_dist -= width_2; if (new_dist < dist) { best_part = LEADER; @@ -1632,9 +1660,9 @@ Pick(Item item, } } if (track->leader_first_end != NULL) { - GetLineEnd(&points[0], &points[1], track->leader_width, - CapRound, track->leader_first_end, end_points); - new_dist = PolygonToPointDist(end_points, LINE_END_POINTS, p); + ZnGetLineEnd(&points[0], &points[1], track->leader_width, + CapRound, track->leader_first_end, end_points); + new_dist = ZnPolygonToPointDist(end_points, ZN_LINE_END_POINTS, p); if (new_dist < dist) { best_part = LEADER; dist = new_dist; @@ -1644,9 +1672,9 @@ Pick(Item item, } } if (track->leader_last_end != NULL) { - GetLineEnd(&points[num_points-1], &points[num_points-2], track->leader_width, - CapRound, track->leader_last_end, end_points); - new_dist = PolygonToPointDist(end_points, LINE_END_POINTS, p); + ZnGetLineEnd(&points[num_points-1], &points[num_points-2], track->leader_width, + CapRound, track->leader_last_end, end_points); + new_dist = ZnPolygonToPointDist(end_points, ZN_LINE_END_POINTS, p); if (new_dist < dist) { best_part = LEADER; dist = new_dist; @@ -1663,8 +1691,8 @@ Pick(Item item, if ((item->class == ZnTrack) && (track->speed_vector_width > 0)) { pts[0] = track->dev; pts[1] = track->speed_vector_dev; - new_dist = PolylineToPointDist(pts, 2, track->speed_vector_width, - CapRound, JoinRound, p); + new_dist = ZnPolylineToPointDist(pts, 2, track->speed_vector_width, + CapRound, JoinRound, p); if (new_dist < dist) { best_part = SPEED_VECTOR; dist = new_dist; @@ -1681,8 +1709,8 @@ Pick(Item item, if ((c_item != ZN_NO_ITEM) && (track->connection_width > 0)) { pts[0] = track->dev; pts[1] = ((TrackItem) item->connected_item)->dev; - new_dist = PolylineToPointDist(pts, 2, track->connection_width, - CapRound, JoinRound, p); + new_dist = ZnPolylineToPointDist(pts, 2, track->connection_width, + CapRound, JoinRound, p); if (new_dist < dist) { dist = new_dist; best_part = CONNECTION; @@ -1694,34 +1722,34 @@ Pick(Item item, } /* printf("track %d reporting part %d, distance %lf\n", - item->id, best_part, dist); */ + item->id, best_part, dist); */ ps->a_part = best_part; return dist; } /* - ********************************************************************************** - * - * PostScript -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* PostScript -- +* +********************************************************************************** +*/ static void -PostScript(Item item, - PostScriptInfo ps_info) +PostScript(ZnItem item __unused, + ZnPostScriptInfo ps_info __unused) { } #ifdef OM /* - ********************************************************************************** - * - * SendTrackToOm -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* ZnSendTrackToOm -- +* +********************************************************************************** +*/ /* * TODO: * @@ -1731,25 +1759,25 @@ PostScript(Item item, * dealing with tracks. */ void * -SendTrackToOm(void *ptr, - void *item, - int *x, - int *y, - int *sv_dx, - int *sv_dy, - /*int *label_x, - int *label_y, - int *label_width, - int *label_height,*/ - int *rho, - int *theta, - int *visibility, - int *locked, - int *preferred_angle, - int *convergence_style) +ZnSendTrackToOm(void *ptr, + void *item, + int *x, + int *y, + int *sv_dx, + int *sv_dy, + /*int *label_x, + int *label_y, + int *label_width, + int *label_height,*/ + int *rho, + int *theta, + int *visibility, + int *locked, + int *preferred_angle, + int *convergence_style) { - WidgetInfo *wi = (WidgetInfo *) ptr; - Item current_item = (Item) item; + ZnWInfo *wi = (ZnWInfo *) ptr; + ZnItem current_item = (ZnItem) item; TrackItem track; ZnBBox zn_bbox, bbox; ZnBool to_be_sent; @@ -1772,46 +1800,47 @@ SendTrackToOm(void *ptr, /* We send invisibles items because the current algorithm take care of the age of the tracks. - to_be_sent &= ISSET(current_item->flags, VISIBLE_BIT);*/ + to_be_sent &= ISSET(current_item->flags, ZN_VISIBLE_BIT);*/ - IntersectBBox(&zn_bbox, ¤t_item->item_bounding_box, &bbox); - to_be_sent &= !IsEmptyBBox(&bbox); + ZnIntersectBBox(&zn_bbox, ¤t_item->item_bounding_box, &bbox); + to_be_sent &= !ZnIsEmptyBBox(&bbox); if (to_be_sent) { track = (TrackItem) current_item; - *x = track->dev.x; - *y = wi->height - track->dev.y; + *x = (int) track->dev.x; + *y = wi->height - ((int) track->dev.y); /* * We must send world values for speed vector deltas as device * equivalents can be null. But then if the image is rotated this * is nonsense. */ - *sv_dx = track->speed_vector.x; - *sv_dy = track->speed_vector.y; + *sv_dx = (int) track->speed_vector.x; + *sv_dy = (int) track->speed_vector.y; /* Fri Oct 13 15:16:38 2000 - *label_x = track->field_set.label_pos.x; - *label_y = wi->height - track->field_set.label_pos.y; - if (track->field_set.label_format) { - ZnDim bb_width, bb_height; - - FIELD.GetLabelBBox(&track->field_set, &bb_width, &bb_height); - *label_width = bb_width; - *label_height = bb_height; - } - else { - *label_width = 0; - *label_height = 0; - } + *label_x = track->field_set.label_pos.x; + *label_y = wi->height - track->field_set.label_pos.y; + if (track->field_set.label_format) { + ZnDim bb_width, bb_height; + + ZnFIELD.GetLabelBBox(&track->field_set, &bb_width, &bb_height); + *label_width = bb_width; + *label_height = bb_height; + } + else { + *label_width = 0; + *label_height = 0; + } */ /* - * Trial to fix rho drift due to PointPolarToCartesian + * Trial to fix rho drift due to ZnPointPolarToCartesian * roundoff error. */ - rho_derived = sqrt(track->label_dx*track->label_dx + track->label_dy*track->label_dy); + rho_derived = (int) sqrt(track->label_dx*track->label_dx + + track->label_dy*track->label_dy); #ifdef DP if (ABS(rho_derived - track->label_distance) < LABEL_DISTANCE_THRESHOLD) { /* The error is narrow so value discarded */ @@ -1825,11 +1854,11 @@ SendTrackToOm(void *ptr, *rho = rho_derived; #endif *theta = track->label_angle; - *visibility = (ISSET(current_item->flags, VISIBLE_BIT) ? 1 : 0 ); + *visibility = (ISSET(current_item->flags, ZN_VISIBLE_BIT) ? 1 : 0 ); *locked = (ISSET(track->flags, FROZEN_LABEL_BIT) ? 1 : 0); *preferred_angle = track->label_preferred_angle; *convergence_style = track->label_convergence_style; - break; + break; } current_item = current_item->next; @@ -1840,17 +1869,17 @@ SendTrackToOm(void *ptr, /* - ********************************************************************************** - * - * SetLabelAngleFromOm -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* ZnSetLabelAngleFromOm -- +* +********************************************************************************** +*/ void -SetLabelAngleFromOm(void *ptr, /* No longer in use. */ - void *item, - int rho, - int theta) +ZnSetLabelAngleFromOm(void *ptr __unused, /* No longer in use. */ + void *item, + int rho __unused, + int theta) { TrackItem track = (TrackItem) item; @@ -1864,31 +1893,31 @@ SetLabelAngleFromOm(void *ptr, /* No longer in use. */ track->label_distance = rho; #endif SET(track->flags, POLAR_BIT); - ITEM.Invalidate((Item) item, ZN_COORDS_FLAG); - /* ZnGroupSetCallOm(((Item)item)->parent, True);*/ + ZnITEM.Invalidate((ZnItem) item, ZN_COORDS_FLAG); + /* ZnGroupSetCallOm(((ZnItem)item)->parent, True);*/ } } /* - ********************************************************************************** - * - * QueryLabelPosition -- OverlapMan query the widget about what would be the - * label position if label_angle is theta - * - ********************************************************************************** - */ +********************************************************************************** +* +* ZnQueryLabelPosition -- OverlapMan query the widget about what would be the +* label position if label_angle is theta +* +********************************************************************************** +*/ void -QueryLabelPosition(void *ptr, /* No longer in use. */ - void *item, - int theta, - int *x, - int *y, - int *w, - int *h) +ZnQueryLabelPosition(void *ptr __unused, /* No longer in use. */ + void *item, + int theta, + int *x, + int *y, + int *w, + int *h) { - Item it = (Item) item; - WidgetInfo *wi = it->wi; + ZnItem it = (ZnItem) item; + ZnWInfo *wi = it->wi; TrackItem track = (TrackItem) it; if (track->field_set.label_format) { @@ -1899,18 +1928,18 @@ QueryLabelPosition(void *ptr, /* No longer in use. */ /* * !! BUG !! This doesn't work if the current transform has some rotation. */ - heading = ProjectionToAngle(track->speed_vector.x, track->speed_vector.y); - PointPolarToCartesian(heading, track->label_distance, theta, &delta_x, &delta_y); - FIELD.GetLabelBBox(&track->field_set, &bb_width, &bb_height); + heading = ZnProjectionToAngle(track->speed_vector.x, track->speed_vector.y); + ZnPointPolarToCartesian(heading, track->label_distance, (ZnReal) theta, &delta_x, &delta_y); + ZnFIELD.GetLabelBBox(&track->field_set, &bb_width, &bb_height); /* * !! BUG !! This assume a label placing relative to the center anchor. * We must fix this by taking into account the label anchor. */ - *x = track->dev.x + (ZnPos) (delta_x - bb_width/2); - *y = track->dev.y - (ZnPos) (delta_y + bb_height/2); - *y = wi->height - *y; - *w = bb_width; - *h = bb_height; + *x = (int) track->dev.x + (int) (delta_x - bb_width/2); + *y = (int) track->dev.y - (int) (delta_y + bb_height/2); + *y = ((int) wi->height) - *y; + *w = (int) bb_width; + *h = (int) bb_height; } else { *x = *y = *w = *h = 0; @@ -1920,29 +1949,29 @@ QueryLabelPosition(void *ptr, /* No longer in use. */ /* - ********************************************************************************** - * - * SetHistoryVisibility -- PLC - not yet implemented - * - ********************************************************************************** - */ +********************************************************************************** +* +* ZnSetHistoryVisibility -- PLC - not yet implemented +* +********************************************************************************** +*/ void -SetHistoryVisibility(Item item, - int index, - ZnBool visible) +ZnSetHistoryVisibility(ZnItem item __unused, + int index __unused, + ZnBool visible __unused) { } /* - ********************************************************************************** - * - * TruncHistory -- PLC - not yet interfaced - * - ********************************************************************************** - */ +********************************************************************************** +* +* ZnTruncHistory -- PLC - not yet interfaced +* +********************************************************************************** +*/ void -TruncHistory(Item item) +ZnTruncHistory(ZnItem item) { TrackItem track = (TrackItem) item; @@ -1952,43 +1981,43 @@ TruncHistory(Item item) while (size--) { hist_tbl[size].visible = False; } - ITEM.Invalidate(item, ZN_COORDS_FLAG); + ZnITEM.Invalidate(item, ZN_COORDS_FLAG); } } /* - ********************************************************************************** - * - * GetFieldSet -- - * - ********************************************************************************** - */ -static FieldSet -GetFieldSet(Item item) +********************************************************************************** +* +* GetFieldSet -- +* +********************************************************************************** +*/ +static ZnFieldSet +GetFieldSet(ZnItem item) { return &((TrackItem) item)->field_set; } /* - ********************************************************************************** - * - * GetAnchor -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* GetAnchor -- +* +********************************************************************************** +*/ static void -GetAnchor(Item item, - ZnAnchor anchor, +GetAnchor(ZnItem item, + Tk_Anchor anchor, ZnPoint *p) { - FieldSet field_set = &((TrackItem) item)->field_set; + ZnFieldSet field_set = &((TrackItem) item)->field_set; ZnDim width, height; if (field_set->label_format) { - FIELD.GetLabelBBox(field_set, &width, &height); - Origin2Anchor(&field_set->label_pos, width, height, anchor, p); + ZnFIELD.GetLabelBBox(field_set, &width, &height); + ZnOrigin2Anchor(&field_set->label_pos, width, height, anchor, p); } else { p->x = p->y = 0.0; @@ -1997,60 +2026,60 @@ GetAnchor(Item item, /* - ********************************************************************************** - * - * Coords -- - * Return or edit the item position. - * - ********************************************************************************** - */ +********************************************************************************** +* +* Coords -- +* Return or edit the item position. +* +********************************************************************************** +*/ static int -Coords(Item item, - int contour, - int index, - int cmd, - ZnPoint **pts, - char **controls, - int *num_pts) +Coords(ZnItem item, + int contour __unused, + int index __unused, + int cmd, + ZnPoint **pts, + char **controls __unused, + unsigned int *num_pts) { TrackItem track = (TrackItem) item; - if ((cmd == COORDS_ADD) || (cmd == COORDS_ADD_LAST) || (cmd == COORDS_REMOVE)) { + if ((cmd == ZN_COORDS_ADD) || (cmd == ZN_COORDS_ADD_LAST) || (cmd == ZN_COORDS_REMOVE)) { Tcl_AppendResult(item->wi->interp, " ", item->class->name, "s can't add or remove vertices", NULL); - return ZN_ERROR; + return TCL_ERROR; } - else if ((cmd == COORDS_REPLACE) || (cmd == COORDS_REPLACE_ALL)) { + else if ((cmd == ZN_COORDS_REPLACE) || (cmd == ZN_COORDS_REPLACE_ALL)) { if (*num_pts == 0) { Tcl_AppendResult(item->wi->interp, " coords command need 1 point on ", item->class->name, "s", NULL); - return ZN_ERROR; + return TCL_ERROR; } if (item->class == ZnTrack) { AddToHistory(track, track->pos); } track->pos = (*pts)[0]; - ITEM.Invalidate(item, ZN_COORDS_FLAG); + ZnITEM.Invalidate(item, ZN_COORDS_FLAG); } - else if ((cmd == COORDS_READ) || (cmd == COORDS_READ_ALL)) { + else if ((cmd == ZN_COORDS_READ) || (cmd == ZN_COORDS_READ_ALL)) { *num_pts = 1; *pts = &track->pos; } - return ZN_OK; + return TCL_OK; } /* - ********************************************************************************** - * - * Part -- - * Convert a private part from/to symbolic representation. - * - ********************************************************************************** - */ +********************************************************************************** +* +* Part -- +* Convert a private part from/to symbolic representation. +* +********************************************************************************** +*/ static int -Part(Item item, +Part(ZnItem item, Tcl_Obj **part_spec, int *part) { @@ -2066,7 +2095,7 @@ Part(Item item, else if (isdigit(part_str[0])) { *part = strtol(part_str, &end, 0); if ((*end != 0) || (*part < 0) || - (*part >= ((TrackItem) item)->field_set.num_fields)) { + ((unsigned int) *part >= ((TrackItem) item)->field_set.num_fields)) { goto part_error; } } @@ -2090,7 +2119,7 @@ Part(Item item, else { part_error: Tcl_AppendResult(item->wi->interp, " invalid item part specification", NULL); - return ZN_ERROR; + return TCL_ERROR; } } } @@ -2120,117 +2149,117 @@ Part(Item item, } } if (part_str[0]) { - *part_spec = NewStringObj(part_str); + *part_spec = Tcl_NewStringObj(part_str, -1); } } } - return ZN_OK; + return TCL_OK; } /* - ********************************************************************************** - * - * Index -- - * Parse a text index and return its value and aa - * error status (standard Tcl result). - * - ********************************************************************************** - */ +********************************************************************************** +* +* Index -- +* Parse a text index and return its value and aa +* error status (standard Tcl result). +* +********************************************************************************** +*/ static int -Index(Item item, +Index(ZnItem item, int field, Tcl_Obj *index_spec, int *index) { - return FIELD.FieldIndex(&((TrackItem) item)->field_set, field, - index_spec, index); + return ZnFIELD.FieldIndex(&((TrackItem) item)->field_set, field, + index_spec, index); } /* - ********************************************************************************** - * - * InsertChars -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* InsertChars -- +* +********************************************************************************** +*/ static void -InsertChars(Item item, +InsertChars(ZnItem item, int field, int *index, char *chars) { - if (FIELD.FieldInsertChars(&((TrackItem) item)->field_set, - field, index, chars)) { - ITEM.Invalidate(item, ZN_COORDS_FLAG); + if (ZnFIELD.FieldInsertChars(&((TrackItem) item)->field_set, + field, index, chars)) { + ZnITEM.Invalidate(item, ZN_COORDS_FLAG); } } /* - ********************************************************************************** - * - * DeleteChars -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* DeleteChars -- +* +********************************************************************************** +*/ static void -DeleteChars(Item item, +DeleteChars(ZnItem item, int field, int *first, int *last) { - if (FIELD.FieldDeleteChars(&((TrackItem) item)->field_set, - field, first, last)) { - ITEM.Invalidate(item, ZN_COORDS_FLAG); + if (ZnFIELD.FieldDeleteChars(&((TrackItem) item)->field_set, + field, first, last)) { + ZnITEM.Invalidate(item, ZN_COORDS_FLAG); } } /* - ********************************************************************************** - * - * Cursor -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* Cursor -- +* +********************************************************************************** +*/ static void -TrackCursor(Item item, - int field, - int index) +TrackCursor(ZnItem item, + int field, + int index) { - FIELD.FieldCursor(&((TrackItem) item)->field_set, field, index); + ZnFIELD.FieldCursor(&((TrackItem) item)->field_set, field, index); } /* - ********************************************************************************** - * - * Selection -- - * - ********************************************************************************** - */ +********************************************************************************** +* +* Selection -- +* +********************************************************************************** +*/ static int -Selection(Item item, - int field, - int offset, - char *chars, - int max_chars) +Selection(ZnItem item, + int field, + int offset, + char *chars, + int max_chars) { - return FIELD.FieldSelection(&((TrackItem) item)->field_set, field, - offset, chars, max_chars); + return ZnFIELD.FieldSelection(&((TrackItem) item)->field_set, field, + offset, chars, max_chars); } /* - ********************************************************************************** - * - * Exported functions struct -- - * - ********************************************************************************** - */ -static ItemClassStruct TRACK_ITEM_CLASS = { +********************************************************************************** +* +* Exported functions struct -- +* +********************************************************************************** +*/ +static ZnItemClassStruct TRACK_ITEM_CLASS = { sizeof(TrackItemStruct), 4, /* num_parts */ True, /* has_anchors */ @@ -2263,7 +2292,7 @@ static ItemClassStruct TRACK_ITEM_CLASS = { PostScript }; -static ItemClassStruct WAY_POINT_ITEM_CLASS = { +static ZnItemClassStruct WAY_POINT_ITEM_CLASS = { sizeof(TrackItemStruct), 3, /* num_parts */ True, /* has_anchors */ -- cgit v1.1