/* * WidgetInfo.h -- Radar Widget record. * * Authors : Patrick Lecoanet. * Creation date : Mon Feb 1 12:13:24 1999 * * $Id$ */ /* * Copyright (c) 1993 - 1999 CENA, Patrick Lecoanet -- * * This code is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This code is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this code; if not, write to the Free * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ #ifndef _WidgetInfo_h #define _WidgetInfo_h #include #include #include "Item.h" #include "Transfo.h" #include "Types.h" #ifndef NUM_ALPHA_STEPS #define NUM_ALPHA_STEPS 16 #endif /* Constants for flags */ #define REPICK_IN_PROGRESS 1 #define LEFT_GRABBED_ITEM 2 #define INTERNAL_NEED_REPICK 8 typedef struct _WidgetInfo { Tcl_Interp *interp; /* Interpreter associated with widget. */ Tcl_Command cmd; /* Token for radar widget command. */ Tcl_HashTable *tag_table; /* Hash table for object tags. */ Tcl_HashTable *id_table; /* Hash table for object ids. */ Tcl_HashTable *t_table; /* Hash table for transformations. */ unsigned long obj_id; /* Id for the next new object. */ Tk_BindingTable binding_table; /* Table of all bindings currently defined * for this radar. NULL means that no * bindings exist, so the table hasn't been * created. Each "object" used for this * table is either a Tk_Uid for a tag or * the address of an item named by id. */ int state; /* Last known modifier state. Used to * defer picking a new current object * while buttons are down. */ Item current_item; /* Item picked from previous pick sequence */ Item new_item; /* Item picked from current pick sequence */ int current_part; int new_part; XEvent pick_event; /* Event used to forge fake events and to do * repicks. */ RadarBool update_pending; /* True means there is a pending graphic * update. */ RadarBBox exposed_area; /* Window area that need to be rexposed. * It is distinct from redraw_area which * is updated when items are changed. */ Pixmap alpha_stipples[NUM_ALPHA_STEPS]; int border_width; int opt_width; /* Window size as stated/reported by the option. */ int opt_height; /* They are equal to the width/height fields after * the actual resize. They may to be equal if * the resize is not acknowledged by the geo * manager. */ Tk_3DBorder bg_border; /* The data describing the background * and border colors. */ ReliefStyle relief; /* The border relief. */ /* Tracks global resources */ int track_managed_history_size; /* Size of history for tracks */ RadarBool track_manage_history; /* Tell if the tracks manage their */ /* histories. */ int speed_vector_length; /* How long (in time) are speedvectors*/ #ifdef OM int om_group_id; /* Tell which group contains tracks to be */ Item om_group; /* processed for anti label overlap. */ #endif /* Maps global resources */ RadarFont map_text_font; /* Font for texts in Map items */ Pixmap map_distance_symbol; /* display distance marks along Map */ /* lines. */ /* Transformer */ RadarTransfo *current_transfo; RadarList transfo_stack; ClipState *current_clip; RadarList clip_stack; /* Others */ RadarColor fore_color; /* Default foreground used in new items */ RadarColor back_color; /* Color of the radar background. */ RadarColor bbox_color; /* Color used to draw bboxes (debug). */ Cursor cursor; /* Cursor displayed in radar window. */ RadarBool draw_bboxes; /* Draw item's bboxes (debug). */ int pick_aperture; /* size of pick aperture in pixels */ RadarFont font; /* Default font used in new items */ RadarBool reshape; /* Use the Shape Extension on the window.*/ RadarBool full_reshape; /* Use it on the top level window. */ char *tile_name; RadarImage tile; /* Radar private resources */ int width; /* Actual window dimension. */ int height; /* Graphic variables */ Display *dpy; /* The display of the widget window. */ Screen *screen; RadarWindow win; /* The window of the widget. */ RadarBool realized; Pixmap draw_buffer; /* Pixmap for double buffering */ RadarBBox damaged_area; /* The current damaged rectangle */ Region damaged_region; GC gc; RadarBool has_x_shm; /* Tell if the SHM X11 ext is avail. */ RadarBool has_x_shape; /* Tell if she Shape X ext. is avail. */ RadarBool has_x_input; /* Tell if she X input ext. is avail. */ int events_flags; /* NEED_REPICK et al */ Window real_top; Item top_group; RadarList work_item_list; /* Temporary item list used in internal * works. */ RadarList work_pts; /* Temporary point list. */ /* Perf measurement variables. */ RadarBool monitoring; int num_updates; int last_time; int total_time; } WidgetInfo; #ifdef __CPLUSPLUS__ } #endif #endif /* _WidgetInfo_h */