summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjoye <joye>2014-03-26 16:55:06 (GMT)
committerjoye <joye>2014-03-26 16:55:06 (GMT)
commit89a6725b0b1fd8edef4978bd2203dc86ddb6ebdc (patch)
tree2a89f90b51861ac60d2a7a9c3bd7b3b7a685c6b2
parenta381f74bec678c422bf41a435a1819f61ba88249 (diff)
downloadblt-89a6725b0b1fd8edef4978bd2203dc86ddb6ebdc.zip
blt-89a6725b0b1fd8edef4978bd2203dc86ddb6ebdc.tar.gz
blt-89a6725b0b1fd8edef4978bd2203dc86ddb6ebdc.tar.bz2
*** empty log message ***
-rw-r--r--src/bltConfig.C22
-rw-r--r--src/bltGrAxis.C7
-rw-r--r--src/bltGrMarker.C6
-rw-r--r--src/bltGrPenOp.C52
4 files changed, 45 insertions, 42 deletions
diff --git a/src/bltConfig.C b/src/bltConfig.C
index 2f7b211..331961d 100644
--- a/src/bltConfig.C
+++ b/src/bltConfig.C
@@ -68,8 +68,8 @@ static int PointSetProc(ClientData clientData, Tcl_Interp *interp,
int offset, char* save, int flags)
{
XPoint* pointPtr = (XPoint*)(widgRec + offset);
- int x, y;
+ int x, y;
if (Blt_GetXY(interp, tkwin, Tcl_GetString(*objPtr), &x, &y) != TCL_OK)
return TCL_ERROR;
@@ -109,33 +109,27 @@ static int DashesSetProc(ClientData clientData, Tcl_Interp *interp,
int length;
const char* string = Tcl_GetStringFromObj(*objPtr, &length);
- if (!string) {
+ if (!string || !string[0]) {
dashesPtr->values[0] = 0;
return TCL_OK;
}
- if (!string[0])
- dashesPtr->values[0] = 0;
- else if (!strncmp(string, "dot", length)) {
- /* 1 */
+ if (!strncmp(string, "dot", length)) {
dashesPtr->values[0] = 1;
dashesPtr->values[1] = 0;
}
else if (!strncmp(string, "dash", length)) {
- /* 5 2 */
dashesPtr->values[0] = 5;
dashesPtr->values[1] = 2;
dashesPtr->values[2] = 0;
}
else if (!strncmp(string, "dashdot", length)) {
- /* 2 4 2 */
dashesPtr->values[0] = 2;
dashesPtr->values[1] = 4;
dashesPtr->values[2] = 2;
dashesPtr->values[3] = 0;
}
else if (!strncmp(string, "dashdotdot", length)) {
- /* 2 4 2 2 */
dashesPtr->values[0] = 2;
dashesPtr->values[1] = 4;
dashesPtr->values[2] = 2;
@@ -148,7 +142,8 @@ static int DashesSetProc(ClientData clientData, Tcl_Interp *interp,
if (Tcl_ListObjGetElements(interp, *objPtr, &objc, &objv) != TCL_OK)
return TCL_ERROR;
- if (objc > 11) { /* This is the postscript limit */
+ // This is the postscript limit
+ if (objc > 11) {
Tcl_AppendResult(interp, "too many values in dash list \"",
string, "\"", (char *)NULL);
return TCL_ERROR;
@@ -160,10 +155,7 @@ static int DashesSetProc(ClientData clientData, Tcl_Interp *interp,
if (Tcl_GetIntFromObj(interp, objv[ii], &value) != TCL_OK)
return TCL_ERROR;
- /*
- * Backward compatibility:
- * Allow list of 0 to turn off dashes
- */
+ // Backward compatibility: Allow list of 0 to turn off dashes
if ((value == 0) && (objc == 1))
break;
@@ -176,7 +168,7 @@ static int DashesSetProc(ClientData clientData, Tcl_Interp *interp,
dashesPtr->values[ii] = (unsigned char)value;
}
- // Make sure the array ends with a NUL byte
+ // Make sure the array ends with a NULL byte
dashesPtr->values[ii] = 0;
}
diff --git a/src/bltGrAxis.C b/src/bltGrAxis.C
index 9b66be5..53ffdf8 100644
--- a/src/bltGrAxis.C
+++ b/src/bltGrAxis.C
@@ -169,9 +169,12 @@ static int LimitSetProc(ClientData clientData, Tcl_Interp* interp,
{
double* limitPtr = (double*)(widgRec + offset);
const char* string = Tcl_GetString(*objPtr);
- if (string[0] == '\0')
+ if (!string || !string[0]) {
*limitPtr = NAN;
- else if (Blt_ExprDoubleFromObj(interp, *objPtr, limitPtr) != TCL_OK)
+ return TCL_OK;
+ }
+
+ if (Blt_ExprDoubleFromObj(interp, *objPtr, limitPtr) != TCL_OK)
return TCL_ERROR;
return TCL_OK;
diff --git a/src/bltGrMarker.C b/src/bltGrMarker.C
index cd995da..6c72cd7 100644
--- a/src/bltGrMarker.C
+++ b/src/bltGrMarker.C
@@ -94,15 +94,15 @@ static int CoordsSetProc(ClientData clientData, Tcl_Interp* interp,
if (!coordsPtrPtr)
return TCL_OK;
- *coordsPtrPtr = NULL;
-
int objc;
Tcl_Obj** objv;
if (Tcl_ListObjGetElements(interp, *objPtr, &objc, &objv) != TCL_OK)
return TCL_ERROR;
- if (objc == 0)
+ if (objc == 0) {
+ *coordsPtrPtr = NULL;
return TCL_OK;
+ }
if (objc & 1) {
Tcl_AppendResult(interp, "odd number of marker coordinates specified",NULL);
diff --git a/src/bltGrPenOp.C b/src/bltGrPenOp.C
index fc302f2..8da39ec 100644
--- a/src/bltGrPenOp.C
+++ b/src/bltGrPenOp.C
@@ -54,39 +54,41 @@ typedef int (GraphPenProc)(Tcl_Interp* interp, Graph* graphPtr, int objc,
static Tk_CustomOptionSetProc PenSetProc;
static Tk_CustomOptionGetProc PenGetProc;
+static Tk_CustomOptionFreeProc PenFreeProc;
Tk_ObjCustomOption barPenObjOption =
{
- "barPen", PenSetProc, PenGetProc, NULL, NULL, (ClientData)CID_ELEM_BAR
+ "barPen", PenSetProc, PenGetProc, RestoreProc, PenFreeProc,
+ (ClientData)CID_ELEM_BAR
};
Tk_ObjCustomOption linePenObjOption =
{
- "linePen", PenSetProc, PenGetProc, NULL, NULL, (ClientData)CID_ELEM_LINE
+ "linePen", PenSetProc, PenGetProc, RestoreProc, PenFreeProc,
+ (ClientData)CID_ELEM_LINE
};
static int PenSetProc(ClientData clientData, Tcl_Interp* interp,
Tk_Window tkwin, Tcl_Obj** objPtr, char* widgRec,
- int offset, char* save, int flags)
+ int offset, char* savePtr, int flags)
{
Pen** penPtrPtr = (Pen**)(widgRec + offset);
+ *(double*)savePtr = *(double*)penPtrPtr;
+
+ if (!penPtrPtr)
+ return TCL_OK;
+
const char* string = Tcl_GetString(*objPtr);
- if ((string[0] == '\0') && (flags & TK_OPTION_NULL_OK)) {
- Blt_FreePen(*penPtrPtr);
+ if (!string || !string[0]) {
*penPtrPtr = NULL;
- }
- else {
- Pen* penPtr;
- Graph* graphPtr = Blt_GetGraphFromWindowData(tkwin);
- ClassId classId = (ClassId)(long(clientData));
+ return TCL_OK;
+ }
- if (classId == CID_NONE)
- classId = graphPtr->classId;
+ Graph* graphPtr = Blt_GetGraphFromWindowData(tkwin);
+ ClassId classId = (ClassId)(long(clientData));
+ Pen* penPtr;
+ if (Blt_GetPenFromObj(interp, graphPtr, *objPtr, classId, &penPtr) != TCL_OK)
+ return TCL_ERROR;
- if (Blt_GetPenFromObj(interp, graphPtr, *objPtr, classId,&penPtr) != TCL_OK)
- return TCL_ERROR;
-
- Blt_FreePen(*penPtrPtr);
- *penPtrPtr = penPtr;
- }
+ *penPtrPtr = penPtr;
return TCL_OK;
};
@@ -95,13 +97,19 @@ static Tcl_Obj* PenGetProc(ClientData clientData, Tk_Window tkwin,
char *widgRec, int offset)
{
Pen* penPtr = *(Pen**)(widgRec + offset);
-
- if (penPtr == NULL)
+ if (!penPtr)
return Tcl_NewStringObj("", -1);
- else
- return Tcl_NewStringObj(penPtr->name, -1);
+
+ return Tcl_NewStringObj(penPtr->name, -1);
};
+static void PenFreeProc(ClientData clientData, Tk_Window tkwin, char *ptr)
+{
+ Pen* penPtr = *(Pen**)ptr;
+ if (penPtr)
+ Blt_FreePen(penPtr);
+}
+
// Create
int Blt_CreatePen(Graph* graphPtr, Tcl_Interp* interp,