summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorjoye <joye>2014-04-01 18:26:38 (GMT)
committerjoye <joye>2014-04-01 18:26:38 (GMT)
commite58952262da1371d725aaf2c2996edeec8cdb8c5 (patch)
treea5e1ceccbbf23a6496b8725de5bc93a0d6989873 /src
parent23f026d050cd74cb75e78358e9fdda76add15e0e (diff)
downloadblt-e58952262da1371d725aaf2c2996edeec8cdb8c5.zip
blt-e58952262da1371d725aaf2c2996edeec8cdb8c5.tar.gz
blt-e58952262da1371d725aaf2c2996edeec8cdb8c5.tar.bz2
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r--src/bltGrElem.h4
-rw-r--r--src/bltGrElemBar.C8
-rw-r--r--src/bltGrElemBar.h9
-rw-r--r--src/bltGrElemLine.C10
-rw-r--r--src/bltGrElemLine.h9
-rw-r--r--src/bltGrElemOp.C4
-rw-r--r--src/bltGrPen.h14
-rw-r--r--src/bltGrPenBar.C37
-rw-r--r--src/bltGrPenBar.h24
-rw-r--r--src/bltGrPenLine.C47
-rw-r--r--src/bltGrPenLine.h23
-rw-r--r--src/bltGrPenOp.C23
12 files changed, 143 insertions, 69 deletions
diff --git a/src/bltGrElem.h b/src/bltGrElem.h
index 9f3381e..07ac242 100644
--- a/src/bltGrElem.h
+++ b/src/bltGrElem.h
@@ -121,9 +121,8 @@ typedef struct {
} ElementProcs;
typedef struct {
- char** tags;
- int hide;
const char* label;
+ char** tags;
Axis2d axes;
ElemCoords coords;
ElemValues* w;
@@ -133,6 +132,7 @@ typedef struct {
ElemValues* xLow;
ElemValues* yHigh;
ElemValues* yLow;
+ int hide;
int legendRelief;
Blt_Chain stylePalette;
} ElemOptions;
diff --git a/src/bltGrElemBar.C b/src/bltGrElemBar.C
index 6b219ca..3b3a10a 100644
--- a/src/bltGrElemBar.C
+++ b/src/bltGrElemBar.C
@@ -210,9 +210,15 @@ static Tk_OptionSpec optionSpecs[] = {
Element* Blt_BarElement(Graph* graphPtr)
{
BarElement* elemPtr = (BarElement*)calloc(1, sizeof(BarElement));
+ elemPtr->ops = (BarElementOptions*)calloc(1, sizeof(BarElementOptions));
elemPtr->procsPtr = &barProcs;
+
elemPtr->builtinPenPtr = &elemPtr->builtinPen;
- InitBarPen(graphPtr, elemPtr->builtinPenPtr);
+ elemPtr->builtinPen.ops =
+ &(((BarElementOptions*)(elemPtr->ops))->builtinPenOps);
+ elemPtr->builtinPen.manageOptions =0;
+
+ InitBarPen(graphPtr, elemPtr->builtinPenPtr, "builtin");
Tk_InitOptions(graphPtr->interp, (char*)elemPtr->builtinPenPtr,
elemPtr->builtinPenPtr->optionTable, graphPtr->tkwin);
diff --git a/src/bltGrElemBar.h b/src/bltGrElemBar.h
index 0a1485f..621ffe5 100644
--- a/src/bltGrElemBar.h
+++ b/src/bltGrElemBar.h
@@ -39,9 +39,8 @@ using namespace std;
#include "bltGrPenBar.h"
typedef struct {
- char** tags;
- int hide;
const char *label;
+ char** tags;
Axis2d axes;
ElemCoords coords;
ElemValues* w;
@@ -51,16 +50,18 @@ typedef struct {
ElemValues* xLow;
ElemValues* yHigh;
ElemValues* yLow;
+ int hide;
int legendRelief;
Blt_Chain stylePalette;
- BarPen builtinPen;
+ // derived
+ BarPenOptions builtinPenOps;
BarPen *activePenPtr;
BarPen *normalPenPtr;
double barWidth;
const char *groupName;
-} ElemBarOptions;
+} BarElementOptions;
typedef struct {
GraphObj obj;
diff --git a/src/bltGrElemLine.C b/src/bltGrElemLine.C
index 15f3cf0..b894fd6 100644
--- a/src/bltGrElemLine.C
+++ b/src/bltGrElemLine.C
@@ -285,15 +285,21 @@ static Tk_OptionSpec optionSpecs[] = {
Element* Blt_LineElement(Graph* graphPtr)
{
LineElement* elemPtr = (LineElement*)calloc(1, sizeof(LineElement));
+ elemPtr->ops = (LineElementOptions*)calloc(1, sizeof(LineElementOptions));
elemPtr->procsPtr = &lineProcs;
- elemPtr->flags = SCALE_SYMBOL;
+
elemPtr->builtinPenPtr = &elemPtr->builtinPen;
- InitLinePen(graphPtr, elemPtr->builtinPenPtr);
+ elemPtr->builtinPen.ops =
+ &(((LineElementOptions*)(elemPtr->ops))->builtinPenOps);
+ elemPtr->builtinPen.manageOptions =0;
+
+ InitLinePen(graphPtr, elemPtr->builtinPenPtr, "builtin");
Tk_InitOptions(graphPtr->interp, (char*)elemPtr->builtinPenPtr,
elemPtr->builtinPenPtr->optionTable, graphPtr->tkwin);
elemPtr->optionTable = Tk_CreateOptionTable(graphPtr->interp, optionSpecs);
+ elemPtr->flags = SCALE_SYMBOL;
return (Element*)elemPtr;
}
diff --git a/src/bltGrElemLine.h b/src/bltGrElemLine.h
index 60b8c6b..8d6f01c 100644
--- a/src/bltGrElemLine.h
+++ b/src/bltGrElemLine.h
@@ -45,9 +45,8 @@ typedef struct {
} GraphPoints;
typedef struct {
- char** tags;
- int hide;
const char* label;
+ char** tags;
Axis2d axes;
ElemCoords coords;
ElemValues* w;
@@ -57,10 +56,12 @@ typedef struct {
ElemValues* xLow;
ElemValues* yHigh;
ElemValues* yLow;
+ int hide;
int legendRelief;
Blt_Chain stylePalette;
- LinePen builtinPen;
+ // derived
+ LinePenOptions builtinPenOps;
LinePen *activePenPtr;
LinePen *normalPenPtr;
@@ -72,7 +73,7 @@ typedef struct {
Smoothing reqSmooth;
int state;
int penDir;
-} ElemLineOptions;
+} LineElementOptions;
typedef struct {
GraphObj obj;
diff --git a/src/bltGrElemOp.C b/src/bltGrElemOp.C
index 838c811..d480542 100644
--- a/src/bltGrElemOp.C
+++ b/src/bltGrElemOp.C
@@ -132,6 +132,10 @@ static void DestroyElement(Element* elemPtr)
Tk_FreeConfigOptions((char*)elemPtr, elemPtr->optionTable, graphPtr->tkwin);
(*elemPtr->procsPtr->destroyProc) (graphPtr, elemPtr);
+
+ if (elemPtr->ops)
+ free(elemPtr->ops);
+
free(elemPtr);
}
diff --git a/src/bltGrPen.h b/src/bltGrPen.h
index 4e5fa47..06d6c2d 100644
--- a/src/bltGrPen.h
+++ b/src/bltGrPen.h
@@ -45,10 +45,20 @@ typedef Pen* (PenCreateProc)(void);
typedef int (PenConfigureProc)(Graph* graphPtr, Pen* penPtr);
typedef void (PenDestroyProc)(Graph* graphPtr, Pen* penPtr);
+typedef struct {
+ int errorBarShow;
+ int errorBarLineWidth;
+ int errorBarCapWidth;
+ XColor* errorBarColor;
+
+ int valueShow;
+ const char* valueFormat;
+ TextStyle valueStyle;
+} PenOptions;
+
typedef struct _Pen {
const char *name;
ClassId classId;
- const char *typeId;
unsigned int flags;
int refCount;
Tcl_HashEntry *hashPtr;
@@ -56,6 +66,8 @@ typedef struct _Pen {
PenConfigureProc *configProc;
PenDestroyProc *destroyProc;
Graph* graphPtr;
+ void* ops;
+ int manageOptions;
} Pen;
#endif
diff --git a/src/bltGrPenBar.C b/src/bltGrPenBar.C
index ed5beb1..ca56d29 100644
--- a/src/bltGrPenBar.C
+++ b/src/bltGrPenBar.C
@@ -57,8 +57,6 @@ static Tk_OptionSpec barPenOptionSpecs[] = {
"none", -1, Tk_Offset(BarPen, valueShow), 0, &fillObjOption, 0},
{TK_OPTION_BITMAP, "-stipple", "stipple", "Stipple",
NULL, -1, Tk_Offset(BarPen, stipple), TK_OPTION_NULL_OK, NULL, 0},
- {TK_OPTION_STRING, "-type", "type", "Type",
- "bar", -1, Tk_Offset(BarPen, typeId), TK_OPTION_NULL_OK, NULL, 0},
{TK_OPTION_ANCHOR, "-valueanchor", "valueAnchor", "ValueAnchor",
"s", -1, Tk_Offset(BarPen, valueStyle.anchor), 0, NULL, 0},
{TK_OPTION_COLOR, "-valuecolor", "valueColor", "ValueColor",
@@ -72,6 +70,30 @@ static Tk_OptionSpec barPenOptionSpecs[] = {
{TK_OPTION_END, NULL, NULL, NULL, NULL, -1, 0, 0, NULL, 0}
};
+Pen* CreateBarPen(Graph* graphPtr, const char *penName)
+{
+ BarPen* penPtr = (BarPen*)calloc(1, sizeof(BarPen));
+ penPtr->ops = (BarPenOptions*)calloc(1, sizeof(BarPenOptions));
+ penPtr->manageOptions =1;
+
+ InitBarPen(graphPtr, penPtr, penName);
+ return (Pen*)penPtr;
+}
+
+void InitBarPen(Graph* graphPtr, BarPen* penPtr, const char* penName)
+{
+ penPtr->configProc = ConfigureBarPenProc;
+ penPtr->destroyProc = DestroyBarPenProc;
+
+ penPtr->classId = CID_ELEM_BAR;
+ penPtr->name = Blt_Strdup(penName);
+
+ Blt_Ts_InitStyle(penPtr->valueStyle);
+
+ penPtr->optionTable =
+ Tk_CreateOptionTable(graphPtr->interp, barPenOptionSpecs);
+}
+
int ConfigureBarPenProc(Graph* graphPtr, Pen *basePtr)
{
BarPen* penPtr = (BarPen*)basePtr;
@@ -128,17 +150,6 @@ int ConfigureBarPenProc(Graph* graphPtr, Pen *basePtr)
return TCL_OK;
}
-void InitBarPen(Graph* graphPtr, BarPen* penPtr)
-{
- penPtr->configProc = ConfigureBarPenProc;
- penPtr->destroyProc = DestroyBarPenProc;
-
- Blt_Ts_InitStyle(penPtr->valueStyle);
-
- penPtr->optionTable =
- Tk_CreateOptionTable(graphPtr->interp, barPenOptionSpecs);
-}
-
void DestroyBarPenProc(Graph* graphPtr, Pen* basePtr)
{
BarPen* penPtr = (BarPen*)basePtr;
diff --git a/src/bltGrPenBar.h b/src/bltGrPenBar.h
index 61ac71e..41cbc84 100644
--- a/src/bltGrPenBar.h
+++ b/src/bltGrPenBar.h
@@ -38,9 +38,26 @@ using namespace std;
#include "bltGrPen.h"
typedef struct {
+ int errorBarShow;
+ int errorBarLineWidth;
+ int errorBarCapWidth;
+ XColor* errorBarColor;
+
+ int valueShow;
+ const char *valueFormat;
+ TextStyle valueStyle;
+
+ XColor* outlineColor;
+ Tk_3DBorder fill;
+ int borderWidth;
+ int relief;
+ Pixmap stipple;
+
+} BarPenOptions;
+
+typedef struct {
const char *name;
ClassId classId;
- const char *typeId;
unsigned int flags;
int refCount;
Tcl_HashEntry *hashPtr;
@@ -48,6 +65,8 @@ typedef struct {
PenConfigureProc *configProc;
PenDestroyProc *destroyProc;
Graph* graphPtr;
+ void* ops;
+ int manageOptions;
// Barchart specific pen fields start here
XColor* outlineColor;
@@ -71,7 +90,8 @@ typedef struct {
TextStyle valueStyle;
} BarPen;
-extern void InitBarPen(Graph* graphPtr, BarPen* penPtr);
+extern Pen* CreateBarPen(Graph* graphPtr, const char *penName);
+extern void InitBarPen(Graph* graphPtr, BarPen* penPtr, const char* penName);
extern int ConfigureBarPenProc(Graph* graphPtr, Pen *basePtr);
extern void DestroyBarPenProc(Graph* graphPtr, Pen* basePtr);
diff --git a/src/bltGrPenLine.C b/src/bltGrPenLine.C
index e070f5a..900cfd6 100644
--- a/src/bltGrPenLine.C
+++ b/src/bltGrPenLine.C
@@ -180,8 +180,6 @@ static Tk_OptionSpec linePenOptionSpecs[] = {
"none", -1, Tk_Offset(LinePen, valueShow), 0, &fillObjOption, 0},
{TK_OPTION_CUSTOM, "-symbol", "symbol", "Symbol",
"none", -1, Tk_Offset(LinePen, symbol), 0, &symbolObjOption, 0},
- {TK_OPTION_STRING, "-type", "type", "Type",
- "line", -1, Tk_Offset(Pen, typeId), 0, NULL, 0},
{TK_OPTION_ANCHOR, "-valueanchor", "valueAnchor", "ValueAnchor",
"s", -1, Tk_Offset(LinePen, valueStyle.anchor), 0, NULL, 0},
{TK_OPTION_COLOR, "-valuecolor", "valueColor", "ValueColor",
@@ -195,6 +193,33 @@ static Tk_OptionSpec linePenOptionSpecs[] = {
{TK_OPTION_END, NULL, NULL, NULL, NULL, -1, 0, 0, NULL, 0}
};
+Pen* CreateLinePen(Graph* graphPtr, const char* penName)
+{
+ LinePen* penPtr = (LinePen*)calloc(1, sizeof(LinePen));
+ penPtr->ops = (LinePenOptions*)calloc(1, sizeof(LinePenOptions));
+ penPtr->manageOptions =1;
+
+ InitLinePen(graphPtr, penPtr, penName);
+ return (Pen*)penPtr;
+}
+
+void InitLinePen(Graph* graphPtr, LinePen* penPtr, const char* penName)
+{
+ penPtr->configProc = ConfigureLinePenProc;
+ penPtr->destroyProc = DestroyLinePenProc;
+
+ penPtr->classId = CID_ELEM_LINE;
+ penPtr->name = Blt_Strdup(penName);
+
+ Blt_Ts_InitStyle(penPtr->valueStyle);
+ penPtr->symbol.bitmap = None;
+ penPtr->symbol.mask = None;
+ penPtr->symbol.type = SYMBOL_NONE;
+
+ penPtr->optionTable =
+ Tk_CreateOptionTable(graphPtr->interp, linePenOptionSpecs);
+}
+
int ConfigureLinePenProc(Graph* graphPtr, Pen* basePtr)
{
LinePen* lpPtr = (LinePen*)basePtr;
@@ -291,20 +316,6 @@ int ConfigureLinePenProc(Graph* graphPtr, Pen* basePtr)
return TCL_OK;
}
-void InitLinePen(Graph* graphPtr, LinePen* penPtr)
-{
- penPtr->configProc = ConfigureLinePenProc;
- penPtr->destroyProc = DestroyLinePenProc;
-
- Blt_Ts_InitStyle(penPtr->valueStyle);
- penPtr->symbol.bitmap = None;
- penPtr->symbol.mask = None;
- penPtr->symbol.type = SYMBOL_NONE;
-
- penPtr->optionTable =
- Tk_CreateOptionTable(graphPtr->interp, linePenOptionSpecs);
-}
-
void DestroyLinePenProc(Graph* graphPtr, Pen* basePtr)
{
LinePen* penPtr = (LinePen*)basePtr;
@@ -332,6 +343,10 @@ void DestroyLinePenProc(Graph* graphPtr, Pen* basePtr)
}
Tk_FreeConfigOptions((char*)penPtr, penPtr->optionTable, graphPtr->tkwin);
+
+ if (penPtr->manageOptions)
+ if (penPtr->ops)
+ free(penPtr->ops);
}
static void DestroySymbol(Display *display, Symbol *symbolPtr)
diff --git a/src/bltGrPenLine.h b/src/bltGrPenLine.h
index e8eb073..be5cddb 100644
--- a/src/bltGrPenLine.h
+++ b/src/bltGrPenLine.h
@@ -58,9 +58,25 @@ typedef struct {
} Symbol;
typedef struct {
+ int errorBarShow;
+ int errorBarLineWidth;
+ int errorBarCapWidth;
+ XColor* errorBarColor;
+
+ int valueShow;
+ const char* valueFormat;
+ TextStyle valueStyle;
+
+ Symbol symbol;
+ int traceWidth;
+ Blt_Dashes traceDashes;
+ XColor* traceColor;
+ XColor* traceOffColor;
+} LinePenOptions;
+
+typedef struct {
const char* name;
ClassId classId;
- const char* typeId;
unsigned int flags;
int refCount;
Tcl_HashEntry *hashPtr;
@@ -68,6 +84,8 @@ typedef struct {
PenConfigureProc *configProc;
PenDestroyProc *destroyProc;
Graph* graphPtr;
+ void* ops;
+ int manageOptions;
// Symbol attributes
Symbol symbol;
@@ -94,7 +112,8 @@ typedef struct {
extern Tk_ObjCustomOption symbolObjOption;
-extern void InitLinePen(Graph* graphPtr, LinePen* penPtr);
+extern Pen* CreateLinePen(Graph* graphPtr, const char* penName);
+extern void InitLinePen(Graph* graphPtr, LinePen* penPtr, const char* penName);
extern int ConfigureLinePenProc(Graph* graphPtr, Pen *basePtr);
extern void DestroyLinePenProc(Graph* graphPtr, Pen* basePtr);
diff --git a/src/bltGrPenOp.C b/src/bltGrPenOp.C
index 0527923..e52eadd 100644
--- a/src/bltGrPenOp.C
+++ b/src/bltGrPenOp.C
@@ -39,8 +39,6 @@ extern "C" {
// Defs
-static Pen* CreateBarPen(Graph* graphPtr, const char *penName);
-static Pen* CreateLinePen(Graph* graphPtr, const char* penName);
static void DestroyPen(Pen* penPtr);
static int GetPenFromObj(Tcl_Interp* interp, Graph* graphPtr, Tcl_Obj *objPtr,
Pen **penPtrPtr);
@@ -80,7 +78,6 @@ int Blt_CreatePen(Graph* graphPtr, Tcl_Interp* interp,
return TCL_ERROR;
penPtr->graphPtr = graphPtr;
- penPtr->classId = classId;
penPtr->hashPtr = hPtr;
Tcl_SetHashValue(hPtr, penPtr);
@@ -99,7 +96,7 @@ static void DestroyPen(Pen* penPtr)
{
Graph* graphPtr = penPtr->graphPtr;
- (*penPtr->destroyProc) (graphPtr, penPtr);
+ (*penPtr->destroyProc)(graphPtr, penPtr);
if (penPtr->name)
free((void*)(penPtr->name));
@@ -380,22 +377,4 @@ static int GetPenFromObj(Tcl_Interp* interp, Graph* graphPtr, Tcl_Obj *objPtr,
return TCL_OK;
}
-static Pen* CreateBarPen(Graph* graphPtr, const char *penName)
-{
- BarPen* penPtr = (BarPen*)calloc(1, sizeof(BarPen));
- InitBarPen(graphPtr, penPtr);
- penPtr->name = Blt_Strdup(penName);
-
- return (Pen*)penPtr;
-}
-
-static Pen* CreateLinePen(Graph* graphPtr, const char* penName)
-{
- LinePen* penPtr = (LinePen*)calloc(1, sizeof(LinePen));
- InitLinePen(graphPtr, penPtr);
- penPtr->name = Blt_Strdup(penName);
- penPtr->classId = CID_ELEM_LINE;
-
- return (Pen*)penPtr;
-}