summaryrefslogtreecommitdiffstats
path: root/tkblt
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2017-08-08 20:06:26 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2017-08-08 20:06:26 (GMT)
commit2720d8e54382835b3a82f99dcd9425385fb7ba1c (patch)
treeff07e44bfdc94d1e8a96ae47cbd03211bf211e3a /tkblt
parent365988b70f6f878f73be1a8c3fe37345443d3354 (diff)
parent4773cc1128f60e83ba5721fe1ad3497b15078361 (diff)
downloadblt-2720d8e54382835b3a82f99dcd9425385fb7ba1c.zip
blt-2720d8e54382835b3a82f99dcd9425385fb7ba1c.tar.gz
blt-2720d8e54382835b3a82f99dcd9425385fb7ba1c.tar.bz2
Merge commit '4773cc1128f60e83ba5721fe1ad3497b15078361'
Diffstat (limited to 'tkblt')
-rwxr-xr-xtkblt/configure116
-rw-r--r--tkblt/configure.ac113
-rw-r--r--tkblt/doc/graph.html42
-rw-r--r--tkblt/doc/graph.n38
-rw-r--r--tkblt/generic/tkblt.decls (renamed from tkblt/src/tkblt.decls)0
-rw-r--r--tkblt/generic/tkbltChain.C (renamed from tkblt/src/tkbltChain.C)0
-rw-r--r--tkblt/generic/tkbltChain.h (renamed from tkblt/src/tkbltChain.h)0
-rw-r--r--tkblt/generic/tkbltConfig.C (renamed from tkblt/src/tkbltConfig.C)0
-rw-r--r--tkblt/generic/tkbltConfig.h (renamed from tkblt/src/tkbltConfig.h)0
-rw-r--r--tkblt/generic/tkbltDecls.h (renamed from tkblt/src/tkbltDecls.h)40
-rw-r--r--tkblt/generic/tkbltGrAxis.C (renamed from tkblt/src/tkbltGrAxis.C)209
-rw-r--r--tkblt/generic/tkbltGrAxis.h (renamed from tkblt/src/tkbltGrAxis.h)24
-rw-r--r--tkblt/generic/tkbltGrAxisOp.C (renamed from tkblt/src/tkbltGrAxisOp.C)9
-rw-r--r--tkblt/generic/tkbltGrAxisOp.h (renamed from tkblt/src/tkbltGrAxisOp.h)0
-rw-r--r--tkblt/generic/tkbltGrAxisOption.C (renamed from tkblt/src/tkbltGrAxisOption.C)4
-rw-r--r--tkblt/generic/tkbltGrAxisOption.h (renamed from tkblt/src/tkbltGrAxisOption.h)0
-rw-r--r--tkblt/generic/tkbltGrBind.C (renamed from tkblt/src/tkbltGrBind.C)3
-rw-r--r--tkblt/generic/tkbltGrBind.h (renamed from tkblt/src/tkbltGrBind.h)0
-rw-r--r--tkblt/generic/tkbltGrDef.h (renamed from tkblt/src/tkbltGrDef.h)0
-rw-r--r--tkblt/generic/tkbltGrElem.C (renamed from tkblt/src/tkbltGrElem.C)16
-rw-r--r--tkblt/generic/tkbltGrElem.h (renamed from tkblt/src/tkbltGrElem.h)4
-rw-r--r--tkblt/generic/tkbltGrElemBar.C (renamed from tkblt/src/tkbltGrElemBar.C)84
-rw-r--r--tkblt/generic/tkbltGrElemBar.h (renamed from tkblt/src/tkbltGrElemBar.h)14
-rw-r--r--tkblt/generic/tkbltGrElemLine.C (renamed from tkblt/src/tkbltGrElemLine.C)136
-rw-r--r--tkblt/generic/tkbltGrElemLine.h (renamed from tkblt/src/tkbltGrElemLine.h)0
-rw-r--r--tkblt/generic/tkbltGrElemLineSpline.C (renamed from tkblt/src/tkbltGrElemLineSpline.C)0
-rw-r--r--tkblt/generic/tkbltGrElemOp.C (renamed from tkblt/src/tkbltGrElemOp.C)11
-rw-r--r--tkblt/generic/tkbltGrElemOp.h (renamed from tkblt/src/tkbltGrElemOp.h)0
-rw-r--r--tkblt/generic/tkbltGrElemOption.C (renamed from tkblt/src/tkbltGrElemOption.C)9
-rw-r--r--tkblt/generic/tkbltGrElemOption.h (renamed from tkblt/src/tkbltGrElemOption.h)0
-rw-r--r--tkblt/generic/tkbltGrHairs.C (renamed from tkblt/src/tkbltGrHairs.C)0
-rw-r--r--tkblt/generic/tkbltGrHairs.h (renamed from tkblt/src/tkbltGrHairs.h)2
-rw-r--r--tkblt/generic/tkbltGrHairsOp.C (renamed from tkblt/src/tkbltGrHairsOp.C)0
-rw-r--r--tkblt/generic/tkbltGrHairsOp.h (renamed from tkblt/src/tkbltGrHairsOp.h)0
-rw-r--r--tkblt/generic/tkbltGrLegd.C (renamed from tkblt/src/tkbltGrLegd.C)20
-rw-r--r--tkblt/generic/tkbltGrLegd.h (renamed from tkblt/src/tkbltGrLegd.h)0
-rw-r--r--tkblt/generic/tkbltGrLegdOp.C (renamed from tkblt/src/tkbltGrLegdOp.C)0
-rw-r--r--tkblt/generic/tkbltGrLegdOp.h (renamed from tkblt/src/tkbltGrLegdOp.h)0
-rw-r--r--tkblt/generic/tkbltGrMarker.C (renamed from tkblt/src/tkbltGrMarker.C)3
-rw-r--r--tkblt/generic/tkbltGrMarker.h (renamed from tkblt/src/tkbltGrMarker.h)0
-rw-r--r--tkblt/generic/tkbltGrMarkerLine.C (renamed from tkblt/src/tkbltGrMarkerLine.C)7
-rw-r--r--tkblt/generic/tkbltGrMarkerLine.h (renamed from tkblt/src/tkbltGrMarkerLine.h)0
-rw-r--r--tkblt/generic/tkbltGrMarkerOp.C (renamed from tkblt/src/tkbltGrMarkerOp.C)0
-rw-r--r--tkblt/generic/tkbltGrMarkerOp.h (renamed from tkblt/src/tkbltGrMarkerOp.h)0
-rw-r--r--tkblt/generic/tkbltGrMarkerOption.C (renamed from tkblt/src/tkbltGrMarkerOption.C)3
-rw-r--r--tkblt/generic/tkbltGrMarkerOption.h (renamed from tkblt/src/tkbltGrMarkerOption.h)0
-rw-r--r--tkblt/generic/tkbltGrMarkerPolygon.C (renamed from tkblt/src/tkbltGrMarkerPolygon.C)13
-rw-r--r--tkblt/generic/tkbltGrMarkerPolygon.h (renamed from tkblt/src/tkbltGrMarkerPolygon.h)0
-rw-r--r--tkblt/generic/tkbltGrMarkerText.C (renamed from tkblt/src/tkbltGrMarkerText.C)16
-rw-r--r--tkblt/generic/tkbltGrMarkerText.h (renamed from tkblt/src/tkbltGrMarkerText.h)0
-rw-r--r--tkblt/generic/tkbltGrMisc.C (renamed from tkblt/src/tkbltGrMisc.C)0
-rw-r--r--tkblt/generic/tkbltGrMisc.h (renamed from tkblt/src/tkbltGrMisc.h)9
-rw-r--r--tkblt/generic/tkbltGrPSOutput.C (renamed from tkblt/src/tkbltGrPSOutput.C)40
-rw-r--r--tkblt/generic/tkbltGrPSOutput.h (renamed from tkblt/src/tkbltGrPSOutput.h)2
-rw-r--r--tkblt/generic/tkbltGrPen.C (renamed from tkblt/src/tkbltGrPen.C)3
-rw-r--r--tkblt/generic/tkbltGrPen.h (renamed from tkblt/src/tkbltGrPen.h)0
-rw-r--r--tkblt/generic/tkbltGrPenBar.C (renamed from tkblt/src/tkbltGrPenBar.C)0
-rw-r--r--tkblt/generic/tkbltGrPenBar.h (renamed from tkblt/src/tkbltGrPenBar.h)0
-rw-r--r--tkblt/generic/tkbltGrPenLine.C (renamed from tkblt/src/tkbltGrPenLine.C)0
-rw-r--r--tkblt/generic/tkbltGrPenLine.h (renamed from tkblt/src/tkbltGrPenLine.h)0
-rw-r--r--tkblt/generic/tkbltGrPenOp.C (renamed from tkblt/src/tkbltGrPenOp.C)0
-rw-r--r--tkblt/generic/tkbltGrPenOp.h (renamed from tkblt/src/tkbltGrPenOp.h)0
-rw-r--r--tkblt/generic/tkbltGrPenOption.C (renamed from tkblt/src/tkbltGrPenOption.C)0
-rw-r--r--tkblt/generic/tkbltGrPostscript.C (renamed from tkblt/src/tkbltGrPostscript.C)0
-rw-r--r--tkblt/generic/tkbltGrPostscript.h (renamed from tkblt/src/tkbltGrPostscript.h)10
-rw-r--r--tkblt/generic/tkbltGrPostscriptOp.C (renamed from tkblt/src/tkbltGrPostscriptOp.C)0
-rw-r--r--tkblt/generic/tkbltGrPostscriptOp.h (renamed from tkblt/src/tkbltGrPostscriptOp.h)0
-rw-r--r--tkblt/generic/tkbltGrText.C (renamed from tkblt/src/tkbltGrText.C)21
-rw-r--r--tkblt/generic/tkbltGrText.h (renamed from tkblt/src/tkbltGrText.h)2
-rw-r--r--tkblt/generic/tkbltGrXAxisOp.C (renamed from tkblt/src/tkbltGrXAxisOp.C)2
-rw-r--r--tkblt/generic/tkbltGrXAxisOp.h (renamed from tkblt/src/tkbltGrXAxisOp.h)0
-rw-r--r--tkblt/generic/tkbltGraph.C (renamed from tkblt/src/tkbltGraph.C)19
-rw-r--r--tkblt/generic/tkbltGraph.h (renamed from tkblt/src/tkbltGraph.h)38
-rw-r--r--tkblt/generic/tkbltGraphBar.C (renamed from tkblt/src/tkbltGraphBar.C)10
-rw-r--r--tkblt/generic/tkbltGraphBar.h (renamed from tkblt/src/tkbltGraphBar.h)4
-rw-r--r--tkblt/generic/tkbltGraphLine.C (renamed from tkblt/src/tkbltGraphLine.C)0
-rw-r--r--tkblt/generic/tkbltGraphLine.h (renamed from tkblt/src/tkbltGraphLine.h)0
-rw-r--r--tkblt/generic/tkbltGraphOp.C (renamed from tkblt/src/tkbltGraphOp.C)10
-rw-r--r--tkblt/generic/tkbltGraphOp.h (renamed from tkblt/src/tkbltGraphOp.h)0
-rw-r--r--tkblt/generic/tkbltGraphSup.C (renamed from tkblt/src/tkbltGraphSup.C)14
-rw-r--r--tkblt/generic/tkbltInt.C (renamed from tkblt/src/tkbltInt.C)0
-rw-r--r--tkblt/generic/tkbltInt.h58
-rw-r--r--tkblt/generic/tkbltNsUtil.C (renamed from tkblt/src/tkbltNsUtil.C)0
-rw-r--r--tkblt/generic/tkbltNsUtil.h (renamed from tkblt/src/tkbltNsUtil.h)0
-rw-r--r--tkblt/generic/tkbltOp.C (renamed from tkblt/src/tkbltOp.C)0
-rw-r--r--tkblt/generic/tkbltOp.h (renamed from tkblt/src/tkbltOp.h)0
-rw-r--r--tkblt/generic/tkbltParse.C (renamed from tkblt/src/tkbltParse.C)0
-rw-r--r--tkblt/generic/tkbltParse.h (renamed from tkblt/src/tkbltParse.h)0
-rw-r--r--tkblt/generic/tkbltStubInit.c (renamed from tkblt/src/tkbltStubInit.c)2
-rw-r--r--tkblt/generic/tkbltStubLib.C (renamed from tkblt/src/tkbltStubLib.C)0
-rw-r--r--tkblt/generic/tkbltSwitch.C (renamed from tkblt/src/tkbltSwitch.C)0
-rw-r--r--tkblt/generic/tkbltSwitch.h (renamed from tkblt/src/tkbltSwitch.h)0
-rw-r--r--tkblt/generic/tkbltVecCmd.C (renamed from tkblt/src/tkbltVecCmd.C)11
-rw-r--r--tkblt/generic/tkbltVecInt.h (renamed from tkblt/src/tkbltVecInt.h)0
-rw-r--r--tkblt/generic/tkbltVecMath.C (renamed from tkblt/src/tkbltVecMath.C)39
-rw-r--r--tkblt/generic/tkbltVecOp.C (renamed from tkblt/src/tkbltVecOp.C)0
-rw-r--r--tkblt/generic/tkbltVector.C (renamed from tkblt/src/tkbltVector.C)5
-rw-r--r--tkblt/generic/tkbltVector.h (renamed from tkblt/src/tkbltVector.h)69
98 files changed, 692 insertions, 612 deletions
diff --git a/tkblt/configure b/tkblt/configure
index 1ac516e..052a60b 100755
--- a/tkblt/configure
+++ b/tkblt/configure
@@ -5644,55 +5644,55 @@ done
vars="
-src/tkbltChain.C
-src/tkbltConfig.C
-src/tkbltGrAxis.C
-src/tkbltGrAxisOp.C
-src/tkbltGrAxisOption.C
-src/tkbltGrBind.C
-src/tkbltGrElemOp.C
-src/tkbltGrElemOption.C
-src/tkbltGrElem.C
-src/tkbltGrElemBar.C
-src/tkbltGrElemLine.C
-src/tkbltGrElemLineSpline.C
-src/tkbltGrHairs.C
-src/tkbltGrHairsOp.C
-src/tkbltGrLegd.C
-src/tkbltGrLegdOp.C
-src/tkbltGrMarkerOp.C
-src/tkbltGrMarkerOption.C
-src/tkbltGrMarker.C
-src/tkbltGrMarkerLine.C
-src/tkbltGrMarkerPolygon.C
-src/tkbltGrMarkerText.C
-src/tkbltGrMisc.C
-src/tkbltGrPenOp.C
-src/tkbltGrPenOption.C
-src/tkbltGrPen.C
-src/tkbltGrPenBar.C
-src/tkbltGrPenLine.C
-src/tkbltGrPostscript.C
-src/tkbltGrPostscriptOp.C
-src/tkbltGrPSOutput.C
-src/tkbltGrText.C
-src/tkbltGrXAxisOp.C
-src/tkbltGraph.C
-src/tkbltGraphBar.C
-src/tkbltGraphLine.C
-src/tkbltGraphOp.C
-src/tkbltGraphSup.C
-src/tkbltInt.C
-src/tkbltNsUtil.C
-src/tkbltParse.C
-src/tkbltOp.C
-src/tkbltStubInit.c
-src/tkbltStubLib.C
-src/tkbltSwitch.C
-src/tkbltVecCmd.C
-src/tkbltVecOp.C
-src/tkbltVecMath.C
-src/tkbltVector.C
+tkbltChain.C
+tkbltConfig.C
+tkbltGrAxis.C
+tkbltGrAxisOp.C
+tkbltGrAxisOption.C
+tkbltGrBind.C
+tkbltGrElemOp.C
+tkbltGrElemOption.C
+tkbltGrElem.C
+tkbltGrElemBar.C
+tkbltGrElemLine.C
+tkbltGrElemLineSpline.C
+tkbltGrHairs.C
+tkbltGrHairsOp.C
+tkbltGrLegd.C
+tkbltGrLegdOp.C
+tkbltGrMarkerOp.C
+tkbltGrMarkerOption.C
+tkbltGrMarker.C
+tkbltGrMarkerLine.C
+tkbltGrMarkerPolygon.C
+tkbltGrMarkerText.C
+tkbltGrMisc.C
+tkbltGrPenOp.C
+tkbltGrPenOption.C
+tkbltGrPen.C
+tkbltGrPenBar.C
+tkbltGrPenLine.C
+tkbltGrPostscript.C
+tkbltGrPostscriptOp.C
+tkbltGrPSOutput.C
+tkbltGrText.C
+tkbltGrXAxisOp.C
+tkbltGraph.C
+tkbltGraphBar.C
+tkbltGraphLine.C
+tkbltGraphOp.C
+tkbltGraphSup.C
+tkbltInt.C
+tkbltNsUtil.C
+tkbltParse.C
+tkbltOp.C
+tkbltStubInit.c
+tkbltStubLib.C
+tkbltSwitch.C
+tkbltVecCmd.C
+tkbltVecOp.C
+tkbltVecMath.C
+tkbltVector.C
"
for i in $vars; do
case $i in
@@ -5729,8 +5729,8 @@ src/tkbltVector.C
vars="
-src/tkbltVector.h
-src/tkbltDecls.h
+generic/tkbltVector.h
+generic/tkbltDecls.h
"
for i in $vars; do
# check for existence, be strict because it is installed
@@ -5742,7 +5742,7 @@ src/tkbltDecls.h
- vars="-I./src"
+ vars=""
for i in $vars; do
PKG_INCLUDES="$PKG_INCLUDES $i"
done
@@ -5763,12 +5763,11 @@ src/tkbltDecls.h
done
+#if test "windows" = "${TEA_PLATFORM}"; then
+#TEA_ADD_CFLAGS([-TP -EHsc -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES])
+#fi
- PKG_CFLAGS="$PKG_CFLAGS "
-
-
-
- vars="src/tkbltStubLib.C"
+ vars="tkbltStubLib.C"
for i in $vars; do
# check for existence - allows for generic/win/unix VPATH
if test ! -f "${srcdir}/$i" -a ! -f "${srcdir}/generic/$i" \
@@ -5815,8 +5814,7 @@ src/tkbltDecls.h
# TEA_ADD_* any platform specific compiler/build info here.
#--------------------------------------------------------------------
-#CLEANFILES="$CLEANFILES pkgIndex.tcl"
-CLEANFILES="$CLEANFILES tkbltConfig.sh"
+CLEANFILES="$CLEANFILES"
if test "${TEA_PLATFORM}" = "windows" ; then
# Ensure no empty if clauses
:
diff --git a/tkblt/configure.ac b/tkblt/configure.ac
index da04b23..7e2d152 100644
--- a/tkblt/configure.ac
+++ b/tkblt/configure.ac
@@ -72,64 +72,66 @@ TEA_SETUP_COMPILER
#-----------------------------------------------------------------------
TEA_ADD_SOURCES([
-src/tkbltChain.C
-src/tkbltConfig.C
-src/tkbltGrAxis.C
-src/tkbltGrAxisOp.C
-src/tkbltGrAxisOption.C
-src/tkbltGrBind.C
-src/tkbltGrElemOp.C
-src/tkbltGrElemOption.C
-src/tkbltGrElem.C
-src/tkbltGrElemBar.C
-src/tkbltGrElemLine.C
-src/tkbltGrElemLineSpline.C
-src/tkbltGrHairs.C
-src/tkbltGrHairsOp.C
-src/tkbltGrLegd.C
-src/tkbltGrLegdOp.C
-src/tkbltGrMarkerOp.C
-src/tkbltGrMarkerOption.C
-src/tkbltGrMarker.C
-src/tkbltGrMarkerLine.C
-src/tkbltGrMarkerPolygon.C
-src/tkbltGrMarkerText.C
-src/tkbltGrMisc.C
-src/tkbltGrPenOp.C
-src/tkbltGrPenOption.C
-src/tkbltGrPen.C
-src/tkbltGrPenBar.C
-src/tkbltGrPenLine.C
-src/tkbltGrPostscript.C
-src/tkbltGrPostscriptOp.C
-src/tkbltGrPSOutput.C
-src/tkbltGrText.C
-src/tkbltGrXAxisOp.C
-src/tkbltGraph.C
-src/tkbltGraphBar.C
-src/tkbltGraphLine.C
-src/tkbltGraphOp.C
-src/tkbltGraphSup.C
-src/tkbltInt.C
-src/tkbltNsUtil.C
-src/tkbltParse.C
-src/tkbltOp.C
-src/tkbltStubInit.c
-src/tkbltStubLib.C
-src/tkbltSwitch.C
-src/tkbltVecCmd.C
-src/tkbltVecOp.C
-src/tkbltVecMath.C
-src/tkbltVector.C
+tkbltChain.C
+tkbltConfig.C
+tkbltGrAxis.C
+tkbltGrAxisOp.C
+tkbltGrAxisOption.C
+tkbltGrBind.C
+tkbltGrElemOp.C
+tkbltGrElemOption.C
+tkbltGrElem.C
+tkbltGrElemBar.C
+tkbltGrElemLine.C
+tkbltGrElemLineSpline.C
+tkbltGrHairs.C
+tkbltGrHairsOp.C
+tkbltGrLegd.C
+tkbltGrLegdOp.C
+tkbltGrMarkerOp.C
+tkbltGrMarkerOption.C
+tkbltGrMarker.C
+tkbltGrMarkerLine.C
+tkbltGrMarkerPolygon.C
+tkbltGrMarkerText.C
+tkbltGrMisc.C
+tkbltGrPenOp.C
+tkbltGrPenOption.C
+tkbltGrPen.C
+tkbltGrPenBar.C
+tkbltGrPenLine.C
+tkbltGrPostscript.C
+tkbltGrPostscriptOp.C
+tkbltGrPSOutput.C
+tkbltGrText.C
+tkbltGrXAxisOp.C
+tkbltGraph.C
+tkbltGraphBar.C
+tkbltGraphLine.C
+tkbltGraphOp.C
+tkbltGraphSup.C
+tkbltInt.C
+tkbltNsUtil.C
+tkbltParse.C
+tkbltOp.C
+tkbltStubInit.c
+tkbltStubLib.C
+tkbltSwitch.C
+tkbltVecCmd.C
+tkbltVecOp.C
+tkbltVecMath.C
+tkbltVector.C
])
TEA_ADD_HEADERS([
-src/tkbltVector.h
-src/tkbltDecls.h
+generic/tkbltVector.h
+generic/tkbltDecls.h
])
-TEA_ADD_INCLUDES([-I./src])
+TEA_ADD_INCLUDES([])
TEA_ADD_LIBS([-lstdc++])
-TEA_ADD_CFLAGS([])
-TEA_ADD_STUB_SOURCES([src/tkbltStubLib.C])
+#if test "windows" = "${TEA_PLATFORM}"; then
+#TEA_ADD_CFLAGS([-TP -EHsc -D_CRT_SECURE_NO_WARNINGS -D_USE_MATH_DEFINES])
+#fi
+TEA_ADD_STUB_SOURCES([tkbltStubLib.C])
TEA_ADD_TCL_SOURCES([library/graph.tcl])
#--------------------------------------------------------------------
@@ -144,8 +146,7 @@ TEA_ADD_TCL_SOURCES([library/graph.tcl])
# TEA_ADD_* any platform specific compiler/build info here.
#--------------------------------------------------------------------
-#CLEANFILES="$CLEANFILES pkgIndex.tcl"
-CLEANFILES="$CLEANFILES tkbltConfig.sh"
+CLEANFILES="$CLEANFILES"
if test "${TEA_PLATFORM}" = "windows" ; then
# Ensure no empty if clauses
:
diff --git a/tkblt/doc/graph.html b/tkblt/doc/graph.html
index 412c817..70f1e6f 100644
--- a/tkblt/doc/graph.html
+++ b/tkblt/doc/graph.html
@@ -438,23 +438,6 @@
Sets the color of the axis and tick labels. The default
is black.
- <B>-command</B> <I>prefix</I>
- Specifies a Tcl command to be invoked when formatting the
- axis tick labels. <I>Prefix</I> is a string containing the name
- of a Tcl proc and any extra arguments for the procedure.
- This command is invoked for each major tick on the axis.
- Two additional arguments are passed to the procedure: the
- pathname of the widget and the current the numeric value
- of the tick. The procedure returns the formatted tick
- label. If "" is returned, no label will appear next to
- the tick. You can get the standard tick labels again by
- setting <I>prefix</I> to "". The default is "".
-
- Please note that this procedure is invoked while the
- graph is redrawn. You may query configuration options.
- But do not them, because this can have unexpected
- results.
-
<B>-descending</B> <I>boolean</I>
Indicates whether the values along the axis are monotoni-
cally increasing or decreasing. If <I>boolean</I> is true, the
@@ -542,6 +525,31 @@
Specifies the font for axis tick labels. The default is
*-Courier-Bold-R-Normal-*-100-*.
+ <B>-tickformat</B> <I>formatStr</I>
+ Specifies a printf-like description to format teh axis
+ tick labels. You can get the standard tick labels again by
+ setting <I>formatStr</I> to "". The default is "".
+
+ <B>-tickformatcommand</B>, <B>-command</B> <I>prefix</I>
+ Specifies a Tcl command to be invoked when formatting the
+ axis tick labels. <I>Prefix</I> is a string containing the name
+ of a Tcl proc and any extra arguments for the procedure.
+ This command is invoked for each major tick on the axis.
+ Two additional arguments are passed to the procedure: the
+ pathname of the widget and the current the numeric value
+ of the tick. The procedure returns the formatted tick
+ label. If "" is returned, no label will appear next to
+ the tick. You can get the standard tick labels again by
+ setting <I>prefix</I> to "". The default is "".
+
+ The numeric value for the tick might change when using the
+ <B>-logscale</B> and <B>-tickformat</B> options.
+
+ Please note that this procedure is invoked while the
+ graph is redrawn. You may query configuration options.
+ But do not them, because this can have unexpected
+ results.
+
<B>-ticklength</B> <I>pixels</I>
Sets the length of major and minor ticks (minor ticks are
half the length of major ticks). If <I>pixels</I> is less than
diff --git a/tkblt/doc/graph.n b/tkblt/doc/graph.n
index 72df726..fbbbb9b 100644
--- a/tkblt/doc/graph.n
+++ b/tkblt/doc/graph.n
@@ -686,21 +686,6 @@ the element is always the first tag in the list. The default value is
Sets the color of the axis and tick labels.
The default is \f(CWblack\fR.
.TP
-\fB\-command \fIprefix\fR
-Specifies a Tcl command to be invoked when formatting the axis tick
-labels. \fIPrefix\fR is a string containing the name of a Tcl proc and
-any extra arguments for the procedure. This command is invoked for each
-major tick on the axis. Two additional arguments are passed to the
-procedure: the pathname of the widget and the current the numeric
-value of the tick. The procedure returns the formatted tick label. If
-\f(CW""\fR is returned, no label will appear next to the tick. You can
-get the standard tick labels again by setting \fIprefix\fR to
-\f(CW""\fR. The default is \f(CW""\fR.
-.sp 1
-Please note that this procedure is invoked while the graph is redrawn.
-You may query configuration options. But do not them, because this
-can have unexpected results.
-.TP
\fB\-descending \fIboolean\fR
Indicates whether the values along the axis are monotonically increasing or
decreasing. If \fIboolean\fR is true, the axis values will be
@@ -810,6 +795,29 @@ displayed. The default is \f(CW2\fR.
Specifies the font for axis tick labels. The default is
\f(CW*-Courier-Bold-R-Normal-*-100-*\fR.
.TP
+\fB\-tickformat\fR \fIformatStr\fR
+Specifies a printf-like description to format teh axis
+tick labels. You can get the standard tick labels again by
+setting \fIformatStr\fR to \f(CW""\fR. The default is \f(CW""\fR.
+.TP
+\fB\-tickformatcommand\fR, \fB\-command \fIprefix\fR
+Specifies a Tcl command to be invoked when formatting the axis tick
+labels. \fIPrefix\fR is a string containing the name of a Tcl proc and
+any extra arguments for the procedure. This command is invoked for each
+major tick on the axis. Two additional arguments are passed to the
+procedure: the pathname of the widget and the current the numeric
+value of the tick. The procedure returns the formatted tick label. If
+\f(CW""\fR is returned, no label will appear next to the tick. You can
+get the standard tick labels again by setting \fIprefix\fR to
+\f(CW""\fR. The default is \f(CW""\fR.
+.sp 1
+The numeric value for the tick might change when using the
+\fB\-logscale\fR and \fB\-tickformat\fR options.
+.sp 1
+Please note that this procedure is invoked while the graph is redrawn.
+You may query configuration options. But do not them, because this
+can have unexpected results.
+.TP
\fB\-ticklength \fIpixels\fR
Sets the length of major and minor ticks (minor ticks are half the
length of major ticks). If \fIpixels\fR is less than zero, the axis
diff --git a/tkblt/src/tkblt.decls b/tkblt/generic/tkblt.decls
index b4b5c67..b4b5c67 100644
--- a/tkblt/src/tkblt.decls
+++ b/tkblt/generic/tkblt.decls
diff --git a/tkblt/src/tkbltChain.C b/tkblt/generic/tkbltChain.C
index dbd317c..dbd317c 100644
--- a/tkblt/src/tkbltChain.C
+++ b/tkblt/generic/tkbltChain.C
diff --git a/tkblt/src/tkbltChain.h b/tkblt/generic/tkbltChain.h
index 6e254f9..6e254f9 100644
--- a/tkblt/src/tkbltChain.h
+++ b/tkblt/generic/tkbltChain.h
diff --git a/tkblt/src/tkbltConfig.C b/tkblt/generic/tkbltConfig.C
index 82fea4e..82fea4e 100644
--- a/tkblt/src/tkbltConfig.C
+++ b/tkblt/generic/tkbltConfig.C
diff --git a/tkblt/src/tkbltConfig.h b/tkblt/generic/tkbltConfig.h
index 790649b..790649b 100644
--- a/tkblt/src/tkbltConfig.h
+++ b/tkblt/generic/tkbltConfig.h
diff --git a/tkblt/src/tkbltDecls.h b/tkblt/generic/tkbltDecls.h
index d50e207..4d7c679 100644
--- a/tkblt/src/tkbltDecls.h
+++ b/tkblt/generic/tkbltDecls.h
@@ -9,64 +9,64 @@ extern "C" {
*/
/* 0 */
-EXTERN int Blt_CreateVector(Tcl_Interp*interp,
+TKBLT_STORAGE_CLASS int Blt_CreateVector(Tcl_Interp*interp,
const char *vecName, int size,
Blt_Vector**vecPtrPtr);
/* 1 */
-EXTERN int Blt_CreateVector2(Tcl_Interp*interp,
+TKBLT_STORAGE_CLASS int Blt_CreateVector2(Tcl_Interp*interp,
const char *vecName, const char *cmdName,
const char *varName, int initialSize,
Blt_Vector **vecPtrPtr);
/* 2 */
-EXTERN int Blt_DeleteVectorByName(Tcl_Interp*interp,
+TKBLT_STORAGE_CLASS int Blt_DeleteVectorByName(Tcl_Interp*interp,
const char *vecName);
/* 3 */
-EXTERN int Blt_DeleteVector(Blt_Vector *vecPtr);
+TKBLT_STORAGE_CLASS int Blt_DeleteVector(Blt_Vector *vecPtr);
/* 4 */
-EXTERN int Blt_GetVector(Tcl_Interp*interp, const char *vecName,
+TKBLT_STORAGE_CLASS int Blt_GetVector(Tcl_Interp*interp, const char *vecName,
Blt_Vector **vecPtrPtr);
/* 5 */
-EXTERN int Blt_GetVectorFromObj(Tcl_Interp*interp,
+TKBLT_STORAGE_CLASS int Blt_GetVectorFromObj(Tcl_Interp*interp,
Tcl_Obj *objPtr, Blt_Vector **vecPtrPtr);
/* 6 */
-EXTERN int Blt_ResetVector(Blt_Vector *vecPtr, double *dataArr,
+TKBLT_STORAGE_CLASS int Blt_ResetVector(Blt_Vector *vecPtr, double *dataArr,
int n, int arraySize, Tcl_FreeProc *freeProc);
/* 7 */
-EXTERN int Blt_ResizeVector(Blt_Vector *vecPtr, int n);
+TKBLT_STORAGE_CLASS int Blt_ResizeVector(Blt_Vector *vecPtr, int n);
/* 8 */
-EXTERN int Blt_VectorExists(Tcl_Interp*interp,
+TKBLT_STORAGE_CLASS int Blt_VectorExists(Tcl_Interp*interp,
const char *vecName);
/* 9 */
-EXTERN int Blt_VectorExists2(Tcl_Interp*interp,
+TKBLT_STORAGE_CLASS int Blt_VectorExists2(Tcl_Interp*interp,
const char *vecName);
/* 10 */
-EXTERN Blt_VectorId Blt_AllocVectorId(Tcl_Interp*interp,
+TKBLT_STORAGE_CLASS Blt_VectorId Blt_AllocVectorId(Tcl_Interp*interp,
const char *vecName);
/* 11 */
-EXTERN int Blt_GetVectorById(Tcl_Interp*interp,
+TKBLT_STORAGE_CLASS int Blt_GetVectorById(Tcl_Interp*interp,
Blt_VectorId clientId,
Blt_Vector **vecPtrPtr);
/* 12 */
-EXTERN void Blt_SetVectorChangedProc(Blt_VectorId clientId,
+TKBLT_STORAGE_CLASS void Blt_SetVectorChangedProc(Blt_VectorId clientId,
Blt_VectorChangedProc *proc,
ClientData clientData);
/* 13 */
-EXTERN void Blt_FreeVectorId(Blt_VectorId clientId);
+TKBLT_STORAGE_CLASS void Blt_FreeVectorId(Blt_VectorId clientId);
/* 14 */
-EXTERN const char * Blt_NameOfVectorId(Blt_VectorId clientId);
+TKBLT_STORAGE_CLASS const char * Blt_NameOfVectorId(Blt_VectorId clientId);
/* 15 */
-EXTERN const char * Blt_NameOfVector(Blt_Vector *vecPtr);
+TKBLT_STORAGE_CLASS const char * Blt_NameOfVector(Blt_Vector *vecPtr);
/* 16 */
-EXTERN int Blt_ExprVector(Tcl_Interp*interp, char *expr,
+TKBLT_STORAGE_CLASS int Blt_ExprVector(Tcl_Interp*interp, char *expr,
Blt_Vector *vecPtr);
/* 17 */
-EXTERN void Blt_InstallIndexProc(Tcl_Interp*interp,
+TKBLT_STORAGE_CLASS void Blt_InstallIndexProc(Tcl_Interp*interp,
const char *indexName,
Blt_VectorIndexProc *procPtr);
/* 18 */
-EXTERN double Blt_VecMin(Blt_Vector *vPtr);
+TKBLT_STORAGE_CLASS double Blt_VecMin(Blt_Vector *vPtr);
/* 19 */
-EXTERN double Blt_VecMax(Blt_Vector *vPtr);
+TKBLT_STORAGE_CLASS double Blt_VecMax(Blt_Vector *vPtr);
typedef struct TkbltStubs {
int magic;
diff --git a/tkblt/src/tkbltGrAxis.C b/tkblt/generic/tkbltGrAxis.C
index 2d8dbfb..bac6316 100644
--- a/tkblt/src/tkbltGrAxis.C
+++ b/tkblt/generic/tkbltGrAxis.C
@@ -42,6 +42,7 @@
#include "tkbltGrDef.h"
#include "tkbltConfig.h"
#include "tkbltGrPSOutput.h"
+#include "tkbltInt.h"
using namespace Blt;
@@ -83,8 +84,8 @@ static Tk_OptionSpec optionSpecs[] = {
{TK_OPTION_COLOR, "-color", "color", "Color",
STD_NORMAL_FOREGROUND, -1, Tk_Offset(AxisOptions, tickColor),
0, NULL, CACHE},
- {TK_OPTION_STRING, "-command", "command", "Command",
- NULL, -1, Tk_Offset(AxisOptions, formatCmd), TK_OPTION_NULL_OK, NULL, 0},
+ {TK_OPTION_SYNONYM, "-command", NULL, NULL,
+ NULL, 0, -1, 0, (ClientData)"-tickformatcommand", 0},
{TK_OPTION_BOOLEAN, "-descending", "descending", "Descending",
"no", -1, Tk_Offset(AxisOptions, descending), 0, NULL, RESET},
{TK_OPTION_BOOLEAN, "-exterior", "exterior", "exterior",
@@ -178,6 +179,10 @@ static Tk_OptionSpec optionSpecs[] = {
"8", -1, Tk_Offset(AxisOptions, tickLength), 0, NULL, LAYOUT},
{TK_OPTION_INT, "-tickdefault", "tickDefault", "TickDefault",
"4", -1, Tk_Offset(AxisOptions, reqNumMajorTicks), 0, NULL, RESET},
+ {TK_OPTION_STRING, "-tickformat", "tickFormat", "TickFormat",
+ NULL, -1, Tk_Offset(AxisOptions, tickFormat), TK_OPTION_NULL_OK, NULL, 0},
+ {TK_OPTION_STRING, "-tickformatcommand", "tickformatcommand", "TickFormatCommand",
+ NULL, -1, Tk_Offset(AxisOptions, tickFormatCmd), TK_OPTION_NULL_OK, NULL, 0},
{TK_OPTION_STRING, "-title", "title", "Title",
NULL, -1, Tk_Offset(AxisOptions, title), TK_OPTION_NULL_OK, NULL, LAYOUT},
{TK_OPTION_BOOLEAN, "-titlealternate", "titleAlternate", "TitleAlternate",
@@ -201,8 +206,7 @@ TickLabel::TickLabel(char* str)
TickLabel::~TickLabel()
{
- if (string)
- delete [] string;
+ delete [] string;
}
Ticks::Ticks(int cnt)
@@ -213,8 +217,7 @@ Ticks::Ticks(int cnt)
Ticks::~Ticks()
{
- if (values)
- delete [] values;
+ delete [] values;
}
Axis::Axis(Graph* graphPtr, const char* name, int margin, Tcl_HashEntry* hPtr)
@@ -309,10 +312,8 @@ Axis::~Axis()
if (hashPtr_)
Tcl_DeleteHashEntry(hashPtr_);
- if (name_)
- delete [] name_;
- if (className_)
- delete [] className_;
+ delete [] name_;
+ delete [] className_;
if (tickGC_)
Tk_FreeGC(graphPtr_->display_, tickGC_);
@@ -320,27 +321,22 @@ Axis::~Axis()
if (activeTickGC_)
Tk_FreeGC(graphPtr_->display_, activeTickGC_);
- if (ops->major.segments)
- delete [] ops->major.segments;
- if (ops->major.gc)
+ delete [] ops->major.segments;
+ if (ops->major.gc)
graphPtr_->freePrivateGC(ops->major.gc);
- if (ops->minor.segments)
- delete [] ops->minor.segments;
+ delete [] ops->minor.segments;
if (ops->minor.gc)
graphPtr_->freePrivateGC(ops->minor.gc);
- if (t1Ptr_)
- delete t1Ptr_;
- if (t2Ptr_)
- delete t2Ptr_;
+ delete t1Ptr_;
+ delete t2Ptr_;
freeTickLabels();
delete tickLabels_;
- if (segments_)
- delete [] segments_;
+ delete [] segments_;
Tk_FreeConfigOptions((char*)ops_, optionTable_, graphPtr_->tkwin_);
free(ops_);
@@ -384,9 +380,9 @@ int Axis::configure()
scrollMax_ = NAN;
}
- float angle = fmod(ops->tickAngle, 360.0);
- if (angle < 0.0f)
- angle += 360.0f;
+ double angle = fmod(ops->tickAngle, 360.0);
+ if (angle < 0.0)
+ angle += 360.0;
ops->tickAngle = angle;
resetTextStyles();
@@ -395,8 +391,8 @@ int Axis::configure()
if (ops->title) {
int w, h;
graphPtr_->getTextExtents(ops->titleFont, ops->title, -1, &w, &h);
- titleWidth_ = (unsigned short int)w;
- titleHeight_ = (unsigned short int)h;
+ titleWidth_ = (unsigned int)w;
+ titleHeight_ = (unsigned int)h;
}
return TCL_OK;
@@ -446,7 +442,7 @@ void Axis::mapStacked(int count, int margin)
graphPtr_->getTextExtents(ops->tickFont, "0", 1, &w, &h);
screenMin_ += (slice * count) + 2 + h / 2;
screenRange_ = slice - 2 * 2 - h;
- screenScale_ = 1.0f / screenRange_;
+ screenScale_ = 1.0 / screenRange_;
AxisInfo info;
offsets(margin, 0, &info);
@@ -480,19 +476,13 @@ void Axis::mapGridlines()
needed = t1Ptr->nTicks;
if (needed != ops->major.nAllocated) {
- if (ops->major.segments) {
- delete [] ops->major.segments;
- ops->major.segments = NULL;
- }
+ delete [] ops->major.segments;
ops->major.segments = new Segment2d[needed];
ops->major.nAllocated = needed;
}
needed = (t1Ptr->nTicks * t2Ptr->nTicks);
if (needed != ops->minor.nAllocated) {
- if (ops->minor.segments) {
- delete [] ops->minor.segments;
- ops->minor.segments = NULL;
- }
+ delete [] ops->minor.segments;
ops->minor.segments = new Segment2d[needed];
ops->minor.nAllocated = needed;
}
@@ -598,7 +588,7 @@ void Axis::draw(Drawable drawable)
max_ = EXP10(max_);
}
updateScrollbar(graphPtr_->interp_, ops->scrollCmdObjPtr,
- viewMin, viewMax, worldWidth);
+ (int)viewMin, (int)viewMax, (int)worldWidth);
}
else {
viewMax = (fract * worldWidth);
@@ -610,7 +600,7 @@ void Axis::draw(Drawable drawable)
max_ = EXP10(max_);
}
updateScrollbar(graphPtr_->interp_, ops->scrollCmdObjPtr,
- viewMax, viewMin, worldWidth);
+ (int)viewMax, (int)viewMin, (int)worldWidth);
}
}
@@ -729,9 +719,7 @@ void Axis::drawLimits(Drawable drawable)
void Axis::setClass(ClassId classId)
{
- if (className_)
- delete [] className_;
- className_ =NULL;
+ delete [] className_;
classId_ = classId;
switch (classId) {
@@ -745,6 +733,7 @@ void Axis::setClass(ClassId classId)
className_ = dupstr("YAxis");
break;
default:
+ className_ = NULL;
break;
}
}
@@ -783,7 +772,7 @@ void Axis::logScale(double min, double max)
minorStep = 0.2;
}
else
- nMinor = (majorStep/minorStep) - 1;
+ nMinor = (int)(majorStep/minorStep) - 1;
}
else {
if (tickMin == tickMax)
@@ -841,7 +830,7 @@ void Axis::linearScale(double min, double max)
axisMin = tickMin = floor(min / step) * step + 0.0;
axisMax = tickMax = ceil(max / step) * step + 0.0;
- nTicks = ((tickMax-tickMin) / step) + 1;
+ nTicks = (int)((tickMax-tickMin) / step) + 1;
}
majorSweep_.step = step;
majorSweep_.initial = tickMin;
@@ -1047,12 +1036,16 @@ TickLabel* Axis::makeLabel(double value)
AxisOptions* ops = (AxisOptions*)ops_;
char string[TICK_LABEL_SIZE + 1];
- if (ops->logScale)
+
+ if (ops->tickFormat && *ops->tickFormat) {
+ snprintf(string, TICK_LABEL_SIZE, ops->tickFormat, value);
+ } else if (ops->logScale) {
snprintf(string, TICK_LABEL_SIZE, "1E%d", int(value));
- else
- snprintf(string, TICK_LABEL_SIZE, "%.*G", 15, value);
+ } else {
+ snprintf(string, TICK_LABEL_SIZE, "%.15G", value);
+ }
- if (ops->formatCmd) {
+ if (ops->tickFormatCmd) {
Tcl_Interp* interp = graphPtr_->interp_;
Tk_Window tkwin = graphPtr_->tkwin_;
@@ -1060,7 +1053,7 @@ TickLabel* Axis::makeLabel(double value)
// name of the widget and the default tick label as arguments when
// invoking it. Copy and save the new label from interp->result.
Tcl_ResetResult(interp);
- if (Tcl_VarEval(interp, ops->formatCmd, " ", Tk_PathName(tkwin),
+ if (Tcl_VarEval(interp, ops->tickFormatCmd, " ", Tk_PathName(tkwin),
" ", string, NULL) != TCL_OK) {
Tcl_BackgroundError(interp);
}
@@ -1268,7 +1261,17 @@ void Axis::offsets(int margin, int offset, AxisInfo *infoPtr)
switch (margin) {
case MARGIN_TOP:
{
- axisLine = graphPtr_->top_;
+ int mark = graphPtr_->top_ - offset - pad;
+ tickAnchor_ = TK_ANCHOR_S;
+ left_ = screenMin_ - inset - 2;
+ right_ = screenMin_ + screenRange_ + inset - 1;
+ if (gops->stackAxes)
+ top_ = mark - marginPtr->axesOffset;
+ else
+ top_ = mark - height_;
+ bottom_ = mark;
+
+ axisLine = bottom_;
if (ops->exterior) {
axisLine -= gops->plotBW + axisPad + ops->lineWidth / 2;
tickLabel = axisLine - 2;
@@ -1283,16 +1286,6 @@ void Axis::offsets(int margin, int offset, AxisInfo *infoPtr)
tickLabel = graphPtr_->top_ - gops->plotBW - 2;
}
- int mark = graphPtr_->top_ - offset - pad;
- tickAnchor_ = TK_ANCHOR_S;
- left_ = screenMin_ - inset - 2;
- right_ = screenMin_ + screenRange_ + inset - 1;
- if (gops->stackAxes)
- top_ = mark - marginPtr->axesOffset;
- else
- top_ = mark - height_;
- bottom_ = mark;
-
int x, y;
if (ops->titleAlternate) {
x = graphPtr_->right_ + AXIS_PAD_TITLE;
@@ -1328,23 +1321,8 @@ void Axis::offsets(int margin, int offset, AxisInfo *infoPtr)
* tick
* title
*/
- axisLine = graphPtr_->bottom_;
- if (gops->plotRelief == TK_RELIEF_SOLID)
- axisLine++;
-
- if (ops->exterior) {
- axisLine += gops->plotBW + axisPad + ops->lineWidth / 2;
- tickLabel = axisLine + 2;
- if (ops->lineWidth > 0)
- tickLabel += ops->tickLength;
- }
- else {
- axisLine -= axisPad + ops->lineWidth / 2;
- tickLabel = graphPtr_->bottom_ + gops->plotBW + 2;
- }
-
int mark = graphPtr_->bottom_ + offset;
- float fangle = fmod(ops->tickAngle, 90.0);
+ double fangle = fmod(ops->tickAngle, 90.0);
if (fangle == 0.0)
tickAnchor_ = TK_ANCHOR_N;
else {
@@ -1357,12 +1335,27 @@ void Axis::offsets(int margin, int offset, AxisInfo *infoPtr)
left_ = screenMin_ - inset - 2;
right_ = screenMin_ + screenRange_ + inset - 1;
- top_ = graphPtr_->bottom_ + labelOffset - t1;
+ top_ = mark + labelOffset - t1;
if (gops->stackAxes)
bottom_ = mark + marginPtr->axesOffset - 1;
else
bottom_ = mark + height_ - 1;
+ axisLine = top_;
+ if (gops->plotRelief == TK_RELIEF_SOLID)
+ axisLine++;
+
+ if (ops->exterior) {
+ axisLine += gops->plotBW + axisPad + ops->lineWidth / 2;
+ tickLabel = axisLine + 2;
+ if (ops->lineWidth > 0)
+ tickLabel += ops->tickLength;
+ }
+ else {
+ axisLine -= axisPad + ops->lineWidth / 2;
+ tickLabel = graphPtr_->bottom_ + gops->plotBW + 2;
+ }
+
int x, y;
if (ops->titleAlternate) {
x = graphPtr_->right_ + AXIS_PAD_TITLE;
@@ -1421,7 +1414,17 @@ void Axis::offsets(int margin, int offset, AxisInfo *infoPtr)
* G = graph border width
* H = highlight thickness
*/
- axisLine = graphPtr_->left_;
+ int mark = graphPtr_->left_ - offset;
+ tickAnchor_ = TK_ANCHOR_E;
+ if (gops->stackAxes)
+ left_ = mark - marginPtr->axesOffset;
+ else
+ left_ = mark - width_;
+ right_ = mark - 3;
+ top_ = screenMin_ - inset - 2;
+ bottom_ = screenMin_ + screenRange_ + inset - 1;
+
+ axisLine = right_;
if (ops->exterior) {
axisLine -= gops->plotBW + axisPad + ops->lineWidth / 2;
tickLabel = axisLine - 2;
@@ -1435,16 +1438,6 @@ void Axis::offsets(int margin, int offset, AxisInfo *infoPtr)
tickLabel = graphPtr_->left_ - gops->plotBW - 2;
}
- int mark = graphPtr_->left_ - offset;
- tickAnchor_ = TK_ANCHOR_E;
- if (gops->stackAxes)
- left_ = mark - marginPtr->axesOffset;
- else
- left_ = mark - width_;
- right_ = mark - 3;
- top_ = screenMin_ - inset - 2;
- bottom_ = screenMin_ + screenRange_ + inset - 1;
-
int x, y;
if (ops->titleAlternate) {
x = mark - (width_ / 2);
@@ -1466,7 +1459,18 @@ void Axis::offsets(int margin, int offset, AxisInfo *infoPtr)
case MARGIN_RIGHT:
{
- axisLine = graphPtr_->right_;
+ int mark = graphPtr_->right_ + offset + pad;
+ tickAnchor_ = TK_ANCHOR_W;
+ left_ = mark;
+ if (gops->stackAxes)
+ right_ = mark + marginPtr->axesOffset - 1;
+ else
+ right_ = mark + width_ - 1;
+
+ top_ = screenMin_ - inset - 2;
+ bottom_ = screenMin_ + screenRange_ + inset -1;
+
+ axisLine = left_;
if (gops->plotRelief == TK_RELIEF_SOLID)
axisLine++;
@@ -1481,17 +1485,6 @@ void Axis::offsets(int margin, int offset, AxisInfo *infoPtr)
tickLabel = graphPtr_->right_ + gops->plotBW + 2;
}
- int mark = graphPtr_->right_ + offset + pad;
- tickAnchor_ = TK_ANCHOR_W;
- left_ = mark;
- if (gops->stackAxes)
- right_ = mark + marginPtr->axesOffset - 1;
- else
- right_ = mark + width_ - 1;
-
- top_ = screenMin_ - inset - 2;
- bottom_ = screenMin_ + screenRange_ + inset -1;
-
int x, y;
if (ops->titleAlternate) {
x = mark + (width_ / 2);
@@ -1562,10 +1555,8 @@ void Axis::makeSegments(AxisInfo *infoPtr)
{
AxisOptions* ops = (AxisOptions*)ops_;
- if (segments_) {
- delete [] segments_;
- segments_ = NULL;
- }
+ delete [] segments_;
+ segments_ = NULL;
Ticks* t1Ptr = ops->t1UPtr ? ops->t1UPtr : t1Ptr_;
Ticks* t2Ptr = ops->t2UPtr ? ops->t2UPtr : t2Ptr_;
@@ -1814,14 +1805,14 @@ void Axis::printLimits(PSOutput* psPtr)
ops->limitsTextStyle.angle = 90.0;
ops->limitsTextStyle.anchor = TK_ANCHOR_SE;
- ts.printText(psPtr, maxPtr, (double)graphPtr_->right_, hMax);
+ ts.printText(psPtr, maxPtr, graphPtr_->right_, (int)hMax);
hMax -= (textWidth + spacing);
}
else {
ops->limitsTextStyle.angle = 0.0;
ops->limitsTextStyle.anchor = TK_ANCHOR_NW;
- ts.printText(psPtr, maxPtr, vMax, (double)graphPtr_->top_);
+ ts.printText(psPtr, maxPtr, (int)vMax, graphPtr_->top_);
vMax += (textWidth + spacing);
}
}
@@ -1836,13 +1827,13 @@ void Axis::printLimits(PSOutput* psPtr)
if (isHoriz) {
ops->limitsTextStyle.angle = 90.0;
- ts.printText(psPtr, minPtr, (double)graphPtr_->left_, hMin);
+ ts.printText(psPtr, minPtr, graphPtr_->left_, (int)hMin);
hMin -= (textWidth + spacing);
}
else {
ops->limitsTextStyle.angle = 0.0;
- ts.printText(psPtr, minPtr, vMin, (double)graphPtr_->bottom_);
+ ts.printText(psPtr, minPtr, (int)vMin, graphPtr_->bottom_);
vMin += (textWidth + spacing);
}
}
@@ -1918,12 +1909,12 @@ void Axis::getGeometry()
labelPtr->width = lw;
labelPtr->height = lh;
- if (ops->tickAngle != 0.0f) {
+ if (ops->tickAngle != 0.0) {
// Rotated label width and height
double rlw, rlh;
graphPtr_->getBoundingBox(lw, lh, ops->tickAngle, &rlw, &rlh, NULL);
- lw = rlw;
- lh = rlh;
+ lw = (int)rlw;
+ lh = (int)rlh;
}
if (maxTickWidth_ < int(lw))
maxTickWidth_ = lw;
diff --git a/tkblt/src/tkbltGrAxis.h b/tkblt/generic/tkbltGrAxis.h
index 2e35d3f..d459e8c 100644
--- a/tkblt/src/tkbltGrAxis.h
+++ b/tkblt/generic/tkbltGrAxis.h
@@ -114,7 +114,7 @@ namespace Blt {
int showTicks;
double windowSize;
- const char *formatCmd;
+ const char *tickFormatCmd;
int descending;
int labelOffset;
TextStyleOptions limitsTextStyle;
@@ -153,6 +153,8 @@ namespace Blt {
Tk_Font tickFont;
Tk_Font titleFont;
XColor* titleColor;
+
+ const char *tickFormat;
} AxisOptions;
class Axis {
@@ -175,8 +177,8 @@ namespace Blt {
Chain* chain;
Point2d titlePos_;
- unsigned short int titleWidth_;
- unsigned short int titleHeight_;
+ unsigned int titleWidth_;
+ unsigned int titleHeight_;
double min_;
double max_;
double scrollMin_;
@@ -194,14 +196,14 @@ namespace Blt {
Segment2d *segments_;
int nSegments_;
Chain* tickLabels_;
- short int left_;
- short int right_;
- short int top_;
- short int bottom_;
- short int width_;
- short int height_;
- short int maxTickWidth_;
- short int maxTickHeight_;
+ int left_;
+ int right_;
+ int top_;
+ int bottom_;
+ int width_;
+ int height_;
+ int maxTickWidth_;
+ int maxTickHeight_;
Tk_Anchor tickAnchor_;
GC tickGC_;
GC activeTickGC_;
diff --git a/tkblt/src/tkbltGrAxisOp.C b/tkblt/generic/tkbltGrAxisOp.C
index 89b2be9..e467d53 100644
--- a/tkblt/src/tkbltGrAxisOp.C
+++ b/tkblt/generic/tkbltGrAxisOp.C
@@ -36,6 +36,7 @@
#include "tkbltGrAxis.h"
#include "tkbltGrAxisOp.h"
#include "tkbltGrMisc.h"
+#include "tkbltInt.h"
using namespace Blt;
@@ -554,10 +555,14 @@ int AxisTypeOp(Axis* axisPtr, Tcl_Interp* interp,
{
const char* typeName = "";
if (axisPtr->use_) {
- if (axisNames[axisPtr->margin_].classId == CID_AXIS_X)
+ switch (axisPtr->classId_) {
+ case CID_AXIS_X:
typeName = "x";
- else if (axisNames[axisPtr->margin_].classId == CID_AXIS_Y)
+ break;
+ case CID_AXIS_Y:
typeName = "y";
+ break;
+ }
}
Tcl_SetStringObj(Tcl_GetObjResult(interp), typeName, -1);
diff --git a/tkblt/src/tkbltGrAxisOp.h b/tkblt/generic/tkbltGrAxisOp.h
index 777aea7..777aea7 100644
--- a/tkblt/src/tkbltGrAxisOp.h
+++ b/tkblt/generic/tkbltGrAxisOp.h
diff --git a/tkblt/src/tkbltGrAxisOption.C b/tkblt/generic/tkbltGrAxisOption.C
index e8b1f30..6f91d99 100644
--- a/tkblt/src/tkbltGrAxisOption.C
+++ b/tkblt/generic/tkbltGrAxisOption.C
@@ -35,6 +35,7 @@
#include "tkbltGrAxis.h"
#include "tkbltGrAxisOption.h"
#include "tkbltConfig.h"
+#include "tkbltInt.h"
using namespace Blt;
@@ -215,8 +216,7 @@ static void TicksFreeProc(ClientData clientData, Tk_Window tkwin,
char *ptr)
{
Ticks* ticksPtr = *(Ticks**)ptr;
- if (ticksPtr)
- delete ticksPtr;
+ delete ticksPtr;
}
static Tk_CustomOptionSetProc ObjectSetProc;
diff --git a/tkblt/src/tkbltGrAxisOption.h b/tkblt/generic/tkbltGrAxisOption.h
index 4efa8ee..4efa8ee 100644
--- a/tkblt/src/tkbltGrAxisOption.h
+++ b/tkblt/generic/tkbltGrAxisOption.h
diff --git a/tkblt/src/tkbltGrBind.C b/tkblt/generic/tkbltGrBind.C
index 2873c8f..3e7e81e 100644
--- a/tkblt/src/tkbltGrBind.C
+++ b/tkblt/generic/tkbltGrBind.C
@@ -160,8 +160,7 @@ void BindTable::doEvent(XEvent* eventPtr)
const char** tagArray = graphPtr_->getTags(item, classId, &nTags);
Tk_BindEvent(table_, eventPtr, graphPtr_->tkwin_, nTags, (void**)tagArray);
- if (tagArray)
- delete [] tagArray;
+ delete [] tagArray;
}
void BindTable::pickItem(XEvent* eventPtr)
diff --git a/tkblt/src/tkbltGrBind.h b/tkblt/generic/tkbltGrBind.h
index 7947210..7947210 100644
--- a/tkblt/src/tkbltGrBind.h
+++ b/tkblt/generic/tkbltGrBind.h
diff --git a/tkblt/src/tkbltGrDef.h b/tkblt/generic/tkbltGrDef.h
index d73836a..d73836a 100644
--- a/tkblt/src/tkbltGrDef.h
+++ b/tkblt/generic/tkbltGrDef.h
diff --git a/tkblt/src/tkbltGrElem.C b/tkblt/generic/tkbltGrElem.C
index c80cbc1..faf1b72 100644
--- a/tkblt/src/tkbltGrElem.C
+++ b/tkblt/generic/tkbltGrElem.C
@@ -37,6 +37,7 @@
#include "tkbltGrBind.h"
#include "tkbltGrElem.h"
#include "tkbltGrPen.h"
+#include "tkbltInt.h"
using namespace Blt;
@@ -52,14 +53,12 @@ ElemValues::ElemValues()
ElemValues::~ElemValues()
{
- if (values_)
- delete [] values_;
+ delete [] values_;
}
void ElemValues::reset()
{
- if (values_)
- delete [] values_;
+ delete [] values_;
values_ =NULL;
nValues_ =0;
min_ =0;
@@ -133,8 +132,7 @@ int ElemValuesVector::fetchValues(Blt_Vector* vector)
{
Graph* graphPtr = elemPtr_->graphPtr_;
- if (values_)
- delete [] values_;
+ delete [] values_;
values_ = NULL;
nValues_ = 0;
min_ =0;
@@ -200,11 +198,9 @@ Element::~Element()
if (hashPtr_)
Tcl_DeleteHashEntry(hashPtr_);
- if (name_)
- delete [] name_;
+ delete [] name_;
- if (activeIndices_)
- delete [] activeIndices_;
+ delete [] activeIndices_;
Tk_FreeConfigOptions((char*)ops_, optionTable_, graphPtr_->tkwin_);
free(ops_);
diff --git a/tkblt/src/tkbltGrElem.h b/tkblt/generic/tkbltGrElem.h
index eabc9e9..8904df0 100644
--- a/tkblt/src/tkbltGrElem.h
+++ b/tkblt/generic/tkbltGrElem.h
@@ -156,8 +156,8 @@ namespace Blt {
Graph* graphPtr_;
const char* name_;
Tcl_HashEntry* hashPtr_;
- unsigned short row_;
- unsigned short col_;
+ unsigned row_;
+ unsigned col_;
int nActiveIndices_;
int* activeIndices_;
int active_;
diff --git a/tkblt/src/tkbltGrElemBar.C b/tkblt/generic/tkbltGrElemBar.C
index ad3099e..6698760 100644
--- a/tkblt/src/tkbltGrElemBar.C
+++ b/tkblt/generic/tkbltGrElemBar.C
@@ -41,6 +41,7 @@
#include "tkbltGrDef.h"
#include "tkbltConfig.h"
#include "tkbltGrPSOutput.h"
+#include "tkbltInt.h"
using namespace Blt;
@@ -227,8 +228,7 @@ BarElement::~BarElement()
{
BarElementOptions* ops = (BarElementOptions*)ops_;
- if (builtinPenPtr)
- delete builtinPenPtr;
+ delete builtinPenPtr;
reset();
@@ -272,14 +272,14 @@ void BarElement::map()
return;
int nPoints = NUMBEROFPOINTS(ops);
- double barWidth = (ops->barWidth > 0.0f) ? ops->barWidth : gops->barWidth;
+ double barWidth = (ops->barWidth > 0.0) ? ops->barWidth : gops->barWidth;
AxisOptions* axisyops = (AxisOptions*)ops->yAxis->ops();
double baseline = (axisyops->logScale) ? 0.0 : gops->baseline;
double barOffset = barWidth * 0.5;
// Create an array of bars representing the screen coordinates of all the
// segments in the bar.
- XRectangle* bars = new XRectangle[nPoints];
+ Rectangle* bars = new Rectangle[nPoints];
int* barToData = new int[nPoints];
double* x = ops->coords.x->values_;
@@ -287,7 +287,7 @@ void BarElement::map()
int count = 0;
int ii;
- XRectangle* rp;
+ Rectangle* rp;
for (rp=bars, ii=0; ii<nPoints; ii++) {
// Two opposite corners of the rectangle in graph coordinates
Point2d c1, c2;
@@ -428,13 +428,15 @@ void BarElement::map()
continue;
int height = (int)dy;
+ int width = (int)dx;
if (invertBar)
- rp->y = (short int)MIN(c1.y, c2.y);
+ rp->y = (int)MIN(c1.y, c2.y);
else
- rp->y = (short int)(MAX(c1.y, c2.y)) - height;
+ rp->y = (int)(MAX(c1.y, c2.y)) - height;
- rp->x = (short int)MIN(c1.x, c2.x);
- rp->width = (short int)dx + 1;
+ rp->x = (int)MIN(c1.x, c2.x);
+
+ rp->width = width + 1;
rp->width |= 0x1;
if (rp->width < 1)
rp->width = 1;
@@ -621,7 +623,7 @@ void BarElement::closest()
int imin = 0;
int ii;
- XRectangle* bp;
+ Rectangle* bp;
for (bp=bars_, ii=0; ii<nBars_; ii++, bp++) {
if (PointInRectangle(bp, searchPtr->x, searchPtr->y)) {
imin = barToData_[ii];
@@ -873,7 +875,7 @@ void BarElement::checkStacks(Axis* xAxis, Axis* yAxis,
// Check if any of the y-values (because of stacking) are greater
// than the current limits of the graph.
- if (gp->sum < 0.0f) {
+ if (gp->sum < 0.0) {
if (*minPtr > gp->sum)
*minPtr = gp->sum;
}
@@ -904,9 +906,9 @@ void BarElement::mergePens(BarStyle** dataToStyle)
// We have more than one style. Group bar segments of like pen styles together
if (nBars_ > 0) {
- XRectangle* bars = new XRectangle[nBars_];
+ Rectangle* bars = new Rectangle[nBars_];
int* barToData = new int[nBars_];
- XRectangle* bp = bars;
+ Rectangle* bp = bars;
int* ip = barToData;
for (ChainLink* link = Chain_FirstLink(ops->stylePalette); link;
link = Chain_NextLink(link)) {
@@ -979,18 +981,16 @@ void BarElement::mergePens(BarStyle** dataToStyle)
void BarElement::mapActive()
{
- if (activeRects_) {
- delete [] activeRects_;
- activeRects_ = NULL;
- }
- if (activeToData_) {
- delete [] activeToData_;
- activeToData_ = NULL;
- }
+ delete [] activeRects_;
+ activeRects_ = NULL;
+
+ delete [] activeToData_;
+ activeToData_ = NULL;
+
nActive_ = 0;
if (nActiveIndices_ > 0) {
- XRectangle* activeRects = new XRectangle[nActiveIndices_];
+ Rectangle* activeRects = new Rectangle[nActiveIndices_];
int* activeToData = new int[nActiveIndices_];
int count = 0;
for (int ii=0; ii<nBars_; ii++) {
@@ -1015,34 +1015,26 @@ void BarElement::reset()
ResetStylePalette(ops->stylePalette);
- if (activeRects_)
- delete [] activeRects_;
+ delete [] activeRects_;
activeRects_ = NULL;
- if (activeToData_)
- delete [] activeToData_;
+ delete [] activeToData_;
activeToData_ = NULL;
- if (xeb_.segments)
- delete [] xeb_.segments;
+ delete [] xeb_.segments;
xeb_.segments = NULL;
- if (xeb_.map)
- delete [] xeb_.map;
+ delete [] xeb_.map;
xeb_.map = NULL;
xeb_.length = 0;
- if (yeb_.segments)
- delete [] yeb_.segments;
+ delete [] yeb_.segments;
yeb_.segments = NULL;
- if (yeb_.map)
- delete [] yeb_.map;
+ delete [] yeb_.map;
yeb_.map = NULL;
yeb_.length = 0;
- if (bars_)
- delete [] bars_;
+ delete [] bars_;
bars_ = NULL;
- if (barToData_)
- delete [] barToData_;
+ delete [] barToData_;
barToData_ = NULL;
nActive_ = 0;
@@ -1189,10 +1181,10 @@ void BarElement::mapErrorBars(BarStyle **dataToStyle)
}
void BarElement::drawSegments(Drawable drawable, BarPen* penPtr,
- XRectangle *bars, int nBars)
+ Rectangle *bars, int nBars)
{
BarPenOptions* pops = (BarPenOptions*)penPtr->ops();
- for (XRectangle *rp = bars, *rend = rp + nBars; rp < rend; rp++) {
+ for (Rectangle *rp = bars, *rend = rp + nBars; rp < rend; rp++) {
if ((rp->width < 1) || (rp->height < 1))
continue;
@@ -1207,7 +1199,7 @@ void BarElement::drawSegments(Drawable drawable, BarPen* penPtr,
}
void BarElement::drawValues(Drawable drawable, BarPen* penPtr,
- XRectangle *bars, int nBars, int *barToData)
+ Rectangle *bars, int nBars, int *barToData)
{
BarElementOptions* ops = (BarElementOptions*)ops_;
BarPenOptions* pops = (BarPenOptions*)penPtr->ops();
@@ -1219,7 +1211,7 @@ void BarElement::drawValues(Drawable drawable, BarPen* penPtr,
TextStyle ts(graphPtr_, &pops->valueStyle);
int count = 0;
- for (XRectangle *rp = bars, *rend = rp + nBars; rp < rend; rp++) {
+ for (Rectangle *rp = bars, *rend = rp + nBars; rp < rend; rp++) {
Point2d anchorPos;
char string[TCL_DOUBLE_SPACE * 2 + 2];
@@ -1255,10 +1247,10 @@ void BarElement::drawValues(Drawable drawable, BarPen* penPtr,
}
void BarElement::printSegments(PSOutput* psPtr, BarPen* penPtr,
- XRectangle *bars, int nBars)
+ Rectangle *bars, int nBars)
{
BarPenOptions* pops = (BarPenOptions*)penPtr->ops();
- for (XRectangle *rp = bars, *rend = rp + nBars; rp < rend; rp++) {
+ for (Rectangle *rp = bars, *rend = rp + nBars; rp < rend; rp++) {
if ((rp->width < 1) || (rp->height < 1))
continue;
@@ -1275,7 +1267,7 @@ void BarElement::printSegments(PSOutput* psPtr, BarPen* penPtr,
}
void BarElement::printValues(PSOutput* psPtr, BarPen* penPtr,
- XRectangle *bars, int nBars, int *barToData)
+ Rectangle *bars, int nBars, int *barToData)
{
BarPenOptions* pops = (BarPenOptions*)penPtr->ops();
BarElementOptions* ops = (BarElementOptions*)ops_;
@@ -1287,7 +1279,7 @@ void BarElement::printValues(PSOutput* psPtr, BarPen* penPtr,
fmt = "%g";
TextStyle ts(graphPtr_, &pops->valueStyle);
- for (XRectangle *rp = bars, *rend = rp + nBars; rp < rend; rp++) {
+ for (Rectangle *rp = bars, *rend = rp + nBars; rp < rend; rp++) {
double x = ops->coords.x->values_[barToData[count]];
double y = ops->coords.y->values_[barToData[count]];
diff --git a/tkblt/src/tkbltGrElemBar.h b/tkblt/generic/tkbltGrElemBar.h
index 9207a9f..8b48114 100644
--- a/tkblt/src/tkbltGrElemBar.h
+++ b/tkblt/generic/tkbltGrElemBar.h
@@ -49,7 +49,7 @@ namespace Blt {
typedef struct {
Weight weight;
BarPen* penPtr;
- XRectangle* bars;
+ Rectangle* bars;
int nBars;
GraphSegments xeb;
GraphSegments yeb;
@@ -88,9 +88,9 @@ namespace Blt {
protected:
BarPen* builtinPenPtr;
int* barToData_;
- XRectangle* bars_;
+ Rectangle* bars_;
int* activeToData_;
- XRectangle* activeRects_;
+ Rectangle* activeRects_;
int nBars_;
int nActive_;
GraphSegments xeb_;
@@ -103,10 +103,10 @@ namespace Blt {
void mapActive();
void reset();
void mapErrorBars(BarStyle**);
- void drawSegments(Drawable, BarPen*, XRectangle*, int);
- void drawValues(Drawable, BarPen*, XRectangle*, int, int*);
- void printSegments(PSOutput*, BarPen*, XRectangle*, int);
- void printValues(PSOutput*, BarPen*, XRectangle*, int, int*);
+ void drawSegments(Drawable, BarPen*, Rectangle*, int);
+ void drawValues(Drawable, BarPen*, Rectangle*, int, int*);
+ void printSegments(PSOutput*, BarPen*, Rectangle*, int);
+ void printValues(PSOutput*, BarPen*, Rectangle*, int, int*);
public:
BarElement(Graph*, const char*, Tcl_HashEntry*);
diff --git a/tkblt/src/tkbltGrElemLine.C b/tkblt/generic/tkbltGrElemLine.C
index 8da4279..ac2b340 100644
--- a/tkblt/src/tkbltGrElemLine.C
+++ b/tkblt/generic/tkbltGrElemLine.C
@@ -41,6 +41,7 @@
#include "tkbltGrDef.h"
#include "tkbltConfig.h"
#include "tkbltGrPSOutput.h"
+#include "tkbltInt.h"
using namespace Blt;
@@ -265,8 +266,7 @@ LineElement::~LineElement()
{
LineElementOptions* ops = (LineElementOptions*)ops_;
- if (builtinPenPtr)
- delete builtinPenPtr;
+ delete builtinPenPtr;
reset();
@@ -275,8 +275,7 @@ LineElement::~LineElement()
delete ops->stylePalette;
}
- if (fillPts_)
- delete [] fillPts_;
+ delete [] fillPts_;
}
int LineElement::configure()
@@ -526,8 +525,8 @@ void LineElement::draw(Drawable drawable)
unsigned int count =0;
for (Point2d *pp = fillPts_, *endp = pp + nFillPts_; pp < endp; pp++) {
- points[count].x = pp->x;
- points[count].y = pp->y;
+ points[count].x = (short)pp->x;
+ points[count].y = (short)pp->y;
count++;
}
Tk_Fill3DPolygon(graphPtr_->tkwin_, drawable, ops->fillBg, points,
@@ -925,11 +924,9 @@ int LineElement::scaleSymbol(int normalSize)
scale = MIN(xScale, yScale);
}
}
- int newSize = normalSize * scale;
+ int newSize = (int)(normalSize * scale);
- // Don't let the size of symbols go unbounded. Both X and Win32 drawing
- // routines assume coordinates to be a signed short int.
- int maxSize = (int)MIN(graphPtr_->hRange_, graphPtr_->vRange_);
+ int maxSize = MIN(graphPtr_->hRange_, graphPtr_->vRange_);
if (newSize > maxSize)
newSize = maxSize;
@@ -1295,14 +1292,10 @@ void LineElement::mapActiveSymbols()
{
LineElementOptions* ops = (LineElementOptions*)ops_;
- if (activePts_.points) {
- delete [] activePts_.points;
- activePts_.points = NULL;
- }
- if (activePts_.map) {
- delete [] activePts_.map;
- activePts_.map = NULL;
- }
+ delete [] activePts_.points;
+ activePts_.points = NULL;
+ delete [] activePts_.map;
+ activePts_.map = NULL;
Region2d exts;
graphPtr_->extents(&exts);
@@ -1677,38 +1670,29 @@ void LineElement::reset()
stylePtr->yeb.length = 0;
}
- if (symbolPts_.points) {
- delete [] symbolPts_.points;
- symbolPts_.points = NULL;
- }
+ delete [] symbolPts_.points;
+ symbolPts_.points = NULL;
- if (symbolPts_.map)
- delete [] symbolPts_.map;
+ delete [] symbolPts_.map;
symbolPts_.map = NULL;
symbolPts_.length = 0;
- if (activePts_.points)
- delete [] activePts_.points;
+ delete [] activePts_.points;
activePts_.points = NULL;
activePts_.length = 0;
- if (activePts_.map)
- delete [] activePts_.map;
+ delete [] activePts_.map;
activePts_.map = NULL;
- if (xeb_.segments)
- delete [] xeb_.segments;
+ delete [] xeb_.segments;
xeb_.segments = NULL;
- if (xeb_.map)
- delete [] xeb_.map;
+ delete [] xeb_.map;
xeb_.map = NULL;
xeb_.length = 0;
- if (yeb_.segments)
- delete [] yeb_.segments;
+ delete [] yeb_.segments;
yeb_.segments = NULL;
- if (yeb_.map)
- delete [] yeb_.map;
+ delete [] yeb_.map;
yeb_.map = NULL;
yeb_.length = 0;
}
@@ -1952,10 +1936,10 @@ void LineElement::drawCircle(Display *display, Drawable drawable,
XArc *ap = arcs;
for (Point2d *pp=symbolPts, *pend=pp+nSymbolPts; pp<pend; pp++) {
if (DRAW_SYMBOL()) {
- ap->x = pp->x - radius;
- ap->y = pp->y - radius;
- ap->width = (unsigned short)s;
- ap->height = (unsigned short)s;
+ ap->x = (short)(pp->x - radius);
+ ap->y = (short)(pp->y - radius);
+ ap->width = (short)s;
+ ap->height = (short)s;
ap->angle1 = 0;
ap->angle2 = 23040;
ap++;
@@ -1985,21 +1969,21 @@ void LineElement::drawSquare(Display *display, Drawable drawable,
int s = r + r;
int count =0;
- XRectangle* rectangles = new XRectangle[nSymbolPts];
- XRectangle* rp=rectangles;
+ Rectangle* rectangles = new Rectangle[nSymbolPts];
+ Rectangle* rp=rectangles;
for (Point2d *pp=symbolPts, *pend=pp+nSymbolPts; pp<pend; pp++) {
if (DRAW_SYMBOL()) {
- rp->x = pp->x - r;
- rp->y = pp->y - r;
- rp->width = (unsigned short)s;
- rp->height = (unsigned short)s;
+ rp->x = (int)pp->x - r;
+ rp->y = (int)pp->y - r;
+ rp->width = s;
+ rp->height = s;
rp++;
count++;
}
symbolCounter_++;
}
- for (XRectangle *rp=rectangles, *rend=rp+count; rp<rend; rp ++) {
+ for (Rectangle *rp=rectangles, *rend=rp+count; rp<rend; rp ++) {
if (penOps->symbol.fillGC)
XFillRectangle(display, drawable, penOps->symbol.fillGC,
rp->x, rp->y, rp->width, rp->height);
@@ -2018,9 +2002,9 @@ void LineElement::drawSCross(Display* display, Drawable drawable,
{
LinePenOptions* penOps = (LinePenOptions*)penPtr->ops();
- XPoint pattern[4];
+ Point pattern[4];
if (penOps->symbol.type == SYMBOL_SCROSS) {
- r2 = (double)r2 * M_SQRT1_2;
+ r2 = (int)(r2 * M_SQRT1_2);
pattern[3].y = pattern[2].x = pattern[0].x = pattern[0].y = -r2;
pattern[3].x = pattern[2].y = pattern[1].y = pattern[1].x = r2;
}
@@ -2032,8 +2016,8 @@ void LineElement::drawSCross(Display* display, Drawable drawable,
for (Point2d *pp=symbolPts, *endp=pp+nSymbolPts; pp<endp; pp++) {
if (DRAW_SYMBOL()) {
- int rndx = pp->x;
- int rndy = pp->y;
+ int rndx = (int)pp->x;
+ int rndy = (int)pp->y;
XDrawLine(graphPtr_->display_, drawable, penOps->symbol.outlineGC,
pattern[0].x + rndx, pattern[0].y + rndy,
pattern[1].x + rndx, pattern[1].y + rndy);
@@ -2060,14 +2044,14 @@ void LineElement::drawCross(Display *display, Drawable drawable,
* 9 8
*/
int d = (r2 / 3);
- XPoint pattern[13];
+ Point pattern[13];
pattern[0].x = pattern[11].x = pattern[12].x = -r2;
pattern[2].x = pattern[1].x = pattern[10].x = pattern[9].x = -d;
pattern[3].x = pattern[4].x = pattern[7].x = pattern[8].x = d;
pattern[5].x = pattern[6].x = r2;
pattern[2].y = pattern[3].y = -r2;
pattern[0].y = pattern[1].y = pattern[4].y = pattern[5].y =
- pattern[12].y = -d;
+ pattern[12].y = -d;
pattern[11].y = pattern[10].y = pattern[7].y = pattern[6].y = d;
pattern[9].y = pattern[8].y = r2;
@@ -2076,8 +2060,8 @@ void LineElement::drawCross(Display *display, Drawable drawable,
for (int ii=0; ii<12; ii++) {
double dx = (double)pattern[ii].x * M_SQRT1_2;
double dy = (double)pattern[ii].y * M_SQRT1_2;
- pattern[ii].x = dx - dy;
- pattern[ii].y = dx + dy;
+ pattern[ii].x = (int)(dx - dy);
+ pattern[ii].y = (int)(dx + dy);
}
pattern[12] = pattern[0];
}
@@ -2087,11 +2071,11 @@ void LineElement::drawCross(Display *display, Drawable drawable,
XPoint* xpp = polygon;
for (Point2d *pp = symbolPts, *endp = pp + nSymbolPts; pp < endp; pp++) {
if (DRAW_SYMBOL()) {
- int rndx = pp->x;
- int rndy = pp->y;
+ int rndx = (int)pp->x;
+ int rndy = (int)pp->y;
for (int ii=0; ii<13; ii++) {
- xpp->x = pattern[ii].x + rndx;
- xpp->y = pattern[ii].y + rndy;
+ xpp->x = (short)(pattern[ii].x + rndx);
+ xpp->y = (short)(pattern[ii].y + rndy);
xpp++;
}
count++;
@@ -2131,7 +2115,7 @@ void LineElement::drawDiamond(Display *display, Drawable drawable,
* (fifth) point connects the first and
* 3 last points.
*/
- XPoint pattern[5];
+ Point pattern[5];
pattern[1].y = pattern[0].x = -r1;
pattern[2].y = pattern[3].x = pattern[0].y = pattern[1].x = 0;
pattern[3].y = pattern[2].x = r1;
@@ -2142,11 +2126,11 @@ void LineElement::drawDiamond(Display *display, Drawable drawable,
XPoint* xpp = polygon;
for (Point2d *pp = symbolPts, *endp = pp + nSymbolPts; pp < endp; pp++) {
if (DRAW_SYMBOL()) {
- int rndx = pp->x;
- int rndy = pp->y;
+ int rndx = (int)pp->x;
+ int rndy = (int)pp->y;
for (int ii=0; ii<5; ii++) {
- xpp->x = pattern[ii].x + rndx;
- xpp->y = pattern[ii].y + rndy;
+ xpp->x = (short)(pattern[ii].x + rndx);
+ xpp->y = (short)(pattern[ii].y + rndy);
xpp++;
}
count++;
@@ -2180,10 +2164,10 @@ void LineElement::drawArrow(Display *display, Drawable drawable,
{
LinePenOptions* penOps = (LinePenOptions*)penPtr->ops();
- double b = size * B_RATIO * 0.7;
- int b2 = b * 0.5;
- int h2 = TAN30 * b2;
- int h1 = b2 / COS30;
+ double b = size * B_RATIO * 0.7 * 0.5;
+ short b2 = (short)b;
+ short h2 = (short)(TAN30 * b);
+ short h1 = (short)(b / COS30);
/*
* The triangle symbol is a closed polygon
* 0,3 of 3 points. The diagram to the left
@@ -2193,7 +2177,7 @@ void LineElement::drawArrow(Display *display, Drawable drawable,
* 2 1 last points.
*/
- XPoint pattern[4];
+ Point pattern[4];
if (penOps->symbol.type == SYMBOL_ARROW) {
pattern[3].x = pattern[0].x = 0;
pattern[3].y = pattern[0].y = h1;
@@ -2213,11 +2197,11 @@ void LineElement::drawArrow(Display *display, Drawable drawable,
XPoint* xpp = polygon;
for (Point2d *pp = symbolPts, *endp = pp + nSymbolPts; pp < endp; pp++) {
if (DRAW_SYMBOL()) {
- int rndx = pp->x;
- int rndy = pp->y;
+ int rndx = (int)pp->x;
+ int rndy = (int)pp->y;
for (int ii=0; ii<4; ii++) {
- xpp->x = pattern[ii].x + rndx;
- xpp->y = pattern[ii].y + rndy;
+ xpp->x = (short)(pattern[ii].x + rndx);
+ xpp->y = (short)(pattern[ii].y + rndy);
xpp++;
}
count++;
@@ -2252,7 +2236,7 @@ void LineElement::drawSymbols(Drawable drawable, LinePen* penPtr, int size,
if (penOps->symbol.fillGC) {
for (Point2d *pp = symbolPts, *endp = pp + nSymbolPts; pp < endp; pp++)
XDrawLine(graphPtr_->display_, drawable, penOps->symbol.fillGC,
- pp->x, pp->y, pp->x+1, pp->y+1);
+ (int)pp->x, (int)pp->y, (int)pp->x+1, (int)pp->y+1);
}
return;
}
@@ -2297,8 +2281,8 @@ void LineElement::drawTraces(Drawable drawable, LinePen* penPtr)
XPoint* points = new XPoint[count];
XPoint*xpp = points;
for (int ii=0; ii<count; ii++, xpp++) {
- xpp->x = tracePtr->screenPts.points[ii].x;
- xpp->y = tracePtr->screenPts.points[ii].y;
+ xpp->x = (short)tracePtr->screenPts.points[ii].x;
+ xpp->y = (short)tracePtr->screenPts.points[ii].y;
}
XDrawLines(graphPtr_->display_, drawable, penPtr->traceGC_, points,
count, CoordModeOrigin);
diff --git a/tkblt/src/tkbltGrElemLine.h b/tkblt/generic/tkbltGrElemLine.h
index f937615..f937615 100644
--- a/tkblt/src/tkbltGrElemLine.h
+++ b/tkblt/generic/tkbltGrElemLine.h
diff --git a/tkblt/src/tkbltGrElemLineSpline.C b/tkblt/generic/tkbltGrElemLineSpline.C
index 9224d53..9224d53 100644
--- a/tkblt/src/tkbltGrElemLineSpline.C
+++ b/tkblt/generic/tkbltGrElemLineSpline.C
diff --git a/tkblt/src/tkbltGrElemOp.C b/tkblt/generic/tkbltGrElemOp.C
index c4bcbef..af6fc0c 100644
--- a/tkblt/src/tkbltGrElemOp.C
+++ b/tkblt/generic/tkbltGrElemOp.C
@@ -174,10 +174,9 @@ static int ActivateOp(ClientData clientData, Tcl_Interp* interp,
}
}
- if (elemPtr->activeIndices_)
- delete [] elemPtr->activeIndices_;
- elemPtr->nActiveIndices_ = nIndices;
+ delete [] elemPtr->activeIndices_;
elemPtr->activeIndices_ = indices;
+ elemPtr->nActiveIndices_ = nIndices;
elemPtr->active_ = 1;
@@ -306,10 +305,8 @@ static int DeactivateOp(ClientData clientData, Tcl_Interp* interp,
if (graphPtr->getElement(objv[ii], &elemPtr) != TCL_OK)
return TCL_ERROR;
- if (elemPtr->activeIndices_) {
- delete [] elemPtr->activeIndices_;
- elemPtr->activeIndices_ = NULL;
- }
+ delete [] elemPtr->activeIndices_;
+ elemPtr->activeIndices_ = NULL;
elemPtr->nActiveIndices_ = 0;
elemPtr->active_ = 0;
}
diff --git a/tkblt/src/tkbltGrElemOp.h b/tkblt/generic/tkbltGrElemOp.h
index b596b11..b596b11 100644
--- a/tkblt/src/tkbltGrElemOp.h
+++ b/tkblt/generic/tkbltGrElemOp.h
diff --git a/tkblt/src/tkbltGrElemOption.C b/tkblt/generic/tkbltGrElemOption.C
index 45591ac..a0a67e6 100644
--- a/tkblt/src/tkbltGrElemOption.C
+++ b/tkblt/generic/tkbltGrElemOption.C
@@ -136,8 +136,7 @@ static Tcl_Obj* ValuesGetProc(ClientData clientData, Tk_Window tkwin,
static void ValuesFreeProc(ClientData clientData, Tk_Window tkwin, char *ptr)
{
ElemValues* valuesPtr = *(ElemValues**)ptr;
- if (valuesPtr)
- delete valuesPtr;
+ delete valuesPtr;
}
static Tk_CustomOptionSetProc PairsSetProc;
@@ -171,12 +170,10 @@ static int PairsSetProc(ClientData clientData, Tcl_Interp* interp,
}
nValues /= 2;
- if (coordsPtr->x)
- delete coordsPtr->x;
+ delete coordsPtr->x;
coordsPtr->x = new ElemValuesSource(nValues);
- if (coordsPtr->y)
- delete coordsPtr->y;
+ delete coordsPtr->y;
coordsPtr->y = new ElemValuesSource(nValues);
int ii=0;
diff --git a/tkblt/src/tkbltGrElemOption.h b/tkblt/generic/tkbltGrElemOption.h
index 4312691..4312691 100644
--- a/tkblt/src/tkbltGrElemOption.h
+++ b/tkblt/generic/tkbltGrElemOption.h
diff --git a/tkblt/src/tkbltGrHairs.C b/tkblt/generic/tkbltGrHairs.C
index d7ea3d2..d7ea3d2 100644
--- a/tkblt/src/tkbltGrHairs.C
+++ b/tkblt/generic/tkbltGrHairs.C
diff --git a/tkblt/src/tkbltGrHairs.h b/tkblt/generic/tkbltGrHairs.h
index 825cf2a..a86d0c6 100644
--- a/tkblt/src/tkbltGrHairs.h
+++ b/tkblt/generic/tkbltGrHairs.h
@@ -56,7 +56,7 @@ namespace Blt {
int visible_;
GC gc_;
- XPoint segArr_[4];
+ Point segArr_[4];
public:
Crosshairs(Graph*);
diff --git a/tkblt/src/tkbltGrHairsOp.C b/tkblt/generic/tkbltGrHairsOp.C
index 57650ce..57650ce 100644
--- a/tkblt/src/tkbltGrHairsOp.C
+++ b/tkblt/generic/tkbltGrHairsOp.C
diff --git a/tkblt/src/tkbltGrHairsOp.h b/tkblt/generic/tkbltGrHairsOp.h
index 3f3d009..3f3d009 100644
--- a/tkblt/src/tkbltGrHairsOp.h
+++ b/tkblt/generic/tkbltGrHairsOp.h
diff --git a/tkblt/src/tkbltGrLegd.C b/tkblt/generic/tkbltGrLegd.C
index 5242215..b8822f1 100644
--- a/tkblt/src/tkbltGrLegd.C
+++ b/tkblt/generic/tkbltGrLegd.C
@@ -213,8 +213,8 @@ Legend::~Legend()
if (focusGC_)
graphPtr_->freePrivateGC(focusGC_);
- if (graphPtr_->tkwin_)
- Tk_DeleteSelHandler(graphPtr_->tkwin_, XA_PRIMARY, XA_STRING);
+ if (graphPtr_->tkwin_)
+ Tk_DeleteSelHandler(graphPtr_->tkwin_, XA_PRIMARY, XA_STRING);
delete selected_;
@@ -878,8 +878,8 @@ int Legend::getElementFromObj(Tcl_Obj* objPtr, Element** elemPtrPtr)
Element* Legend::getNextRow(Element* focusPtr)
{
- int col = focusPtr->col_;
- int row = focusPtr->row_ + 1;
+ unsigned col = focusPtr->col_;
+ unsigned row = focusPtr->row_ + 1;
for (ChainLink* link = focusPtr->link; link; link = Chain_NextLink(link)) {
Element* elemPtr = (Element*)Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
@@ -895,8 +895,8 @@ Element* Legend::getNextRow(Element* focusPtr)
Element* Legend::getNextColumn(Element* focusPtr)
{
- int col = focusPtr->col_ + 1;
- int row = focusPtr->row_;
+ unsigned col = focusPtr->col_ + 1;
+ unsigned row = focusPtr->row_;
for (ChainLink* link = focusPtr->link; link; link = Chain_NextLink(link)) {
Element* elemPtr = (Element*)Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
@@ -912,8 +912,8 @@ Element* Legend::getNextColumn(Element* focusPtr)
Element* Legend::getPreviousRow(Element* focusPtr)
{
- int col = focusPtr->col_;
- int row = focusPtr->row_ - 1;
+ unsigned col = focusPtr->col_;
+ unsigned row = focusPtr->row_ - 1;
for (ChainLink* link = focusPtr->link; link; link = Chain_PrevLink(link)) {
Element* elemPtr = (Element*)Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
@@ -929,8 +929,8 @@ Element* Legend::getPreviousRow(Element* focusPtr)
Element* Legend::getPreviousColumn(Element* focusPtr)
{
- int col = focusPtr->col_ - 1;
- int row = focusPtr->row_;
+ unsigned col = focusPtr->col_ - 1;
+ unsigned row = focusPtr->row_;
for (ChainLink* link = focusPtr->link; link; link = Chain_PrevLink(link)) {
Element* elemPtr = (Element*)Chain_GetValue(link);
ElementOptions* elemOps = (ElementOptions*)elemPtr->ops();
diff --git a/tkblt/src/tkbltGrLegd.h b/tkblt/generic/tkbltGrLegd.h
index 66ffbc1..66ffbc1 100644
--- a/tkblt/src/tkbltGrLegd.h
+++ b/tkblt/generic/tkbltGrLegd.h
diff --git a/tkblt/src/tkbltGrLegdOp.C b/tkblt/generic/tkbltGrLegdOp.C
index 139d2f1..139d2f1 100644
--- a/tkblt/src/tkbltGrLegdOp.C
+++ b/tkblt/generic/tkbltGrLegdOp.C
diff --git a/tkblt/src/tkbltGrLegdOp.h b/tkblt/generic/tkbltGrLegdOp.h
index 6369a2b..6369a2b 100644
--- a/tkblt/src/tkbltGrLegdOp.h
+++ b/tkblt/generic/tkbltGrLegdOp.h
diff --git a/tkblt/src/tkbltGrMarker.C b/tkblt/generic/tkbltGrMarker.C
index 6fdcfd6..6f701f8 100644
--- a/tkblt/src/tkbltGrMarker.C
+++ b/tkblt/generic/tkbltGrMarker.C
@@ -63,8 +63,7 @@ Marker::~Marker()
if (hashPtr_)
Tcl_DeleteHashEntry(hashPtr_);
- if (name_)
- delete [] name_;
+ delete [] name_;
Tk_FreeConfigOptions((char*)ops_, optionTable_, graphPtr_->tkwin_);
free(ops_);
diff --git a/tkblt/src/tkbltGrMarker.h b/tkblt/generic/tkbltGrMarker.h
index 573357d..573357d 100644
--- a/tkblt/src/tkbltGrMarker.h
+++ b/tkblt/generic/tkbltGrMarker.h
diff --git a/tkblt/src/tkbltGrMarkerLine.C b/tkblt/generic/tkbltGrMarkerLine.C
index 30ef70e..82c9ab8 100644
--- a/tkblt/src/tkbltGrMarkerLine.C
+++ b/tkblt/generic/tkbltGrMarkerLine.C
@@ -103,8 +103,7 @@ LineMarker::~LineMarker()
{
if (gc_)
graphPtr_->freePrivateGC(gc_);
- if (segments_)
- delete [] segments_;
+ delete [] segments_;
}
int LineMarker::configure()
@@ -151,9 +150,9 @@ void LineMarker::map()
{
LineMarkerOptions* ops = (LineMarkerOptions*)ops_;
+ delete [] segments_;
+ segments_ = NULL;
nSegments_ = 0;
- if (segments_)
- delete [] segments_;
if (!ops->worldPts || (ops->worldPts->num < 2))
return;
diff --git a/tkblt/src/tkbltGrMarkerLine.h b/tkblt/generic/tkbltGrMarkerLine.h
index 3191951..3191951 100644
--- a/tkblt/src/tkbltGrMarkerLine.h
+++ b/tkblt/generic/tkbltGrMarkerLine.h
diff --git a/tkblt/src/tkbltGrMarkerOp.C b/tkblt/generic/tkbltGrMarkerOp.C
index 20933ab..20933ab 100644
--- a/tkblt/src/tkbltGrMarkerOp.C
+++ b/tkblt/generic/tkbltGrMarkerOp.C
diff --git a/tkblt/src/tkbltGrMarkerOp.h b/tkblt/generic/tkbltGrMarkerOp.h
index 6f7c16f..6f7c16f 100644
--- a/tkblt/src/tkbltGrMarkerOp.h
+++ b/tkblt/generic/tkbltGrMarkerOp.h
diff --git a/tkblt/src/tkbltGrMarkerOption.C b/tkblt/generic/tkbltGrMarkerOption.C
index b6eab57..6b13fd9 100644
--- a/tkblt/src/tkbltGrMarkerOption.C
+++ b/tkblt/generic/tkbltGrMarkerOption.C
@@ -119,8 +119,7 @@ static void CoordsFreeProc(ClientData clientData, Tk_Window tkwin,
{
Coords* coordsPtr = *(Coords**)ptr;
if (coordsPtr) {
- if (coordsPtr->points)
- delete [] coordsPtr->points;
+ delete [] coordsPtr->points;
delete coordsPtr;
}
}
diff --git a/tkblt/src/tkbltGrMarkerOption.h b/tkblt/generic/tkbltGrMarkerOption.h
index 143810e..143810e 100644
--- a/tkblt/src/tkbltGrMarkerOption.h
+++ b/tkblt/generic/tkbltGrMarkerOption.h
diff --git a/tkblt/src/tkbltGrMarkerPolygon.C b/tkblt/generic/tkbltGrMarkerPolygon.C
index ed655aa..383d0e8 100644
--- a/tkblt/src/tkbltGrMarkerPolygon.C
+++ b/tkblt/generic/tkbltGrMarkerPolygon.C
@@ -103,12 +103,9 @@ PolygonMarker::~PolygonMarker()
Tk_FreeGC(graphPtr_->display_, fillGC_);
if (outlineGC_)
graphPtr_->freePrivateGC(outlineGC_);
- if (fillPts_)
- delete [] fillPts_;
- if (outlinePts_)
- delete [] outlinePts_;
- if (screenPts_)
- delete [] screenPts_;
+ delete [] fillPts_;
+ delete [] outlinePts_;
+ delete [] screenPts_;
}
int PolygonMarker::configure()
@@ -164,8 +161,8 @@ void PolygonMarker::draw(Drawable drawable)
XPoint* dp = points;
for (Point2d *sp = fillPts_, *send = sp + nFillPts_; sp < send; sp++) {
- dp->x = (short int)sp->x;
- dp->y = (short int)sp->y;
+ dp->x = (short)sp->x;
+ dp->y = (short)sp->y;
dp++;
}
diff --git a/tkblt/src/tkbltGrMarkerPolygon.h b/tkblt/generic/tkbltGrMarkerPolygon.h
index 8eb2216..8eb2216 100644
--- a/tkblt/src/tkbltGrMarkerPolygon.h
+++ b/tkblt/generic/tkbltGrMarkerPolygon.h
diff --git a/tkblt/src/tkbltGrMarkerText.C b/tkblt/generic/tkbltGrMarkerText.C
index f6307fb..9c4da2a 100644
--- a/tkblt/src/tkbltGrMarkerText.C
+++ b/tkblt/generic/tkbltGrMarkerText.C
@@ -120,8 +120,8 @@ int TextMarker::configure()
TextMarkerOptions* ops = (TextMarkerOptions*)ops_;
ops->style.angle = (float)fmod(ops->style.angle, 360.0);
- if (ops->style.angle < 0.0f)
- ops->style.angle += 360.0f;
+ if (ops->style.angle < 0.0)
+ ops->style.angle += 360.0;
GC newGC = NULL;
XGCValues gcValues;
@@ -148,8 +148,8 @@ void TextMarker::draw(Drawable drawable)
if (fillGC_) {
XPoint points[4];
for (int ii=0; ii<4; ii++) {
- points[ii].x = (short int)(outline_[ii].x + anchorPt_.x);
- points[ii].y = (short int)(outline_[ii].y + anchorPt_.y);
+ points[ii].x = (short)(outline_[ii].x + anchorPt_.x);
+ points[ii].y = (short)(outline_[ii].y + anchorPt_.y);
}
XFillPolygon(graphPtr_->display_, drawable, fillGC_, points, 4,
Convex, CoordModeOrigin);
@@ -179,8 +179,8 @@ void TextMarker::map()
double rw;
double rh;
graphPtr_->getBoundingBox(w, h, ops->style.angle, &rw, &rh, outline_);
- width_ = rw;
- height_ = rh;
+ width_ = (int)rw;
+ height_ = (int)rh;
for (int ii=0; ii<4; ii++) {
outline_[ii].x += rw * 0.5;
outline_[ii].y += rh * 0.5;
@@ -211,7 +211,7 @@ int TextMarker::pointIn(Point2d *samplePtr)
if (!ops->string)
return 0;
- if (ops->style.angle != 0.0f) {
+ if (ops->style.angle != 0.0) {
Point2d points[5];
// Figure out the bounding polygon (isolateral) for the text and see
@@ -233,7 +233,7 @@ int TextMarker::regionIn(Region2d *extsPtr, int enclosed)
{
TextMarkerOptions* ops = (TextMarkerOptions*)ops_;
- if (ops->style.angle != 0.0f) {
+ if (ops->style.angle != 0.0) {
Point2d points[5];
for (int ii=0; ii<4; ii++) {
points[ii].x = outline_[ii].x + anchorPt_.x;
diff --git a/tkblt/src/tkbltGrMarkerText.h b/tkblt/generic/tkbltGrMarkerText.h
index 99dc814..99dc814 100644
--- a/tkblt/src/tkbltGrMarkerText.h
+++ b/tkblt/generic/tkbltGrMarkerText.h
diff --git a/tkblt/src/tkbltGrMisc.C b/tkblt/generic/tkbltGrMisc.C
index d951494..d951494 100644
--- a/tkblt/src/tkbltGrMisc.C
+++ b/tkblt/generic/tkbltGrMisc.C
diff --git a/tkblt/src/tkbltGrMisc.h b/tkblt/generic/tkbltGrMisc.h
index b7c521f..ba86b75 100644
--- a/tkblt/src/tkbltGrMisc.h
+++ b/tkblt/generic/tkbltGrMisc.h
@@ -68,6 +68,15 @@ namespace Blt {
class Graph;
typedef struct {
+ int x, y;
+ } Point;
+
+ typedef struct {
+ int x, y;
+ unsigned width, height;
+ } Rectangle;
+
+ typedef struct {
double x;
double y;
} Point2d;
diff --git a/tkblt/src/tkbltGrPSOutput.C b/tkblt/generic/tkbltGrPSOutput.C
index 8f02cba..07d4864 100644
--- a/tkblt/src/tkbltGrPSOutput.C
+++ b/tkblt/generic/tkbltGrPSOutput.C
@@ -144,46 +144,46 @@ void PSOutput::computeBBox(int width, int height)
PostscriptOptions* pops = (PostscriptOptions*)setupPtr->ops_;
// scale from points to pica
- float pica = 25.4 / 72 *
+ double pica = 25.4 / 72 *
WidthOfScreen(Tk_Screen(graphPtr_->tkwin_)) /
WidthMMOfScreen(Tk_Screen(graphPtr_->tkwin_));
- int hBorder = 2*pops->xPad/pica;
- int vBorder = 2*pops->yPad/pica;
+ double hBorder = 2*pops->xPad/pica;
+ double vBorder = 2*pops->yPad/pica;
int hSize = !pops->landscape ? width : height;
int vSize = !pops->landscape ? height : width;
// If the paper size wasn't specified, set it to the graph size plus the
// paper border.
- int paperWidth = pops->reqPaperWidth > 0 ? pops->reqPaperWidth/pica :
+ double paperWidth = pops->reqPaperWidth > 0 ? pops->reqPaperWidth/pica :
hSize + hBorder;
- int paperHeight = pops->reqPaperHeight > 0 ? pops->reqPaperHeight/pica :
+ double paperHeight = pops->reqPaperHeight > 0 ? pops->reqPaperHeight/pica :
vSize + vBorder;
// Scale the plot size if it's bigger than the paper
- float hScale = (hSize+hBorder) > paperWidth ? 1.0 :
- (float)(paperWidth - hBorder) / hSize;
- float vScale = (vSize + vBorder) > paperHeight ? 1.0 :
- (float)(paperHeight - vBorder) / vSize;
+ double hScale = (hSize+hBorder) > paperWidth ? 1.0 :
+ paperWidth - hBorder / hSize;
+ double vScale = (vSize + vBorder) > paperHeight ? 1.0 :
+ paperHeight - vBorder / vSize;
- float scale = MIN(hScale, vScale);
+ double scale = MIN(hScale, vScale);
if (scale != 1.0) {
- hSize = hSize*scale + 0.5;
- vSize = vSize*scale + 0.5;
+ hSize = (int)(hSize*scale + 0.5);
+ vSize = (int)(vSize*scale + 0.5);
}
- int x = (paperWidth > hSize) && pops->center ?
- (paperWidth - hSize) / 2 : pops->xPad/pica;
- int y = (paperHeight > vSize) && pops->center ?
- (paperHeight - vSize) / 2 : pops->yPad/pica;
+ int x = (int)((paperWidth > hSize) && pops->center ?
+ (paperWidth - hSize) / 2 : pops->xPad/pica);
+ int y = (int)((paperHeight > vSize) && pops->center ?
+ (paperHeight - vSize) / 2 : pops->yPad/pica);
setupPtr->left = x;
setupPtr->bottom = y;
setupPtr->right = x + hSize - 1;
setupPtr->top = y + vSize - 1;
setupPtr->scale = scale;
- setupPtr->paperHeight = paperHeight;
- setupPtr->paperWidth = paperWidth;
+ setupPtr->paperHeight = (int)paperHeight;
+ setupPtr->paperWidth = (int)paperWidth;
}
const char* PSOutput::getValue(int* lengthPtr)
@@ -236,9 +236,9 @@ void PSOutput::fillRectangle(double x, double y, int width, int height)
append("fill\n");
}
-void PSOutput::fillRectangles(XRectangle* rectangles, int nRectangles)
+void PSOutput::fillRectangles(Rectangle* rectangles, int nRectangles)
{
- for (XRectangle *rp = rectangles, *rend = rp + nRectangles; rp < rend; rp++)
+ for (Rectangle *rp = rectangles, *rend = rp + nRectangles; rp < rend; rp++)
fillRectangle((double)rp->x, (double)rp->y, (int)rp->width,(int)rp->height);
}
diff --git a/tkblt/src/tkbltGrPSOutput.h b/tkblt/generic/tkbltGrPSOutput.h
index c54e771..04bb2fd 100644
--- a/tkblt/src/tkbltGrPSOutput.h
+++ b/tkblt/generic/tkbltGrPSOutput.h
@@ -65,7 +65,7 @@ namespace Blt {
void print3DRectangle(Tk_3DBorder, double, double, int, int, int, int);
void fillRectangle(double, double, int, int);
- void fillRectangles(XRectangle*, int);
+ void fillRectangles(Rectangle*, int);
void fill3DRectangle(Tk_3DBorder, double, double, int, int, int, int);
void fillPolygon(Point2d*, int);
diff --git a/tkblt/src/tkbltGrPen.C b/tkblt/generic/tkbltGrPen.C
index 42851d8..71e5fe9 100644
--- a/tkblt/src/tkbltGrPen.C
+++ b/tkblt/generic/tkbltGrPen.C
@@ -48,8 +48,7 @@ Pen::Pen(Graph* graphPtr, const char* name, Tcl_HashEntry* hPtr)
Pen::~Pen()
{
- if (name_)
- delete [] name_;
+ delete [] name_;
if (hashPtr_)
Tcl_DeleteHashEntry(hashPtr_);
diff --git a/tkblt/src/tkbltGrPen.h b/tkblt/generic/tkbltGrPen.h
index 003e8dd..003e8dd 100644
--- a/tkblt/src/tkbltGrPen.h
+++ b/tkblt/generic/tkbltGrPen.h
diff --git a/tkblt/src/tkbltGrPenBar.C b/tkblt/generic/tkbltGrPenBar.C
index 8f6e59a..8f6e59a 100644
--- a/tkblt/src/tkbltGrPenBar.C
+++ b/tkblt/generic/tkbltGrPenBar.C
diff --git a/tkblt/src/tkbltGrPenBar.h b/tkblt/generic/tkbltGrPenBar.h
index f39db94..f39db94 100644
--- a/tkblt/src/tkbltGrPenBar.h
+++ b/tkblt/generic/tkbltGrPenBar.h
diff --git a/tkblt/src/tkbltGrPenLine.C b/tkblt/generic/tkbltGrPenLine.C
index 5f15ce8..5f15ce8 100644
--- a/tkblt/src/tkbltGrPenLine.C
+++ b/tkblt/generic/tkbltGrPenLine.C
diff --git a/tkblt/src/tkbltGrPenLine.h b/tkblt/generic/tkbltGrPenLine.h
index 63eeeb8..63eeeb8 100644
--- a/tkblt/src/tkbltGrPenLine.h
+++ b/tkblt/generic/tkbltGrPenLine.h
diff --git a/tkblt/src/tkbltGrPenOp.C b/tkblt/generic/tkbltGrPenOp.C
index 8c5669d..8c5669d 100644
--- a/tkblt/src/tkbltGrPenOp.C
+++ b/tkblt/generic/tkbltGrPenOp.C
diff --git a/tkblt/src/tkbltGrPenOp.h b/tkblt/generic/tkbltGrPenOp.h
index 5dab592..5dab592 100644
--- a/tkblt/src/tkbltGrPenOp.h
+++ b/tkblt/generic/tkbltGrPenOp.h
diff --git a/tkblt/src/tkbltGrPenOption.C b/tkblt/generic/tkbltGrPenOption.C
index b1da1b6..b1da1b6 100644
--- a/tkblt/src/tkbltGrPenOption.C
+++ b/tkblt/generic/tkbltGrPenOption.C
diff --git a/tkblt/src/tkbltGrPostscript.C b/tkblt/generic/tkbltGrPostscript.C
index 4bbf504..4bbf504 100644
--- a/tkblt/src/tkbltGrPostscript.C
+++ b/tkblt/generic/tkbltGrPostscript.C
diff --git a/tkblt/src/tkbltGrPostscript.h b/tkblt/generic/tkbltGrPostscript.h
index 7ab54a3..a0c35a1 100644
--- a/tkblt/src/tkbltGrPostscript.h
+++ b/tkblt/generic/tkbltGrPostscript.h
@@ -56,11 +56,11 @@ namespace Blt {
void* ops_;
Graph* graphPtr_;
- short int left;
- short int bottom;
- short int right;
- short int top;
- float scale;
+ int left;
+ int bottom;
+ int right;
+ int top;
+ double scale;
int paperHeight;
int paperWidth;
diff --git a/tkblt/src/tkbltGrPostscriptOp.C b/tkblt/generic/tkbltGrPostscriptOp.C
index 931feb9..931feb9 100644
--- a/tkblt/src/tkbltGrPostscriptOp.C
+++ b/tkblt/generic/tkbltGrPostscriptOp.C
diff --git a/tkblt/src/tkbltGrPostscriptOp.h b/tkblt/generic/tkbltGrPostscriptOp.h
index 9a81266..9a81266 100644
--- a/tkblt/src/tkbltGrPostscriptOp.h
+++ b/tkblt/generic/tkbltGrPostscriptOp.h
diff --git a/tkblt/src/tkbltGrText.C b/tkblt/generic/tkbltGrText.C
index 20709f1..1bed069 100644
--- a/tkblt/src/tkbltGrText.C
+++ b/tkblt/generic/tkbltGrText.C
@@ -94,13 +94,18 @@ void TextStyle::drawText(Drawable drawable, const char *text, int x, int y)
Point2d rr = rotateText(x, y, w1, h1);
#if (TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 6)
TkDrawAngledTextLayout(graphPtr_->display_, drawable, gc_, layout,
- rr.x, rr.y, ops->angle, 0, -1);
+ (int)rr.x, (int)rr.y,
+ ops->angle, 0, -1);
#else
Tk_DrawTextLayout(graphPtr_->display_, drawable, gc_, layout,
rr.x, rr.y, 0, -1);
#endif
}
+void TextStyle::drawText(Drawable drawable, const char *text, double x, double y) {
+ return drawText(drawable, text, (int)x, (int)y);
+}
+
void TextStyle::drawText2(Drawable drawable, const char *text,
int x, int y, int* ww, int* hh)
{
@@ -118,21 +123,21 @@ void TextStyle::drawText2(Drawable drawable, const char *text,
Point2d rr = rotateText(x, y, w1, h1);
#if (TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 6)
TkDrawAngledTextLayout(graphPtr_->display_, drawable, gc_, layout,
- rr.x, rr.y, ops->angle, 0, -1);
+ (int)rr.x, (int)rr.y, ops->angle, 0, -1);
#else
Tk_DrawTextLayout(graphPtr_->display_, drawable, gc_, layout,
- rr.x, rr.y, 0, -1);
+ (int)rr.x, (int)rr.y, 0, -1);
#endif
- float angle = fmod(ops->angle, 360.0);
+ double angle = fmod(ops->angle, 360.0);
if (angle < 0.0)
angle += 360.0;
if (angle != 0.0) {
double rotWidth, rotHeight;
graphPtr_->getBoundingBox(w1, h1, angle, &rotWidth, &rotHeight, NULL);
- w1 = rotWidth;
- h1 = rotHeight;
+ w1 = (int)rotWidth;
+ h1 = (int)rotHeight;
}
*ww = w1;
@@ -182,6 +187,10 @@ void TextStyle::printText(PSOutput* psPtr, const char *text, int x, int y)
psPtr->format("] %g %g %s DrawText\n", xx/-2.0, yy/-2.0, justify);
}
+void TextStyle::printText(PSOutput* psPtr, const char *text, double x, double y) {
+ return printText(psPtr, text, (int)x, (int)y);
+}
+
void TextStyle::resetStyle()
{
TextStyleOptions* ops = (TextStyleOptions*)ops_;
diff --git a/tkblt/src/tkbltGrText.h b/tkblt/generic/tkbltGrText.h
index 770e99e..4337e81 100644
--- a/tkblt/src/tkbltGrText.h
+++ b/tkblt/generic/tkbltGrText.h
@@ -68,8 +68,10 @@ namespace Blt {
void* ops() {return ops_;}
void drawText(Drawable, const char*, int, int);
+ void drawText(Drawable, const char*, double, double);
void drawText2(Drawable, const char*, int, int, int*, int*);
void printText(PSOutput*, const char*, int, int);
+ void printText(PSOutput*, const char*, double, double);
void getExtents(const char*, int*, int*);
};
};
diff --git a/tkblt/src/tkbltGrXAxisOp.C b/tkblt/generic/tkbltGrXAxisOp.C
index b431a43..ac788ff 100644
--- a/tkblt/src/tkbltGrXAxisOp.C
+++ b/tkblt/generic/tkbltGrXAxisOp.C
@@ -161,6 +161,7 @@ static int UseOp(ClientData clientData, Tcl_Interp* interp,
Axis* axisPtr = (Axis*)Chain_GetValue(link);
axisPtr->link = NULL;
axisPtr->use_ =0;
+ axisPtr->margin_ = MARGIN_NONE;
// Clear the axis type if it's not currently used
if (axisPtr->refCount_ == 0)
axisPtr->setClass(CID_NONE);
@@ -190,6 +191,7 @@ static int UseOp(ClientData clientData, Tcl_Interp* interp,
axisPtr->chain = chain;
axisPtr->use_ =1;
+ axisPtr->margin_ = margin;
}
graphPtr->flags |= RESET;
diff --git a/tkblt/src/tkbltGrXAxisOp.h b/tkblt/generic/tkbltGrXAxisOp.h
index b813c83..b813c83 100644
--- a/tkblt/src/tkbltGrXAxisOp.h
+++ b/tkblt/generic/tkbltGrXAxisOp.h
diff --git a/tkblt/src/tkbltGraph.C b/tkblt/generic/tkbltGraph.C
index bb1707d..f1453dc 100644
--- a/tkblt/src/tkbltGraph.C
+++ b/tkblt/generic/tkbltGraph.C
@@ -27,7 +27,8 @@
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-#include <float.h>
+#include <cfloat>
+#include <cmath>
#include <tkInt.h>
@@ -50,6 +51,7 @@
#include "tkbltGrDef.h"
#include "tkbltGrPostscript.h"
#include "tkbltGrPSOutput.h"
+#include "tkbltInt.h"
using namespace Blt;
@@ -139,8 +141,7 @@ Graph::~Graph()
destroyAxes();
destroyPens();
- if (bindTable_)
- delete bindTable_;
+ delete bindTable_;
if (drawGC_)
Tk_FreeGC(display_, drawGC_);
@@ -510,13 +511,13 @@ void Graph::reconfigure()
void Graph::drawMargins(Drawable drawable)
{
GraphOptions* ops = (GraphOptions*)ops_;
- XRectangle rects[4];
+ Rectangle rects[4];
// Draw the four outer rectangles which encompass the plotting
// surface. This clears the surrounding area and clips the plot.
rects[0].x = rects[0].y = rects[3].x = rects[1].x = 0;
- rects[0].width = rects[3].width = (short int)width_;
- rects[0].height = (short int)top_;
+ rects[0].width = rects[3].width = width_;
+ rects[0].height = top_;
rects[3].y = bottom_;
rects[3].height = height_ - bottom_;
rects[2].y = rects[1].y = top_;
@@ -558,7 +559,7 @@ void Graph::printMargins(PSOutput* psPtr)
{
GraphOptions* ops = (GraphOptions*)ops_;
PostscriptOptions* pops = (PostscriptOptions*)postscript_->ops_;
- XRectangle margin[4];
+ Rectangle margin[4];
margin[0].x = margin[0].y = margin[3].x = margin[1].x = 0;
margin[0].width = margin[3].width = width_;
@@ -595,7 +596,7 @@ void Graph::printMargins(PSOutput* psPtr)
if (ops->title) {
psPtr->append("% Graph title\n");
TextStyle ts(this, &ops->titleTextStyle);
- ts.printText(psPtr, ops->title, (double)titleX_, (double)titleY_);
+ ts.printText(psPtr, ops->title, titleX_, titleY_);
}
}
@@ -1426,7 +1427,7 @@ void Graph::drawSegments(Drawable drawable, GC gc,
Segment2d* segments, int nSegments)
{
for (Segment2d *sp = segments, *send = sp + nSegments; sp < send; sp++)
- XDrawLine(display_, drawable, gc, sp->p.x, sp->p.y, sp->q.x, sp->q.y);
+ XDrawLine(display_, drawable, gc, (int)sp->p.x, (int)sp->p.y, (int)sp->q.x, (int)sp->q.y);
}
GC Graph::getPrivateGC(unsigned long gcMask, XGCValues *valuePtr)
diff --git a/tkblt/src/tkbltGraph.h b/tkblt/generic/tkbltGraph.h
index 8aece0f..6f8df01 100644
--- a/tkblt/src/tkbltGraph.h
+++ b/tkblt/generic/tkbltGraph.h
@@ -72,12 +72,12 @@ namespace Blt {
} ClosestSearch;
typedef struct {
- short int width;
- short int height;
- short int axesOffset;
- short int axesTitleLength;
- short int maxTickWidth;
- short int maxTickHeight;
+ int width;
+ int height;
+ int axesOffset;
+ int axesTitleLength;
+ int maxTickWidth;
+ int maxTickHeight;
unsigned int nAxes;
Chain* axes;
int reqSize;
@@ -147,16 +147,16 @@ namespace Blt {
Postscript* postscript_;
int inset_;
- short int titleX_;
- short int titleY_;
- short int titleWidth_;
- short int titleHeight_;
+ int titleX_;
+ int titleY_;
+ int titleWidth_;
+ int titleHeight_;
int width_;
int height_;
- short int left_;
- short int right_;
- short int top_;
- short int bottom_;
+ int left_;
+ int right_;
+ int top_;
+ int bottom_;
Axis* focusPtr_;
int halo_;
GC drawGC_;
@@ -164,11 +164,11 @@ namespace Blt {
int hRange_;
int vOffset_;
int hOffset_;
- float vScale_;
- float hScale_;
+ double vScale_;
+ double hScale_;
Pixmap cache_;
- short int cacheWidth_;
- short int cacheHeight_;
+ int cacheWidth_;
+ int cacheHeight_;
protected:
void layoutGraph();
@@ -239,7 +239,7 @@ namespace Blt {
int getXY(const char*, int*, int*);
void getTextExtents(Tk_Font, const char*, int, int*, int*);
- void getBoundingBox(int, int, float, double*, double*, Point2d*);
+ void getBoundingBox(int, int, double, double*, double*, Point2d*);
Point2d anchorPoint(double, double, double, double, Tk_Anchor);
const char** getTags(ClientData, ClassId, int*);
diff --git a/tkblt/src/tkbltGraphBar.C b/tkblt/generic/tkbltGraphBar.C
index dc8664c..861c12a 100644
--- a/tkblt/src/tkbltGraphBar.C
+++ b/tkblt/generic/tkbltGraphBar.C
@@ -239,8 +239,8 @@ int BarGraph::configure()
{
BarGraphOptions* ops = (BarGraphOptions*)ops_;
// Don't allow negative bar widths. Reset to an arbitrary value (0.1)
- if (ops->barWidth <= 0.0f)
- ops->barWidth = 0.9f;
+ if (ops->barWidth <= 0.0)
+ ops->barWidth = 0.9;
return Graph::configure();
}
@@ -445,10 +445,8 @@ void BarGraph::initBarSets()
void BarGraph::destroyBarSets()
{
- if (barGroups_) {
- delete [] barGroups_;
- barGroups_ = NULL;
- }
+ delete [] barGroups_;
+ barGroups_ = NULL;
nBarGroups_ = 0;
Tcl_HashSearch iter;
diff --git a/tkblt/src/tkbltGraphBar.h b/tkblt/generic/tkbltGraphBar.h
index 252c8d9..5ee1ab8 100644
--- a/tkblt/src/tkbltGraphBar.h
+++ b/tkblt/generic/tkbltGraphBar.h
@@ -47,9 +47,9 @@ namespace Blt {
int nSegments;
Axis* xAxis;
Axis* yAxis;
- float sum;
+ double sum;
int count;
- float lastY;
+ double lastY;
size_t index;
public:
diff --git a/tkblt/src/tkbltGraphLine.C b/tkblt/generic/tkbltGraphLine.C
index fe3f5d0..fe3f5d0 100644
--- a/tkblt/src/tkbltGraphLine.C
+++ b/tkblt/generic/tkbltGraphLine.C
diff --git a/tkblt/src/tkbltGraphLine.h b/tkblt/generic/tkbltGraphLine.h
index ea8d2a0..ea8d2a0 100644
--- a/tkblt/src/tkbltGraphLine.h
+++ b/tkblt/generic/tkbltGraphLine.h
diff --git a/tkblt/src/tkbltGraphOp.C b/tkblt/generic/tkbltGraphOp.C
index 9d4f45b..ada2758 100644
--- a/tkblt/src/tkbltGraphOp.C
+++ b/tkblt/generic/tkbltGraphOp.C
@@ -228,7 +228,13 @@ topmargin, bottommargin, plotarea, or legend", (char*)NULL);
static int InsideOp(ClientData clientData, Tcl_Interp* interp, int objc,
Tcl_Obj* const objv[])
{
+ if (objc != 4) {
+ Tcl_WrongNumArgs(interp, 2, objv, "x y");
+ return TCL_ERROR;
+ }
+
Graph* graphPtr = (Graph*)clientData;
+
int x;
if (Tcl_GetIntFromObj(interp, objv[2], &x) != TCL_OK)
return TCL_ERROR;
@@ -294,8 +300,8 @@ static int TransformOp(ClientData clientData, Tcl_Interp* interp, int objc,
Point2d point = graphPtr->map2D(x, y, xAxis, yAxis);
Tcl_Obj* listObjPtr = Tcl_NewListObj(0, (Tcl_Obj **)NULL);
- Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewIntObj(point.x));
- Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewIntObj(point.y));
+ Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewIntObj((int)point.x));
+ Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewIntObj((int)point.y));
Tcl_SetObjResult(interp, listObjPtr);
return TCL_OK;
diff --git a/tkblt/src/tkbltGraphOp.h b/tkblt/generic/tkbltGraphOp.h
index ff3f6ef..ff3f6ef 100644
--- a/tkblt/src/tkbltGraphOp.h
+++ b/tkblt/generic/tkbltGraphOp.h
diff --git a/tkblt/src/tkbltGraphSup.C b/tkblt/generic/tkbltGraphSup.C
index 005f10c..d5eb3d1 100644
--- a/tkblt/src/tkbltGraphSup.C
+++ b/tkblt/generic/tkbltGraphSup.C
@@ -243,12 +243,12 @@ void Graph::layoutGraph()
// Step 5
// If necessary, correct for the requested plot area aspect ratio.
if ((ops->reqPlotWidth == 0) && (ops->reqPlotHeight == 0) &&
- (ops->aspect > 0.0f)) {
- float ratio;
+ (ops->aspect > 0.0)) {
+ double ratio;
// Shrink one dimension of the plotarea to fit the requested
// width/height aspect ratio.
- ratio = (float)plotWidth / (float)plotHeight;
+ ratio = plotWidth / plotHeight;
if (ratio > ops->aspect) {
// Shrink the width
int scaledWidth = (int)(plotHeight * ops->aspect);
@@ -372,8 +372,8 @@ void Graph::layoutGraph()
if (hRange_ < 1)
hRange_ = 1;
- hScale_ = 1.0f / (float)hRange_;
- vScale_ = 1.0f / (float)vRange_;
+ hScale_ = 1.0 / hRange_;
+ vScale_ = 1.0 / vRange_;
// Calculate the placement of the graph title so it is centered within the
// space provided for it in the top margin
@@ -535,12 +535,12 @@ void Graph::getTextExtents(Tk_Font font, const char *text, int textLen,
*
*---------------------------------------------------------------------------
*/
-void Graph::getBoundingBox(int width, int height, float angle,
+void Graph::getBoundingBox(int width, int height, double angle,
double *rotWidthPtr, double *rotHeightPtr,
Point2d *bbox)
{
angle = fmod(angle, 360.0);
- if (fmod(angle, (double)90.0) == 0.0) {
+ if (fmod(angle, 90.0) == 0.0) {
int ll, ur, ul, lr;
double rotWidth, rotHeight;
diff --git a/tkblt/src/tkbltInt.C b/tkblt/generic/tkbltInt.C
index 5e9dde7..5e9dde7 100644
--- a/tkblt/src/tkbltInt.C
+++ b/tkblt/generic/tkbltInt.C
diff --git a/tkblt/generic/tkbltInt.h b/tkblt/generic/tkbltInt.h
new file mode 100644
index 0000000..2bf96ee
--- /dev/null
+++ b/tkblt/generic/tkbltInt.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2017 Patzschke+Rasp Software GmbH
+ *
+ * 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.
+ */
+
+#ifndef __TKBLT_INT_H__
+
+#if defined(_MSC_VER)
+
+#include <limits>
+
+#if !defined(NAN)
+#define NAN (std::numeric_limits<double>::quiet_NaN())
+#endif
+
+#if !defined(isnan)
+#define isnan(x) _isnan(x)
+#endif
+
+#if !defined(isfinite)
+#define isfinite(x) _finite(x)
+#endif
+
+#if !defined(isinf)
+#define isinf(x) !_finite(x)
+#endif
+
+#if !defined(numeric_limits)
+#define numeric_limits(x) _numeric_limits(x)
+#endif
+
+#if _MSC_VER < 1900
+#define snprintf _snprintf
+#else
+#include <stdio.h> //sprintf
+#endif
+
+#endif /* _MSC_VER */
+
+#endif /* __TKBLT_INT_H__ */
diff --git a/tkblt/src/tkbltNsUtil.C b/tkblt/generic/tkbltNsUtil.C
index f2ecfa3..f2ecfa3 100644
--- a/tkblt/src/tkbltNsUtil.C
+++ b/tkblt/generic/tkbltNsUtil.C
diff --git a/tkblt/src/tkbltNsUtil.h b/tkblt/generic/tkbltNsUtil.h
index 950a48a..950a48a 100644
--- a/tkblt/src/tkbltNsUtil.h
+++ b/tkblt/generic/tkbltNsUtil.h
diff --git a/tkblt/src/tkbltOp.C b/tkblt/generic/tkbltOp.C
index 4199a44..4199a44 100644
--- a/tkblt/src/tkbltOp.C
+++ b/tkblt/generic/tkbltOp.C
diff --git a/tkblt/src/tkbltOp.h b/tkblt/generic/tkbltOp.h
index fc9ffb7..fc9ffb7 100644
--- a/tkblt/src/tkbltOp.h
+++ b/tkblt/generic/tkbltOp.h
diff --git a/tkblt/src/tkbltParse.C b/tkblt/generic/tkbltParse.C
index 095b16a..095b16a 100644
--- a/tkblt/src/tkbltParse.C
+++ b/tkblt/generic/tkbltParse.C
diff --git a/tkblt/src/tkbltParse.h b/tkblt/generic/tkbltParse.h
index ee215a5..ee215a5 100644
--- a/tkblt/src/tkbltParse.h
+++ b/tkblt/generic/tkbltParse.h
diff --git a/tkblt/src/tkbltStubInit.c b/tkblt/generic/tkbltStubInit.c
index 8d28789..354b7f1 100644
--- a/tkblt/src/tkbltStubInit.c
+++ b/tkblt/generic/tkbltStubInit.c
@@ -1,4 +1,4 @@
-#include <tkbltVector.h>
+#include "tkbltVector.h"
/* !BEGIN!: Do not edit below this line. */
diff --git a/tkblt/src/tkbltStubLib.C b/tkblt/generic/tkbltStubLib.C
index e973063..e973063 100644
--- a/tkblt/src/tkbltStubLib.C
+++ b/tkblt/generic/tkbltStubLib.C
diff --git a/tkblt/src/tkbltSwitch.C b/tkblt/generic/tkbltSwitch.C
index bb80663..bb80663 100644
--- a/tkblt/src/tkbltSwitch.C
+++ b/tkblt/generic/tkbltSwitch.C
diff --git a/tkblt/src/tkbltSwitch.h b/tkblt/generic/tkbltSwitch.h
index eed7b31..eed7b31 100644
--- a/tkblt/src/tkbltSwitch.h
+++ b/tkblt/generic/tkbltSwitch.h
diff --git a/tkblt/src/tkbltVecCmd.C b/tkblt/generic/tkbltVecCmd.C
index d42dcda..feaddab 100644
--- a/tkblt/src/tkbltVecCmd.C
+++ b/tkblt/generic/tkbltVecCmd.C
@@ -161,8 +161,17 @@ static int Blt_ExprDoubleFromObj(Tcl_Interp* interp, Tcl_Obj *objPtr,
if (Tcl_GetDoubleFromObj((Tcl_Interp *)NULL, objPtr, valuePtr) == TCL_OK)
return TCL_OK;
+ // Interpret the empty string as NaN
+ int length;
+ char *string;
+ string = Tcl_GetStringFromObj(objPtr, &length);
+ if (length == 0) {
+ *valuePtr = NAN;
+ return TCL_OK;
+ }
+
// Then try to parse it as an expression.
- if (Tcl_ExprDouble(interp, Tcl_GetString(objPtr), valuePtr) == TCL_OK)
+ if (Tcl_ExprDouble(interp, string, valuePtr) == TCL_OK)
return TCL_OK;
return TCL_ERROR;
diff --git a/tkblt/src/tkbltVecInt.h b/tkblt/generic/tkbltVecInt.h
index cc516a1..cc516a1 100644
--- a/tkblt/src/tkbltVecInt.h
+++ b/tkblt/generic/tkbltVecInt.h
diff --git a/tkblt/src/tkbltVecMath.C b/tkblt/generic/tkbltVecMath.C
index 099f5f4..03277d4 100644
--- a/tkblt/src/tkbltVecMath.C
+++ b/tkblt/generic/tkbltVecMath.C
@@ -36,11 +36,14 @@
#include <stdlib.h>
#include <errno.h>
#include <ctype.h>
+#include <cmath>
+#include "tkbltInt.h"
#include "tkbltVecInt.h"
#include "tkbltNsUtil.h"
#include "tkbltParse.h"
+using namespace std;
using namespace Blt;
/*
@@ -531,7 +534,7 @@ static void MathError(Tcl_Interp* interp, double value)
Tcl_SetErrorCode(interp, "ARITH", "DOMAIN",
Tcl_GetStringResult(interp), (char *)NULL);
}
- else if ((errno == ERANGE) || std::isinf(value)) {
+ else if ((errno == ERANGE) || isinf(value)) {
if (value == 0.0) {
Tcl_AppendResult(interp,
"floating-point value too small to represent",
@@ -1416,7 +1419,7 @@ static int EvaluateExpression(Tcl_Interp* interp, char *string,
/* Check for NaN's and overflows. */
for (vp = vPtr->valueArr, vend = vp + vPtr->length; vp < vend; vp++) {
- if (!std::isfinite(*vp)) {
+ if (!isfinite(*vp)) {
/*
* IEEE floating-point error.
*/
@@ -1441,7 +1444,7 @@ static int ComponentFunc(ClientData clientData, Tcl_Interp* interp,
MathError(interp, *vp);
return TCL_ERROR;
}
- if (!std::isfinite(*vp)) {
+ if (!isfinite(*vp)) {
/*
* IEEE floating-point error.
*/
@@ -1481,19 +1484,19 @@ static int VectorFunc(ClientData clientData, Tcl_Interp* interp, Vector *vPtr)
static MathFunction mathFunctions[] =
{
{"abs", (void*)ComponentFunc, (ClientData)Fabs},
- {"acos", (void*)ComponentFunc, (ClientData)acos},
- {"asin", (void*)ComponentFunc, (ClientData)asin},
- {"atan", (void*)ComponentFunc, (ClientData)atan},
+ {"acos", (void*)ComponentFunc, (ClientData)(double (*)(double))acos},
+ {"asin", (void*)ComponentFunc, (ClientData)(double (*)(double))asin},
+ {"atan", (void*)ComponentFunc, (ClientData)(double (*)(double))atan},
{"adev", (void*)ScalarFunc, (ClientData)AvgDeviation},
- {"ceil", (void*)ComponentFunc, (ClientData)ceil},
- {"cos", (void*)ComponentFunc, (ClientData)cos},
- {"cosh", (void*)ComponentFunc, (ClientData)cosh},
- {"exp", (void*)ComponentFunc, (ClientData)exp},
- {"floor", (void*)ComponentFunc, (ClientData)floor},
+ {"ceil", (void*)ComponentFunc, (ClientData)(double (*)(double))ceil},
+ {"cos", (void*)ComponentFunc, (ClientData)(double (*)(double))cos},
+ {"cosh", (void*)ComponentFunc, (ClientData)(double (*)(double))cosh},
+ {"exp", (void*)ComponentFunc, (ClientData)(double (*)(double))exp},
+ {"floor", (void*)ComponentFunc, (ClientData)(double (*)(double))floor},
{"kurtosis",(void*)ScalarFunc, (ClientData)Kurtosis},
{"length", (void*)ScalarFunc, (ClientData)Length},
- {"log", (void*)ComponentFunc, (ClientData)log},
- {"log10", (void*)ComponentFunc, (ClientData)log10},
+ {"log", (void*)ComponentFunc, (ClientData)(double (*)(double))log},
+ {"log10", (void*)ComponentFunc, (ClientData)(double (*)(double))log10},
{"max", (void*)ScalarFunc, (ClientData)Blt_VecMax},
{"mean", (void*)ScalarFunc, (ClientData)Mean},
{"median", (void*)ScalarFunc, (ClientData)Median},
@@ -1506,14 +1509,14 @@ static MathFunction mathFunctions[] =
{"random", (void*)ComponentFunc, (ClientData)drand48},
{"round", (void*)ComponentFunc, (ClientData)Round},
{"sdev", (void*)ScalarFunc, (ClientData)StdDeviation},
- {"sin", (void*)ComponentFunc, (ClientData)sin},
- {"sinh", (void*)ComponentFunc, (ClientData)sinh},
+ {"sin", (void*)ComponentFunc, (ClientData)(double (*)(double))sin},
+ {"sinh", (void*)ComponentFunc, (ClientData)(double (*)(double))sinh},
{"skew", (void*)ScalarFunc, (ClientData)Skew},
{"sort", (void*)VectorFunc, (ClientData)Sort},
- {"sqrt", (void*)ComponentFunc, (ClientData)sqrt},
+ {"sqrt", (void*)ComponentFunc, (ClientData)(double (*)(double))sqrt},
{"sum", (void*)ScalarFunc, (ClientData)Sum},
- {"tan", (void*)ComponentFunc, (ClientData)tan},
- {"tanh", (void*)ComponentFunc, (ClientData)tanh},
+ {"tan", (void*)ComponentFunc, (ClientData)(double (*)(double))tan},
+ {"tanh", (void*)ComponentFunc, (ClientData)(double (*)(double))tanh},
{"var", (void*)ScalarFunc, (ClientData)Variance},
{(char *)NULL,},
};
diff --git a/tkblt/src/tkbltVecOp.C b/tkblt/generic/tkbltVecOp.C
index 6c84723..6c84723 100644
--- a/tkblt/src/tkbltVecOp.C
+++ b/tkblt/generic/tkbltVecOp.C
diff --git a/tkblt/src/tkbltVector.C b/tkblt/generic/tkbltVector.C
index e6262ec..0837917 100644
--- a/tkblt/src/tkbltVector.C
+++ b/tkblt/generic/tkbltVector.C
@@ -52,6 +52,7 @@
#include <cmath>
+#include "tkbltInt.h"
#include "tkbltVecInt.h"
#include "tkbltNsUtil.h"
#include "tkbltSwitch.h"
@@ -91,7 +92,7 @@ typedef struct {
} VectorClient;
static Tcl_CmdDeleteProc VectorInstDeleteProc;
-extern Tcl_ObjCmdProc VectorCmd;
+extern Tcl_ObjCmdProc VectorObjCmd;
static Tcl_InterpDeleteProc VectorInterpDeleteProc;
typedef struct {
@@ -1241,7 +1242,7 @@ VectorInterpData* Blt::Vec_GetInterpData(Tcl_Interp* interp)
Tcl_InitHashTable(&dataPtr->indexProcTable, TCL_STRING_KEYS);
Vec_InstallMathFunctions(&dataPtr->mathProcTable);
Vec_InstallSpecialIndices(&dataPtr->indexProcTable);
- srand48(time((time_t *) NULL));
+ srand48((long)time((time_t *) NULL));
}
return dataPtr;
}
diff --git a/tkblt/src/tkbltVector.h b/tkblt/generic/tkbltVector.h
index e6ee3b3..45ddf6e 100644
--- a/tkblt/src/tkbltVector.h
+++ b/tkblt/generic/tkbltVector.h
@@ -35,6 +35,17 @@
#include <tcl.h>
+#ifdef BUILD_tkblt
+# define TKBLT_STORAGE_CLASS DLLEXPORT
+#else
+# ifdef USE_TCL_STUBS
+# define TKBLT_STORAGE_CLASS /* */
+# else
+# define TKBLT_STORAGE_CLASS DLLIMPORT
+# endif
+#endif
+
+
typedef enum {
BLT_VECTOR_NOTIFY_UPDATE = 1, /* The vector's values has been updated */
BLT_VECTOR_NOTIFY_DESTROY /* The vector has been destroyed and the client
@@ -90,36 +101,36 @@ typedef enum {
#ifdef __cplusplus
extern "C" {
#endif
- int Blt_CreateVector(Tcl_Interp* interp, const char *vecName,
- int size, Blt_Vector** vecPtrPtr);
- int Blt_CreateVector2(Tcl_Interp* interp, const char *vecName,
- const char *cmdName, const char *varName,
- int initialSize, Blt_Vector **vecPtrPtr);
- int Blt_DeleteVectorByName(Tcl_Interp* interp, const char *vecName);
- int Blt_DeleteVector(Blt_Vector *vecPtr);
- int Blt_GetVector(Tcl_Interp* interp, const char *vecName,
- Blt_Vector **vecPtrPtr);
- int Blt_GetVectorFromObj(Tcl_Interp* interp, Tcl_Obj *objPtr,
+ TKBLT_STORAGE_CLASS int Blt_CreateVector(Tcl_Interp* interp, const char *vecName,
+ int size, Blt_Vector** vecPtrPtr);
+ TKBLT_STORAGE_CLASS int Blt_CreateVector2(Tcl_Interp* interp, const char *vecName,
+ const char *cmdName, const char *varName,
+ int initialSize, Blt_Vector **vecPtrPtr);
+ TKBLT_STORAGE_CLASS int Blt_DeleteVectorByName(Tcl_Interp* interp, const char *vecName);
+ TKBLT_STORAGE_CLASS int Blt_DeleteVector(Blt_Vector *vecPtr);
+ TKBLT_STORAGE_CLASS int Blt_GetVector(Tcl_Interp* interp, const char *vecName,
Blt_Vector **vecPtrPtr);
- int Blt_ResetVector(Blt_Vector *vecPtr, double *dataArr, int n,
- int arraySize, Tcl_FreeProc *freeProc);
- int Blt_ResizeVector(Blt_Vector *vecPtr, int n);
- int Blt_VectorExists(Tcl_Interp* interp, const char *vecName);
- int Blt_VectorExists2(Tcl_Interp* interp, const char *vecName);
- Blt_VectorId Blt_AllocVectorId(Tcl_Interp* interp, const char *vecName);
- int Blt_GetVectorById(Tcl_Interp* interp, Blt_VectorId clientId,
- Blt_Vector **vecPtrPtr);
- void Blt_SetVectorChangedProc(Blt_VectorId clientId,
- Blt_VectorChangedProc *proc,
- ClientData clientData);
- void Blt_FreeVectorId(Blt_VectorId clientId);
- const char *Blt_NameOfVectorId(Blt_VectorId clientId);
- const char *Blt_NameOfVector(Blt_Vector *vecPtr);
- int Blt_ExprVector(Tcl_Interp* interp, char *expr, Blt_Vector *vecPtr);
- void Blt_InstallIndexProc(Tcl_Interp* interp, const char *indexName,
- Blt_VectorIndexProc * procPtr);
- double Blt_VecMin(Blt_Vector *vPtr);
- double Blt_VecMax(Blt_Vector *vPtr);
+ TKBLT_STORAGE_CLASS int Blt_GetVectorFromObj(Tcl_Interp* interp, Tcl_Obj *objPtr,
+ Blt_Vector **vecPtrPtr);
+ TKBLT_STORAGE_CLASS int Blt_ResetVector(Blt_Vector *vecPtr, double *dataArr, int n,
+ int arraySize, Tcl_FreeProc *freeProc);
+ TKBLT_STORAGE_CLASS int Blt_ResizeVector(Blt_Vector *vecPtr, int n);
+ TKBLT_STORAGE_CLASS int Blt_VectorExists(Tcl_Interp* interp, const char *vecName);
+ TKBLT_STORAGE_CLASS int Blt_VectorExists2(Tcl_Interp* interp, const char *vecName);
+ TKBLT_STORAGE_CLASS Blt_VectorId Blt_AllocVectorId(Tcl_Interp* interp, const char *vecName);
+ TKBLT_STORAGE_CLASS int Blt_GetVectorById(Tcl_Interp* interp, Blt_VectorId clientId,
+ Blt_Vector **vecPtrPtr);
+ TKBLT_STORAGE_CLASS void Blt_SetVectorChangedProc(Blt_VectorId clientId,
+ Blt_VectorChangedProc *proc,
+ ClientData clientData);
+ TKBLT_STORAGE_CLASS void Blt_FreeVectorId(Blt_VectorId clientId);
+ TKBLT_STORAGE_CLASS const char *Blt_NameOfVectorId(Blt_VectorId clientId);
+ TKBLT_STORAGE_CLASS const char *Blt_NameOfVector(Blt_Vector *vecPtr);
+ TKBLT_STORAGE_CLASS int Blt_ExprVector(Tcl_Interp* interp, char *expr, Blt_Vector *vecPtr);
+ TKBLT_STORAGE_CLASS void Blt_InstallIndexProc(Tcl_Interp* interp, const char *indexName,
+ Blt_VectorIndexProc * procPtr);
+ TKBLT_STORAGE_CLASS double Blt_VecMin(Blt_Vector *vPtr);
+ TKBLT_STORAGE_CLASS double Blt_VecMax(Blt_Vector *vPtr);
#ifdef __cplusplus
}
#endif