diff options
author | joye <joye> | 2014-04-18 19:26:32 (GMT) |
---|---|---|
committer | joye <joye> | 2014-04-18 19:26:32 (GMT) |
commit | c70e0bdd2857fb0e4f41cd62e38f1fa24d68b142 (patch) | |
tree | 1b7e2ddea759dd7ac4876c9492ad4d84a61b5e39 /src | |
parent | 31056536d6c5d29bd07df8c3bcae9dde8342d497 (diff) | |
download | blt-c70e0bdd2857fb0e4f41cd62e38f1fa24d68b142.zip blt-c70e0bdd2857fb0e4f41cd62e38f1fa24d68b142.tar.gz blt-c70e0bdd2857fb0e4f41cd62e38f1fa24d68b142.tar.bz2 |
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r-- | src/bltGrElemBar.C | 10 | ||||
-rw-r--r-- | src/bltGrElemLine.C | 10 | ||||
-rw-r--r-- | src/bltGrElemOp.C | 34 | ||||
-rw-r--r-- | src/bltGrElemOp.h | 2 | ||||
-rw-r--r-- | src/bltGrElemOption.C | 2 | ||||
-rw-r--r-- | src/bltGrMisc.h | 1 | ||||
-rw-r--r-- | src/bltGraph.C | 29 | ||||
-rw-r--r-- | src/bltGraph.h | 1 |
8 files changed, 37 insertions, 52 deletions
diff --git a/src/bltGrElemBar.C b/src/bltGrElemBar.C index e4d3d48..d755566 100644 --- a/src/bltGrElemBar.C +++ b/src/bltGrElemBar.C @@ -260,7 +260,7 @@ void BarElement::map() BarElementOptions* ops = (BarElementOptions*)ops_; GraphOptions* gops = (GraphOptions*)graphPtr_->ops_; - if (!link || (flags & DELETE_PENDING)) + if (!link) return; ResetBar(); @@ -674,7 +674,7 @@ void BarElement::draw(Drawable drawable) { BarElementOptions* ops = (BarElementOptions*)ops_; - if (hide_ || (flags & DELETE_PENDING)) + if (hide_) return; int count = 0; @@ -708,7 +708,7 @@ void BarElement::drawActive(Drawable drawable) { BarElementOptions* ops = (BarElementOptions*)ops_; - if (hide_ || (flags & DELETE_PENDING) || !(flags & ACTIVE)) + if (hide_ || !(flags & ACTIVE)) return; BarPen* penPtr = (BarPen*)ops->activePenPtr; @@ -766,7 +766,7 @@ void BarElement::print(Blt_Ps ps) { BarElementOptions* ops = (BarElementOptions*)ops_; - if (hide_ || (flags & DELETE_PENDING)) + if (hide_) return; // Comment the PostScript to indicate the start of the element @@ -812,7 +812,7 @@ void BarElement::printActive(Blt_Ps ps) { BarElementOptions* ops = (BarElementOptions*)ops_; - if (hide_ || (flags & DELETE_PENDING) || !(flags & ACTIVE)) + if (hide_ || !(flags & ACTIVE)) return; BarPen* penPtr = (BarPen*)ops->activePenPtr; diff --git a/src/bltGrElemLine.C b/src/bltGrElemLine.C index 4554edc..6686f13 100644 --- a/src/bltGrElemLine.C +++ b/src/bltGrElemLine.C @@ -350,7 +350,7 @@ void LineElement::map() { LineElementOptions* ops = (LineElementOptions*)ops_; - if (!link || (flags & DELETE_PENDING)) + if (!link) return; ResetLine(); @@ -578,7 +578,7 @@ void LineElement::draw(Drawable drawable) { LineElementOptions* ops = (LineElementOptions*)ops_; - if (hide_ || (flags & DELETE_PENDING)) + if (hide_) return; // Fill area under the curve @@ -669,7 +669,7 @@ void LineElement::drawActive(Drawable drawable) { LineElementOptions* ops = (LineElementOptions*)ops_; - if (hide_ || (flags & DELETE_PENDING) || !(flags & ACTIVE)) + if (hide_ || !(flags & ACTIVE)) return; LinePen* penPtr = (LinePen*)ops->activePenPtr; @@ -738,7 +738,7 @@ void LineElement::print(Blt_Ps ps) { LineElementOptions* ops = (LineElementOptions*)ops_; - if (hide_ || (flags & DELETE_PENDING)) + if (hide_) return; Blt_Ps_Format(ps, "\n%% Element \"%s\"\n\n", name_); @@ -835,7 +835,7 @@ void LineElement::printActive(Blt_Ps ps) { LineElementOptions* ops = (LineElementOptions*)ops_; - if (hide_ || (flags & DELETE_PENDING) || !(flags & ACTIVE)) + if (hide_ || !(flags & ACTIVE)) return; LinePen* penPtr = (LinePen *)ops->activePenPtr; diff --git a/src/bltGrElemOp.C b/src/bltGrElemOp.C index bc99e8a..89c2e57 100644 --- a/src/bltGrElemOp.C +++ b/src/bltGrElemOp.C @@ -44,7 +44,6 @@ extern "C" { // Defs static Tcl_Obj *DisplayListObj(Graph* graphPtr); -static void FreeElement(char* data); static int GetIndex(Tcl_Interp* interp, Element* elemPtr, Tcl_Obj *objPtr, int *indexPtr); @@ -93,19 +92,6 @@ int ElementObjConfigure(Tcl_Interp* interp, Element* elemPtr, } } -void Blt_DestroyElement(Element* elemPtr) -{ - Graph* graphPtr = elemPtr->graphPtr_; - - Blt_DeleteBindings(graphPtr->bindTable_, elemPtr); - graphPtr->legend_->removeElement(elemPtr); - - if (elemPtr->link) - Blt_Chain_DeleteLink(graphPtr->elements_.displayList, elemPtr->link); - - delete elemPtr; -} - // Configure static int CgetOp(Graph* graphPtr, Tcl_Interp* interp, @@ -253,8 +239,7 @@ static int ClosestOp(Graph* graphPtr, Tcl_Interp* interp, if (graphPtr->getElement(objv[ii], &elemPtr) != TCL_OK) return TCL_ERROR; - if (elemPtr && !elemPtr->hide_ && - !(elemPtr->flags & (MAP_ITEM|DELETE_PENDING))) + if (elemPtr && !elemPtr->hide_ && !(elemPtr->flags & MAP_ITEM)) elemPtr->closest(); } } @@ -267,8 +252,7 @@ static int ClosestOp(Graph* graphPtr, Tcl_Interp* interp, for (Blt_ChainLink link=Blt_Chain_LastLink(graphPtr->elements_.displayList); link != NULL; link = Blt_Chain_PrevLink(link)) { Element* elemPtr = (Element*)Blt_Chain_GetValue(link); - if (elemPtr && !elemPtr->hide_ && - !(elemPtr->flags & (MAP_ITEM|DELETE_PENDING))) + if (elemPtr && !elemPtr->hide_ && !(elemPtr->flags & MAP_ITEM)) elemPtr->closest(); } } @@ -328,9 +312,7 @@ static int DeleteOp(Graph* graphPtr, Tcl_Interp* interp, Element* elemPtr; if (graphPtr->getElement(objv[ii], &elemPtr) != TCL_OK) return TCL_ERROR; - - elemPtr->flags |= DELETE_PENDING; - Tcl_EventuallyFree(elemPtr, FreeElement); + graphPtr->destroyElement(elemPtr); } graphPtr->flags |= RESET_WORLD; @@ -354,8 +336,8 @@ static int GetOp(Graph* graphPtr, Tcl_Interp* interp, char *string = Tcl_GetString(objv[3]); if ((string[0] == 'c') && (strcmp(string, "current") == 0)) { Element* elemPtr = (Element*)Blt_GetCurrentItem(graphPtr->bindTable_); - if ((elemPtr) && ((elemPtr->flags & DELETE_PENDING) == 0)) - Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->name_,-1); + if (elemPtr) + Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->name_,-1); } return TCL_OK; } @@ -560,12 +542,6 @@ static Tcl_Obj *DisplayListObj(Graph* graphPtr) return listObjPtr; } -static void FreeElement(char* data) -{ - Element* elemPtr = (Element *)data; - Blt_DestroyElement(elemPtr); -} - static int GetIndex(Tcl_Interp* interp, Element* elemPtr, Tcl_Obj *objPtr, int *indexPtr) { diff --git a/src/bltGrElemOp.h b/src/bltGrElemOp.h index 62add9c..1602cdb 100644 --- a/src/bltGrElemOp.h +++ b/src/bltGrElemOp.h @@ -34,6 +34,4 @@ extern int ElementObjConfigure(Tcl_Interp* interp, Element* elemPtr, int objc, Tcl_Obj* const objv[]); extern int Blt_ElementOp(Graph* graphPtr, Tcl_Interp* interp, int objc, Tcl_Obj* const objv[]); - -extern void Blt_DestroyElement(Element* elemPtr); #endif diff --git a/src/bltGrElemOption.C b/src/bltGrElemOption.C index fd166fc..3db0761 100644 --- a/src/bltGrElemOption.C +++ b/src/bltGrElemOption.C @@ -430,7 +430,7 @@ static void VectorChangedProc(Tcl_Interp* interp, ClientData clientData, Graph* graphPtr = elemPtr->graphPtr_; graphPtr->flags |= RESET_AXES; elemPtr->flags |= MAP_ITEM; - if (elemPtr->link && !(elemPtr->flags & DELETE_PENDING)) { + if (elemPtr->link) { graphPtr->flags |= CACHE_DIRTY; graphPtr->eventuallyRedraw(); } diff --git a/src/bltGrMisc.h b/src/bltGrMisc.h index 4b57256..dab8bea 100644 --- a/src/bltGrMisc.h +++ b/src/bltGrMisc.h @@ -102,7 +102,6 @@ * GRAPH_FOCUS */ -#define DELETE_PENDING (1<<1) /* 0x0002 */ #define REDRAW_PENDING (1<<2) /* 0x0004 */ #define ACTIVE_PENDING (1<<3) /* 0x0008 */ #define MAP_ITEM (1<<4) /* 0x0010 */ diff --git a/src/bltGraph.C b/src/bltGraph.C index d1c0f0e..cb5ee98 100644 --- a/src/bltGraph.C +++ b/src/bltGraph.C @@ -947,7 +947,7 @@ int Graph::createElement(int objc, Tcl_Obj* const objv[]) Tcl_SetHashValue(hPtr, elemPtr); if ((Tk_InitOptions(interp_, (char*)elemPtr->ops(), elemPtr->optionTable(), tkwin_) != TCL_OK) || (ElementObjConfigure(interp_, elemPtr, objc-4, objv+4) != TCL_OK)) { - Blt_DestroyElement(elemPtr); + delete elemPtr; return TCL_ERROR; } @@ -956,14 +956,26 @@ int Graph::createElement(int objc, Tcl_Obj* const objv[]) return TCL_OK; } +void Graph::destroyElement(Element* elemPtr) +{ + Blt_DeleteBindings(bindTable_, elemPtr); + legend_->removeElement(elemPtr); + + if (elemPtr->link) + Blt_Chain_DeleteLink(elements_.displayList, elemPtr->link); + + delete elemPtr; +} + void Graph::destroyElements() { Tcl_HashSearch iter; for (Tcl_HashEntry* hPtr=Tcl_FirstHashEntry(&elements_.table, &iter); hPtr; hPtr = Tcl_NextHashEntry(&iter)) { Element* elemPtr = (Element*)Tcl_GetHashValue(hPtr); - Blt_DestroyElement(elemPtr); + destroyElement(elemPtr); } + Tcl_DeleteHashTable(&elements_.table); Tcl_DeleteHashTable(&elements_.tagTable); Blt_Chain_Destroy(elements_.displayList); @@ -1089,7 +1101,7 @@ void Graph::mapMarkers() Marker* markerPtr = (Marker*)Blt_Chain_GetValue(link); MarkerOptions* mops = (MarkerOptions*)markerPtr->ops(); - if ((markerPtr->flags & DELETE_PENDING) || mops->hide) + if (mops->hide) continue; if ((flags & MAP_ALL) || (markerPtr->flags & MAP_ITEM)) { @@ -1106,8 +1118,7 @@ void Graph::drawMarkers(Drawable drawable, int under) Marker* markerPtr = (Marker*)Blt_Chain_GetValue(link); MarkerOptions* mops = (MarkerOptions*)markerPtr->ops(); - if ((mops->drawUnder != under) || (markerPtr->clipped_) || - (markerPtr->flags & DELETE_PENDING) || (mops->hide)) + if ((mops->drawUnder != under) || markerPtr->clipped_ || mops->hide) continue; if (isElementHidden(markerPtr)) @@ -1126,7 +1137,7 @@ void Graph::printMarkers(Blt_Ps ps, int under) if (mops->drawUnder != under) continue; - if ((markerPtr->flags & DELETE_PENDING) || mops->hide) + if (mops->hide) continue; if (isElementHidden(markerPtr)) @@ -1155,7 +1166,7 @@ Marker* Graph::nearestMarker(int x, int y, int under) Marker* markerPtr = (Marker*)Blt_Chain_GetValue(link); MarkerOptions* mops = (MarkerOptions*)markerPtr->ops(); - if ((markerPtr->flags & (DELETE_PENDING|MAP_ITEM)) || (mops->hide)) + if ((markerPtr->flags & MAP_ITEM) || mops->hide) continue; if (isElementHidden(markerPtr)) @@ -1292,7 +1303,7 @@ void Graph::mapAxes() link = Blt_Chain_NextLink(link)) { Axis *axisPtr = (Axis*)Blt_Chain_GetValue(link); AxisOptions* ops = (AxisOptions*)axisPtr->ops(); - if (!axisPtr->use_ || (axisPtr->flags & DELETE_PENDING)) + if (!axisPtr->use_) continue; if (ops->reqNumMajorTicks <= 0) @@ -1542,7 +1553,7 @@ Axis* Graph::nearestAxis(int x, int y) hPtr; hPtr = Tcl_NextHashEntry(&cursor)) { Axis *axisPtr = (Axis*)Tcl_GetHashValue(hPtr); AxisOptions* ops = (AxisOptions*)axisPtr->ops(); - if (ops->hide || !axisPtr->use_ || (axisPtr->flags & DELETE_PENDING)) + if (ops->hide || !axisPtr->use_) continue; if (ops->showTicks) { diff --git a/src/bltGraph.h b/src/bltGraph.h index e00d522..69be1e6 100644 --- a/src/bltGraph.h +++ b/src/bltGraph.h @@ -262,6 +262,7 @@ class Graph { int isElementHidden(Blt::Marker*); int createElement(int, Tcl_Obj* const []); + void destroyElement(Element*); int getElement(Tcl_Obj*, Element**); ClientData elementTag(const char*); |