summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorjoye <joye>2014-04-18 19:26:32 (GMT)
committerjoye <joye>2014-04-18 19:26:32 (GMT)
commitc70e0bdd2857fb0e4f41cd62e38f1fa24d68b142 (patch)
tree1b7e2ddea759dd7ac4876c9492ad4d84a61b5e39 /src
parent31056536d6c5d29bd07df8c3bcae9dde8342d497 (diff)
downloadblt-c70e0bdd2857fb0e4f41cd62e38f1fa24d68b142.zip
blt-c70e0bdd2857fb0e4f41cd62e38f1fa24d68b142.tar.gz
blt-c70e0bdd2857fb0e4f41cd62e38f1fa24d68b142.tar.bz2
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r--src/bltGrElemBar.C10
-rw-r--r--src/bltGrElemLine.C10
-rw-r--r--src/bltGrElemOp.C34
-rw-r--r--src/bltGrElemOp.h2
-rw-r--r--src/bltGrElemOption.C2
-rw-r--r--src/bltGrMisc.h1
-rw-r--r--src/bltGraph.C29
-rw-r--r--src/bltGraph.h1
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*);