433 lines
14 KiB
Diff
433 lines
14 KiB
Diff
diff --git a/Rendering/Tk/CMakeLists.txt b/Rendering/Tk/CMakeLists.txt
|
|
index 916d376..976cc4f 100644
|
|
--- a/Rendering/Tk/CMakeLists.txt
|
|
+++ b/Rendering/Tk/CMakeLists.txt
|
|
@@ -1,8 +1,6 @@
|
|
vtk_module_export_info()
|
|
|
|
-# The cmake code to find the libs is in vtkWrapTcl
|
|
-set(VTK_WRAP_TCL_FIND_LIBS 1)
|
|
-include(vtkWrapTcl)
|
|
+find_package(TCL)
|
|
|
|
if(TK_FOUND AND VTK_USE_TK)
|
|
|
|
@@ -31,6 +29,8 @@ if(TK_FOUND AND VTK_USE_TK)
|
|
set(try_paths "${TK_INCLUDE_PATH_PARENT}/PrivateHeaders")
|
|
endif()
|
|
if(try_file)
|
|
+ include(vtkTclTkMacros)
|
|
+
|
|
VTK_GET_TCL_TK_VERSION ("TCL_TK_MAJOR_VERSION" "TCL_TK_MINOR_VERSION")
|
|
set(TCL_TK_VERSIOND "${TCL_TK_MAJOR_VERSION}.${TCL_TK_MINOR_VERSION}")
|
|
set(try_paths ${try_paths}
|
|
@@ -50,53 +50,17 @@ if(TK_FOUND AND VTK_USE_TK)
|
|
${TK_INCLUDE_PATH}
|
|
${TK_INTERNAL_PATH}
|
|
${TK_XLIB_PATH}
|
|
- ${TCL_INCLUDE_PATH}
|
|
- ${VTK_SOURCE_DIR}/Wrapping/Tcl
|
|
- ${VTK_BINARY_DIR}/Wrapping/Tcl)
|
|
+ ${TCL_INCLUDE_PATH})
|
|
|
|
if(VTK_USE_X)
|
|
include_directories(${VTK_BINARY_DIR}/Utilities/KWSys)
|
|
endif()
|
|
|
|
- if (VTK_WRAP_TCL)
|
|
- set(Module_TCL_SRCS
|
|
- vtkTclTkWidgetsInit.cxx
|
|
- vtkTkRenderWidget.cxx
|
|
- vtkTkImageViewerWidget.cxx)
|
|
-
|
|
- if(VTK_USE_COCOA)
|
|
- set(Module_TCL_SRCS ${Module_TCL_SRCS} vtkCocoaTkUtilities.mm)
|
|
-
|
|
- # Set specified Objective-C++ flags, if any.
|
|
- if(VTK_REQUIRED_OBJCXX_FLAGS)
|
|
- set_source_files_properties(vtkCocoaTkUtilities.mm
|
|
- PROPERTIES COMPILE_FLAGS "${VTK_REQUIRED_OBJCXX_FLAGS}")
|
|
- endif()
|
|
- endif()
|
|
-
|
|
- set(Module_TCL_LIBS ${VTK_TK_LIBRARIES})
|
|
- # Use special interactor for X and Tk.
|
|
- if(VTK_USE_X)
|
|
- find_package(X11 REQUIRED)
|
|
- if(NOT X11_Xt_FOUND)
|
|
- message(FATAL_ERROR "X11_Xt_LIB could not be found. Required for VTK X lib.")
|
|
- endif()
|
|
- set(Module_TCL_SRCS ${Module_TCL_SRCS} vtkXRenderWindowTclInteractor.cxx)
|
|
- set(Module_TCL_LIBS vtksys vtkRendering${VTK_RENDERING_BACKEND} ${TK_LIBRARY} ${X11_LIBRARIES})
|
|
- endif()
|
|
-
|
|
- vtk_add_library(vtkRenderingTkTCL ${Module_TCL_SRCS})
|
|
-
|
|
- vtk_module_link_libraries(vtkRenderingTkTCL
|
|
- vtkRenderingCore vtkCommonDataModel vtkCommonCoreTCL
|
|
- vtkInteractionImage
|
|
- ${Module_TCL_LIBS})
|
|
-
|
|
- set_property(GLOBAL APPEND PROPERTY VTK_TCL_WRAPPED vtkRenderingTk)
|
|
-
|
|
- endif()
|
|
-
|
|
if (VTK_WRAP_PYTHON)
|
|
+ configure_file(
|
|
+ "${CMAKE_CURRENT_SOURCE_DIR}/vtkTkAppInitConfigure.h.in"
|
|
+ "${CMAKE_CURRENT_BINARY_DIR}/vtkTkAppInitConfigure.h")
|
|
+
|
|
set(Module_PYTHON_SRCS
|
|
vtkPythonTkWidgetsInit.cxx
|
|
vtkTkRenderWidgetPython.cxx
|
|
@@ -129,6 +93,8 @@ if(TK_FOUND AND VTK_USE_TK)
|
|
vtk_module_link_libraries(vtkRenderingPythonTkWidgets
|
|
vtkRenderingCore vtkCommonDataModel
|
|
vtkInteractionImage
|
|
- ${Module_PYTHON_LIBS})
|
|
+ ${Module_PYTHON_LIBS}
|
|
+ ${TCL_LIBRARY}
|
|
+ ${TK_LIBRARY})
|
|
endif()
|
|
endif()
|
|
diff --git a/Rendering/Tk/vtkPythonTkWidgetsInit.cxx b/Rendering/Tk/vtkPythonTkWidgetsInit.cxx
|
|
index 75a4e84..0b6e0b0 100644
|
|
--- a/Rendering/Tk/vtkPythonTkWidgetsInit.cxx
|
|
+++ b/Rendering/Tk/vtkPythonTkWidgetsInit.cxx
|
|
@@ -23,10 +23,10 @@
|
|
//----------------------------------------------------------------------------
|
|
// Vtkrenderingpythontkwidgets_Init
|
|
// Called upon system startup to create the widget commands.
|
|
-extern "C" {VTK_TK_EXPORT int Vtkrenderingpythontkwidgets_Init(Tcl_Interp *interp);}
|
|
+extern "C" {VTK_EXPORT int Vtkrenderingpythontkwidgets_Init(Tcl_Interp *interp);}
|
|
|
|
-extern "C" {VTK_TK_EXPORT int Vtktkrenderwidget_Init(Tcl_Interp *interp);}
|
|
-extern "C" {VTK_TK_EXPORT int Vtktkimageviewerwidget_Init(Tcl_Interp *interp);}
|
|
+extern "C" {VTK_EXPORT int Vtktkrenderwidget_Init(Tcl_Interp *interp);}
|
|
+extern "C" {VTK_EXPORT int Vtktkimageviewerwidget_Init(Tcl_Interp *interp);}
|
|
|
|
#define VTKTK_TO_STRING(x) VTKTK_TO_STRING0(x)
|
|
#define VTKTK_TO_STRING0(x) VTKTK_TO_STRING1(x)
|
|
diff --git a/Rendering/Tk/vtkTcl.h b/Rendering/Tk/vtkTcl.h
|
|
new file mode 100644
|
|
index 0000000..5b763d5
|
|
--- /dev/null
|
|
+++ b/Rendering/Tk/vtkTcl.h
|
|
@@ -0,0 +1,28 @@
|
|
+/*=========================================================================
|
|
+
|
|
+ Program: Visualization Toolkit
|
|
+ Module: vtkTcl.h
|
|
+
|
|
+ Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
+ All rights reserved.
|
|
+ See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
+
|
|
+ This software is distributed WITHOUT ANY WARRANTY; without even
|
|
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
+ PURPOSE. See the above copyright notice for more information.
|
|
+
|
|
+=========================================================================*/
|
|
+#ifndef vtkTcl_h
|
|
+#define vtkTcl_h
|
|
+
|
|
+#include "vtkTkAppInitConfigure.h"
|
|
+
|
|
+#ifdef VTK_TCL_TK_STATIC
|
|
+# ifndef STATIC_BUILD
|
|
+# define STATIC_BUILD
|
|
+# endif
|
|
+#endif
|
|
+
|
|
+#include <tcl.h>
|
|
+
|
|
+#endif
|
|
diff --git a/Rendering/Tk/vtkTclTkWidgetsInit.cxx b/Rendering/Tk/vtkTclTkWidgetsInit.cxx
|
|
deleted file mode 100644
|
|
index 9e5fc31..0000000
|
|
--- a/Rendering/Tk/vtkTclTkWidgetsInit.cxx
|
|
+++ /dev/null
|
|
@@ -1,51 +0,0 @@
|
|
-/*=========================================================================
|
|
-
|
|
- Program: Visualization Toolkit
|
|
- Module: vtkTkWidgetsInit.cxx
|
|
-
|
|
- Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
- All rights reserved.
|
|
- See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
-
|
|
- This software is distributed WITHOUT ANY WARRANTY; without even
|
|
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
- PURPOSE. See the above copyright notice for more information.
|
|
-
|
|
-=========================================================================*/
|
|
-#include "vtkTcl.h"
|
|
-#include "vtkTk.h"
|
|
-#include "vtkVersionMacros.h"
|
|
-#include "vtkTkImageViewerWidget.h"
|
|
-#include "vtkTkRenderWidget.h"
|
|
-#include "vtkImageData.h"
|
|
-
|
|
-
|
|
-//----------------------------------------------------------------------------
|
|
-// Vtkrenderingtcltkwidgets_Init
|
|
-// Called upon system startup to create the widget commands.
|
|
-extern "C" {VTK_TK_EXPORT int Vtkrenderingtktcl_Init(Tcl_Interp *interp);}
|
|
-
|
|
-extern "C" {VTK_TK_EXPORT int Vtktkrenderwidget_Init(Tcl_Interp *interp);}
|
|
-extern "C" {VTK_TK_EXPORT int Vtktkimageviewerwidget_Init(Tcl_Interp *interp);}
|
|
-
|
|
-#define VTKTK_TO_STRING(x) VTKTK_TO_STRING0(x)
|
|
-#define VTKTK_TO_STRING0(x) VTKTK_TO_STRING1(x)
|
|
-#define VTKTK_TO_STRING1(x) #x
|
|
-#define VTKTK_VERSION VTKTK_TO_STRING(VTK_MAJOR_VERSION) "." VTKTK_TO_STRING(VTK_MINOR_VERSION)
|
|
-
|
|
-int Vtkrenderingtktcl_Init(Tcl_Interp *interp)
|
|
-{
|
|
- // Forward the call to the real init functions.
|
|
- if(Vtktkrenderwidget_Init(interp) == TCL_OK &&
|
|
- Vtktkimageviewerwidget_Init(interp) == TCL_OK)
|
|
- {
|
|
- // Report that the package is provided.
|
|
- return Tcl_PkgProvide(interp, (char*)"vtkRenderingTkTCL",
|
|
- (char*)VTKTK_VERSION);
|
|
- }
|
|
- else
|
|
- {
|
|
- // One of the widgets is not provided.
|
|
- return TCL_ERROR;
|
|
- }
|
|
-}
|
|
diff --git a/Rendering/Tk/vtkTclUtil.h b/Rendering/Tk/vtkTclUtil.h
|
|
new file mode 100644
|
|
index 0000000..45db3c0
|
|
--- /dev/null
|
|
+++ b/Rendering/Tk/vtkTclUtil.h
|
|
@@ -0,0 +1,118 @@
|
|
+/*=========================================================================
|
|
+
|
|
+ Program: Visualization Toolkit
|
|
+ Module: vtkTclUtil.h
|
|
+
|
|
+ Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
+ All rights reserved.
|
|
+ See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
+
|
|
+ This software is distributed WITHOUT ANY WARRANTY; without even
|
|
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
+ PURPOSE. See the above copyright notice for more information.
|
|
+
|
|
+=========================================================================*/
|
|
+
|
|
+#ifndef vtkTclUtil_h
|
|
+#define vtkTclUtil_h
|
|
+
|
|
+#include "vtkObject.h"
|
|
+#include "vtkCommand.h"
|
|
+#include "vtkTcl.h"
|
|
+
|
|
+#ifdef _WIN32
|
|
+#define VTKTCL_EXPORT __declspec( dllexport )
|
|
+#else
|
|
+#define VTKTCL_EXPORT
|
|
+#endif
|
|
+
|
|
+extern VTKTCL_EXPORT void vtkTclUpdateCommand(Tcl_Interp *interp,
|
|
+ char *name,
|
|
+ vtkObject *obj);
|
|
+
|
|
+extern VTKTCL_EXPORT void vtkTclDeleteObjectFromHash(vtkObject *,
|
|
+ unsigned long eventId,
|
|
+ void *, void *);
|
|
+extern VTKTCL_EXPORT void vtkTclGenericDeleteObject(ClientData cd);
|
|
+
|
|
+extern VTKTCL_EXPORT void
|
|
+vtkTclGetObjectFromPointer(Tcl_Interp *interp, void *temp,
|
|
+ const char *targetType);
|
|
+
|
|
+extern VTKTCL_EXPORT void *
|
|
+vtkTclGetPointerFromObject(const char *name, const char *result_type,
|
|
+ Tcl_Interp *interp, int &error);
|
|
+
|
|
+extern VTKTCL_EXPORT void vtkTclVoidFunc(void *);
|
|
+extern VTKTCL_EXPORT void vtkTclVoidFuncArgDelete(void *);
|
|
+extern VTKTCL_EXPORT void vtkTclListInstances(Tcl_Interp *interp,
|
|
+ ClientData arg);
|
|
+extern VTKTCL_EXPORT int vtkTclInDelete(Tcl_Interp *interp);
|
|
+
|
|
+extern VTKTCL_EXPORT int vtkTclNewInstanceCommand(ClientData cd,
|
|
+ Tcl_Interp *interp,
|
|
+ int argc, char *argv[]);
|
|
+extern VTKTCL_EXPORT void vtkTclDeleteCommandStruct(ClientData cd);
|
|
+extern VTKTCL_EXPORT
|
|
+void vtkTclCreateNew(Tcl_Interp *interp, const char *cname,
|
|
+ ClientData (*NewCommand)(),
|
|
+ int (*CommandFunction)(ClientData cd,
|
|
+ Tcl_Interp *interp,
|
|
+ int argc, char *argv[]));
|
|
+
|
|
+class vtkTclCommand : public vtkCommand
|
|
+{
|
|
+public:
|
|
+ static vtkTclCommand *New() { return new vtkTclCommand; };
|
|
+
|
|
+ void SetStringCommand(const char *arg);
|
|
+ void SetInterp(Tcl_Interp *interp) { this->Interp = interp; };
|
|
+
|
|
+ void Execute(vtkObject *, unsigned long, void *);
|
|
+
|
|
+ char *StringCommand;
|
|
+ Tcl_Interp *Interp;
|
|
+protected:
|
|
+ vtkTclCommand();
|
|
+ ~vtkTclCommand();
|
|
+};
|
|
+
|
|
+typedef struct _vtkTclVoidFuncArg
|
|
+{
|
|
+ Tcl_Interp *interp;
|
|
+ char *command;
|
|
+} vtkTclVoidFuncArg;
|
|
+
|
|
+struct vtkTclCommandArgStruct
|
|
+{
|
|
+ void *Pointer;
|
|
+ Tcl_Interp *Interp;
|
|
+ unsigned long Tag;
|
|
+};
|
|
+
|
|
+struct vtkTclCommandStruct
|
|
+{
|
|
+ ClientData (*NewCommand)();
|
|
+ int (*CommandFunction)(ClientData cd, Tcl_Interp *interp,
|
|
+ int argc, char *argv[]);
|
|
+};
|
|
+
|
|
+struct vtkTclInterpStruct
|
|
+{
|
|
+ Tcl_HashTable InstanceLookup;
|
|
+ Tcl_HashTable PointerLookup;
|
|
+ Tcl_HashTable CommandLookup;
|
|
+
|
|
+ int Number;
|
|
+ int DebugOn;
|
|
+ int InDelete;
|
|
+ int DeleteExistingObjectOnNew;
|
|
+};
|
|
+
|
|
+extern VTKTCL_EXPORT
|
|
+void vtkTclApplicationInitExecutable(int argc, const char* const argv[]);
|
|
+extern VTKTCL_EXPORT
|
|
+void vtkTclApplicationInitTclTk(Tcl_Interp* interp,
|
|
+ const char* const relative_dirs[]);
|
|
+
|
|
+#endif
|
|
diff --git a/Rendering/Tk/vtkTk.h b/Rendering/Tk/vtkTk.h
|
|
new file mode 100644
|
|
index 0000000..ff13966
|
|
--- /dev/null
|
|
+++ b/Rendering/Tk/vtkTk.h
|
|
@@ -0,0 +1,28 @@
|
|
+/*=========================================================================
|
|
+
|
|
+ Program: Visualization Toolkit
|
|
+ Module: vtkTk.h
|
|
+
|
|
+ Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
|
+ All rights reserved.
|
|
+ See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
|
+
|
|
+ This software is distributed WITHOUT ANY WARRANTY; without even
|
|
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
+ PURPOSE. See the above copyright notice for more information.
|
|
+
|
|
+=========================================================================*/
|
|
+#ifndef vtkTk_h
|
|
+#define vtkTk_h
|
|
+
|
|
+#include "vtkTkAppInitConfigure.h"
|
|
+
|
|
+#ifdef VTK_TCL_TK_STATIC
|
|
+# ifndef STATIC_BUILD
|
|
+# define STATIC_BUILD
|
|
+# endif
|
|
+#endif
|
|
+
|
|
+#include <tk.h>
|
|
+
|
|
+#endif
|
|
diff --git a/Rendering/Tk/vtkTkAppInitConfigure.h.in b/Rendering/Tk/vtkTkAppInitConfigure.h.in
|
|
new file mode 100644
|
|
index 0000000..3e0dec7
|
|
--- /dev/null
|
|
+++ b/Rendering/Tk/vtkTkAppInitConfigure.h.in
|
|
@@ -0,0 +1,18 @@
|
|
+#ifndef vtkTkAppInitConfigure_h
|
|
+#define vtkTkAppInitConfigure_h
|
|
+
|
|
+/* Whether we are linking to Tcl/Tk statically. */
|
|
+#cmakedefine VTK_TCL_TK_STATIC
|
|
+
|
|
+/* Whether Tk widgets are NOT initialized when vtkRendering loads. */
|
|
+#cmakedefine VTK_USE_TK
|
|
+
|
|
+/* Whether the Tcl/Tk support files are copied to the build dir */
|
|
+#cmakedefine VTK_TCL_TK_COPY_SUPPORT_LIBRARY
|
|
+
|
|
+/* Where the VTK Tcl packages can be found */
|
|
+#define VTK_INSTALL_TCL_DIR "@VTK_INSTALL_TCL_DIR@"
|
|
+
|
|
+@VTK_EXTRA_TCL_WRAPPING_CODE@
|
|
+
|
|
+#endif
|
|
diff --git a/Rendering/Tk/vtkTkImageViewerWidget.cxx b/Rendering/Tk/vtkTkImageViewerWidget.cxx
|
|
index d3ae0f0..5967b7f 100644
|
|
--- a/Rendering/Tk/vtkTkImageViewerWidget.cxx
|
|
+++ b/Rendering/Tk/vtkTkImageViewerWidget.cxx
|
|
@@ -443,7 +443,7 @@ extern "C"
|
|
//----------------------------------------------------------------------------
|
|
// vtkTkImageViewerWidget_Init
|
|
// Called upon system startup to create vtkTkImageViewerWidget command.
|
|
-extern "C" {VTK_TK_EXPORT int Vtktkimageviewerwidget_Init(Tcl_Interp *interp);}
|
|
+extern "C" {VTK_EXPORT int Vtktkimageviewerwidget_Init(Tcl_Interp *interp);}
|
|
|
|
#define VTKTK_TO_STRING(x) VTKTK_TO_STRING0(x)
|
|
#define VTKTK_TO_STRING0(x) VTKTK_TO_STRING1(x)
|
|
diff --git a/Rendering/Tk/vtkTkRenderWidget.cxx b/Rendering/Tk/vtkTkRenderWidget.cxx
|
|
index 6c1825d..a30cc38 100644
|
|
--- a/Rendering/Tk/vtkTkRenderWidget.cxx
|
|
+++ b/Rendering/Tk/vtkTkRenderWidget.cxx
|
|
@@ -759,14 +759,14 @@ extern "C"
|
|
//----------------------------------------------------------------------------
|
|
// vtkTkRenderWidget_Init
|
|
// Called upon system startup to create vtkTkRenderWidget command.
|
|
-extern "C" {VTK_TK_EXPORT int Vtktkrenderwidget_Init(Tcl_Interp *interp);}
|
|
+extern "C" {VTK_EXPORT int Vtktkrenderwidget_Init(Tcl_Interp *interp);}
|
|
|
|
#define VTKTK_TO_STRING(x) VTKTK_TO_STRING0(x)
|
|
#define VTKTK_TO_STRING0(x) VTKTK_TO_STRING1(x)
|
|
#define VTKTK_TO_STRING1(x) #x
|
|
#define VTKTK_VERSION VTKTK_TO_STRING(VTK_MAJOR_VERSION) "." VTKTK_TO_STRING(VTK_MINOR_VERSION)
|
|
|
|
-int VTK_TK_EXPORT Vtktkrenderwidget_Init(Tcl_Interp *interp)
|
|
+int VTK_EXPORT Vtktkrenderwidget_Init(Tcl_Interp *interp)
|
|
{
|
|
// This widget requires Tk to function.
|
|
Tcl_PkgRequire(interp, (char *)"Tk", (char*)TK_VERSION, 0);
|
|
diff --git a/ThirdParty/TclTk/CMakeLists.txt b/ThirdParty/TclTk/CMakeLists.txt
|
|
index eb2b61d..904acf0 100644
|
|
--- a/ThirdParty/TclTk/CMakeLists.txt
|
|
+++ b/ThirdParty/TclTk/CMakeLists.txt
|
|
@@ -19,9 +19,7 @@ endif()
|
|
vtk_dependent_option(VTK_USE_TK "Build VTK with Tk support"
|
|
${VTK_USE_TK_DEFAULT} "VTK_CAN_USE_TK" OFF)
|
|
|
|
-# The cmake code to find the libs is in vtkWrapTcl
|
|
-set(VTK_WRAP_TCL_FIND_LIBS 1)
|
|
-include(vtkWrapTcl)
|
|
+include(vtkTclTkMacros)
|
|
|
|
# Subdirs
|
|
ADD_SUBDIRECTORY(internals)
|