diff options
author | joye <joye> | 2014-03-31 19:11:42 (GMT) |
---|---|---|
committer | joye <joye> | 2014-03-31 19:11:42 (GMT) |
commit | 8150f1b6d516c20ed7bef75513d08a32a0c79eb0 (patch) | |
tree | 0bb11e253ae99cb3ed78393bd9a35df95f4ee0a4 | |
parent | 009dc90739fa4380c5429231ef90d3c48947f12e (diff) | |
download | blt-8150f1b6d516c20ed7bef75513d08a32a0c79eb0.zip blt-8150f1b6d516c20ed7bef75513d08a32a0c79eb0.tar.gz blt-8150f1b6d516c20ed7bef75513d08a32a0c79eb0.tar.bz2 |
*** empty log message ***
-rw-r--r-- | src/bltGrElem.C | 89 | ||||
-rw-r--r-- | src/bltGrElem.h | 25 | ||||
-rw-r--r-- | src/bltGrElemOp.C | 82 | ||||
-rw-r--r-- | src/bltGrElemOp.h | 23 | ||||
-rw-r--r-- | src/bltGrMarkerOp.C | 5 |
5 files changed, 113 insertions, 111 deletions
diff --git a/src/bltGrElem.C b/src/bltGrElem.C index d798d38..82fc411 100644 --- a/src/bltGrElem.C +++ b/src/bltGrElem.C @@ -27,3 +27,92 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +extern "C" { +#include "bltInt.h" +#include "bltGraph.h" +#include "bltOp.h" +}; + +#include "bltGrElemOp.h" +#include "bltGrElem.h" + +PenStyle** Blt_StyleMap(Element* elemPtr) +{ + int i; + int nWeights; /* Number of weights to be examined. + * If there are more data points than + * weights, they will default to the + * normal pen. */ + Blt_ChainLink link; + double *w; /* Weight vector */ + int nPoints; + + nPoints = NUMBEROFPOINTS(elemPtr); + nWeights = MIN(elemPtr->w ? elemPtr->w->nValues : 0, nPoints); + w = elemPtr->w ? elemPtr->w->values : NULL; + link = Blt_Chain_FirstLink(elemPtr->stylePalette); + PenStyle *stylePtr = (PenStyle*)Blt_Chain_GetValue(link); + + /* + * Create a style mapping array (data point index to style), + * initialized to the default style. + */ + PenStyle **dataToStyle = (PenStyle**)malloc(nPoints * sizeof(PenStyle *)); + for (i = 0; i < nPoints; i++) + dataToStyle[i] = stylePtr; + + for (i = 0; i < nWeights; i++) { + for (link = Blt_Chain_LastLink(elemPtr->stylePalette); link != NULL; + link = Blt_Chain_PrevLink(link)) { + stylePtr = (PenStyle*)Blt_Chain_GetValue(link); + + if (stylePtr->weight.range > 0.0) { + double norm; + + norm = (w[i] - stylePtr->weight.min) / stylePtr->weight.range; + if (((norm - 1.0) <= DBL_EPSILON) && + (((1.0 - norm) - 1.0) <= DBL_EPSILON)) { + dataToStyle[i] = stylePtr; + break; /* Done: found range that matches. */ + } + } + } + } + return dataToStyle; +} + +void Blt_FreeStylePalette(Blt_Chain stylePalette) +{ + // Skip the first slot. It contains the built-in "normal" pen of the element + Blt_ChainLink link = Blt_Chain_FirstLink(stylePalette); + if (link) { + Blt_ChainLink next; + for (link = Blt_Chain_NextLink(link); link != NULL; link = next) { + next = Blt_Chain_NextLink(link); + PenStyle *stylePtr = (PenStyle*)Blt_Chain_GetValue(link); + Blt_FreePen(stylePtr->penPtr); + Blt_Chain_DeleteLink(stylePalette, link); + } + } +} + +double Blt_FindElemValuesMinimum(ElemValues* valuesPtr, double minLimit) +{ + double min = DBL_MAX; + if (!valuesPtr) + return min; + + for (int ii=0; ii<valuesPtr->nValues; ii++) { + double x = valuesPtr->values[ii]; + // What do you do about negative values when using log + // scale values seems like a grey area. Mirror. + if (x < 0.0) + x = -x; + if ((x > minLimit) && (min > x)) + min = x; + } + if (min == DBL_MAX) + min = minLimit; + + return min; +} diff --git a/src/bltGrElem.h b/src/bltGrElem.h index 05f0e73..5ceccc9 100644 --- a/src/bltGrElem.h +++ b/src/bltGrElem.h @@ -37,7 +37,24 @@ #include <iomanip> using namespace std; -struct _Element { +typedef struct _Element Element; + +typedef struct { + int type; + Element* elemPtr; + VectorDataSource vectorSource; + double *values; + int nValues; + int arraySize; + double min, max; +} ElemValues; + +typedef struct { + ElemValues* x; + ElemValues* y; +} ElemCoords; + +typedef struct _Element { GraphObj obj; unsigned int flags; int hide; @@ -64,6 +81,10 @@ struct _Element { double yRange; int state; Blt_ChainLink link; -}; +} Element; + +extern double Blt_FindElemValuesMinimum(ElemValues *vecPtr, double minLimit); +extern void Blt_FreeStylePalette (Blt_Chain stylePalette); +extern PenStyle** Blt_StyleMap (Element* elemPtr); #endif diff --git a/src/bltGrElemOp.C b/src/bltGrElemOp.C index bd1a262..8625fd8 100644 --- a/src/bltGrElemOp.C +++ b/src/bltGrElemOp.C @@ -1140,88 +1140,6 @@ static void FindRange(ElemValues* valuesPtr) valuesPtr->max = max; } -double Blt_FindElemValuesMinimum(ElemValues* valuesPtr, double minLimit) -{ - double min = DBL_MAX; - if (!valuesPtr) - return min; - - for (int ii=0; ii<valuesPtr->nValues; ii++) { - double x = valuesPtr->values[ii]; - // What do you do about negative values when using log - // scale values seems like a grey area. Mirror. - if (x < 0.0) - x = -x; - if ((x > minLimit) && (min > x)) - min = x; - } - if (min == DBL_MAX) - min = minLimit; - - return min; -} - -void Blt_FreeStylePalette(Blt_Chain stylePalette) -{ - // Skip the first slot. It contains the built-in "normal" pen of the element - Blt_ChainLink link = Blt_Chain_FirstLink(stylePalette); - if (link) { - Blt_ChainLink next; - for (link = Blt_Chain_NextLink(link); link != NULL; link = next) { - next = Blt_Chain_NextLink(link); - PenStyle *stylePtr = (PenStyle*)Blt_Chain_GetValue(link); - Blt_FreePen(stylePtr->penPtr); - Blt_Chain_DeleteLink(stylePalette, link); - } - } -} - -PenStyle** Blt_StyleMap(Element* elemPtr) -{ - int i; - int nWeights; /* Number of weights to be examined. - * If there are more data points than - * weights, they will default to the - * normal pen. */ - Blt_ChainLink link; - double *w; /* Weight vector */ - int nPoints; - - nPoints = NUMBEROFPOINTS(elemPtr); - nWeights = MIN(elemPtr->w ? elemPtr->w->nValues : 0, nPoints); - w = elemPtr->w ? elemPtr->w->values : NULL; - link = Blt_Chain_FirstLink(elemPtr->stylePalette); - PenStyle *stylePtr = (PenStyle*)Blt_Chain_GetValue(link); - - /* - * Create a style mapping array (data point index to style), - * initialized to the default style. - */ - PenStyle **dataToStyle = (PenStyle**)malloc(nPoints * sizeof(PenStyle *)); - for (i = 0; i < nPoints; i++) - dataToStyle[i] = stylePtr; - - for (i = 0; i < nWeights; i++) { - for (link = Blt_Chain_LastLink(elemPtr->stylePalette); link != NULL; - link = Blt_Chain_PrevLink(link)) { - stylePtr = (PenStyle*)Blt_Chain_GetValue(link); - - if (stylePtr->weight.range > 0.0) { - double norm; - - norm = (w[i] - stylePtr->weight.min) / stylePtr->weight.range; - if (((norm - 1.0) <= DBL_EPSILON) && - (((1.0 - norm) - 1.0) <= DBL_EPSILON)) { - dataToStyle[i] = stylePtr; - break; /* Done: found range that matches. */ - } - } - } - } - return dataToStyle; -} - - static int GetIndex(Tcl_Interp* interp, Element* elemPtr, Tcl_Obj *objPtr, int *indexPtr) { diff --git a/src/bltGrElemOp.h b/src/bltGrElemOp.h index 740b2b9..3e6ef3b 100644 --- a/src/bltGrElemOp.h +++ b/src/bltGrElemOp.h @@ -132,21 +132,6 @@ typedef struct { } VectorDataSource; typedef struct { - int type; - Element* elemPtr; - VectorDataSource vectorSource; - double *values; - int nValues; - int arraySize; - double min, max; -} ElemValues; - -typedef struct { - ElemValues* x; - ElemValues* y; -} ElemCoords; - -typedef struct { Weight weight; Pen* penPtr; } PenStyle; @@ -157,14 +142,6 @@ extern Tk_CustomOptionGetProc StyleGetProc; extern Tk_CustomOptionRestoreProc StyleRestoreProc; extern Tk_CustomOptionFreeProc StyleFreeProc; -extern double Blt_FindElemValuesMinimum(ElemValues *vecPtr, double minLimit); -extern void Blt_ResizeStatusArray(Element* elemPtr, int nPoints); -extern void Blt_FreeStylePalette (Blt_Chain stylePalette); -extern PenStyle** Blt_StyleMap (Element* elemPtr); -extern void Blt_MapErrorBars(Graph *graphPtr, Element* elemPtr, - PenStyle **dataToStyle); -extern void Blt_FreeDataValues(ElemValues *evPtr); extern int Blt_GetElement(Tcl_Interp* interp, Graph *graphPtr, Tcl_Obj *objPtr, Element **elemPtrPtr); - #endif diff --git a/src/bltGrMarkerOp.C b/src/bltGrMarkerOp.C index a8875d7..66a0dc3 100644 --- a/src/bltGrMarkerOp.C +++ b/src/bltGrMarkerOp.C @@ -27,16 +27,13 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#include "bltC.h" - extern "C" { #include "bltGraph.h" #include "bltOp.h" }; +#include "bltGrElem.h" #include "bltGrMarkerOp.h" -#include "bltConfig.h" -#include "bltGrElem.h" #include "bltGrMarker.h" #include "bltGrMarkerBitmap.h" #include "bltGrMarkerLine.h" |