diff options
author | joye <joye> | 2014-02-06 18:02:34 (GMT) |
---|---|---|
committer | joye <joye> | 2014-02-06 18:02:34 (GMT) |
commit | 0781e4fad7bfbd5ae456b4cdeb256f4e75fa04a3 (patch) | |
tree | 58ab2032fcda3fae36341efd18878eaa7f253f94 /src | |
parent | 8528751fc74cdde52ae670bcc3faec6fc0d37687 (diff) | |
download | blt-0781e4fad7bfbd5ae456b4cdeb256f4e75fa04a3.zip blt-0781e4fad7bfbd5ae456b4cdeb256f4e75fa04a3.tar.gz blt-0781e4fad7bfbd5ae456b4cdeb256f4e75fa04a3.tar.bz2 |
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r-- | src/bltConfig.C | 42 | ||||
-rw-r--r-- | src/bltConfig.h | 2 | ||||
-rw-r--r-- | src/bltGrAxis.C | 125 | ||||
-rw-r--r-- | src/bltGraph.C | 55 |
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) |