summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorjoye <joye>2014-02-06 18:02:34 (GMT)
committerjoye <joye>2014-02-06 18:02:34 (GMT)
commit0781e4fad7bfbd5ae456b4cdeb256f4e75fa04a3 (patch)
tree58ab2032fcda3fae36341efd18878eaa7f253f94 /src
parent8528751fc74cdde52ae670bcc3faec6fc0d37687 (diff)
downloadblt-0781e4fad7bfbd5ae456b4cdeb256f4e75fa04a3.zip
blt-0781e4fad7bfbd5ae456b4cdeb256f4e75fa04a3.tar.gz
blt-0781e4fad7bfbd5ae456b4cdeb256f4e75fa04a3.tar.bz2
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r--src/bltConfig.C42
-rw-r--r--src/bltConfig.h2
-rw-r--r--src/bltGrAxis.C125
-rw-r--r--src/bltGraph.C55
4 files changed, 173 insertions, 51 deletions
diff --git a/src/bltConfig.C b/src/bltConfig.C
index f031086..d855330 100644
--- a/src/bltConfig.C
+++ b/src/bltConfig.C
@@ -84,6 +84,48 @@
#include "bltInt.h"
#include "bltBgStyle.h"
+// Background
+
+static Tk_CustomOptionSetProc BackgroundSetProc;
+static Tk_CustomOptionGetProc BackgroundGetProc;
+Tk_ObjCustomOption backgroundObjOption =
+ {
+ "background", BackgroundSetProc, BackgroundGetProc, NULL, NULL, NULL
+ };
+
+
+static int BackgroundSetProc(ClientData clientData, Tcl_Interp *interp,
+ Tk_Window tkwin, Tcl_Obj** objPtr, char* widgRec,
+ int offset, char* save, int flags)
+{
+ Blt_Background* backgroundPtr = (Blt_Background*)(widgRec + offset);
+
+ if (*backgroundPtr)
+ Blt_FreeBackground(*backgroundPtr);
+ *backgroundPtr = NULL;
+
+ int length;
+ const char* string = Tcl_GetStringFromObj(*objPtr, &length);
+ if (string)
+ *backgroundPtr = Blt_GetBackground(interp, tkwin, string);
+ else
+ return TCL_ERROR;
+
+ return TCL_OK;
+}
+
+static Tcl_Obj* BackgroundGetProc(ClientData clientData, Tk_Window tkwin,
+ char *widgRec, int offset)
+{
+ Blt_Background* backgroundPtr = (Blt_Background*)(widgRec + offset);
+ if (*backgroundPtr) {
+ const char* string = Blt_NameOfBackground(*backgroundPtr);
+ return Tcl_NewStringObj(string, -1);
+ }
+ else
+ return Tcl_NewStringObj("", -1);
+}
+
/* STATE */
static Blt_OptionParseProc ObjToStateProc;
diff --git a/src/bltConfig.h b/src/bltConfig.h
index 1c6f47e..c379706 100644
--- a/src/bltConfig.h
+++ b/src/bltConfig.h
@@ -173,6 +173,8 @@ typedef struct {
#define LineIsDashed(d) ((d).values[0] != 0)
+extern Tk_ObjCustomOption backgroundObjOption;
+
extern Blt_CustomOption stateOption;
extern Blt_CustomOption dashesOption;
extern Blt_CustomOption fillOption;
diff --git a/src/bltGrAxis.C b/src/bltGrAxis.C
index 41a23b2..2ba28e5 100644
--- a/src/bltGrAxis.C
+++ b/src/bltGrAxis.C
@@ -163,6 +163,7 @@ static Blt_CustomOption useOption = {
#define DEF_AXIS_GRIDMINOR_COLOR gray64
#define DEF_AXIS_HIDE "0"
#define DEF_AXIS_JUSTIFY "c"
+#define DEF_AXIS_LABEL_OFFSET "no"
#define DEF_AXIS_LIMITS_FORMAT (char *)NULL
#define DEF_AXIS_LINEWIDTH "1"
#define DEF_AXIS_LOGSCALE "0"
@@ -179,16 +180,132 @@ static Blt_CustomOption useOption = {
#define DEF_AXIS_EXTERIOR "1"
#define DEF_AXIS_TICK_ANCHOR "c"
#define DEF_AXIS_LIMITS_FONT STD_FONT_NUMBERS
-#define DEF_AXIS_TICKFONT_GRAPH STD_FONT_NUMBERS
-#define DEF_AXIS_TICKFONT_BARCHART STD_FONT_SMALL
+#define DEF_AXIS_TICKFONT STD_FONT_NUMBERS
#define DEF_AXIS_TICKLENGTH "4"
#define DEF_AXIS_DIVISIONS "10"
+#define DEF_AXIS_TITLE NULL
#define DEF_AXIS_TITLE_ALTERNATE "0"
#define DEF_AXIS_TITLE_FG black
#define DEF_AXIS_TITLE_FONT STD_FONT_NORMAL
#define DEF_AXIS_X_STEP_BARCHART "1.0"
#define DEF_AXIS_X_SUBDIVISIONS_BARCHART "0"
+static Tk_OptionSpec optionSpecs[] = {
+ {TK_OPTION_CUSTOM, "-activebackground", "activeBackground",
+ "ActiveBackground",
+ DEF_AXIS_ACTIVEBACKGROUND,
+ -1, Tk_Offset(Axis, activeBg), TK_OPTION_NULL_OK, &backgroundObjOption, 0},
+ {TK_OPTION_COLOR, "-activeforeground", "activeForeground",
+ "ActiveForeground",
+ DEF_AXIS_ACTIVEFOREGROUND,
+ -1, Tk_Offset(Axis, activeFgColor), 0, NULL, 0},
+ {TK_OPTION_RELIEF, "-activerelief", "activeRelief", "Relief",
+ DEF_AXIS_ACTIVERELIEF,
+ -1, Tk_Offset(Axis, activeRelief), 0, NULL, 0},
+ {TK_OPTION_DOUBLE, "-autorange", "autoRange", "AutoRange",
+ DEF_AXIS_RANGE,
+ -1, Tk_Offset(Axis, windowSize), 0, NULL, 0},
+ {TK_OPTION_CUSTOM, "-background", "background", "Background",
+ DEF_AXIS_BACKGROUND,
+ -1, Tk_Offset(Axis, normalBg), TK_OPTION_NULL_OK, &backgroundObjOption, 0},
+ {TK_OPTION_SYNONYM, "-bg", NULL, NULL, NULL,
+ -1, 0, 0, "-background", 0},
+ {TK_OPTION_SYNONYM, "-bd", NULL, NULL, NULL,
+ -1, 0, 0, "-borderWidth", 0},
+ {TK_OPTION_PIXELS, "-borderwidth", "borderWidth", "BorderWidth",
+ DEF_AXIS_BORDERWIDTH,
+ -1, Tk_Offset(Axis, borderWidth), 0, NULL, 0},
+ {TK_OPTION_COLOR, "-color", "color", "Color",
+ DEF_AXIS_FOREGROUND,
+ -1, Tk_Offset(Axis, tickColor), 0, NULL, 0},
+ {TK_OPTION_STRING, "-command", "command", "Command",
+ DEF_AXIS_COMMAND,
+ -1, Tk_Offset(Axis, formatCmd), TK_OPTION_NULL_OK, NULL, 0},
+ {TK_OPTION_BOOLEAN, "-descending", "descending", "Descending",
+ DEF_AXIS_DESCENDING,
+ -1, Tk_Offset(Axis, descending), 0, NULL, 0},
+ {TK_OPTION_SYNONYM, "-fg", NULL, NULL, NULL,
+ -1, 0, 0, "-color", 0},
+ {TK_OPTION_SYNONYM, "-foreground", NULL, NULL, NULL,
+ -1, 0, 0, "-color", 0},
+ {TK_OPTION_COLOR, "-gridcolor", "gridColor", "GridColor",
+ DEF_AXIS_GRIDCOLOR,
+ -1, Tk_Offset(Axis, major.color), 0, NULL, 0},
+ {TK_OPTION_PIXELS, "-gridlinewidth", "gridLineWidth", "GridLineWidth",
+ DEF_AXIS_GRIDLINEWIDTH,
+ -1, Tk_Offset(Axis, major.lineWidth), 0, NULL, 0},
+ {TK_OPTION_COLOR, "-gridminorcolor", "gridMinorColor", "GridColor",
+ DEF_AXIS_GRIDMINOR_COLOR,
+ -1, Tk_Offset(Axis, minor.color), 0, NULL, 0},
+ {TK_OPTION_PIXELS, "-gridminorlinewidth", "gridMinorLineWidth",
+ "GridLineWidth",
+ DEF_AXIS_GRIDLINEWIDTH,
+ -1, Tk_Offset(Axis, minor.lineWidth), 0, NULL, 0},
+ {TK_OPTION_JUSTIFY, "-justify", "justify", "Justify",
+ DEF_AXIS_JUSTIFY,
+ -1, Tk_Offset(Axis, titleJustify), 0, NULL, 0},
+ {TK_OPTION_BOOLEAN, "-labeloffset", "labelOffset", "LabelOffset",
+ DEF_AXIS_LABEL_OFFSET,
+ -1, Tk_Offset(Axis, labelOffset), 0, NULL, 0},
+ {TK_OPTION_COLOR, "-limitscolor", "limitsColor", "Color",
+ DEF_AXIS_FOREGROUND,
+ -1, Tk_Offset(Axis, limitsTextStyle.color), 0, NULL, 0},
+ {TK_OPTION_FONT, "-limitsfont", "limitsFont", "Font",
+ DEF_AXIS_LIMITS_FONT,
+ -1, Tk_Offset(Axis, limitsTextStyle.font), 0, NULL, 0},
+ {TK_OPTION_PIXELS, "-linewidth", "lineWidth", "LineWidth",
+ DEF_AXIS_LINEWIDTH,
+ -1, Tk_Offset(Axis, lineWidth), 0, NULL, 0},
+ {TK_OPTION_BOOLEAN, "-logscale", "logScale", "LogScale",
+ DEF_AXIS_LOGSCALE,
+ -1, Tk_Offset(Axis, logScale), 0, NULL, 0},
+ {TK_OPTION_RELIEF, "-relief", "relief", "Relief",
+ DEF_AXIS_RELIEF,
+ -1, Tk_Offset(Axis, relief), 0, NULL, 0},
+ {TK_OPTION_DOUBLE, "-rotate", "rotate", "Rotate",
+ DEF_AXIS_ANGLE,
+ -1, Tk_Offset(Axis, tickAngle), 0, NULL, 0},
+ {TK_OPTION_PIXELS, "-scrollincrement", "scrollIncrement", "ScrollIncrement",
+ DEF_AXIS_SCROLL_INCREMENT,
+ -1, Tk_Offset(Axis, scrollUnits), 0, NULL, 0},
+ {TK_OPTION_DOUBLE, "-shiftby", "shiftBy", "ShiftBy",
+ DEF_AXIS_SHIFTBY,
+ -1, Tk_Offset(Axis, shiftBy), 0, NULL, 0},
+ {TK_OPTION_DOUBLE, "-stepsize", "stepSize", "StepSize",
+ DEF_AXIS_STEP,
+ -1, Tk_Offset(Axis, reqStep), 0, NULL, 0},
+ {TK_OPTION_INT, "-subdivisions", "subdivisions", "Subdivisions",
+ DEF_AXIS_SUBDIVISIONS,
+ -1, Tk_Offset(Axis, reqNumMinorTicks), 0, NULL, 0},
+ {TK_OPTION_ANCHOR, "-tickanchor", "tickAnchor", "Anchor",
+ DEF_AXIS_TICK_ANCHOR,
+ -1, Tk_Offset(Axis, reqTickAnchor), 0, NULL, 0},
+ {TK_OPTION_FONT, "-tickfont", "tickFont", "Font",
+ DEF_AXIS_TICKFONT,
+ -1, Tk_Offset(Axis, tickFont), 0, NULL, 0},
+ {TK_OPTION_PIXELS, "-ticklength", "tickLength", "TickLength",
+ DEF_AXIS_TICKLENGTH,
+ -1, Tk_Offset(Axis, tickLength), 0, NULL, 0},
+ {TK_OPTION_INT, "-tickdefault", "tickDefault", "TickDefault",
+ DEF_AXIS_DIVISIONS,
+ -1, Tk_Offset(Axis, reqNumMajorTicks), 0, NULL, 0},
+ {TK_OPTION_STRING, "-title", "title", "Title",
+ DEF_AXIS_TITLE,
+ -1, Tk_Offset(Axis, title), TK_OPTION_NULL_OK, NULL, 0},
+ {TK_OPTION_BOOLEAN, "-titlealternate", "titleAlternate", "TitleAlternate",
+ DEF_AXIS_TITLE_ALTERNATE,
+ -1, Tk_Offset(Axis, titleAlternate), 0, NULL, 0},
+ {TK_OPTION_COLOR, "-titlecolor", "titleColor", "Color",
+ DEF_AXIS_FOREGROUND,
+ -1, Tk_Offset(Axis, titleColor), 0, NULL, 0},
+ {TK_OPTION_FONT, "-titlefont", "titleFont", "Font",
+ DEF_AXIS_TITLE_FONT,
+ -1, Tk_Offset(Axis, titleFont), 0, NULL, 0},
+ {TK_OPTION_END, NULL, NULL, NULL, NULL, -1, 0, 0, NULL, 0}
+};
+
+// ***
+
Blt_CustomOption bitmaskGrAxisCheckLimitsOption =
{
ObjToBitmaskProc, BitmaskToObjProc, NULL, (ClientData)AXIS_CHECK_LIMITS
@@ -358,10 +475,10 @@ static Blt_ConfigSpec configSpecs[] = {
{BLT_CONFIG_ANCHOR, "-tickanchor", "tickAnchor", "Anchor",
DEF_AXIS_TICK_ANCHOR, Tk_Offset(Axis, reqTickAnchor), ALL_GRAPHS},
{BLT_CONFIG_FONT, "-tickfont", "tickFont", "Font",
- DEF_AXIS_TICKFONT_GRAPH, Tk_Offset(Axis, tickFont),
+ DEF_AXIS_TICKFONT, Tk_Offset(Axis, tickFont),
GRAPH | STRIPCHART},
{BLT_CONFIG_FONT, "-tickfont", "tickFont", "Font",
- DEF_AXIS_TICKFONT_BARCHART, Tk_Offset(Axis, tickFont), BARCHART},
+ DEF_AXIS_TICKFONT, Tk_Offset(Axis, tickFont), BARCHART},
{BLT_CONFIG_PIXELS, "-ticklength", "tickLength", "TickLength",
DEF_AXIS_TICKLENGTH, Tk_Offset(Axis, tickLength),
ALL_GRAPHS | BLT_CONFIG_DONT_SET_DEFAULT},
diff --git a/src/bltGraph.C b/src/bltGraph.C
index 95861eb..0b36afe 100644
--- a/src/bltGraph.C
+++ b/src/bltGraph.C
@@ -119,48 +119,6 @@ extern Blt_CustomOption bltBarModeOption;
#define DEF_GRAPH_UNMAP_HIDDEN_ELEMENTS "0"
#define DEF_GRAPH_WIDTH "5i"
-// Background
-
-static Tk_CustomOptionSetProc BackgroundSetProc;
-static Tk_CustomOptionGetProc BackgroundGetProc;
-static Tk_ObjCustomOption backgroundObjOption =
- {
- "background", BackgroundSetProc, BackgroundGetProc, NULL, NULL, NULL
- };
-
-
-static int BackgroundSetProc(ClientData clientData, Tcl_Interp *interp,
- Tk_Window tkwin, Tcl_Obj** objPtr, char* widgRec,
- int offset, char* save, int flags)
-{
- Blt_Background* backgroundPtr = (Blt_Background*)(widgRec + offset);
-
- if (*backgroundPtr)
- Blt_FreeBackground(*backgroundPtr);
- *backgroundPtr = NULL;
-
- int length;
- const char* string = Tcl_GetStringFromObj(*objPtr, &length);
- if (string)
- *backgroundPtr = Blt_GetBackground(interp, tkwin, string);
- else
- return TCL_ERROR;
-
- return TCL_OK;
-}
-
-static Tcl_Obj* BackgroundGetProc(ClientData clientData, Tk_Window tkwin,
- char *widgRec, int offset)
-{
- Blt_Background* backgroundPtr = (Blt_Background*)(widgRec + offset);
- if (*backgroundPtr) {
- const char* string = Blt_NameOfBackground(*backgroundPtr);
- return Tcl_NewStringObj(string, -1);
- }
- else
- return Tcl_NewStringObj("", -1);
-}
-
// BarMode
static char* barmodeObjOption[] = {"normal", "stacked", "aligned", "overlap"};
@@ -875,6 +833,13 @@ static int GraphObjConfigure(Tcl_Interp* interp, Graph* graphPtr,
// ConfigureGraph(graphPtr);
+ if ((graphPtr->tkwin != NULL) &&
+ Tk_IsMapped(graphPtr->tkwin) &&
+ !(graphPtr->flags & REDRAW_PENDING)) {
+ Tk_DoWhenIdle(DisplayGraph, (ClientData)graphPtr);
+ graphPtr->flags |= REDRAW_PENDING;
+ }
+
break; // All ok
}
@@ -962,11 +927,7 @@ static Graph* CreateGraph(ClientData clientData, Tcl_Interp* interp,
if (InitPens(graphPtr) != TCL_OK)
goto error;
- /*
- if (Blt_ConfigureWidgetFromObj(interp, tkwin, configSpecs, objc - 2,
- objv + 2, (char*)graphPtr, 0) != TCL_OK)
- goto error;
- */
+ // if (Blt_ConfigureWidgetFromObj(interp, tkwin, configSpecs, objc - 2, objv + 2, (char*)graphPtr, 0) != TCL_OK)
if (Tk_InitOptions(interp, (char*)graphPtr, optionTable, tkwin) != TCL_OK)
goto error;
if (GraphObjConfigure(interp, graphPtr, objc-2, objv+2) != TCL_OK)