summaryrefslogtreecommitdiffstats
path: root/src/bltGrLegd.C
diff options
context:
space:
mode:
Diffstat (limited to 'src/bltGrLegd.C')
-rw-r--r--src/bltGrLegd.C123
1 files changed, 57 insertions, 66 deletions
diff --git a/src/bltGrLegd.C b/src/bltGrLegd.C
index 1e69eed..65a3cfc 100644
--- a/src/bltGrLegd.C
+++ b/src/bltGrLegd.C
@@ -37,15 +37,7 @@ extern "C" {
#include "bltGrElem.h"
#include "bltGrElemOp.h"
-#define LABEL_PAD 2
-
-// Defs
-
-extern "C" {
- Tcl_ObjCmdProc Blt_GraphInstCmdProc;
-};
-
-static void SelectCmdProc(ClientData clientData);
+static void SelectCmdProc(ClientData);
static Tcl_IdleProc DisplayProc;
static Tk_SelectionProc SelectionProc;
static Blt_BindPickProc PickEntryProc;
@@ -154,8 +146,6 @@ static Tk_OptionSpec optionSpecs[] = {
{TK_OPTION_END, NULL, NULL, NULL, NULL, -1, 0, 0, NULL, 0}
};
-// Create
-
Legend::Legend(Graph* graphPtr)
{
ops_ = (void*)calloc(1, sizeof(LegendOptions));
@@ -265,22 +255,22 @@ void Legend::map(int plotWidth, int plotHeight)
Blt_Ts_GetExtents(&ops->titleStyle, ops->title,
&titleWidth_, &titleHeight_);
- /*
- * Count the number of legend entries and determine the widest and tallest
- * label. The number of entries would normally be the number of elements,
- * but elements can have no legend entry (-label "").
- */
+
+ // Count the number of legend entries and determine the widest and tallest
+ // label. The number of entries would normally be the number of elements,
+ // but elements can have no legend entry (-label "").
int nEntries =0;
int maxWidth =0;
int maxHeight =0;
- for (Blt_ChainLink link = Blt_Chain_FirstLink(graphPtr_->elements.displayList); link != NULL; link = Blt_Chain_NextLink(link)) {
- unsigned int w, h;
+ for (Blt_ChainLink link=Blt_Chain_FirstLink(graphPtr_->elements.displayList);
+ link; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
- if (elemOps->label == NULL)
+ if (!elemOps->label)
continue;
+ unsigned int w, h;
Blt_Ts_GetExtents(&ops->style, elemOps->label, &w, &h);
if (maxWidth < (int)w)
maxWidth = w;
@@ -291,14 +281,14 @@ void Legend::map(int plotWidth, int plotHeight)
nEntries++;
}
if (nEntries == 0)
- return; /* No visible legend entries. */
+ return;
Tk_FontMetrics fontMetrics;
Tk_GetFontMetrics(ops->style.font, &fontMetrics);
int symbolWidth = 2 * fontMetrics.ascent;
maxWidth += 2 * ops->entryBW + 2*ops->ixPad +
- + symbolWidth + 3 * LABEL_PAD;
+ + symbolWidth + 3 * 2;
maxHeight += 2 * ops->entryBW + 2*ops->iyPad;
@@ -377,20 +367,19 @@ void Legend::map(int plotWidth, int plotHeight)
entryHeight_ = maxHeight;
entryWidth_ = maxWidth;
- {
- int row =0;
- int col =0;
- int count =0;
- for (Blt_ChainLink link = Blt_Chain_FirstLink(graphPtr_->elements.displayList); link != NULL; link = Blt_Chain_NextLink(link)) {
- Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- count++;
- elemPtr->row_ = row;
- elemPtr->col_ = col;
- row++;
- if ((count % nRows) == 0) {
- col++;
- row = 0;
- }
+ int row =0;
+ int col =0;
+ int count =0;
+ for (Blt_ChainLink link=Blt_Chain_FirstLink(graphPtr_->elements.displayList);
+ link; link = Blt_Chain_NextLink(link)) {
+ Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
+ count++;
+ elemPtr->row_ = row;
+ elemPtr->col_ = col;
+ row++;
+ if ((count % nRows) == 0) {
+ col++;
+ row = 0;
}
}
}
@@ -448,9 +437,9 @@ void Legend::draw(Drawable drawable)
int symbolSize = fontMetrics.ascent;
int xMid = symbolSize + 1 + ops->entryBW;
int yMid = (symbolSize / 2) + 1 + ops->entryBW;
- int xLabel = 2 * symbolSize + ops->entryBW + ops->ixPad + 2 * LABEL_PAD;
+ int xLabel = 2 * symbolSize + ops->entryBW + ops->ixPad + 2 * 2;
int ySymbol = yMid + ops->iyPad;
- int xSymbol = xMid + LABEL_PAD;
+ int xSymbol = xMid + 2;
int x = ops->xPad + ops->borderWidth;
int y = ops->yPad + ops->borderWidth;
@@ -464,7 +453,7 @@ void Legend::draw(Drawable drawable)
link; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
- if (elemOps->label == NULL)
+ if (!elemOps->label)
continue;
int isSelected = entryIsSelected(elemPtr);
@@ -522,7 +511,7 @@ void Legend::draw(Drawable drawable)
}
Tk_3DBorder bg = ops->normalBg;
- if (bg == NULL)
+ if (!bg)
bg = graphPtr_->normalBg;
// Disable crosshairs before redisplaying to the screen
@@ -599,11 +588,12 @@ void Legend::print(Blt_Ps ps)
int count = 0;
double yStart = y;
- for (Blt_ChainLink link = Blt_Chain_FirstLink(graphPtr_->elements.displayList); link != NULL; link = Blt_Chain_NextLink(link)) {
+ for (Blt_ChainLink link=Blt_Chain_FirstLink(graphPtr_->elements.displayList);
+ link; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
- if (elemOps->label == NULL)
+ if (!elemOps->label)
continue;
if (elemPtr->flags & LABEL_ACTIVE) {
@@ -719,46 +709,46 @@ void Legend::setOrigin()
}
switch (ops->anchor) {
- case TK_ANCHOR_NW: /* Upper left corner */
+ case TK_ANCHOR_NW:
break;
- case TK_ANCHOR_W: /* Left center */
+ case TK_ANCHOR_W:
if (h > height_)
y += (h - height_) / 2;
break;
- case TK_ANCHOR_SW: /* Lower left corner */
+ case TK_ANCHOR_SW:
if (h > height_)
y += (h - height_);
break;
- case TK_ANCHOR_N: /* Top center */
+ case TK_ANCHOR_N:
if (w > width_)
x += (w - width_) / 2;
break;
- case TK_ANCHOR_CENTER: /* Center */
+ case TK_ANCHOR_CENTER:
if (h > height_)
y += (h - height_) / 2;
if (w > width_)
x += (w - width_) / 2;
break;
- case TK_ANCHOR_S: /* Bottom center */
+ case TK_ANCHOR_S:
if (w > width_)
x += (w - width_) / 2;
if (h > height_)
y += (h - height_);
break;
- case TK_ANCHOR_NE: /* Upper right corner */
+ case TK_ANCHOR_NE:
if (w > width_)
x += w - width_;
break;
- case TK_ANCHOR_E: /* Right center */
+ case TK_ANCHOR_E:
if (w > width_)
x += w - width_;
if (h > height_)
y += (h - height_) / 2;
break;
- case TK_ANCHOR_SE: /* Lower right corner */
+ case TK_ANCHOR_SE:
if (w > width_) {
x += w - width_;
}
@@ -767,6 +757,7 @@ void Legend::setOrigin()
}
break;
}
+
x_ = x + ops->xPad;
y_ = y + ops->yPad;
}
@@ -793,8 +784,7 @@ void Legend::selectEntry(Element* elemPtr)
void Legend::selectElement(Element* elemPtr)
{
int isNew;
- Tcl_HashEntry* hPtr = Tcl_CreateHashEntry(&selectTable_, (char*)elemPtr,
- &isNew);
+ Tcl_HashEntry* hPtr = Tcl_CreateHashEntry(&selectTable_, elemPtr, &isNew);
if (isNew) {
Blt_ChainLink link = Blt_Chain_Append(selected_, elemPtr);
Tcl_SetHashValue(hPtr, link);
@@ -803,7 +793,7 @@ void Legend::selectElement(Element* elemPtr)
void Legend::deselectElement(Element* elemPtr)
{
- Tcl_HashEntry* hPtr = Tcl_FindHashEntry(&selectTable_, (char*)elemPtr);
+ Tcl_HashEntry* hPtr = Tcl_FindHashEntry(&selectTable_, elemPtr);
if (hPtr) {
Blt_ChainLink link = (Blt_ChainLink)Tcl_GetHashValue(hPtr);
Blt_Chain_DeleteLink(selected_, link);
@@ -894,13 +884,13 @@ int Legend::getElementFromObj(Tcl_Obj* objPtr, Element** elemPtrPtr)
if (Blt_GetElement(graphPtr_->interp, graphPtr_, objPtr, &elemPtr) !=TCL_OK)
return TCL_ERROR;
- if (elemPtr->link == NULL) {
+ if (!elemPtr->link) {
Tcl_AppendResult(graphPtr_->interp, "bad legend index \"", string, "\"",
(char *)NULL);
return TCL_ERROR;
}
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
- if (elemOps->label == NULL)
+ if (!elemOps->label)
elemPtr = NULL;
}
@@ -916,7 +906,7 @@ Element* Legend::getNextRow(Element* focusPtr)
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
- if (elemOps->label == NULL)
+ if (!elemOps->label)
continue;
if ((elemPtr->col_ == col) && (elemPtr->row_ == row))
@@ -933,7 +923,7 @@ Element* Legend::getNextColumn(Element* focusPtr)
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
- if (elemOps->label == NULL)
+ if (!elemOps->label)
continue;
if ((elemPtr->col_ == col) && (elemPtr->row_ == row))
@@ -950,7 +940,7 @@ Element* Legend::getPreviousRow(Element* focusPtr)
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
- if (elemOps->label == NULL)
+ if (!elemOps->label)
continue;
if ((elemPtr->col_ == col) && (elemPtr->row_ == row))
@@ -967,7 +957,7 @@ Element* Legend::getPreviousColumn(Element* focusPtr)
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
- if (elemOps->label == NULL)
+ if (!elemOps->label)
continue;
if ((elemPtr->col_ == col) && (elemPtr->row_ == row))
@@ -978,7 +968,8 @@ Element* Legend::getPreviousColumn(Element* focusPtr)
Element* Legend::getFirstElement()
{
- for (Blt_ChainLink link=Blt_Chain_FirstLink(graphPtr_->elements.displayList);link; link=Blt_Chain_NextLink(link)) {
+ for (Blt_ChainLink link=Blt_Chain_FirstLink(graphPtr_->elements.displayList);
+ link; link=Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
if (elemOps->label)
@@ -1024,17 +1015,16 @@ static int SelectionProc(ClientData clientData, int offset, char *buffer,
Tcl_DString dString;
Tcl_DStringInit(&dString);
if (legendPtr->flags & SELECT_SORTED) {
- Blt_ChainLink link;
-
- for (link = Blt_Chain_FirstLink(legendPtr->selected_);
- link != NULL; link = Blt_Chain_NextLink(link)) {
+ for (Blt_ChainLink link=Blt_Chain_FirstLink(legendPtr->selected_);
+ link; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
Tcl_DStringAppend(&dString, elemPtr->name(), -1);
Tcl_DStringAppend(&dString, "\n", -1);
}
}
else {
- for (Blt_ChainLink link = Blt_Chain_FirstLink(graphPtr->elements.displayList); link != NULL; link = Blt_Chain_NextLink(link)) {
+ for (Blt_ChainLink link=Blt_Chain_FirstLink(graphPtr->elements.displayList);
+ link; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
if (legendPtr->entryIsSelected(elemPtr)) {
Tcl_DStringAppend(&dString, elemPtr->name(), -1);
@@ -1094,7 +1084,8 @@ static ClientData PickEntryProc(ClientData clientData, int x, int y,
// Legend entries are stored in bottom-to-top
int count = 0;
Blt_ChainLink link;
- for (link = Blt_Chain_FirstLink(graphPtr->elements.displayList); link != NULL; link = Blt_Chain_NextLink(link)) {
+ for (link=Blt_Chain_FirstLink(graphPtr->elements.displayList);
+ link; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
if (elemOps->label) {