From 5032264742e55a7be8cb234208405850846088af Mon Sep 17 00:00:00 2001 From: joye Date: Mon, 31 Mar 2014 20:39:34 +0000 Subject: *** empty log message *** --- configure | 1 + configure.in | 1 + src/bltGrElemOption.C | 4 +-- src/bltGrPenOp.C | 68 ------------------------------------- src/bltGrPenOp.h | 2 ++ src/bltGrPenOption.C | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 99 insertions(+), 71 deletions(-) create mode 100644 src/bltGrPenOption.C diff --git a/configure b/configure index 65c9832..b825237 100755 --- a/configure +++ b/configure @@ -5546,6 +5546,7 @@ done bltGrMarkerText.C bltGrMisc.C bltGrPenOp.C + bltGrPenOption.C bltGrPen.C bltGrPenBar.C bltGrPenLine.C diff --git a/configure.in b/configure.in index 68edadd..9521fae 100755 --- a/configure.in +++ b/configure.in @@ -91,6 +91,7 @@ TEA_ADD_SOURCES([ bltGrMarkerText.C bltGrMisc.C bltGrPenOp.C + bltGrPenOption.C bltGrPen.C bltGrPenBar.C bltGrPenLine.C diff --git a/src/bltGrElemOption.C b/src/bltGrElemOption.C index 931a5b7..c933e66 100644 --- a/src/bltGrElemOption.C +++ b/src/bltGrElemOption.C @@ -29,6 +29,7 @@ #include "bltGrElem.h" #include "bltGrElemOption.h" +#include "bltGrPenOp.h" #define ELEM_SOURCE_VALUES 0 #define ELEM_SOURCE_VECTOR 1 @@ -38,9 +39,6 @@ // Defs -extern int Blt_GetPenFromObj(Tcl_Interp* interp, Graph* graphPtr, - Tcl_Obj *objPtr, ClassId classId, Pen **penPtrPtr); - static void FreeDataValues(ElemValues* valuesPtr); static void FreeVectorSource(ElemValues* valuesPtr); static void FindRange(ElemValues* valuesPtr); diff --git a/src/bltGrPenOp.C b/src/bltGrPenOp.C index f1740b8..0527923 100644 --- a/src/bltGrPenOp.C +++ b/src/bltGrPenOp.C @@ -27,13 +27,7 @@ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -#include -#include - -#include "bltC.h" - extern "C" { -#include "bltInt.h" #include "bltGraph.h" #include "bltOp.h" }; @@ -45,8 +39,6 @@ extern "C" { // Defs -extern int Blt_GetPenFromObj(Tcl_Interp* interp, Graph* graphPtr, Tcl_Obj *objPtr, ClassId classId, Pen **penPtrPtr); - static Pen* CreateBarPen(Graph* graphPtr, const char *penName); static Pen* CreateLinePen(Graph* graphPtr, const char* penName); static void DestroyPen(Pen* penPtr); @@ -57,66 +49,6 @@ static int PenObjConfigure(Tcl_Interp* interp, Graph* graphPtr, Pen* penPtr, typedef int (GraphPenProc)(Tcl_Interp* interp, Graph* graphPtr, int objc, Tcl_Obj* const objv[]); -// OptionSpecs - -static Tk_CustomOptionSetProc PenSetProc; -static Tk_CustomOptionGetProc PenGetProc; -static Tk_CustomOptionFreeProc PenFreeProc; -Tk_ObjCustomOption barPenObjOption = - { - "barPen", PenSetProc, PenGetProc, RestoreProc, PenFreeProc, - (ClientData)CID_ELEM_BAR - }; -Tk_ObjCustomOption linePenObjOption = - { - "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* 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 || !string[0]) { - *penPtrPtr = NULL; - return TCL_OK; - } - - 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; - - *penPtrPtr = penPtr; - - return TCL_OK; -}; - -static Tcl_Obj* PenGetProc(ClientData clientData, Tk_Window tkwin, - char *widgRec, int offset) -{ - Pen* penPtr = *(Pen**)(widgRec + offset); - if (!penPtr) - return Tcl_NewStringObj("", -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, diff --git a/src/bltGrPenOp.h b/src/bltGrPenOp.h index 18047b7..5b7c495 100644 --- a/src/bltGrPenOp.h +++ b/src/bltGrPenOp.h @@ -30,6 +30,8 @@ #ifndef __bltgrpenop_h__ #define __bltgrpenop_h__ +extern int Blt_GetPenFromObj(Tcl_Interp* interp, Graph* graphPtr, Tcl_Obj *objPtr, ClassId classId, Pen **penPtrPtr); +extern void Blt_DestroyPen(Pen* penPtr); extern void Blt_FreePen(Pen* penPtr); #endif diff --git a/src/bltGrPenOption.C b/src/bltGrPenOption.C new file mode 100644 index 0000000..ce6c62c --- /dev/null +++ b/src/bltGrPenOption.C @@ -0,0 +1,94 @@ +/* + * Smithsonian Astrophysical Observatory, Cambridge, MA, USA + * This code has been modified under the terms listed below and is made + * available under the same terms. + */ + +/* + * Copyright 1996-2004 George A Howlett. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "bltGrPen.h" +#include "bltGrPenOption.h" +#include "bltGrPenOp.h" + +static Tk_CustomOptionSetProc PenSetProc; +static Tk_CustomOptionGetProc PenGetProc; +static Tk_CustomOptionFreeProc PenFreeProc; +Tk_ObjCustomOption barPenObjOption = + { + "barPen", PenSetProc, PenGetProc, RestoreProc, PenFreeProc, + (ClientData)CID_ELEM_BAR + }; +Tk_ObjCustomOption linePenObjOption = + { + "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* 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 || !string[0]) { + *penPtrPtr = NULL; + return TCL_OK; + } + + 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; + + *penPtrPtr = penPtr; + + return TCL_OK; +}; + +static Tcl_Obj* PenGetProc(ClientData clientData, Tk_Window tkwin, + char *widgRec, int offset) +{ + Pen* penPtr = *(Pen**)(widgRec + offset); + if (!penPtr) + return Tcl_NewStringObj("", -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); +} + +// Support + + -- cgit v0.12