aboutsummaryrefslogtreecommitdiff
path: root/generic/Track.c
diff options
context:
space:
mode:
authorlecoanet2003-04-16 09:49:22 +0000
committerlecoanet2003-04-16 09:49:22 +0000
commit3261805fee19e346b4d1f84b23816daa1628764a (patch)
tree63ca1d7e4b0a3d9ae49cc0888e58033c3ef3fe22 /generic/Track.c
parenteed2656db0adae2c234c3d74af0913746ed5c444 (diff)
downloadtkzinc-3261805fee19e346b4d1f84b23816daa1628764a.zip
tkzinc-3261805fee19e346b4d1f84b23816daa1628764a.tar.gz
tkzinc-3261805fee19e346b4d1f84b23816daa1628764a.tar.bz2
tkzinc-3261805fee19e346b4d1f84b23816daa1628764a.tar.xz
Update from the Windows port and general cleanup/restructure
Diffstat (limited to 'generic/Track.c')
-rw-r--r--generic/Track.c1223
1 files changed, 626 insertions, 597 deletions
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, &current_item->item_bounding_box, &bbox);
- to_be_sent &= !IsEmptyBBox(&bbox);
+ ZnIntersectBBox(&zn_bbox, &current_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 */