diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bltGrAxis.C | 10 | ||||
-rw-r--r-- | src/bltGrAxis.h | 5 | ||||
-rw-r--r-- | src/bltGrAxisOp.C | 55 | ||||
-rw-r--r-- | src/bltGrBind.C | 20 | ||||
-rw-r--r-- | src/bltGrBind.h | 100 | ||||
-rw-r--r-- | src/bltGrElemOp.C | 20 | ||||
-rw-r--r-- | src/bltGrLegd.C | 25 | ||||
-rw-r--r-- | src/bltGrLegdOp.C | 10 | ||||
-rw-r--r-- | src/bltGrMisc.h | 2 | ||||
-rw-r--r-- | src/bltGraph.C | 2 | ||||
-rw-r--r-- | src/bltGraph.h | 1 | ||||
-rw-r--r-- | src/bltGraphBar.C | 1 | ||||
-rw-r--r-- | src/bltGraphLine.C | 1 |
13 files changed, 66 insertions, 186 deletions
diff --git a/src/bltGrAxis.C b/src/bltGrAxis.C index fcbd708..661ecb6 100644 --- a/src/bltGrAxis.C +++ b/src/bltGrAxis.C @@ -43,13 +43,13 @@ using namespace Blt; #define AXIS_PAD_TITLE 2 -#define EXP10(x) (pow(10.0,(x))) +#define EXP10(x) (pow(10.0,(x))) AxisName axisNames[] = { - { "x", CID_AXIS_X, MARGIN_BOTTOM, MARGIN_LEFT }, - { "y", CID_AXIS_Y, MARGIN_LEFT, MARGIN_BOTTOM }, - { "x2", CID_AXIS_X, MARGIN_TOP, MARGIN_RIGHT }, - { "y2", CID_AXIS_Y, MARGIN_RIGHT, MARGIN_TOP } + { "x", CID_AXIS_X }, + { "y", CID_AXIS_Y }, + { "x2", CID_AXIS_X }, + { "y2", CID_AXIS_Y } } ; // Defs diff --git a/src/bltGrAxis.h b/src/bltGrAxis.h index 6cdd20c..4aec392 100644 --- a/src/bltGrAxis.h +++ b/src/bltGrAxis.h @@ -55,10 +55,8 @@ typedef struct { } AxisInfo; typedef struct { - const char *name; + const char* name; ClassId classId; - int margin; - int invertMargin; } AxisName; extern AxisName axisNames[]; @@ -222,6 +220,7 @@ class Axis { Tk_OptionTable optionTable() {return optionTable_;} void* ops() {return ops_;} + ClassId classId() {return classId_;} int configure(); void map(int, int); diff --git a/src/bltGrAxisOp.C b/src/bltGrAxisOp.C index 262e2b0..00450f4 100644 --- a/src/bltGrAxisOp.C +++ b/src/bltGrAxisOp.C @@ -191,54 +191,6 @@ static int DeleteOp(ClientData clientData, Tcl_Interp* interp, return TCL_OK; } -static int FocusOp(ClientData clientData, Tcl_Interp* interp, - int objc, Tcl_Obj* const objv[]) -{ - Graph* graphPtr = (Graph*)clientData; - graphPtr->focusPtr_ = NULL; - if (objc == 4) { - Axis* axisPtr; - if (graphPtr->getAxis(objv[3], &axisPtr) != TCL_OK) - return TCL_ERROR; - - AxisOptions* ops = (AxisOptions*)axisPtr->ops(); - if (axisPtr && !ops->hide && axisPtr->use_) - graphPtr->focusPtr_ = axisPtr; - } - - Blt_SetFocusItem(graphPtr->bindTable_, graphPtr->focusPtr_, NULL); - - if (graphPtr->focusPtr_) - Tcl_SetStringObj(Tcl_GetObjResult(interp), graphPtr->focusPtr_->name_,-1); - - return TCL_OK; -} - -static int GetOp(ClientData clientData, Tcl_Interp* interp, - int objc, Tcl_Obj* const objv[]) -{ - Graph* graphPtr = (Graph*)clientData; - if (objc<4) - return TCL_ERROR; - - Axis* axisPtr = (Axis*)Blt_GetCurrentItem(graphPtr->bindTable_); - - // Report only on axes - if ((axisPtr) && - ((axisPtr->classId_ == CID_AXIS_X) || - (axisPtr->classId_ == CID_AXIS_Y) || - (axisPtr->classId_ == CID_NONE))) { - - char *string = Tcl_GetString(objv[3]); - if (!strcmp(string, "current")) - Tcl_SetStringObj(Tcl_GetObjResult(interp), axisPtr->name_,-1); - else if (!strcmp(string, "detail")) - Tcl_SetStringObj(Tcl_GetObjResult(interp), axisPtr->detail_, -1); - } - - return TCL_OK; -} - static int InvTransformOp(ClientData clientData, Tcl_Interp* interp, int objc, Tcl_Obj* const objv[]) { @@ -362,8 +314,6 @@ const Ensemble axisEnsemble[] = { {"create", CreateOp, 0}, {"deactivate", ActivateOp, 0}, {"delete", DeleteOp, 0}, - {"focus", FocusOp, 0}, - {"get", GetOp, 0}, {"invtransform", InvTransformOp, 0}, {"limits", LimitsOp, 0}, {"margin", MarginOp, 0}, @@ -604,15 +554,14 @@ int AxisTransformOp(Axis* axisPtr, Tcl_Interp* interp, int AxisTypeOp(Axis* axisPtr, Tcl_Interp* interp, int objc, Tcl_Obj* const objv[]) { - const char *typeName; - - typeName = ""; + const char* typeName = ""; if (axisPtr->use_) { if (axisNames[axisPtr->margin_].classId == CID_AXIS_X) typeName = "x"; else if (axisNames[axisPtr->margin_].classId == CID_AXIS_Y) typeName = "y"; } + Tcl_SetStringObj(Tcl_GetObjResult(interp), typeName, -1); return TCL_OK; } diff --git a/src/bltGrBind.C b/src/bltGrBind.C index 383f431..f6b6e77 100644 --- a/src/bltGrBind.C +++ b/src/bltGrBind.C @@ -56,7 +56,7 @@ typedef struct _Blt_BindTable BindTable; static int buttonMasks[] = {0, Button1Mask, Button2Mask, Button3Mask, Button4Mask, Button5Mask}; -static void DoEvent(BindTable *bindPtr, XEvent *eventPtr, ClientData item, +static void DoEvent(BindTable* bindPtr, XEvent* eventPtr, ClientData item, ClientData context) { if (!bindPtr->tkwin || !bindPtr->bindingTable) @@ -73,7 +73,7 @@ static void DoEvent(BindTable *bindPtr, XEvent *eventPtr, ClientData item, Blt_List tagList = Blt_List_Create(BLT_ONE_WORD_KEYS); if (!bindPtr->tagProc) { Blt_List_Append(tagList, Tk_GetUid("all"), 0); - Blt_List_Append(tagList, (char *)item, 0); + Blt_List_Append(tagList, (char*)item, 0); } else (*bindPtr->tagProc)(bindPtr, item, context, tagList); @@ -160,13 +160,11 @@ static void PickCurrentItem(BindTable *bindPtr, XEvent *eventPtr) if (bindPtr->pickEvent.type != LeaveNotify) { int x = bindPtr->pickEvent.xcrossing.x; int y = bindPtr->pickEvent.xcrossing.y; - newItem = (*bindPtr->pickProc) (bindPtr->clientData, x, y, &newContext); + newItem = (*bindPtr->pickProc)(bindPtr->clientData, x, y, &newContext); } // Nothing to do: the current item hasn't changed. - if (((newItem == bindPtr->currentItem) && - (newContext == bindPtr->currentContext)) && - ((bindPtr->flags & LEFT_GRABBED_ITEM) == 0)) + if (((newItem == bindPtr->currentItem) && (newContext == bindPtr->currentContext)) && ((bindPtr->flags & LEFT_GRABBED_ITEM) == 0)) return; // Simulate a LeaveNotify event on the previous current item and an @@ -200,7 +198,7 @@ static void PickCurrentItem(BindTable *bindPtr, XEvent *eventPtr) (newContext != bindPtr->newContext)) { // Generate <Enter> and <Leave> events for objects during button - // grabs. This isn't standard. But for example, it allows one to + // grabs. This isn't standard. But for example, it allows one to // provide balloon help on the individual entries of the Hierbox // widget. ClientData savedItem = bindPtr->currentItem; @@ -349,7 +347,7 @@ int Blt_ConfigureBindingsFromObj(Tcl_Interp* interp, BindTable *bindPtr, unsigned long mask; if (command[0] == '+') mask = Tk_CreateBinding(interp, bindPtr->bindingTable, item, seq, - command + 1, 1); + command+1, 1); else mask = Tk_CreateBinding(interp, bindPtr->bindingTable, item, seq, command, 0); @@ -399,12 +397,6 @@ void Blt_DestroyBindingTable(BindTable *bindPtr) bindPtr = NULL; } -void Blt_PickCurrentItem(BindTable *bindPtr) -{ - if (bindPtr->activePick) - PickCurrentItem(bindPtr, &bindPtr->pickEvent); -} - void Blt_DeleteBindings(BindTable *bindPtr, ClientData object) { Tk_DeleteAllBindings(bindPtr->bindingTable, object); diff --git a/src/bltGrBind.h b/src/bltGrBind.h index 2f6dd92..abfb27a 100644 --- a/src/bltGrBind.h +++ b/src/bltGrBind.h @@ -37,85 +37,39 @@ typedef struct _Blt_BindTable *Blt_BindTable; typedef ClientData (Blt_BindPickProc)(ClientData clientData, int x, int y, - ClientData *contextPtr); + ClientData *contextPtr); typedef void (Blt_BindTagProc)(Blt_BindTable bindTable, ClientData object, - ClientData context, Blt_List list); - - -/* - * Binding structure information: - */ + ClientData context, Blt_List list); struct _Blt_BindTable { - unsigned int flags; - Tk_BindingTable bindingTable; - /* Table of all bindings currently defined. - * 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. */ - - ClientData currentItem; /* The item currently containing the mouse - * pointer, or NULL if none. */ - ClientData currentContext; /* One word indicating what kind of object was - * picked. */ - - ClientData newItem; /* The item that is about to become the - * current one, or NULL. This field is used - * to detect deletions of the new current item - * pointer that occur during Leave processing - * of the previous current tab. */ - ClientData newContext; /* One-word indicating what kind of object was - * just picked. */ - - ClientData focusItem; - ClientData focusContext; - - XEvent pickEvent; /* The event upon which the current choice of - * the current tab is based. Must be saved so - * that if the current item is deleted, we can - * pick another. */ - int activePick; /* The pick event has been initialized so that - * we can repick it */ - - int state; /* Last known modifier state. Used to defer - * picking a new current object while buttons - * are down. */ - - ClientData clientData; - Tk_Window tkwin; - Blt_BindPickProc *pickProc; /* Routine to report the item the mouse is - * currently over. */ - Blt_BindTagProc *tagProc; /* Routine to report tags picked items. */ + unsigned int flags; + Tk_BindingTable bindingTable; + ClientData currentItem; // The item currently containing the mouse pointer + ClientData currentContext; // One word indicating what kind of object + ClientData newItem; // The item that is about to become the current one + ClientData newContext; // One-word indicating what kind of object was picked + ClientData focusItem; + ClientData focusContext; + XEvent pickEvent; // The event upon which the choice of the current tab + int activePick; // The pick event has been initialized so that we can repick + int state; // Last known modifier state + ClientData clientData; + Tk_Window tkwin; + Blt_BindPickProc *pickProc; // Routine to report the item the mouse is over + Blt_BindTagProc *tagProc; // Routine to report tags picked items }; -extern void Blt_DestroyBindingTable(Blt_BindTable table); - extern Blt_BindTable Blt_CreateBindingTable(Tcl_Interp* interp, - Tk_Window tkwin, ClientData clientData, Blt_BindPickProc *pickProc, - Blt_BindTagProc *tagProc); - -extern int Blt_ConfigureBindingsFromObj(Tcl_Interp* interp, - Blt_BindTable table, ClientData item, int objc, Tcl_Obj *const *objv); - -extern void Blt_PickCurrentItem(Blt_BindTable table); - + Tk_Window tkwin, + ClientData clientData, + Blt_BindPickProc *pickProc, + Blt_BindTagProc *tagProc); +extern void Blt_DestroyBindingTable(Blt_BindTable table); extern void Blt_DeleteBindings(Blt_BindTable table, ClientData object); +extern int Blt_ConfigureBindingsFromObj(Tcl_Interp* interp, + Blt_BindTable table, + ClientData item, + int objc, Tcl_Obj *const *objv); -#define Blt_SetFocusItem(bindPtr, object, context) \ - ((bindPtr)->focusItem = (ClientData)(object),\ - (bindPtr)->focusContext = (ClientData)(context)) - -#define Blt_SetCurrentItem(bindPtr, object, context) \ - ((bindPtr)->currentItem = (ClientData)(object),\ - (bindPtr)->currentContext = (ClientData)(context)) - -#define Blt_GetCurrentItem(bindPtr) ((bindPtr)->currentItem) -#define Blt_GetCurrentContext(bindPtr) ((bindPtr)->currentContext) -#define Blt_GetLatestItem(bindPtr) ((bindPtr)->newItem) - -#define Blt_GetBindingData(bindPtr) ((bindPtr)->clientData) - -#endif /*_BLT_BIND_H*/ +#endif diff --git a/src/bltGrElemOp.C b/src/bltGrElemOp.C index e7d8a38..d56adad 100644 --- a/src/bltGrElemOp.C +++ b/src/bltGrElemOp.C @@ -329,7 +329,8 @@ static int DeleteOp(ClientData clientData, Tcl_Interp* interp, Element* elemPtr; if (graphPtr->getElement(objv[ii], &elemPtr) != TCL_OK) return TCL_ERROR; - graphPtr->destroyElement(elemPtr); + graphPtr->legend_->removeElement(elemPtr); + delete elemPtr; } graphPtr->flags |= RESET; @@ -351,22 +352,6 @@ static int ExistsOp(ClientData clientData, Tcl_Interp* interp, return TCL_OK; } -static int GetOp(ClientData clientData, Tcl_Interp* interp, - int objc, Tcl_Obj* const objv[]) -{ - Graph* graphPtr = (Graph*)clientData; - if (objc<4) - return TCL_ERROR; - - char *string = Tcl_GetString(objv[3]); - if ((string[0] == 'c') && (strcmp(string, "current") == 0)) { - Element* elemPtr = (Element*)Blt_GetCurrentItem(graphPtr->bindTable_); - if (elemPtr) - Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->name_,-1); - } - return TCL_OK; -} - static int LowerOp(ClientData clientData, Tcl_Interp* interp, int objc, Tcl_Obj* const objv[]) { @@ -538,7 +523,6 @@ const Ensemble elementEnsemble[] = { {"deactivate", DeactivateOp, 0}, {"delete", DeleteOp, 0}, {"exists", ExistsOp, 0}, - {"get", GetOp, 0}, {"lower", LowerOp, 0}, {"names", NamesOp, 0}, {"raise", RaiseOp, 0}, diff --git a/src/bltGrLegd.C b/src/bltGrLegd.C index e5b4b22..e6955d8 100644 --- a/src/bltGrLegd.C +++ b/src/bltGrLegd.C @@ -65,7 +65,8 @@ static const char* positionObjOption[] = { static Tk_OptionSpec optionSpecs[] = { {TK_OPTION_BORDER, "-activebackground", "activeBackground", "ActiveBackground", - STD_ACTIVE_BACKGROUND, -1, Tk_Offset(LegendOptions, activeBg), 0, NULL, CACHE}, + STD_ACTIVE_BACKGROUND, -1, Tk_Offset(LegendOptions, activeBg), + 0, NULL, CACHE}, {TK_OPTION_PIXELS, "-activeborderwidth", "activeBorderWidth", "ActiveBorderWidth", STD_BORDERWIDTH, -1, Tk_Offset(LegendOptions, entryBW), 0, NULL, LAYOUT}, @@ -78,7 +79,8 @@ static Tk_OptionSpec optionSpecs[] = { "n", -1, Tk_Offset(LegendOptions, anchor), 0, NULL, LAYOUT}, {TK_OPTION_SYNONYM, "-bg", NULL, NULL, NULL, -1, 0, 0, "-background", 0}, {TK_OPTION_BORDER, "-background", "background", "Background", - NULL, -1, Tk_Offset(LegendOptions, normalBg), TK_OPTION_NULL_OK, NULL, CACHE}, + NULL, -1, Tk_Offset(LegendOptions, normalBg), + TK_OPTION_NULL_OK, NULL, CACHE}, {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth", STD_BORDERWIDTH, -1, Tk_Offset(LegendOptions, borderWidth), 0, NULL, LAYOUT}, @@ -91,12 +93,14 @@ static Tk_OptionSpec optionSpecs[] = { "dot", -1, Tk_Offset(LegendOptions, focusDashes), TK_OPTION_NULL_OK, &dashesObjOption, CACHE}, {TK_OPTION_COLOR, "-focusforeground", "focusForeground", "FocusForeground", - STD_ACTIVE_FOREGROUND, -1, Tk_Offset(LegendOptions, focusColor), 0, NULL, CACHE}, + STD_ACTIVE_FOREGROUND, -1, Tk_Offset(LegendOptions, focusColor), + 0, NULL, CACHE}, {TK_OPTION_FONT, "-font", "font", "Font", STD_FONT_SMALL, -1, Tk_Offset(LegendOptions, style.font), 0, NULL, LAYOUT}, {TK_OPTION_SYNONYM, "-fg", NULL, NULL, NULL, -1, 0, 0, "-foreground", 0}, {TK_OPTION_COLOR, "-foreground", "foreground", "Foreground", - STD_NORMAL_FOREGROUND, -1, Tk_Offset(LegendOptions, fgColor), 0, NULL, CACHE}, + STD_NORMAL_FOREGROUND, -1, Tk_Offset(LegendOptions, fgColor), + 0, NULL, CACHE}, {TK_OPTION_BOOLEAN, "-hide", "hide", "Hide", "no", -1, Tk_Offset(LegendOptions, hide), 0, NULL, LAYOUT}, {TK_OPTION_PIXELS, "-ipadx", "iPadX", "Pad", @@ -852,8 +856,6 @@ int Legend::getElementFromObj(Tcl_Obj* objPtr, Element** elemPtrPtr) if (!strcmp(string, "anchor")) elemPtr = selAnchorPtr_; - else if (!strcmp(string, "current")) - elemPtr = (Element*)Blt_GetCurrentItem(bindTable_); else if (!strcmp(string, "first")) elemPtr = getFirstElement(); else if (!strcmp(string, "focus")) @@ -872,10 +874,11 @@ int Legend::getElementFromObj(Tcl_Obj* objPtr, Element** elemPtrPtr) elemPtr = getPreviousColumn(focusPtr_); else if (string[0] == '@') { int x, y; - if (Blt_GetXY(graphPtr_->interp_, graphPtr_->tkwin_, string, &x, &y) !=TCL_OK) + if (Blt_GetXY(graphPtr_->interp_, graphPtr_->tkwin_, string, &x, &y) != TCL_OK) return TCL_ERROR; - elemPtr = (Element*)PickEntryProc(graphPtr_, x, y, NULL); + ClientData classId; + elemPtr = (Element*)PickEntryProc(graphPtr_, x, y, &classId); } else { if (graphPtr_->getElement(objPtr, &elemPtr) != TCL_OK) @@ -1077,13 +1080,13 @@ static ClientData PickEntryProc(ClientData clientData, int x, int y, Element* elemPtr = (Element*)Blt_Chain_GetValue(link); ElementOptions* elemOps = (ElementOptions*)elemPtr->ops(); if (elemOps->label) { - if (count == n) + if (count == n) { + *contextPtr = (ClientData)elemPtr->classId(); return elemPtr; + } count++; } } - if (link) - return Blt_Chain_GetValue(link); } } diff --git a/src/bltGrLegdOp.C b/src/bltGrLegdOp.C index 7f146d1..daea382 100644 --- a/src/bltGrLegdOp.C +++ b/src/bltGrLegdOp.C @@ -247,11 +247,13 @@ static int FocusOp(ClientData clientData, Tcl_Interp* interp, if (legendPtr->getElementFromObj(objv[3], &elemPtr) != TCL_OK) return TCL_ERROR; - if (elemPtr) + if (elemPtr) { legendPtr->focusPtr_ = elemPtr; - } - Blt_SetFocusItem(legendPtr->bindTable_,legendPtr->focusPtr_,CID_LEGEND_ENTRY); + legendPtr->bindTable_->focusItem = (ClientData)elemPtr; + legendPtr->bindTable_->focusContext = (ClientData)elemPtr->classId(); + } + } graphPtr->flags |= CACHE; graphPtr->eventuallyRedraw(); @@ -266,7 +268,7 @@ static int GetOp(ClientData clientData, Tcl_Interp* interp, int objc, Tcl_Obj* const objv[]) { Graph* graphPtr = (Graph*)clientData; - if (objc<4) + if (objc<3) return TCL_ERROR; Legend* legendPtr = graphPtr->legend_; diff --git a/src/bltGrMisc.h b/src/bltGrMisc.h index c0f52f2..c2ba6df 100644 --- a/src/bltGrMisc.h +++ b/src/bltGrMisc.h @@ -76,7 +76,7 @@ typedef struct { typedef enum { CID_NONE, CID_AXIS_X, CID_AXIS_Y, CID_ELEM_BAR, CID_ELEM_LINE, CID_MARKER_BITMAP, CID_MARKER_IMAGE, CID_MARKER_LINE, CID_MARKER_POLYGON, - CID_MARKER_TEXT, CID_LEGEND_ENTRY, + CID_MARKER_TEXT } ClassId; typedef struct { diff --git a/src/bltGraph.C b/src/bltGraph.C index fd237b6..b9996c7 100644 --- a/src/bltGraph.C +++ b/src/bltGraph.C @@ -1335,7 +1335,7 @@ static ClientData PickEntry(ClientData clientData, int x, int y, (y >= exts.bottom) || (y < exts.top)) { Axis* axisPtr = graphPtr->nearestAxis(x, y); if (axisPtr) { - *contextPtr = (ClientData)axisPtr->classId_; + *contextPtr = (ClientData)axisPtr->classId(); return axisPtr; } } diff --git a/src/bltGraph.h b/src/bltGraph.h index 12c452f..d77cf75 100644 --- a/src/bltGraph.h +++ b/src/bltGraph.h @@ -134,7 +134,6 @@ class Graph { void* ops_; int valid_; - ClassId classId_; unsigned int flags; int nextMarkerId_; diff --git a/src/bltGraphBar.C b/src/bltGraphBar.C index 309f456..aef6518 100644 --- a/src/bltGraphBar.C +++ b/src/bltGraphBar.C @@ -172,7 +172,6 @@ BarGraph::BarGraph(ClientData clientData, Tcl_Interp* interp, BarGraphOptions* ops = (BarGraphOptions*)ops_; Tk_SetClass(tkwin_, "Barchart"); - classId_ = CID_ELEM_BAR; barGroups_ =NULL; nBarGroups_ =0; diff --git a/src/bltGraphLine.C b/src/bltGraphLine.C index 26d8b04..ad73ecd 100644 --- a/src/bltGraphLine.C +++ b/src/bltGraphLine.C @@ -149,7 +149,6 @@ LineGraph::LineGraph(ClientData clientData, Tcl_Interp* interp, LineGraphOptions* ops = (LineGraphOptions*)ops_; Tk_SetClass(tkwin_, "Graph"); - classId_ = CID_ELEM_LINE; ops->bottomMargin.site = MARGIN_BOTTOM; ops->leftMargin.site = MARGIN_LEFT; |