diff options
author | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2017-07-18 09:10:30 (GMT) |
---|---|---|
committer | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2017-07-18 09:10:30 (GMT) |
commit | 71312d1e172edf9c37e7a16ab881980523d5babd (patch) | |
tree | c53477f175de027634a7cc2364d0dd2f26d24001 /generic/tkbltGrPenOption.C | |
parent | ce90eafc809554ad9243f6f2dbacdb41474c9fe5 (diff) | |
download | blt-71312d1e172edf9c37e7a16ab881980523d5babd.zip blt-71312d1e172edf9c37e7a16ab881980523d5babd.tar.gz blt-71312d1e172edf9c37e7a16ab881980523d5babd.tar.bz2 |
Better align with TEA's expected file layout
TEA is quite picky about packages placing their sources in the generic/,
unix/, etc. directories. An immediate benefit of this change is support
for building in a separate directory.
Diffstat (limited to 'generic/tkbltGrPenOption.C')
-rw-r--r-- | generic/tkbltGrPenOption.C | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/generic/tkbltGrPenOption.C b/generic/tkbltGrPenOption.C new file mode 100644 index 0000000..b1da1b6 --- /dev/null +++ b/generic/tkbltGrPenOption.C @@ -0,0 +1,89 @@ +/* + * 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 "tkbltGraph.h" +#include "tkbltGrPen.h" +#include "tkbltConfig.h" + +using namespace Blt; + +static Tk_CustomOptionSetProc PenSetProc; +static Tk_CustomOptionGetProc PenGetProc; +static Tk_CustomOptionFreeProc PenFreeProc; +Tk_ObjCustomOption penObjOption = + { + "pen", PenSetProc, PenGetProc, RestoreProc, PenFreeProc, NULL + }; + +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 = getGraphFromWindowData(tkwin); + Pen* penPtr; + if (graphPtr->getPen(*objPtr, &penPtr) != TCL_OK) + return TCL_ERROR; + + penPtr->refCount_++; + *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) + if (penPtr->refCount_ > 0) + penPtr->refCount_--; +} + + |