summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorjoye <joye>2014-04-08 15:09:15 (GMT)
committerjoye <joye>2014-04-08 15:09:15 (GMT)
commit1dfd54dc0f3a1551a7bf62059521ef575d8fa294 (patch)
tree1148be5a6f471b976dd54125290ed7a613bb160c /src
parentf9415123449b0a82143ec42be1fba0ab3b3b78fa (diff)
downloadblt-1dfd54dc0f3a1551a7bf62059521ef575d8fa294.zip
blt-1dfd54dc0f3a1551a7bf62059521ef575d8fa294.tar.gz
blt-1dfd54dc0f3a1551a7bf62059521ef575d8fa294.tar.bz2
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r--src/bltGrElem.C35
-rw-r--r--src/bltGrElem.h25
-rw-r--r--src/bltGrElemBar.C6
-rw-r--r--src/bltGrElemBar.h7
-rw-r--r--src/bltGrElemLine.C173
-rw-r--r--src/bltGrElemLine.h5
-rw-r--r--src/bltGrElemOp.C33
-rw-r--r--src/bltGrElemOption.C6
-rw-r--r--src/bltGrLegd.C92
-rw-r--r--src/bltGrMarker.h4
-rw-r--r--src/bltGrMarkerOp.C2
-rw-r--r--src/bltGrPen.h1
-rw-r--r--src/bltGrPenBar.C12
-rw-r--r--src/bltGrPenBar.h1
-rw-r--r--src/bltGrPenLine.C14
-rw-r--r--src/bltGrPenLine.h1
-rw-r--r--src/bltGrPenOp.C3
-rw-r--r--src/bltGraph.C18
18 files changed, 205 insertions, 233 deletions
diff --git a/src/bltGrElem.C b/src/bltGrElem.C
index 8156bc9..78de714 100644
--- a/src/bltGrElem.C
+++ b/src/bltGrElem.C
@@ -31,50 +31,45 @@
#include "bltGrElemOp.h"
#include "bltGrPenOp.h"
-Element::Element(Graph* gPtr, const char* name, Tcl_HashEntry* hPtr)
+Element::Element(Graph* graphPtr, const char* name, Tcl_HashEntry* hPtr)
{
- obj.classId = CID_NONE;
- obj.name = dupstr(name);
- obj.className =NULL;
- obj.graphPtr = gPtr;
- obj.tags =NULL;
-
- graphPtr_ = gPtr;
- flags =0;
- hide_ =0;
- hashPtr = hPtr;
+ graphPtr_ = graphPtr;
+ classId_ = CID_NONE;
+ name_ = dupstr(name);
+ optionTable_ =NULL;
ops_ =NULL;
+ hashPtr_ = hPtr;
+ hide_ =0;
row_ =0;
col_ =0;
activeIndices_ =NULL;
nActiveIndices_ =0;
- optionTable_ =NULL;
xRange_ =0;
yRange_ =0;
+
link =NULL;
+ flags =0;
}
Element::~Element()
{
- if (obj.name)
- delete [] obj.name;
- if (obj.className)
- delete [] obj.className;
+ if (name_)
+ delete [] name_;
if (activeIndices_)
free(activeIndices_);
- if (hashPtr)
- Tcl_DeleteHashEntry(hashPtr);
+ if (hashPtr_)
+ Tcl_DeleteHashEntry(hashPtr_);
- Tk_FreeConfigOptions((char*)ops_, optionTable_, obj.graphPtr->tkwin);
+ Tk_FreeConfigOptions((char*)ops_, optionTable_, graphPtr_->tkwin);
if (ops_)
free(ops_);
}
-double Blt_FindElemValuesMinimum(ElemValues* valuesPtr, double minLimit)
+double Element::FindElemValuesMinimum(ElemValues* valuesPtr, double minLimit)
{
double min = DBL_MAX;
if (!valuesPtr)
diff --git a/src/bltGrElem.h b/src/bltGrElem.h
index 1c8b161..40032ba 100644
--- a/src/bltGrElem.h
+++ b/src/bltGrElem.h
@@ -93,7 +93,7 @@ typedef struct {
typedef struct {
Element* elemPtr;
const char* label;
- char** tags;
+ const char** tags;
Axis2d axes;
ElemCoords coords;
ElemValues* w;
@@ -114,23 +114,23 @@ typedef struct {
class Element {
public:
- GraphObj obj;
Graph* graphPtr_;
- unsigned int flags;
+ ClassId classId_;
+ const char* name_;
+ Tk_OptionTable optionTable_;
+ void* ops_;
+ Tcl_HashEntry* hashPtr_;
int hide_;
- Tcl_HashEntry* hashPtr;
unsigned short row_;
unsigned short col_;
int *activeIndices_;
int nActiveIndices_;
- Tk_OptionTable optionTable_;
double xRange_;
double yRange_;
- Blt_ChainLink link;
- protected:
- void* ops_;
+ Blt_ChainLink link;
+ unsigned int flags;
protected:
double FindElemValuesMinimum(ElemValues*, double);
@@ -151,10 +151,17 @@ class Element {
virtual void printNormal(Blt_Ps) =0;
virtual void printSymbol(Blt_Ps, double, double, int) =0;
- void* ops() {return ops_;}
+ ClassId classId() {return classId_;}
+ const char* name() {return name_;}
+ virtual const char* className() =0;
Tk_OptionTable optionTable() {return optionTable();}
+ void* ops() {return ops_;}
};
extern void Blt_FreeStylePalette (Blt_Chain stylePalette);
+extern void Blt_InitBarSetTable(Graph* graphPtr);
+extern void Blt_ComputeBarStacks(Graph* graphPtr);
+extern void Blt_ResetBarGroups(Graph* graphPtr);
+extern void Blt_DestroyBarSets(Graph* graphPtr);
#endif
diff --git a/src/bltGrElemBar.C b/src/bltGrElemBar.C
index 7e5db85..533edd9 100644
--- a/src/bltGrElemBar.C
+++ b/src/bltGrElemBar.C
@@ -171,7 +171,7 @@ static Tk_OptionSpec optionSpecs[] = {
BarElement::BarElement(Graph* graphPtr, const char* name, Tcl_HashEntry* hPtr)
: Element(graphPtr, name, hPtr)
{
- Blt_GraphSetObjectClass(&obj, CID_ELEM_BAR);
+ classId_ = CID_ELEM_BAR;
barToData_ =NULL;
bars_ =NULL;
@@ -1436,7 +1436,7 @@ void Blt_InitBarSetTable(Graph* graphPtr)
BarElement* bePtr = (BarElement*)Blt_Chain_GetValue(link);
BarElementOptions* ops = (BarElementOptions*)bePtr->ops();
- if ((bePtr->hide_) || (bePtr->obj.classId != CID_ELEM_BAR))
+ if ((bePtr->hide_) || (bePtr->classId() != CID_ELEM_BAR))
continue;
nSegs++;
@@ -1555,7 +1555,7 @@ void Blt_ComputeBarStacks(Graph* graphPtr)
BarElement* bePtr = (BarElement*)Blt_Chain_GetValue(link);
BarElementOptions* ops = (BarElementOptions*)bePtr->ops();
- if ((bePtr->hide_) || (bePtr->obj.classId != CID_ELEM_BAR))
+ if ((bePtr->hide_) || (bePtr->classId() != CID_ELEM_BAR))
continue;
if (ops->coords.x && ops->coords.y) {
diff --git a/src/bltGrElemBar.h b/src/bltGrElemBar.h
index c998484..e0d1675 100644
--- a/src/bltGrElemBar.h
+++ b/src/bltGrElemBar.h
@@ -119,11 +119,8 @@ class BarElement : public Element {
void printActive(Blt_Ps);
void printNormal(Blt_Ps);
void printSymbol(Blt_Ps, double, double, int);
-};
-extern void Blt_InitBarSetTable(Graph* graphPtr);
-extern void Blt_ComputeBarStacks(Graph* graphPtr);
-extern void Blt_ResetBarGroups(Graph* graphPtr);
-extern void Blt_DestroyBarSets(Graph* graphPtr);
+ const char* className() {return "BarElement";}
+};
#endif
diff --git a/src/bltGrElemLine.C b/src/bltGrElemLine.C
index 54eba89..9581695 100644
--- a/src/bltGrElemLine.C
+++ b/src/bltGrElemLine.C
@@ -58,8 +58,7 @@ extern "C" {
(((dir == PEN_INCREASING) && (next < last)) || \
((dir == PEN_DECREASING) && (next > last)))
-#define DRAW_SYMBOL(linePtr) \
- (((linePtr)->symbolCounter % (linePtr)->symbolInterval) == 0)
+#define DRAW_SYMBOL() ((symbolCounter_ % symbolInterval_) == 0)
// Defs
@@ -231,7 +230,7 @@ static Tk_OptionSpec optionSpecs[] = {
LineElement::LineElement(Graph* graphPtr, const char* name, Tcl_HashEntry* hPtr)
: Element(graphPtr, name, hPtr)
{
- Blt_GraphSetObjectClass(&obj, CID_ELEM_LINE);
+ classId_ = CID_ELEM_LINE;
smooth_ = PEN_SMOOTH_LINEAR;
fillBgColor_ =NULL;
@@ -858,9 +857,9 @@ void LineElement::printNormal(Blt_Ps ps)
}
}
-void printSymbol(Blt_Ps ps, double x, double y, int size)
+void LineElement::printSymbol(Blt_Ps ps, double x, double y, int size)
{
- LineElementOptions* ops = (LineElementOptions*)ops;
+ LineElementOptions* ops = (LineElementOptions*)ops_;
LinePen* penPtr = NORMALPEN(ops);
LinePenOptions* penOps = (LinePenOptions*)penPtr->ops();
@@ -1009,7 +1008,7 @@ double LineElement::DistanceToY(int x, int y, Point2d *p, Point2d *q,
int LineElement::ScaleSymbol(int normalSize)
{
- LineElementOptions* ops = (LineElementOptions*)ops;
+ LineElementOptions* ops = (LineElementOptions*)ops_;
double scale = 1.0;
if (ops->scaleSymbols) {
@@ -1032,7 +1031,7 @@ int LineElement::ScaleSymbol(int normalSize)
// Don't let the size of symbols go unbounded. Both X and Win32 drawing
// routines assume coordinates to be a signed short int.
- int maxSize = (int)MIN(obj.graphPtr->hRange, obj.graphPtr->vRange);
+ int maxSize = (int)MIN(graphPtr_->hRange, graphPtr_->vRange);
if (newSize > maxSize)
newSize = maxSize;
@@ -1044,7 +1043,7 @@ int LineElement::ScaleSymbol(int normalSize)
void LineElement::GetScreenPoints(MapInfo *mapPtr)
{
- LineElementOptions* ops = (LineElementOptions*)ops;
+ LineElementOptions* ops = (LineElementOptions*)ops_;
if (!ops->coords.x || !ops->coords.y) {
mapPtr->screenPts = NULL;
@@ -1365,7 +1364,7 @@ void LineElement::MapSymbols(MapInfo *mapPtr)
void LineElement::MapActiveSymbols()
{
- LineElementOptions* ops = (LineElementOptions*)ops;
+ LineElementOptions* ops = (LineElementOptions*)ops_;
if (activePts_.points) {
free(activePts_.points);
@@ -1413,7 +1412,7 @@ void LineElement::MapActiveSymbols()
void LineElement::MergePens(LineStyle **styleMap)
{
- LineElementOptions* ops = (LineElementOptions*)ops;
+ LineElementOptions* ops = (LineElementOptions*)ops_;
if (Blt_Chain_GetLength(ops->stylePalette) < 2) {
Blt_ChainLink link = Blt_Chain_FirstLink(ops->stylePalette);
@@ -1639,7 +1638,7 @@ void LineElement::FreeTraces()
void LineElement::MapTraces(MapInfo *mapPtr)
{
- LineElementOptions* ops = (LineElementOptions*)ops;
+ LineElementOptions* ops = (LineElementOptions*)ops_;
Region2d exts;
Blt_GraphExtents(graphPtr_, &exts);
@@ -1702,7 +1701,7 @@ void LineElement::MapTraces(MapInfo *mapPtr)
void LineElement::MapFillArea(MapInfo *mapPtr)
{
- LineElementOptions* ops = (LineElementOptions*)ops;
+ LineElementOptions* ops = (LineElementOptions*)ops_;
if (fillPts_) {
free(fillPts_);
@@ -1779,11 +1778,13 @@ void LineElement::ResetLine()
FreeTraces();
- for (Blt_ChainLink link = Blt_Chain_FirstLink(styles); link;
+ for (Blt_ChainLink link = Blt_Chain_FirstLink(ops->stylePalette); link;
link = Blt_Chain_NextLink(link)) {
LineStyle *stylePtr = (LineStyle*)Blt_Chain_GetValue(link);
- stylePtr->lines.length = stylePtr->symbolPts.length = 0;
- stylePtr->xeb.length = stylePtr->yeb.length = 0;
+ stylePtr->lines.length = 0;
+ stylePtr->symbolPts.length = 0;
+ stylePtr->xeb.length = 0;
+ stylePtr->yeb.length = 0;
}
if (symbolPts_.points) {
@@ -1835,7 +1836,7 @@ void LineElement::ResetLine()
void LineElement::MapErrorBars(LineStyle **styleMap)
{
- LineElementOptions* ops = (LineElementOptions*)ops;
+ LineElementOptions* ops = (LineElementOptions*)ops_;
Region2d exts;
Blt_GraphExtents(graphPtr_, &exts);
@@ -1982,7 +1983,7 @@ void LineElement::MapErrorBars(LineStyle **styleMap)
int LineElement::ClosestTrace()
{
- LineElementOptions* ops = (LineElementOptions*)ops;
+ LineElementOptions* ops = (LineElementOptions*)ops_;
ClosestSearch* searchPtr = &graphPtr_->search;
Blt_ChainLink link;
@@ -2003,9 +2004,9 @@ int LineElement::ClosestTrace()
Point2d b;
double d;
- if (search->along == SEARCH_X)
+ if (searchPtr->along == SEARCH_X)
d = DistanceToX(searchPtr->x, searchPtr->y, p, p + 1, &b);
- else if (search->along == SEARCH_Y)
+ else if (searchPtr->along == SEARCH_Y)
d = DistanceToY(searchPtr->x, searchPtr->y, p, p + 1, &b);
else
d = DistanceToLine(searchPtr->x, searchPtr->y, p, p + 1, &b);
@@ -2030,7 +2031,7 @@ int LineElement::ClosestTrace()
void LineElement::ClosestPoint(ClosestSearch *searchPtr)
{
- LineElementOptions* ops = (LineElementOptions*)ops;
+ LineElementOptions* ops = (LineElementOptions*)ops_;
double dMin = searchPtr->dist;
int iClose = 0;
@@ -2094,11 +2095,11 @@ void LineElement::DrawCircles(Display *display, Drawable drawable,
int s = radius + radius;
XArc *arcs = (XArc*)malloc(nSymbolPts * sizeof(XArc));
- if (symbolInterval > 0) {
+ if (symbolInterval_ > 0) {
XArc* ap = arcs;
Point2d *pp, *pend;
for (pp = symbolPts, pend = pp + nSymbolPts; pp < pend; pp++) {
- if (DRAW_SYMBOL(lePtr)) {
+ if (DRAW_SYMBOL()) {
ap->x = Round(pp->x) - radius;
ap->y = Round(pp->y) - radius;
ap->width = ap->height = (unsigned short)s;
@@ -2106,7 +2107,7 @@ void LineElement::DrawCircles(Display *display, Drawable drawable,
ap->angle2 = 23040;
ap++, count++;
}
- symbolCounter++;
+ symbolCounter_++;
}
}
else {
@@ -2146,17 +2147,17 @@ void LineElement::DrawSquares(Display *display, Drawable drawable,
int s = r + r;
XRectangle *rectangles = (XRectangle*)malloc(nSymbolPts * sizeof(XRectangle));
- if (symbolInterval > 0) {
+ if (symbolInterval_ > 0) {
XRectangle* rp = rectangles;
Point2d *pp, *pend;
for (pp = symbolPts, pend = pp + nSymbolPts; pp < pend; pp++) {
- if (DRAW_SYMBOL(lePtr)) {
+ if (DRAW_SYMBOL()) {
rp->x = Round(pp->x) - r;
rp->y = Round(pp->y) - r;
rp->width = rp->height = (unsigned short)s;
rp++, count++;
}
- symbolCounter++;
+ symbolCounter_++;
}
}
else {
@@ -2223,12 +2224,12 @@ void LineElement::DrawSymbols(Drawable drawable, LinePen* penPtr,
break;
case SYMBOL_SQUARE:
- DrawSquares(graphPtr_->display, drawable, lePtr, penPtr, nSymbolPts,
+ DrawSquares(graphPtr_->display, drawable, penPtr, nSymbolPts,
symbolPts, r2);
break;
case SYMBOL_CIRCLE:
- DrawCircles(graphPtr_->display, drawable, lePtr, penPtr, nSymbolPts,
+ DrawCircles(graphPtr_->display, drawable, penPtr, nSymbolPts,
symbolPts, r1);
break;
@@ -2247,12 +2248,12 @@ void LineElement::DrawSymbols(Drawable drawable, LinePen* penPtr,
}
XSegment *segments = (XSegment*)malloc(nSymbolPts * 2 * sizeof(XSegment));
- if (symbolInterval > 0) {
+ if (symbolInterval_ > 0) {
XSegment* sp = segments;
count = 0;
Point2d *pp, *endp;
for (pp = symbolPts, endp = pp + nSymbolPts; pp < endp; pp++) {
- if (DRAW_SYMBOL(lePtr)) {
+ if (DRAW_SYMBOL()) {
int rndx, rndy;
rndx = Round(pp->x), rndy = Round(pp->y);
sp->x1 = pattern[0].x + rndx;
@@ -2267,7 +2268,7 @@ void LineElement::DrawSymbols(Drawable drawable, LinePen* penPtr,
sp++;
count++;
}
- symbolCounter++;
+ symbolCounter_++;
}
}
else {
@@ -2342,12 +2343,12 @@ void LineElement::DrawSymbols(Drawable drawable, LinePen* penPtr,
pattern[12] = pattern[0];
}
polygon = (XPoint*)malloc(nSymbolPts * 13 * sizeof(XPoint));
- if (symbolInterval > 0) {
+ if (symbolInterval_ > 0) {
count = 0;
XPoint* xpp = polygon;
Point2d *pp, *endp;
for (pp = symbolPts, endp = pp + nSymbolPts; pp < endp; pp++) {
- if (DRAW_SYMBOL(lePtr)) {
+ if (DRAW_SYMBOL()) {
int rndx = Round(pp->x);
int rndy = Round(pp->y);
for (int ii=0; ii<13; ii++) {
@@ -2357,7 +2358,7 @@ void LineElement::DrawSymbols(Drawable drawable, LinePen* penPtr,
}
count++;
}
- symbolCounter++;
+ symbolCounter_++;
}
}
else {
@@ -2413,41 +2414,35 @@ void LineElement::DrawSymbols(Drawable drawable, LinePen* penPtr,
pattern[4] = pattern[0];
polygon = (XPoint*)malloc(nSymbolPts * 5 * sizeof(XPoint));
- if (symbolInterval > 0) {
+ if (symbolInterval_ > 0) {
Point2d *pp, *endp;
XPoint *xpp;
xpp = polygon;
count = 0;
for (pp = symbolPts, endp = pp + nSymbolPts; pp < endp; pp++) {
- int i;
-
- if (DRAW_SYMBOL(lePtr)) {
- int rndx, rndy;
-
- rndx = Round(pp->x), rndy = Round(pp->y);
- for (i = 0; i < 5; i++) {
- xpp->x = pattern[i].x + rndx;
- xpp->y = pattern[i].y + rndy;
+ if (DRAW_SYMBOL()) {
+ int rndx = Round(pp->x);
+ int rndy = Round(pp->y);
+ for (int ii=0; ii<5; ii++) {
+ xpp->x = pattern[ii].x + rndx;
+ xpp->y = pattern[ii].y + rndy;
xpp++;
}
count++;
}
- symbolCounter++;
+ symbolCounter_++;
}
- } else {
+ }
+ else {
+ XPoint* xpp = polygon;
Point2d *pp, *endp;
- XPoint *xpp;
-
- xpp = polygon;
for (pp = symbolPts, endp = pp + nSymbolPts; pp < endp; pp++) {
- int i;
- int rndx, rndy;
-
- rndx = Round(pp->x), rndy = Round(pp->y);
- for (i = 0; i < 5; i++) {
- xpp->x = pattern[i].x + rndx;
- xpp->y = pattern[i].y + rndy;
+ int rndx = Round(pp->x);
+ int rndy = Round(pp->y);
+ for (int ii=0; ii<5; ii++) {
+ xpp->x = pattern[ii].x + rndx;
+ xpp->y = pattern[ii].y + rndy;
xpp++;
}
}
@@ -2456,7 +2451,6 @@ void LineElement::DrawSymbols(Drawable drawable, LinePen* penPtr,
if (penOps->symbol.fillGC) {
XPoint *xpp;
int i;
-
for (xpp = polygon, i = 0; i < count; i++, xpp += 5)
XFillPolygon(graphPtr_->display, drawable,
penOps->symbol.fillGC, xpp, 5, Convex, CoordModeOrigin);
@@ -2464,7 +2458,6 @@ void LineElement::DrawSymbols(Drawable drawable, LinePen* penPtr,
if (penOps->symbol.outlineWidth > 0) {
XPoint *xpp;
int i;
-
for (xpp = polygon, i = 0; i < count; i++, xpp += 5) {
XDrawLines(graphPtr_->display, drawable,
penOps->symbol.outlineGC, xpp, 5, CoordModeOrigin);
@@ -2514,60 +2507,50 @@ void LineElement::DrawSymbols(Drawable drawable, LinePen* penPtr,
pattern[2].x = -b2;
}
polygon = (XPoint*)malloc(nSymbolPts * 4 * sizeof(XPoint));
- if (symbolInterval > 0) {
+ if (symbolInterval_ > 0) {
Point2d *pp, *endp;
XPoint *xpp;
xpp = polygon;
count = 0;
for (pp = symbolPts, endp = pp + nSymbolPts; pp < endp; pp++) {
- int i;
-
- if (DRAW_SYMBOL(lePtr)) {
- int rndx, rndy;
-
- rndx = Round(pp->x), rndy = Round(pp->y);
- for (i = 0; i < 4; i++) {
- xpp->x = pattern[i].x + rndx;
- xpp->y = pattern[i].y + rndy;
+ if (DRAW_SYMBOL()) {
+ int rndx = Round(pp->x);
+ int rndy = Round(pp->y);
+ for (int ii=0; ii<4; ii++) {
+ xpp->x = pattern[ii].x + rndx;
+ xpp->y = pattern[ii].y + rndy;
xpp++;
}
count++;
}
- symbolCounter++;
+ symbolCounter_++;
}
- } else {
+ }
+ else {
+ XPoint* xpp = polygon;
Point2d *pp, *endp;
- XPoint *xpp;
-
- xpp = polygon;
for (pp = symbolPts, endp = pp + nSymbolPts; pp < endp; pp++) {
- int i;
- int rndx, rndy;
-
- rndx = Round(pp->x), rndy = Round(pp->y);
- for (i = 0; i < 4; i++) {
- xpp->x = pattern[i].x + rndx;
- xpp->y = pattern[i].y + rndy;
+ int rndx = Round(pp->x);
+ int rndy = Round(pp->y);
+ for (int ii=0; ii<4; ii++) {
+ xpp->x = pattern[ii].x + rndx;
+ xpp->y = pattern[ii].y + rndy;
xpp++;
}
}
count = nSymbolPts;
}
if (penOps->symbol.fillGC) {
- XPoint *xpp;
int i;
-
- xpp = polygon;
+ XPoint* xpp = polygon;
for (xpp = polygon, i = 0; i < count; i++, xpp += 4)
XFillPolygon(graphPtr_->display, drawable,
penOps->symbol.fillGC, xpp, 4, Convex, CoordModeOrigin);
}
if (penOps->symbol.outlineWidth > 0) {
- XPoint *xpp;
int i;
-
- xpp = polygon;
+ XPoint* xpp = polygon;
for (xpp = polygon, i = 0; i < count; i++, xpp += 4) {
XDrawLines(graphPtr_->display, drawable,
penOps->symbol.outlineGC, xpp, 4, CoordModeOrigin);
@@ -2605,10 +2588,10 @@ void LineElement::DrawSymbols(Drawable drawable, LinePen* penPtr,
dx = bw / 2;
dy = bh / 2;
- if (symbolInterval > 0) {
+ if (symbolInterval_ > 0) {
Point2d *pp, *endp;
for (pp = symbolPts, endp = pp + nSymbolPts; pp < endp; pp++) {
- if (DRAW_SYMBOL(lePtr)) {
+ if (DRAW_SYMBOL()) {
int x = Round(pp->x) - dx;
int y = Round(pp->y) - dy;
if ((penOps->symbol.fillGC == NULL) ||
@@ -2618,7 +2601,7 @@ void LineElement::DrawSymbols(Drawable drawable, LinePen* penPtr,
XCopyPlane(graphPtr_->display, penOps->symbol.bitmap, drawable,
penOps->symbol.outlineGC, 0, 0, bw, bh, x, y, 1);
}
- symbolCounter++;
+ symbolCounter_++;
}
}
else {
@@ -2644,7 +2627,7 @@ void LineElement::DrawTraces(Drawable drawable, LinePen* penPtr)
int np = Blt_MaxRequestSize(graphPtr_->display, sizeof(XPoint)) - 1;
XPoint *points = (XPoint*)malloc((np + 1) * sizeof(XPoint));
- for (Blt_ChainLink link = Blt_Chain_FirstLink(traces); link;
+ for (Blt_ChainLink link = Blt_Chain_FirstLink(traces_); link;
link = Blt_Chain_NextLink(link)) {
XPoint *xpp;
int remaining, count;
@@ -2706,7 +2689,7 @@ void LineElement::DrawTraces(Drawable drawable, LinePen* penPtr)
void LineElement::DrawValues(Drawable drawable, LinePen* penPtr,
int length, Point2d *points, int *map)
{
- LineElementOptions* ops = (LineElementOptions*)ops;
+ LineElementOptions* ops = (LineElementOptions*)ops_;
LinePenOptions* penOps = (LinePenOptions*)penPtr->ops();
Point2d *pp, *endp;
@@ -2742,7 +2725,7 @@ void LineElement::DrawValues(Drawable drawable, LinePen* penPtr,
}
}
-void GetSymbolPostScriptInfo(Blt_Ps ps, LinePen* penPtr, int size)
+void LineElement::GetSymbolPostScriptInfo(Blt_Ps ps, LinePen* penPtr, int size)
{
LinePenOptions* penOps = (LinePenOptions*)penPtr->ops();
@@ -2827,7 +2810,7 @@ void LineElement::SymbolsToPostScript(Blt_Ps ps, LinePen* penPtr, int size,
{
"Li", "Sq", "Ci", "Di", "Pl", "Cr", "Sp", "Sc", "Tr", "Ar", "Bm", NULL
};
- GetSymbolPostScriptInfo(graphPtr_, ps, penPtr, size);
+ GetSymbolPostScriptInfo(ps, penPtr, size);
symbolSize = (double)size;
switch (penOps->symbol.type) {
@@ -2879,7 +2862,7 @@ void LineElement::SetLineAttributes(Blt_Ps ps, LinePen* penPtr)
void LineElement::TracesToPostScript(Blt_Ps ps, LinePen* penPtr)
{
SetLineAttributes(ps, penPtr);
- for (Blt_ChainLink link = Blt_Chain_FirstLink(traces); link;
+ for (Blt_ChainLink link = Blt_Chain_FirstLink(traces_); link;
link = Blt_Chain_NextLink(link)) {
bltTrace *tracePtr = (bltTrace*)Blt_Chain_GetValue(link);
if (tracePtr->screenPts.length > 0) {
@@ -2895,7 +2878,7 @@ void LineElement::ValuesToPostScript(Blt_Ps ps, LinePen* penPtr,
int nSymbolPts, Point2d *symbolPts,
int *pointToData)
{
- LineElementOptions* ops = (LineElementOptions*)ops;
+ LineElementOptions* ops = (LineElementOptions*)ops_;
LinePenOptions* penOps = (LinePenOptions*)penPtr->ops();
const char* fmt = penOps->valueFormat;
diff --git a/src/bltGrElemLine.h b/src/bltGrElemLine.h
index 2238006..5afbe8f 100644
--- a/src/bltGrElemLine.h
+++ b/src/bltGrElemLine.h
@@ -150,7 +150,8 @@ class LineElement : public Element {
double DistanceToLine(int, int, Point2d*, Point2d*, Point2d*);
double DistanceToX(int, int, Point2d*, Point2d*, Point2d*);
double DistanceToY(int, int, Point2d*, Point2d*, Point2d*);
- void SymbolsToPostScript(Blt_Ps, Pen*, int, int, Point2d*);
+ void GetSymbolPostScriptInfo(Blt_Ps, LinePen*, int);
+ void SymbolsToPostScript(Blt_Ps, LinePen*, int, int, Point2d*);
public:
LineElement(Graph*, const char*, Tcl_HashEntry*);
@@ -166,6 +167,8 @@ class LineElement : public Element {
void printActive(Blt_Ps);
void printNormal(Blt_Ps);
void printSymbol(Blt_Ps, double, double, int);
+
+ const char* className() {return "LineElement";}
};
#endif
diff --git a/src/bltGrElemOp.C b/src/bltGrElemOp.C
index 4258825..e7e4329 100644
--- a/src/bltGrElemOp.C
+++ b/src/bltGrElemOp.C
@@ -103,7 +103,7 @@ static int CreateElement(Graph* graphPtr, Tcl_Interp* interp, int objc,
static void DestroyElement(Element* elemPtr)
{
- Graph* graphPtr = elemPtr->obj.graphPtr;
+ Graph* graphPtr = elemPtr->graphPtr_;
Blt_DeleteBindings(graphPtr->bindTable, elemPtr);
Blt_Legend_RemoveElement(graphPtr, elemPtr);
@@ -217,7 +217,7 @@ static int ActivateOp(Graph* graphPtr, Tcl_Interp* interp,
Element* elemPtr = (Element*)Tcl_GetHashValue(hPtr);
if (elemPtr->flags & ACTIVE)
Tcl_ListObjAppendElement(interp, listObjPtr,
- Tcl_NewStringObj(elemPtr->obj.name, -1));
+ Tcl_NewStringObj(elemPtr->name(), -1));
}
Tcl_SetObjResult(interp, listObjPtr);
@@ -325,7 +325,7 @@ static int ClosestOp(Graph* graphPtr, Tcl_Interp* interp,
if (searchPtr->dist < (double)searchPtr->halo) {
Tcl_Obj* listObjPtr = Tcl_NewListObj(0, (Tcl_Obj **)NULL);
Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewStringObj("name", -1));
- Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewStringObj(searchPtr->elemPtr->obj.name, -1));
+ Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewStringObj(searchPtr->elemPtr->name(), -1));
Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewStringObj("index", -1));
Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewIntObj(searchPtr->index));
Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewStringObj("x", -1));
@@ -407,12 +407,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);
- /* Report only on elements. */
- if ((elemPtr) && ((elemPtr->flags & DELETE_PENDING) == 0) &&
- (elemPtr->obj.classId >= CID_ELEM_BAR) &&
- (elemPtr->obj.classId <= CID_ELEM_LINE)) {
- Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->obj.name,-1);
- }
+ if ((elemPtr) && ((elemPtr->flags & DELETE_PENDING) == 0))
+ Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->name(),-1);
}
return TCL_OK;
}
@@ -457,7 +453,7 @@ static int NamesOp(Graph* graphPtr, Tcl_Interp* interp,
Tcl_HashSearch iter;
for (Tcl_HashEntry *hPtr = Tcl_FirstHashEntry(&graphPtr->elements.table, &iter); hPtr != NULL; hPtr = Tcl_NextHashEntry(&iter)) {
Element* elemPtr = (Element*)Tcl_GetHashValue(hPtr);
- Tcl_Obj *objPtr = Tcl_NewStringObj(elemPtr->obj.name, -1);
+ Tcl_Obj *objPtr = Tcl_NewStringObj(elemPtr->name(), -1);
Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
}
}
@@ -467,8 +463,8 @@ static int NamesOp(Graph* graphPtr, Tcl_Interp* interp,
Element* elemPtr = (Element*)Tcl_GetHashValue(hPtr);
for (int ii=3; ii<objc; ii++) {
- if (Tcl_StringMatch(elemPtr->obj.name,Tcl_GetString(objv[ii]))) {
- Tcl_Obj *objPtr = Tcl_NewStringObj(elemPtr->obj.name, -1);
+ if (Tcl_StringMatch(elemPtr->name(),Tcl_GetString(objv[ii]))) {
+ Tcl_Obj *objPtr = Tcl_NewStringObj(elemPtr->name(), -1);
Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
break;
}
@@ -558,7 +554,7 @@ static int TypeOp(Graph* graphPtr, Tcl_Interp* interp,
if (Blt_GetElement(interp, graphPtr, objv[3], &elemPtr) != TCL_OK)
return TCL_ERROR;
- switch (elemPtr->obj.classId) {
+ switch (elemPtr->classId()) {
case CID_ELEM_BAR:
Tcl_SetStringObj(Tcl_GetObjResult(interp), "bar", -1);
return TCL_OK;
@@ -613,7 +609,7 @@ static Tcl_Obj *DisplayListObj(Graph* graphPtr)
for (Blt_ChainLink link = Blt_Chain_FirstLink(graphPtr->elements.displayList); link != NULL; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- Tcl_Obj *objPtr = Tcl_NewStringObj(elemPtr->obj.name, -1);
+ Tcl_Obj *objPtr = Tcl_NewStringObj(elemPtr->name(), -1);
Tcl_ListObjAppendElement(graphPtr->interp, listObjPtr, objPtr);
}
@@ -669,10 +665,8 @@ void Blt_DestroyElements(Graph* graphPtr)
for (hPtr = Tcl_FirstHashEntry(&graphPtr->elements.table, &iter);
hPtr != NULL; hPtr = Tcl_NextHashEntry(&iter)) {
Element* elemPtr = (Element*)Tcl_GetHashValue(hPtr);
- if (elemPtr) {
- elemPtr->hashPtr = NULL;
+ if (elemPtr)
DestroyElement(elemPtr);
- }
}
Tcl_DeleteHashTable(&graphPtr->elements.table);
Tcl_DeleteHashTable(&graphPtr->elements.tagTable);
@@ -743,7 +737,7 @@ void Blt_ElementsToPostScript(Graph* graphPtr, Blt_Ps ps)
continue;
}
/* Comment the PostScript to indicate the start of the element */
- Blt_Ps_Format(ps, "\n%% Element \"%s\"\n\n", elemPtr->obj.name);
+ Blt_Ps_Format(ps, "\n%% Element \"%s\"\n\n", elemPtr->name());
elemPtr->printNormal(ps);
}
}
@@ -758,8 +752,7 @@ void Blt_ActiveElementsToPostScript(Graph* graphPtr, Blt_Ps ps)
if (!(elemPtr->flags & DELETE_PENDING) &&
(elemPtr->flags & ACTIVE) &&
!elemPtr->hide_) {
- Blt_Ps_Format(ps, "\n%% Active Element \"%s\"\n\n",
- elemPtr->obj.name);
+ Blt_Ps_Format(ps, "\n%% Active Element \"%s\"\n\n", elemPtr->name());
elemPtr->printActive(ps);
}
}
diff --git a/src/bltGrElemOption.C b/src/bltGrElemOption.C
index 30effe4..434a700 100644
--- a/src/bltGrElemOption.C
+++ b/src/bltGrElemOption.C
@@ -282,8 +282,8 @@ int StyleSetProc(ClientData clientData, Tcl_Interp* interp,
stylePtr->weight.min = (double)ii;
stylePtr->weight.max = (double)ii + 1.0;
stylePtr->weight.range = 1.0;
- if (GetPenStyleFromObj(interp, elemPtr->obj.graphPtr, objv[ii],
- elemPtr->obj.classId,
+ if (GetPenStyleFromObj(interp, elemPtr->graphPtr_, objv[ii],
+ elemPtr->classId(),
(PenStyle*)stylePtr) != TCL_OK) {
Blt_FreeStylePalette(stylePalette);
return TCL_ERROR;
@@ -421,7 +421,7 @@ static void VectorChangedProc(Tcl_Interp* interp, ClientData clientData,
}
Element* elemPtr = valuesPtr->elemPtr;
- Graph* graphPtr = elemPtr->obj.graphPtr;
+ Graph* graphPtr = elemPtr->graphPtr_;
graphPtr->flags |= RESET_AXES;
elemPtr->flags |= MAP_ITEM;
if (elemPtr->link && !(elemPtr->flags & DELETE_PENDING)) {
diff --git a/src/bltGrLegd.C b/src/bltGrLegd.C
index bb937a5..df54a31 100644
--- a/src/bltGrLegd.C
+++ b/src/bltGrLegd.C
@@ -673,9 +673,9 @@ static int ActivateOp(Graph* graphPtr, Tcl_Interp* interp,
for (link = Blt_Chain_FirstLink(graphPtr->elements.displayList);
link != NULL; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- if (Tcl_StringMatch(elemPtr->obj.name, pattern)) {
+ if (Tcl_StringMatch(elemPtr->name(), pattern)) {
fprintf(stderr, "legend %s(%s) %s is currently %d\n",
- string, pattern, elemPtr->obj.name,
+ string, pattern, elemPtr->name(),
(elemPtr->flags & LABEL_ACTIVE));
if (active) {
if ((elemPtr->flags & LABEL_ACTIVE) == 0) {
@@ -689,7 +689,7 @@ static int ActivateOp(Graph* graphPtr, Tcl_Interp* interp,
}
}
fprintf(stderr, "legend %s(%s) %s is now %d\n",
- string, pattern, elemPtr->obj.name,
+ string, pattern, elemPtr->name(),
(elemPtr->flags & LABEL_ACTIVE));
}
}
@@ -721,7 +721,7 @@ static int ActivateOp(Graph* graphPtr, Tcl_Interp* interp,
if (elemPtr->flags & LABEL_ACTIVE) {
Tcl_Obj *objPtr;
- objPtr = Tcl_NewStringObj(elemPtr->obj.name, -1);
+ objPtr = Tcl_NewStringObj(elemPtr->name(), -1);
Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
}
}
@@ -763,21 +763,19 @@ static int CurselectionOp(Graph* graphPtr, Tcl_Interp* interp,
for (link = Blt_Chain_FirstLink(legendPtr->selected); link != NULL;
link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- Tcl_Obj *objPtr = Tcl_NewStringObj(elemPtr->obj.name, -1);
+ Tcl_Obj *objPtr = Tcl_NewStringObj(elemPtr->name(), -1);
Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
}
- } else {
- Blt_ChainLink link;
-
+ }
+ else {
/* List of selected entries is in stacking order. */
- for (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 != NULL; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
if (EntryIsSelected(legendPtr, elemPtr)) {
Tcl_Obj *objPtr;
- objPtr = Tcl_NewStringObj(elemPtr->obj.name, -1);
+ objPtr = Tcl_NewStringObj(elemPtr->name(), -1);
Tcl_ListObjAppendElement(interp, listObjPtr, objPtr);
}
}
@@ -808,7 +806,7 @@ static int FocusOp(Graph* graphPtr, Tcl_Interp* interp,
}
if (legendPtr->focusPtr) {
Tcl_SetStringObj(Tcl_GetObjResult(interp),
- legendPtr->focusPtr->obj.name, -1);
+ legendPtr->focusPtr->name(), -1);
}
return TCL_OK;
}
@@ -825,7 +823,7 @@ static int GetOp(Graph* graphPtr, Tcl_Interp* interp,
return TCL_ERROR;
}
if (elemPtr) {
- Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->obj.name,-1);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->name(),-1);
}
}
return TCL_OK;
@@ -871,7 +869,7 @@ static int SelectionAnchorOp(Graph* graphPtr, Tcl_Interp* interp,
legendPtr->selAnchorPtr = elemPtr;
legendPtr->selMarkPtr = NULL;
if (elemPtr) {
- Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->obj.name, -1);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->name(), -1);
}
Blt_Legend_EventuallyRedraw(graphPtr);
return TCL_OK;
@@ -929,7 +927,7 @@ static int SelectionMarkOp(Graph* graphPtr, Tcl_Interp* interp,
legendPtr->flags &= ~SELECT_TOGGLE;
legendPtr->flags |= SELECT_SET;
SelectRange(legendPtr, legendPtr->selAnchorPtr, elemPtr);
- Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->obj.name, -1);
+ Tcl_SetStringObj(Tcl_GetObjResult(interp), elemPtr->name(), -1);
legendPtr->selMarkPtr = elemPtr;
Blt_Legend_EventuallyRedraw(graphPtr);
@@ -972,7 +970,7 @@ static int SelectionSetOp(Graph* graphPtr, Tcl_Interp* interp,
if (GetElementFromObj(graphPtr, objv[4], &firstPtr) != TCL_OK) {
return TCL_ERROR;
}
- if ((firstPtr->hide) && ((legendPtr->flags & SELECT_CLEAR)==0)) {
+ 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;
@@ -982,7 +980,7 @@ static int SelectionSetOp(Graph* graphPtr, Tcl_Interp* interp,
if (GetElementFromObj(graphPtr, objv[5], &lastPtr) != TCL_OK) {
return TCL_ERROR;
}
- if (lastPtr->hide && ((legendPtr->flags & SELECT_CLEAR) == 0)) {
+ 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;
@@ -1361,7 +1359,7 @@ static ClientData PickEntryProc(ClientData clientData, int x, int y,
for (link = Blt_Chain_FirstLink(graphPtr->elements.displayList);
link != NULL; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- ElementOptions* ops = (ElementOptions*)elemPtr->ops;
+ ElementOptions* ops = (ElementOptions*)elemPtr->ops();
if (ops->label) {
if (count == n)
return elemPtr;
@@ -1411,7 +1409,7 @@ void Blt_MapLegend(Graph* graphPtr, int plotWidth, int plotHeight)
link != NULL; link = Blt_Chain_NextLink(link)) {
unsigned int w, h;
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- ElementOptions* ops = (ElementOptions*)elemPtr->ops;
+ ElementOptions* ops = (ElementOptions*)elemPtr->ops();
if (ops->label == NULL)
continue;
@@ -1519,8 +1517,8 @@ void Blt_MapLegend(Graph* graphPtr, int plotWidth, int plotHeight)
link != NULL; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
count++;
- elemPtr->row = row;
- elemPtr->col = col;
+ elemPtr->row_ = row;
+ elemPtr->col_ = col;
row++;
if ((count % nRows) == 0) {
col++;
@@ -1614,7 +1612,7 @@ void Blt_DrawLegend(Graph* graphPtr, Drawable drawable)
int isSelected;
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- ElementOptions* ops = (ElementOptions*)elemPtr->ops;
+ ElementOptions* ops = (ElementOptions*)elemPtr->ops();
if (ops->label == NULL)
continue;
@@ -1641,8 +1639,7 @@ void Blt_DrawLegend(Graph* graphPtr, Drawable drawable)
ops->legendRelief);
}
}
- (*elemPtr->procsPtr->drawSymbolProc) (graphPtr, pixmap, elemPtr,
- x + xSymbol, y + ySymbol, symbolSize);
+ elemPtr->drawSymbol(pixmap, x + xSymbol, y + ySymbol, symbolSize);
Blt_DrawText(tkwin, pixmap, ops->label, &legendPtr->style,
x + xLabel,
y + legendPtr->entryBW + legendPtr->iyPad);
@@ -1749,7 +1746,7 @@ void Blt_LegendToPostScript(Graph* graphPtr, Blt_Ps ps)
for (link = Blt_Chain_FirstLink(graphPtr->elements.displayList);
link != NULL; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- ElementOptions* ops = (ElementOptions*)elemPtr->ops;
+ ElementOptions* ops = (ElementOptions*)elemPtr->ops();
if (ops->label == NULL)
continue;
@@ -1767,8 +1764,7 @@ void Blt_LegendToPostScript(Graph* graphPtr, Blt_Ps ps)
ops->legendRelief);
}
}
- (*elemPtr->procsPtr->printSymbolProc) (graphPtr, ps, elemPtr,
- x + xSymbol, y + ySymbol, symbolSize);
+ elemPtr->printSymbol(ps, x + xSymbol, y + ySymbol, symbolSize);
Blt_Ps_DrawText(ps, ops->label, &legendPtr->style,
x + xLabel, y + legendPtr->entryBW + legendPtr->iyPad);
count++;
@@ -1786,15 +1782,15 @@ static Element *GetNextRow(Graph* graphPtr, Element *focusPtr)
Blt_ChainLink link;
int row, col;
- col = focusPtr->col;
- row = focusPtr->row + 1;
+ col = focusPtr->col_;
+ row = focusPtr->row_ + 1;
for (link = focusPtr->link; link != NULL; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- ElementOptions* ops = (ElementOptions*)elemPtr->ops;
+ ElementOptions* ops = (ElementOptions*)elemPtr->ops();
if (ops->label == NULL)
continue;
- if ((elemPtr->col == col) && (elemPtr->row == row))
+ if ((elemPtr->col_ == col) && (elemPtr->row_ == row))
return elemPtr;
}
return NULL;
@@ -1805,15 +1801,15 @@ static Element *GetNextColumn(Graph* graphPtr, Element *focusPtr)
Blt_ChainLink link;
int row, col;
- col = focusPtr->col + 1;
- row = focusPtr->row;
+ col = focusPtr->col_ + 1;
+ row = focusPtr->row_;
for (link = focusPtr->link; link != NULL; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- ElementOptions* ops = (ElementOptions*)elemPtr->ops;
+ ElementOptions* ops = (ElementOptions*)elemPtr->ops();
if (ops->label == NULL)
continue;
- if ((elemPtr->col == col) && (elemPtr->row == row))
+ if ((elemPtr->col_ == col) && (elemPtr->row_ == row))
return elemPtr;
}
return NULL;
@@ -1821,16 +1817,16 @@ static Element *GetNextColumn(Graph* graphPtr, Element *focusPtr)
static Element *GetPreviousRow(Graph* graphPtr, Element *focusPtr)
{
- int col = focusPtr->col;
- int row = focusPtr->row - 1;
+ int col = focusPtr->col_;
+ int row = focusPtr->row_ - 1;
for (Blt_ChainLink link = focusPtr->link; link != NULL;
link = Blt_Chain_PrevLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- ElementOptions* ops = (ElementOptions*)elemPtr->ops;
+ ElementOptions* ops = (ElementOptions*)elemPtr->ops();
if (ops->label == NULL)
continue;
- if ((elemPtr->col == col) && (elemPtr->row == row))
+ if ((elemPtr->col_ == col) && (elemPtr->row_ == row))
return elemPtr;
}
return NULL;
@@ -1838,16 +1834,16 @@ static Element *GetPreviousRow(Graph* graphPtr, Element *focusPtr)
static Element *GetPreviousColumn(Graph* graphPtr, Element *focusPtr)
{
- int col = focusPtr->col - 1;
- int row = focusPtr->row;
+ int col = focusPtr->col_ - 1;
+ int row = focusPtr->row_;
for (Blt_ChainLink link = focusPtr->link; link != NULL;
link = Blt_Chain_PrevLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- ElementOptions* ops = (ElementOptions*)elemPtr->ops;
+ ElementOptions* ops = (ElementOptions*)elemPtr->ops();
if (ops->label == NULL)
continue;
- if ((elemPtr->col == col) && (elemPtr->row == row))
+ if ((elemPtr->col_ == col) && (elemPtr->row_ == row))
return elemPtr;
}
return NULL;
@@ -1857,7 +1853,7 @@ static Element *GetFirstElement(Graph* graphPtr)
{
for (Blt_ChainLink link = Blt_Chain_FirstLink(graphPtr->elements.displayList);link != NULL; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- ElementOptions* ops = (ElementOptions*)elemPtr->ops;
+ ElementOptions* ops = (ElementOptions*)elemPtr->ops();
if (ops->label)
return elemPtr;
}
@@ -1869,7 +1865,7 @@ static Element *GetLastElement(Graph* graphPtr)
for (Blt_ChainLink link = Blt_Chain_LastLink(graphPtr->elements.displayList);
link != NULL; link = Blt_Chain_PrevLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- ElementOptions* ops = (ElementOptions*)elemPtr->ops;
+ ElementOptions* ops = (ElementOptions*)elemPtr->ops();
if (ops->label)
return elemPtr;
}
@@ -1934,7 +1930,7 @@ static int GetElementFromObj(Graph* graphPtr, Tcl_Obj *objPtr,
(char *)NULL);
return TCL_ERROR;
}
- ElementOptions* ops = (ElementOptions*)elemPtr->ops;
+ ElementOptions* ops = (ElementOptions*)elemPtr->ops();
if (ops->label == NULL)
elemPtr = NULL;
}
@@ -2025,7 +2021,7 @@ static int SelectionProc(ClientData clientData, int offset,
for (link = Blt_Chain_FirstLink(legendPtr->selected);
link != NULL; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
- Tcl_DStringAppend(&dString, elemPtr->obj.name, -1);
+ Tcl_DStringAppend(&dString, elemPtr->name(), -1);
Tcl_DStringAppend(&dString, "\n", -1);
}
} else {
@@ -2038,7 +2034,7 @@ static int SelectionProc(ClientData clientData, int offset,
link != NULL; link = Blt_Chain_NextLink(link)) {
Element* elemPtr = (Element*)Blt_Chain_GetValue(link);
if (EntryIsSelected(legendPtr, elemPtr)) {
- Tcl_DStringAppend(&dString, elemPtr->obj.name, -1);
+ Tcl_DStringAppend(&dString, elemPtr->name(), -1);
Tcl_DStringAppend(&dString, "\n", -1);
}
}
diff --git a/src/bltGrMarker.h b/src/bltGrMarker.h
index 8ed4675..a3bcf29 100644
--- a/src/bltGrMarker.h
+++ b/src/bltGrMarker.h
@@ -60,12 +60,12 @@ namespace Blt {
class Marker {
protected:
+ Graph* graphPtr_;
ClassId classId_;
const char *name_;
const char *className_;
Tk_OptionTable optionTable_;
void* ops_;
- Graph* graphPtr_;
Tcl_HashEntry* hashPtr_;
int clipped_;
@@ -97,9 +97,9 @@ namespace Blt {
ClassId classId() {return classId_;}
const char* name() {return name_;}
const char* className() {return className_;}
- int clipped() {return clipped_;}
Tk_OptionTable optionTable() {return optionTable_;}
void* ops() {return ops_;}
+ int clipped() {return clipped_;}
};
};
diff --git a/src/bltGrMarkerOp.C b/src/bltGrMarkerOp.C
index 9d512a3..bc2633b 100644
--- a/src/bltGrMarkerOp.C
+++ b/src/bltGrMarkerOp.C
@@ -475,7 +475,7 @@ static int IsElementHidden(Graph* graphPtr, Marker* markerPtr)
= Tcl_FindHashEntry(&graphPtr->elements.table, ops->elemName);
if (hPtr) {
Element* elemPtr = (Element*)Tcl_GetHashValue(hPtr);
- if (!elemPtr->link || elemPtr->hide)
+ if (!elemPtr->link || elemPtr->hide_)
return 1;
}
}
diff --git a/src/bltGrPen.h b/src/bltGrPen.h
index b10ee37..cfb1876 100644
--- a/src/bltGrPen.h
+++ b/src/bltGrPen.h
@@ -70,6 +70,7 @@ class Pen {
void* ops() {return ops_;}
Tk_OptionTable optionTable() {return optionTable_;}
const char* name() {return name_;}
+ virtual const char* className() =0;
ClassId classId() {return classId_;}
};
diff --git a/src/bltGrPenBar.C b/src/bltGrPenBar.C
index 427bed8..751882e 100644
--- a/src/bltGrPenBar.C
+++ b/src/bltGrPenBar.C
@@ -72,14 +72,6 @@ static Tk_OptionSpec barPenOptionSpecs[] = {
{TK_OPTION_END, NULL, NULL, NULL, NULL, -1, 0, 0, NULL, 0}
};
-BarPen::BarPen() : Pen()
-{
-
- fillGC_ =NULL;
- outlineGC_ =NULL;
- errorBarGC_ =NULL;
-}
-
BarPen::BarPen(Graph* graphPtr, const char* name, Tcl_HashEntry* hPtr)
: Pen(graphPtr, name, hPtr)
{
@@ -96,12 +88,12 @@ BarPen::BarPen(Graph* graphPtr, const char* name, Tcl_HashEntry* hPtr)
Blt_Ts_InitStyle(ops->valueStyle);
}
-BarPen::BarPen(Graph* graphPtr, const char* name, void* ops)
+BarPen::BarPen(Graph* graphPtr, const char* name, void* options)
: Pen(graphPtr, name, NULL)
{
classId_ = CID_ELEM_BAR;
optionTable_ = Tk_CreateOptionTable(graphPtr_->interp, barPenOptionSpecs);
- ops_ = ops;
+ ops_ = options;
manageOptions_ =0;
fillGC_ =NULL;
diff --git a/src/bltGrPenBar.h b/src/bltGrPenBar.h
index 5e20142..743c687 100644
--- a/src/bltGrPenBar.h
+++ b/src/bltGrPenBar.h
@@ -65,6 +65,7 @@ class BarPen : public Pen {
virtual ~BarPen();
int configure();
+ const char* className() {return "BarElement";}
};
#endif
diff --git a/src/bltGrPenLine.C b/src/bltGrPenLine.C
index 2f5689c..1e4ca1d 100644
--- a/src/bltGrPenLine.C
+++ b/src/bltGrPenLine.C
@@ -213,14 +213,6 @@ static Tk_OptionSpec linePenOptionSpecs[] = {
{TK_OPTION_END, NULL, NULL, NULL, NULL, -1, 0, 0, NULL, 0}
};
-LinePen::LinePen() : Pen()
-{
- classId_ = CID_ELEM_LINE;
-
- traceGC_ =NULL;
- errorBarGC_ =NULL;
-}
-
LinePen::LinePen(Graph* graphPtr, const char* name, Tcl_HashEntry* hPtr)
: Pen(graphPtr, name, hPtr)
{
@@ -239,12 +231,12 @@ LinePen::LinePen(Graph* graphPtr, const char* name, Tcl_HashEntry* hPtr)
ops->symbol.type = SYMBOL_NONE;
}
-LinePen::LinePen(Graph* graphPtr, const char* penName, void* ops)
- : Pen(graphPtr, name, NULL);
+LinePen::LinePen(Graph* graphPtr, const char* name, void* options)
+ : Pen(graphPtr, name, NULL)
{
classId_ = CID_ELEM_LINE;
optionTable_ = Tk_CreateOptionTable(graphPtr_->interp, linePenOptionSpecs);
- ops_ = ops;
+ ops_ = options;
manageOptions_ =0;
traceGC_ =NULL;
diff --git a/src/bltGrPenLine.h b/src/bltGrPenLine.h
index 1dbf2a5..cc942f6 100644
--- a/src/bltGrPenLine.h
+++ b/src/bltGrPenLine.h
@@ -84,6 +84,7 @@ class LinePen : public Pen {
virtual ~LinePen();
int configure();
+ const char* className() {return "LineElement";}
};
extern Tk_ObjCustomOption symbolObjOption;
diff --git a/src/bltGrPenOp.C b/src/bltGrPenOp.C
index cc13a13..759ed94 100644
--- a/src/bltGrPenOp.C
+++ b/src/bltGrPenOp.C
@@ -321,8 +321,7 @@ int Blt_GetPenFromObj(Tcl_Interp* interp, Graph* graphPtr, Tcl_Obj *objPtr,
if (penPtr->classId() != classId) {
Tcl_AppendResult(interp, "pen \"", name,
- "\" is the wrong type (is \"",
- Blt_GraphClassName(penPtr->classId()),
+ "\" is the wrong type (is \"", penPtr->className(),
"\"", ", wanted \"",
Blt_GraphClassName(classId), "\")", (char *)NULL);
return TCL_ERROR;
diff --git a/src/bltGraph.C b/src/bltGraph.C
index d395476..4e4e79d 100644
--- a/src/bltGraph.C
+++ b/src/bltGraph.C
@@ -959,6 +959,17 @@ void Blt_GraphTags(Blt_BindTable table, ClientData object, ClientData context,
case CID_ELEM_BAR:
case CID_ELEM_LINE:
{
+ Element* elemPtr = (Element*)object;
+ ElementOptions* ops = (ElementOptions*)elemPtr->ops();
+ MakeTagProc* tagProc = Blt_MakeElementTag;
+ Blt_List_Append(list, (const char*)(*tagProc)(graphPtr, elemPtr->name()), 0);
+ Blt_List_Append(list, (const char*)(*tagProc)(graphPtr, elemPtr->className()), 0);
+ if (ops->tags)
+ for (const char** p = ops->tags; *p != NULL; p++)
+ Blt_List_Append(list, (const char*)(*tagProc)(graphPtr, *p), 0);
+
+
+ /*
GraphObj* graphObjPtr = (GraphObj*)object;
MakeTagProc* tagProc = Blt_MakeElementTag;
Blt_List_Append(list, (const char*)(*tagProc)(graphPtr, graphObjPtr->name), 0);
@@ -966,6 +977,7 @@ void Blt_GraphTags(Blt_BindTable table, ClientData object, ClientData context,
if (graphObjPtr->tags)
for (const char** p = graphObjPtr->tags; *p != NULL; p++)
Blt_List_Append(list, (const char*)(*tagProc)(graphPtr, *p), 0);
+ */
}
break;
case CID_AXIS_X:
@@ -1050,14 +1062,14 @@ static ClientData PickEntry(ClientData clientData, int x, int y,
for (link = Blt_Chain_LastLink(graphPtr->elements.displayList);
link != NULL; link = Blt_Chain_PrevLink(link)) {
elemPtr = (Element*)Blt_Chain_GetValue(link);
- if (elemPtr->hide || (elemPtr->flags & MAP_ITEM))
+ if (elemPtr->hide_ || (elemPtr->flags & MAP_ITEM))
continue;
- (*elemPtr->procsPtr->closestProc) (graphPtr, elemPtr);
+ elemPtr->closest();
}
// Found an element within the minimum halo distance.
if (searchPtr->dist <= (double)searchPtr->halo) {
- *contextPtr = (ClientData)elemPtr->obj.classId;
+ *contextPtr = (ClientData)elemPtr->classId();
return searchPtr->elemPtr;
}