diff options
author | joye <joye> | 2014-04-08 15:09:15 (GMT) |
---|---|---|
committer | joye <joye> | 2014-04-08 15:09:15 (GMT) |
commit | 1dfd54dc0f3a1551a7bf62059521ef575d8fa294 (patch) | |
tree | 1148be5a6f471b976dd54125290ed7a613bb160c /src | |
parent | f9415123449b0a82143ec42be1fba0ab3b3b78fa (diff) | |
download | blt-1dfd54dc0f3a1551a7bf62059521ef575d8fa294.zip blt-1dfd54dc0f3a1551a7bf62059521ef575d8fa294.tar.gz blt-1dfd54dc0f3a1551a7bf62059521ef575d8fa294.tar.bz2 |
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r-- | src/bltGrElem.C | 35 | ||||
-rw-r--r-- | src/bltGrElem.h | 25 | ||||
-rw-r--r-- | src/bltGrElemBar.C | 6 | ||||
-rw-r--r-- | src/bltGrElemBar.h | 7 | ||||
-rw-r--r-- | src/bltGrElemLine.C | 173 | ||||
-rw-r--r-- | src/bltGrElemLine.h | 5 | ||||
-rw-r--r-- | src/bltGrElemOp.C | 33 | ||||
-rw-r--r-- | src/bltGrElemOption.C | 6 | ||||
-rw-r--r-- | src/bltGrLegd.C | 92 | ||||
-rw-r--r-- | src/bltGrMarker.h | 4 | ||||
-rw-r--r-- | src/bltGrMarkerOp.C | 2 | ||||
-rw-r--r-- | src/bltGrPen.h | 1 | ||||
-rw-r--r-- | src/bltGrPenBar.C | 12 | ||||
-rw-r--r-- | src/bltGrPenBar.h | 1 | ||||
-rw-r--r-- | src/bltGrPenLine.C | 14 | ||||
-rw-r--r-- | src/bltGrPenLine.h | 1 | ||||
-rw-r--r-- | src/bltGrPenOp.C | 3 | ||||
-rw-r--r-- | src/bltGraph.C | 18 |
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; } |