diff options
author | joye <joye> | 2014-04-16 19:59:07 (GMT) |
---|---|---|
committer | joye <joye> | 2014-04-16 19:59:07 (GMT) |
commit | 1b85ba58a3cd5e1ee3109b377fd96d70bb19595d (patch) | |
tree | 96a976c231f1452e8c590f55eb3e9323486ab5ed /src | |
parent | 6e9d6149cb1c3a2d52f1b6ff394d55f45956ffd4 (diff) | |
download | blt-1b85ba58a3cd5e1ee3109b377fd96d70bb19595d.zip blt-1b85ba58a3cd5e1ee3109b377fd96d70bb19595d.tar.gz blt-1b85ba58a3cd5e1ee3109b377fd96d70bb19595d.tar.bz2 |
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r-- | src/bltGrElemOp.C | 102 | ||||
-rw-r--r-- | src/bltGrElemOp.h | 1 | ||||
-rw-r--r-- | src/bltGrHairsOp.C | 16 | ||||
-rw-r--r-- | src/bltGrHairsOp.h | 2 | ||||
-rw-r--r-- | src/bltGrLegd.C | 4 | ||||
-rw-r--r-- | src/bltGraph.C | 116 | ||||
-rw-r--r-- | src/bltGraph.h | 3 |
7 files changed, 123 insertions, 121 deletions
diff --git a/src/bltGrElemOp.C b/src/bltGrElemOp.C index 624cd1e..11f2472 100644 --- a/src/bltGrElemOp.C +++ b/src/bltGrElemOp.C @@ -47,7 +47,6 @@ extern int Blt_GetPenFromObj(Tcl_Interp* interp, Graph* graphPtr, Tcl_Obj *objPtr, ClassId classId, Pen **penPtrPtr); static Tcl_Obj *DisplayListObj(Graph* graphPtr); -static void DestroyElement(Element* elemPtr); static void FreeElement(char* data); static int GetIndex(Tcl_Interp* interp, Element* elemPtr, Tcl_Obj *objPtr, int *indexPtr); @@ -134,7 +133,7 @@ static int CreateElement(Graph* graphPtr, Tcl_Interp* interp, int objc, Tcl_SetHashValue(hPtr, elemPtr); if ((Tk_InitOptions(interp, (char*)elemPtr->ops(), elemPtr->optionTable(), graphPtr->tkwin_) != TCL_OK) || (ElementObjConfigure(interp, graphPtr, elemPtr, objc-4, objv+4) != TCL_OK)) { - DestroyElement(elemPtr); + Blt_DestroyElement(elemPtr); return TCL_ERROR; } @@ -143,7 +142,7 @@ static int CreateElement(Graph* graphPtr, Tcl_Interp* interp, int objc, return TCL_OK; } -static void DestroyElement(Element* elemPtr) +void Blt_DestroyElement(Element* elemPtr) { Graph* graphPtr = elemPtr->graphPtr(); @@ -596,101 +595,6 @@ int Blt_ElementOp(Graph* graphPtr, Tcl_Interp* interp, } } -// Graph - -void Graph::destroyElements() -{ - Tcl_HashEntry *hPtr; - Tcl_HashSearch iter; - for (hPtr = Tcl_FirstHashEntry(&elements_.table, &iter); - hPtr != NULL; hPtr = Tcl_NextHashEntry(&iter)) { - Element* elemPtr = (Element*)Tcl_GetHashValue(hPtr); - if (elemPtr) - DestroyElement(elemPtr); - } - Tcl_DeleteHashTable(&elements_.table); - Tcl_DeleteHashTable(&elements_.tagTable); - Blt_Chain_Destroy(elements_.displayList); -} - -void Graph::configureElements() -{ - for (Blt_ChainLink link=Blt_Chain_FirstLink(elements_.displayList); - link; link = Blt_Chain_NextLink(link)) { - Element* elemPtr = (Element*)Blt_Chain_GetValue(link); - elemPtr->configure(); - } -} - -void Graph::mapElements() -{ - GraphOptions* gops = (GraphOptions*)ops_; - if (gops->barMode != BARS_INFRONT) - Blt_ResetBarGroups(this); - - for (Blt_ChainLink link =Blt_Chain_FirstLink(elements_.displayList); - link != NULL; link = Blt_Chain_NextLink(link)) { - Element* elemPtr = (Element*)Blt_Chain_GetValue(link); - if (!elemPtr->link || (elemPtr->flags & DELETE_PENDING)) - continue; - - if ((flags & MAP_ALL) || (elemPtr->flags & MAP_ITEM)) { - elemPtr->map(); - elemPtr->flags &= ~MAP_ITEM; - } - } -} - -void Graph::drawElements(Drawable drawable) -{ - // Draw with respect to the stacking order - for (Blt_ChainLink link=Blt_Chain_LastLink(elements_.displayList); - link; link = Blt_Chain_PrevLink(link)) { - Element* elemPtr = (Element*)Blt_Chain_GetValue(link); - if (!(elemPtr->flags & DELETE_PENDING) && !elemPtr->hide()) - elemPtr->draw(drawable); - } -} - -void Graph::drawActiveElements(Drawable drawable) -{ - for (Blt_ChainLink link=Blt_Chain_LastLink(elements_.displayList); - link; link = Blt_Chain_PrevLink(link)) { - Element* elemPtr = (Element*)Blt_Chain_GetValue(link); - if (!(elemPtr->flags & DELETE_PENDING) && (elemPtr->flags & ACTIVE) && - !elemPtr->hide()) - elemPtr->drawActive(drawable); - } -} - -void Graph::printElements(Blt_Ps ps) -{ - for (Blt_ChainLink link=Blt_Chain_LastLink(elements_.displayList); - link != NULL; link = Blt_Chain_PrevLink(link)) { - Element* elemPtr = (Element*)Blt_Chain_GetValue(link); - if (!(elemPtr->flags & DELETE_PENDING) && !elemPtr->hide()) - continue; - - // Comment the PostScript to indicate the start of the element - Blt_Ps_Format(ps, "\n%% Element \"%s\"\n\n", elemPtr->name()); - elemPtr->print(ps); - } -} - -void Graph::printActiveElements(Blt_Ps ps) -{ - for (Blt_ChainLink link=Blt_Chain_LastLink(elements_.displayList); - link; link = Blt_Chain_PrevLink(link)) { - Element* elemPtr = (Element*)Blt_Chain_GetValue(link); - if (!(elemPtr->flags & DELETE_PENDING) && - (elemPtr->flags & ACTIVE) && - !elemPtr->hide()) { - Blt_Ps_Format(ps, "\n%% Active Element \"%s\"\n\n", elemPtr->name()); - elemPtr->printActive(ps); - } - } -} - // Support static Tcl_Obj *DisplayListObj(Graph* graphPtr) @@ -709,7 +613,7 @@ static Tcl_Obj *DisplayListObj(Graph* graphPtr) static void FreeElement(char* data) { Element* elemPtr = (Element *)data; - DestroyElement(elemPtr); + Blt_DestroyElement(elemPtr); } static int GetIndex(Tcl_Interp* interp, Element* elemPtr, diff --git a/src/bltGrElemOp.h b/src/bltGrElemOp.h index bb363e9..221bdd9 100644 --- a/src/bltGrElemOp.h +++ b/src/bltGrElemOp.h @@ -34,4 +34,5 @@ extern int Blt_ElementOp(Graph* graphPtr, Tcl_Interp* interp, int objc, Tcl_Obj* const objv[], ClassId classId); extern int Blt_GetElement(Tcl_Interp* interp, Graph *graphPtr, Tcl_Obj *objPtr, Element **elemPtrPtr); +extern void Blt_DestroyElement(Element* elemPtr); #endif diff --git a/src/bltGrHairsOp.C b/src/bltGrHairsOp.C index a80556e..b769213 100644 --- a/src/bltGrHairsOp.C +++ b/src/bltGrHairsOp.C @@ -179,20 +179,4 @@ int Blt_CrosshairsOp(Graph* graphPtr, Tcl_Interp* interp, return (*proc)(graphPtr, interp, objc, objv); } -void Blt_EnableCrosshairs(Graph* graphPtr) -{ - Crosshairs* chPtr = graphPtr->crosshairs_; - CrosshairsOptions* ops = (CrosshairsOptions*)chPtr->ops_; - if (!ops->hide) - graphPtr->crosshairs_->on(); -} - -void Blt_DisableCrosshairs(Graph* graphPtr) -{ - Crosshairs* chPtr = graphPtr->crosshairs_; - CrosshairsOptions* ops = (CrosshairsOptions*)chPtr->ops_; - if (!ops->hide) - graphPtr->crosshairs_->off(); -} - diff --git a/src/bltGrHairsOp.h b/src/bltGrHairsOp.h index 809429f..dadf2bb 100644 --- a/src/bltGrHairsOp.h +++ b/src/bltGrHairsOp.h @@ -35,7 +35,5 @@ extern int Blt_CrosshairsOp(Graph* graphPtr, Tcl_Interp* interp, int objc, Tcl_Obj* const objv[]); -extern void Blt_DisableCrosshairs(Graph* graphPtr); -extern void Blt_EnableCrosshairs(Graph* graphPtr); #endif diff --git a/src/bltGrLegd.C b/src/bltGrLegd.C index 9cdb855..c575635 100644 --- a/src/bltGrLegd.C +++ b/src/bltGrLegd.C @@ -511,7 +511,7 @@ void Legend::draw(Drawable drawable) switch ((Position)ops->position) { case PLOT: case XY: - Blt_DisableCrosshairs(graphPtr_); + graphPtr_->disableCrosshairs(); break; default: break; @@ -525,7 +525,7 @@ void Legend::draw(Drawable drawable) switch ((Position)ops->position) { case PLOT: case XY: - Blt_EnableCrosshairs(graphPtr_); + graphPtr_->enableCrosshairs(); break; default: break; diff --git a/src/bltGraph.C b/src/bltGraph.C index 4e55c71..ef5d42a 100644 --- a/src/bltGraph.C +++ b/src/bltGraph.C @@ -497,10 +497,11 @@ void Graph::display() } // Disable crosshairs before redisplaying to the screen - Blt_DisableCrosshairs(this); + disableCrosshairs(); XCopyArea(display_, drawable, Tk_WindowId(tkwin_), drawGC_, 0, 0, width_, height_, 0, 0); - Blt_EnableCrosshairs(this); + + enableCrosshairs(); if (ops->doubleBuffer) Tk_FreePixmap(display_, drawable); @@ -867,3 +868,114 @@ static ClientData PickEntry(ClientData clientData, int x, int y, return NULL; } +// Crosshairs + +void Graph::enableCrosshairs() +{ + CrosshairsOptions* ops = (CrosshairsOptions*)crosshairs_->ops_; + if (!ops->hide) + crosshairs_->on(); +} + +void Graph::disableCrosshairs() +{ + CrosshairsOptions* ops = (CrosshairsOptions*)crosshairs_->ops_; + if (!ops->hide) + crosshairs_->off(); +} + +// Elements + +void Graph::destroyElements() +{ + Tcl_HashEntry *hPtr; + Tcl_HashSearch iter; + for (hPtr = Tcl_FirstHashEntry(&elements_.table, &iter); + hPtr != NULL; hPtr = Tcl_NextHashEntry(&iter)) { + Element* elemPtr = (Element*)Tcl_GetHashValue(hPtr); + if (elemPtr) + Blt_DestroyElement(elemPtr); + } + Tcl_DeleteHashTable(&elements_.table); + Tcl_DeleteHashTable(&elements_.tagTable); + Blt_Chain_Destroy(elements_.displayList); +} + +void Graph::configureElements() +{ + for (Blt_ChainLink link=Blt_Chain_FirstLink(elements_.displayList); + link; link = Blt_Chain_NextLink(link)) { + Element* elemPtr = (Element*)Blt_Chain_GetValue(link); + elemPtr->configure(); + } +} + +void Graph::mapElements() +{ + GraphOptions* gops = (GraphOptions*)ops_; + if (gops->barMode != BARS_INFRONT) + Blt_ResetBarGroups(this); + + for (Blt_ChainLink link =Blt_Chain_FirstLink(elements_.displayList); + link != NULL; link = Blt_Chain_NextLink(link)) { + Element* elemPtr = (Element*)Blt_Chain_GetValue(link); + if (!elemPtr->link || (elemPtr->flags & DELETE_PENDING)) + continue; + + if ((flags & MAP_ALL) || (elemPtr->flags & MAP_ITEM)) { + elemPtr->map(); + elemPtr->flags &= ~MAP_ITEM; + } + } +} + +void Graph::drawElements(Drawable drawable) +{ + // Draw with respect to the stacking order + for (Blt_ChainLink link=Blt_Chain_LastLink(elements_.displayList); + link; link = Blt_Chain_PrevLink(link)) { + Element* elemPtr = (Element*)Blt_Chain_GetValue(link); + if (!(elemPtr->flags & DELETE_PENDING) && !elemPtr->hide()) + elemPtr->draw(drawable); + } +} + +void Graph::drawActiveElements(Drawable drawable) +{ + for (Blt_ChainLink link=Blt_Chain_LastLink(elements_.displayList); + link; link = Blt_Chain_PrevLink(link)) { + Element* elemPtr = (Element*)Blt_Chain_GetValue(link); + if (!(elemPtr->flags & DELETE_PENDING) && (elemPtr->flags & ACTIVE) && + !elemPtr->hide()) + elemPtr->drawActive(drawable); + } +} + +void Graph::printElements(Blt_Ps ps) +{ + for (Blt_ChainLink link=Blt_Chain_LastLink(elements_.displayList); + link != NULL; link = Blt_Chain_PrevLink(link)) { + Element* elemPtr = (Element*)Blt_Chain_GetValue(link); + if (!(elemPtr->flags & DELETE_PENDING) && !elemPtr->hide()) + continue; + + // Comment the PostScript to indicate the start of the element + Blt_Ps_Format(ps, "\n%% Element \"%s\"\n\n", elemPtr->name()); + elemPtr->print(ps); + } +} + +void Graph::printActiveElements(Blt_Ps ps) +{ + for (Blt_ChainLink link=Blt_Chain_LastLink(elements_.displayList); + link; link = Blt_Chain_PrevLink(link)) { + Element* elemPtr = (Element*)Blt_Chain_GetValue(link); + if (!(elemPtr->flags & DELETE_PENDING) && + (elemPtr->flags & ACTIVE) && + !elemPtr->hide()) { + Blt_Ps_Format(ps, "\n%% Active Element \"%s\"\n\n", elemPtr->name()); + elemPtr->printActive(ps); + } + } +} + diff --git a/src/bltGraph.h b/src/bltGraph.h index 50b3d0d..a7397b4 100644 --- a/src/bltGraph.h +++ b/src/bltGraph.h @@ -218,6 +218,9 @@ class Graph { int print(const char *ident, Blt_Ps ps); void extents(Region2d*); void reconfigure(); + + void enableCrosshairs(); + void disableCrosshairs(); }; extern void Blt_ReconfigureGraph(Graph* graphPtr); |