summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorjoye <joye>2014-04-09 16:37:01 (GMT)
committerjoye <joye>2014-04-09 16:37:01 (GMT)
commit59278fd0da43eff5b51dfecd4f16fcee835fd824 (patch)
tree1d7455d7635f942381777bb57d6fbfa60dd477ce /src
parent8fe1a962c2e3f8a0ca305af266a05b55c418afff (diff)
downloadblt-59278fd0da43eff5b51dfecd4f16fcee835fd824.zip
blt-59278fd0da43eff5b51dfecd4f16fcee835fd824.tar.gz
blt-59278fd0da43eff5b51dfecd4f16fcee835fd824.tar.bz2
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r--src/bltGrAxis.C2
-rw-r--r--src/bltGrElemOp.C2
-rw-r--r--src/bltGrLegd.C52
-rw-r--r--src/bltGrLegd.h17
-rw-r--r--src/bltGrLegdOp.C84
-rw-r--r--src/bltGrLegdOp.h2
-rw-r--r--src/bltGraph.C11
7 files changed, 75 insertions, 95 deletions
diff --git a/src/bltGrAxis.C b/src/bltGrAxis.C
index 5157153..70985b8 100644
--- a/src/bltGrAxis.C
+++ b/src/bltGrAxis.C
@@ -3049,7 +3049,7 @@ void Blt_LayoutGraph(Graph* graphPtr)
/*
* Step 2: Add the legend to the appropiate margin.
*/
- if (!Blt_Legend_IsHidden(graphPtr)) {
+ if (!graphPtr->legend->isHidden()) {
switch (graphPtr->legend->site()) {
case LEGEND_RIGHT:
right += graphPtr->legend->width() + 2;
diff --git a/src/bltGrElemOp.C b/src/bltGrElemOp.C
index 263d40e..a91d797 100644
--- a/src/bltGrElemOp.C
+++ b/src/bltGrElemOp.C
@@ -107,7 +107,7 @@ static void DestroyElement(Element* elemPtr)
Graph* graphPtr = elemPtr->graphPtr();
Blt_DeleteBindings(graphPtr->bindTable, elemPtr);
- Blt_Legend_RemoveElement(graphPtr, elemPtr);
+ graphPtr->legend->removeElement(elemPtr);
if (elemPtr->link)
Blt_Chain_DeleteLink(graphPtr->elements.displayList, elemPtr->link);
diff --git a/src/bltGrLegd.C b/src/bltGrLegd.C
index d4d03db..41c07e4 100644
--- a/src/bltGrLegd.C
+++ b/src/bltGrLegd.C
@@ -618,6 +618,19 @@ void Legend::draw(Drawable drawable)
graphPtr_->flags &= ~DRAW_LEGEND;
}
+void Legend::removeElement(Element* elemPtr)
+{
+ Blt_DeleteBindings(bindTable_, elemPtr);
+}
+
+void Legend::eventuallyRedraw()
+{
+ if ((graphPtr_->tkwin) && !(flags & REDRAW_PENDING)) {
+ Tcl_DoWhenIdle(DisplayLegend, this);
+ flags |= REDRAW_PENDING;
+ }
+}
+
// Support
static void DisplayLegend(ClientData clientData)
@@ -629,16 +642,6 @@ static void DisplayLegend(ClientData clientData)
legendPtr->draw(Tk_WindowId(legendPtr->graphPtr_->tkwin));
}
-void Blt_Legend_EventuallyRedraw(Graph* graphPtr)
-{
- Legend* legendPtr = graphPtr->legend;
-
- if ((graphPtr->tkwin) && !(legendPtr->flags & REDRAW_PENDING)) {
- Tcl_DoWhenIdle(DisplayLegend, legendPtr);
- legendPtr->flags |= REDRAW_PENDING;
- }
-}
-
static void SetLegendOrigin(Legend* legendPtr)
{
Graph* graphPtr = legendPtr->graphPtr_;
@@ -1133,35 +1136,6 @@ int SelectRange(Legend* legendPtr, Element *fromPtr, Element *toPtr)
return TCL_OK;
}
-int Blt_Legend_IsHidden(Graph* graphPtr)
-{
- Legend* legendPtr = graphPtr->legend;
- LegendOptions* ops = (LegendOptions*)legendPtr->ops_;
- return (ops->hide);
-}
-
-int Blt_Legend_IsRaised(Graph* graphPtr)
-{
- Legend* legendPtr = graphPtr->legend;
- LegendOptions* ops = (LegendOptions*)legendPtr->ops_;
- return (ops->raised);
-}
-
-int Blt_Legend_X(Graph* graphPtr)
-{
- return graphPtr->legend->x_;
-}
-
-int Blt_Legend_Y(Graph* graphPtr)
-{
- return graphPtr->legend->y_;
-}
-
-void Blt_Legend_RemoveElement(Graph* graphPtr, Element* elemPtr)
-{
- Blt_DeleteBindings(graphPtr->legend->bindTable_, elemPtr);
-}
-
static int SelectionProc(ClientData clientData, int offset,
char *buffer, int maxBytes)
{
diff --git a/src/bltGrLegd.h b/src/bltGrLegd.h
index 91237ca..5bcd307 100644
--- a/src/bltGrLegd.h
+++ b/src/bltGrLegd.h
@@ -156,18 +156,17 @@ class Legend {
void configure();
void map(int, int);
void draw(Drawable drawable);
+ void removeElement(Element*);
+ void eventuallyRedraw();
+
int width() {return width_;}
int height() {return height_;}
int site() {return site_;}
-};
+ int x() {return x_;}
+ int y() {return y_;}
-extern int Blt_LegendOp(Graph *graphPtr, Tcl_Interp* interp, int objc,
- Tcl_Obj* const objv[]);
-extern int Blt_Legend_IsHidden(Graph *graphPtr);
-extern int Blt_Legend_IsRaised(Graph *graphPtr);
-extern int Blt_Legend_X(Graph *graphPtr);
-extern int Blt_Legend_Y(Graph *graphPtr);
-extern void Blt_Legend_RemoveElement(Graph *graphPtr, Element *elemPtr);
-extern void Blt_Legend_EventuallyRedraw(Graph *graphPtr);
+ int isRaised() {return ((LegendOptions*)ops_)->raised;}
+ int isHidden() {return ((LegendOptions*)ops_)->hide;}
+};
#endif
diff --git a/src/bltGrLegdOp.C b/src/bltGrLegdOp.C
index 1a945ec..313f4ad 100644
--- a/src/bltGrLegdOp.C
+++ b/src/bltGrLegdOp.C
@@ -275,9 +275,9 @@ static int FocusOp(Graph* graphPtr, Tcl_Interp* interp,
if (objc == 4) {
Element* elemPtr;
- if (GetElementFromObj(graphPtr, objv[3], &elemPtr) != TCL_OK) {
+ if (GetElementFromObj(graphPtr, objv[3], &elemPtr) != TCL_OK)
return TCL_ERROR;
- }
+
if ((elemPtr != NULL) && (elemPtr != legendPtr->focusPtr_)) {
/* Changing focus can only affect the visible entries. The entry
* layout stays the same. */
@@ -285,7 +285,7 @@ static int FocusOp(Graph* graphPtr, Tcl_Interp* interp,
}
Blt_SetFocusItem(legendPtr->bindTable_, legendPtr->focusPtr_,
CID_LEGEND_ENTRY);
- Blt_Legend_EventuallyRedraw(graphPtr);
+ graphPtr->legend->eventuallyRedraw();
}
if (legendPtr->focusPtr_) {
Tcl_SetStringObj(Tcl_GetObjResult(interp),
@@ -344,18 +344,18 @@ static int SelectionAnchorOp(Graph* graphPtr, Tcl_Interp* interp,
Legend* legendPtr = graphPtr->legend;
Element* elemPtr;
- if (GetElementFromObj(graphPtr, objv[4], &elemPtr) != TCL_OK) {
+ if (GetElementFromObj(graphPtr, objv[4], &elemPtr) != TCL_OK)
return TCL_ERROR;
- }
- /* Set both the anchor and the mark. Indicates that a single entry
- * is selected. */
+
+ // Set both the anchor and the mark. Indicates that a single entry
+ // is selected
legendPtr->selAnchorPtr_ = elemPtr;
legendPtr->selMarkPtr_ = NULL;
- if (elemPtr) {
+ if (elemPtr)
Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->name(), -1);
- }
- Blt_Legend_EventuallyRedraw(graphPtr);
+ graphPtr->legend->eventuallyRedraw();
+
return TCL_OK;
}
@@ -388,34 +388,35 @@ static int SelectionMarkOp(Graph* graphPtr, Tcl_Interp* interp,
LegendOptions* ops = (LegendOptions*)legendPtr->ops_;
Element* elemPtr;
- if (GetElementFromObj(graphPtr, objv[4], &elemPtr) != TCL_OK) {
+ if (GetElementFromObj(graphPtr, objv[4], &elemPtr) != TCL_OK)
return TCL_ERROR;
- }
+
if (legendPtr->selAnchorPtr_ == NULL) {
- Tcl_AppendResult(interp, "selection anchor must be set first",
- (char *)NULL);
+ Tcl_AppendResult(interp, "selection anchor must be set first", NULL);
return TCL_ERROR;
}
+
if (legendPtr->selMarkPtr_ != elemPtr) {
+ // Deselect entry from the list all the way back to the anchor
Blt_ChainLink link, next;
-
- /* Deselect entry from the list all the way back to the anchor. */
for (link = Blt_Chain_LastLink(legendPtr->selected_); link != NULL;
link = next) {
next = Blt_Chain_PrevLink(link);
Element *selectPtr = (Element*)Blt_Chain_GetValue(link);
- if (selectPtr == legendPtr->selAnchorPtr_) {
+ if (selectPtr == legendPtr->selAnchorPtr_)
break;
- }
+
DeselectElement(legendPtr, selectPtr);
}
+
legendPtr->flags &= ~SELECT_TOGGLE;
legendPtr->flags |= SELECT_SET;
SelectRange(legendPtr, legendPtr->selAnchorPtr_, elemPtr);
Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->name(), -1);
legendPtr->selMarkPtr_ = elemPtr;
- Blt_Legend_EventuallyRedraw(graphPtr);
+ graphPtr->legend->eventuallyRedraw();
+
if (ops->selectCmd)
EventuallyInvokeSelectCmd(legendPtr);
}
@@ -436,11 +437,9 @@ static int SelectionSetOp(Graph* graphPtr, Tcl_Interp* interp,
{
Legend* legendPtr = graphPtr->legend;
LegendOptions* ops = (LegendOptions*)legendPtr->ops_;
- Element *firstPtr, *lastPtr;
- const char *string;
legendPtr->flags &= ~SELECT_TOGGLE;
- string = Tcl_GetString(objv[3]);
+ const char* string = Tcl_GetString(objv[3]);
switch (string[0]) {
case 's':
legendPtr->flags |= SELECT_SET;
@@ -452,40 +451,44 @@ static int SelectionSetOp(Graph* graphPtr, Tcl_Interp* interp,
legendPtr->flags |= SELECT_TOGGLE;
break;
}
- if (GetElementFromObj(graphPtr, objv[4], &firstPtr) != TCL_OK) {
+
+ Element *firstPtr;
+ if (GetElementFromObj(graphPtr, objv[4], &firstPtr) != TCL_OK)
return TCL_ERROR;
- }
+
if ((firstPtr->hide()) && ((legendPtr->flags & SELECT_CLEAR)==0)) {
Tcl_AppendResult(interp, "can't select hidden node \"",
Tcl_GetString(objv[4]), "\"", (char *)NULL);
return TCL_ERROR;
}
- lastPtr = firstPtr;
+
+ Element* lastPtr = firstPtr;
if (objc > 5) {
- if (GetElementFromObj(graphPtr, objv[5], &lastPtr) != TCL_OK) {
+ if (GetElementFromObj(graphPtr, objv[5], &lastPtr) != TCL_OK)
return TCL_ERROR;
- }
+
if (lastPtr->hide() && ((legendPtr->flags & SELECT_CLEAR) == 0)) {
Tcl_AppendResult(interp, "can't select hidden node \"",
Tcl_GetString(objv[5]), "\"", (char *)NULL);
return TCL_ERROR;
}
}
- if (firstPtr == lastPtr) {
+
+ if (firstPtr == lastPtr)
SelectEntry(legendPtr, firstPtr);
- } else {
+ else
SelectRange(legendPtr, firstPtr, lastPtr);
- }
- /* Set both the anchor and the mark. Indicates that a single entry is
- * selected. */
- if (legendPtr->selAnchorPtr_ == NULL) {
+
+ // Set both the anchor and the mark. Indicates that a single entry is
+ // selected
+ if (legendPtr->selAnchorPtr_ == NULL)
legendPtr->selAnchorPtr_ = firstPtr;
- }
- if (ops->exportSelection) {
- Tk_OwnSelection(graphPtr->tkwin, XA_PRIMARY, LostSelectionProc,
- legendPtr);
- }
- Blt_Legend_EventuallyRedraw(graphPtr);
+
+ if (ops->exportSelection)
+ Tk_OwnSelection(graphPtr->tkwin, XA_PRIMARY, LostSelectionProc, legendPtr);
+
+ graphPtr->legend->eventuallyRedraw();
+
if (ops->selectCmd)
EventuallyInvokeSelectCmd(legendPtr);
@@ -532,7 +535,8 @@ static void ClearSelection(Legend* legendPtr)
Tcl_InitHashTable(&legendPtr->selectTable_, TCL_ONE_WORD_KEYS);
Blt_Chain_Reset(legendPtr->selected_);
- Blt_Legend_EventuallyRedraw(legendPtr->graphPtr_);
+ legendPtr->eventuallyRedraw();
+
if (ops->selectCmd)
EventuallyInvokeSelectCmd(legendPtr);
}
diff --git a/src/bltGrLegdOp.h b/src/bltGrLegdOp.h
index 610fc78..4615f83 100644
--- a/src/bltGrLegdOp.h
+++ b/src/bltGrLegdOp.h
@@ -30,5 +30,7 @@
#ifndef __BltGrLegdOp_h__
#define __BltGrLegdOp_h__
+extern int Blt_LegendOp(Graph *graphPtr, Tcl_Interp* interp, int objc,
+ Tcl_Obj* const objv[]);
#endif
diff --git a/src/bltGraph.C b/src/bltGraph.C
index 2b270e5..ae93c03 100644
--- a/src/bltGraph.C
+++ b/src/bltGraph.C
@@ -44,6 +44,7 @@ extern "C" {
#include "bltGrMarker.h"
#include "bltGrMarkerOp.h"
#include "bltGrLegd.h"
+#include "bltGrLegdOp.h"
using namespace Blt;
@@ -617,7 +618,7 @@ static void DisplayGraph(ClientData clientData)
Blt_DrawActiveElements(graphPtr, drawable);
/* Don't draw legend in the plot area. */
if ((graphPtr->legend->site() & LEGEND_PLOTAREA_MASK) &&
- (Blt_Legend_IsRaised(graphPtr)))
+ (graphPtr->legend->isRaised()))
graphPtr->legend->draw(drawable);
/* Draw 3D border just inside of the focus highlight ring. */
@@ -754,9 +755,9 @@ static int ExtentsOp(Graph* graphPtr, Tcl_Interp* interp, int objc,
(strncmp("legend", string, length) == 0)) {
Tcl_Obj* listObjPtr = Tcl_NewListObj(0, (Tcl_Obj **)NULL);
Tcl_ListObjAppendElement(interp, listObjPtr,
- Tcl_NewIntObj(Blt_Legend_X(graphPtr)));
+ Tcl_NewIntObj(graphPtr->legend->x()));
Tcl_ListObjAppendElement(interp, listObjPtr,
- Tcl_NewIntObj(Blt_Legend_Y(graphPtr)));
+ Tcl_NewIntObj(graphPtr->legend->y()));
Tcl_ListObjAppendElement(interp, listObjPtr,
Tcl_NewIntObj(graphPtr->legend->width()));
Tcl_ListObjAppendElement(interp, listObjPtr,
@@ -1192,7 +1193,7 @@ static void DrawPlot(Graph* graphPtr, Drawable drawable)
Blt::DrawMarkers(graphPtr, drawable, MARKER_UNDER);
if ((graphPtr->legend->site() & LEGEND_PLOTAREA_MASK) &&
- (!Blt_Legend_IsRaised(graphPtr)))
+ (!graphPtr->legend->isRaised()))
graphPtr->legend->draw(drawable);
Blt_DrawAxisLimits(graphPtr, drawable);
@@ -1228,7 +1229,7 @@ void Blt_DrawGraph(Graph* graphPtr, Drawable drawable)
/* Don't draw legend in the plot area. */
if ((graphPtr->legend->site() & LEGEND_PLOTAREA_MASK) &&
- (Blt_Legend_IsRaised(graphPtr)))
+ (graphPtr->legend->isRaised()))
graphPtr->legend->draw(drawable);
/* Draw 3D border just inside of the focus highlight ring. */