diff --git a/Applications/ParaView/Testing/Python/TestPythonParaViewWebMPI.py b/Applications/ParaView/Testing/Python/TestPythonParaViewWebMPI.py
index e87744bb3cc..df40445e667 100644
--- a/Applications/ParaView/Testing/Python/TestPythonParaViewWebMPI.py
+++ b/Applications/ParaView/Testing/Python/TestPythonParaViewWebMPI.py
@@ -14,16 +14,16 @@
from paraview.web import wamp as pv_wamp
from paraview.web import ipython as pv_ipython
-from vtkCommonCorePython import *
-from vtkCommonDataModelPython import *
-from vtkCommonExecutionModelPython import *
-from vtkFiltersSourcesPython import *
-from vtkParallelCorePython import *
-from vtkParaViewWebCorePython import *
-from vtkPVClientServerCoreCorePython import *
-from vtkPVServerManagerApplicationPython import *
-from vtkPVServerManagerCorePython import *
-from vtkPVVTKExtensionsCorePython import *
+from vtk.vtkCommonCore import *
+from vtk.vtkCommonDataModel import *
+from vtk.vtkCommonExecutionModel import *
+from vtk.vtkFiltersSources import *
+from vtk.vtkParallelCore import *
+from vtk.vtkParaViewWebCore import *
+from vtk.vtkPVClientServerCoreCore import *
+from vtk.vtkPVServerManagerApplication import *
+from vtk.vtkPVServerManagerCore import *
+from vtkPVVTKExtensionsCore import *
#------------------------------------------------------------------------------
# InLine protocol
diff --git a/Applications/ParaView/Testing/Python/TestPythonParaViewWebiPythonMPI.py b/Applications/ParaView/Testing/Python/TestPythonParaViewWebiPythonMPI.py
index 3a5afa2e814..f3430cce6e2 100644
--- a/Applications/ParaView/Testing/Python/TestPythonParaViewWebiPythonMPI.py
+++ b/Applications/ParaView/Testing/Python/TestPythonParaViewWebiPythonMPI.py
@@ -14,16 +14,16 @@
from paraview.web import wamp as pv_wamp
from paraview.web import ipython as pv_ipython
-from vtkCommonCorePython import *
-from vtkCommonDataModelPython import *
-from vtkCommonExecutionModelPython import *
-from vtkFiltersSourcesPython import *
-from vtkParallelCorePython import *
-from vtkParaViewWebCorePython import *
-from vtkPVClientServerCoreCorePython import *
-from vtkPVServerManagerApplicationPython import *
-from vtkPVServerManagerCorePython import *
-from vtkPVVTKExtensionsCorePython import *
+from vtk.vtkCommonCore import *
+from vtk.vtkCommonDataModel import *
+from vtk.vtkCommonExecutionModel import *
+from vtk.vtkFiltersSources import *
+from vtk.vtkParallelCore import *
+from vtk.vtkParaViewWebCore import *
+from vtk.vtkPVClientServerCoreCore import *
+from vtk.vtkPVServerManagerApplication import *
+from vtk.vtkPVServerManagerCore import *
+from vtk.vtkPVVTKExtensionsCore import *
from vtk import *
#------------------------------------------------------------------------------
diff --git a/Applications/ParaView/Testing/XML/CMakeLists.txt b/Applications/ParaView/Testing/XML/CMakeLists.txt
index 5162fb35017..c3a4b28ab98 100644
--- a/Applications/ParaView/Testing/XML/CMakeLists.txt
+++ b/Applications/ParaView/Testing/XML/CMakeLists.txt
@@ -285,6 +285,7 @@ list(APPEND TESTS_WITH_BASELINES
${CMAKE_CURRENT_SOURCE_DIR}/SolidColorSource.xml
${CMAKE_CURRENT_SOURCE_DIR}/SpreadSheet1.xml
${CMAKE_CURRENT_SOURCE_DIR}/SpreadSheet2.xml
+ ${CMAKE_CURRENT_SOURCE_DIR}/SpreadSheet3.xml
${CMAKE_CURRENT_SOURCE_DIR}/SPTimeseries.xml
${CMAKE_CURRENT_SOURCE_DIR}/SpyPlotHistoryReader.xml
${CMAKE_CURRENT_SOURCE_DIR}/SelectionLinkBasic.xml
@@ -580,6 +581,12 @@ IF (PARAVIEW_USE_MPI)
SET (SpreadSheet1_DISABLE_CS TRUE)
SET (SpreadSheet1_DISABLE_CRS TRUE)
+ # Disabled since the 1 column in spreadsheet view ends up being "Process ID"
+ # which messes up the sorting in this test. Need to extend the testing framework
+ # or fix spreadsheet view for these to work properly.
+ SET (SpreadSheet3_DISABLE_CS TRUE)
+ SET (SpreadSheet3_DISABLE_CRS TRUE)
+
# The hierchical fractal source is a temporary testing source and it does not
# create the dataset correctly in parallel. Since it's a testing source, I am
# just going to disable the test in parallel. We can fix the source when
diff --git a/Applications/ParaView/Testing/XML/SpreadSheet3.xml b/Applications/ParaView/Testing/XML/SpreadSheet3.xml
new file mode 100644
index 00000000000..17e42b89f34
--- /dev/null
+++ b/Applications/ParaView/Testing/XML/SpreadSheet3.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5e16f575765..66ea9effb4f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -747,7 +747,9 @@ if (PARAVIEW_ENABLE_PYTHON AND PARAVIEW_ENABLE_CATALYST)
list(APPEND VTK_PYTHON_MODULES ${vtk-module})
set(vtkPVPythonCatalyst_HEADERS vtkCPPythonScriptPipeline)
- vtk_add_python_wrapping(${vtk-module})
+ vtk_add_python_wrapping(${vtk-module} pv_wrapping_sources)
+ vtk_add_python_wrapping_library(${vtk-module} pv_wrapping_sources ${vtk-module})
+
if (BUILD_TESTING)
set (_test_module_name "${vtk-module}-Test-Cxx")
add_subdirectory(
diff --git a/ParaViewCore/ClientServerCore/Core/vtkProcessModule.cxx b/ParaViewCore/ClientServerCore/Core/vtkProcessModule.cxx
index db207c1195a..a4c1f0c2f97 100644
--- a/ParaViewCore/ClientServerCore/Core/vtkProcessModule.cxx
+++ b/ParaViewCore/ClientServerCore/Core/vtkProcessModule.cxx
@@ -270,7 +270,8 @@ bool vtkProcessModule::Initialize(ProcessTypes type, int &argc, char** &argv)
// Create the process module.
vtkProcessModule::Singleton = vtkSmartPointer::New();
- vtkProcessModule::Singleton->InitializePythonEnvironment(argc, argv);
+ vtkProcessModule::Singleton->DetermineExecutablePath(argc, argv);
+ vtkProcessModule::Singleton->InitializePythonEnvironment();
return true;
}
@@ -547,42 +548,50 @@ void vtkProcessModule::SetOptions(vtkPVOptions* options)
}
//----------------------------------------------------------------------------
-bool vtkProcessModule::InitializePythonEnvironment(int argc, char** argv)
+void vtkProcessModule::DetermineExecutablePath(int argc, char* argv[])
{
-#ifdef PARAVIEW_ENABLE_PYTHON
assert(argc >= 1);
- if (!vtkPythonInterpreter::IsInitialized())
- {
- // If someone already initialized Python before ProcessModule was started,
- // we don't finalize it when ProcessModule finalizes. This is for the cases
- // where ParaView modules are directly imported in python (not pvpython).
- vtkProcessModule::FinalizePython = true;
- }
-
- std::string self_dir, programname;
if (argc > 0)
{
std::string errMsg;
- if (!vtksys::SystemTools::FindProgramPath(argv[0], programname, errMsg))
+ if (!vtksys::SystemTools::FindProgramPath(argv[0], this->ProgramPath, errMsg))
{
// if FindProgramPath fails. We really don't have much of an alternative
// here. Python module importing is going to fail.
- programname = vtksys::SystemTools::CollapseFullPath(argv[0]);
+ this->ProgramPath = vtksys::SystemTools::CollapseFullPath(argv[0]);
}
- self_dir = vtksys::SystemTools::GetFilenamePath(programname.c_str());
+ this->SelfDir = vtksys::SystemTools::GetFilenamePath(this->ProgramPath);
}
else
{
- self_dir = vtksys::SystemTools::GetCurrentWorkingDirectory(/*collapse=*/true);
- programname = self_dir + "/unknown_exe";
+ this->SelfDir = vtksys::SystemTools::GetCurrentWorkingDirectory(/*collapse=*/true);
+ this->ProgramPath = this->SelfDir + "/unknown_exe";
+ }
+}
+
+//----------------------------------------------------------------------------
+void vtkProcessModule::SetExecutablePath(const std::string& path)
+{
+ this->ProgramPath = vtksys::SystemTools::CollapseFullPath(path);
+ this->SelfDir = vtksys::SystemTools::GetFilenamePath(this->ProgramPath);
+}
+
+//----------------------------------------------------------------------------
+bool vtkProcessModule::InitializePythonEnvironment()
+{
+#ifdef PARAVIEW_ENABLE_PYTHON
+ if (!vtkPythonInterpreter::IsInitialized())
+ {
+ // If someone already initialized Python before ProcessModule was started,
+ // we don't finalize it when ProcessModule finalizes. This is for the cases
+ // where ParaView modules are directly imported in python (not pvpython).
+ vtkProcessModule::FinalizePython = true;
}
- vtkPythonInterpreter::SetProgramName(programname.c_str());
- vtkPythonAppInitPrependPath(self_dir.c_str());
+ vtkPythonInterpreter::SetProgramName(this->ProgramPath.c_str());
+ vtkPythonAppInitPrependPath(this->SelfDir);
#endif
- (void)argc;
- (void)argv;
return true;
}
diff --git a/ParaViewCore/ClientServerCore/Core/vtkProcessModule.h b/ParaViewCore/ClientServerCore/Core/vtkProcessModule.h
index 2f33438e2cf..7bd280b1780 100644
--- a/ParaViewCore/ClientServerCore/Core/vtkProcessModule.h
+++ b/ParaViewCore/ClientServerCore/Core/vtkProcessModule.h
@@ -23,6 +23,8 @@
#include "vtkObject.h"
#include "vtkSmartPointer.h" // needed for vtkSmartPointer.
+#include // for std::string
+
class vtkMultiProcessController;
class vtkNetworkAccessManager;
class vtkPVOptions;
@@ -235,6 +237,24 @@ class VTKPVCLIENTSERVERCORECORE_EXPORT vtkProcessModule : public vtkObject
// session id is ever repeated.
vtkIdType MaxSessionId;
+ // Description:
+ // Sets the executable path of the process so that ParaView can, e.g., set up
+ // paths for Python properly.
+ void SetExecutablePath(const std::string& path);
+
+ // Description:
+ // The full path to the current executable that is running (or empty if unknown).
+ std::string GetProgramPath() const
+ {
+ return this->ProgramPath;
+ }
+ // Description:
+ // The directory containing the current executable (or empty if unknown).
+ std::string GetSelfDir() const
+ {
+ return this->SelfDir;
+ }
+
protected:
vtkProcessModuleInternals* Internals;
@@ -247,10 +267,12 @@ class VTKPVCLIENTSERVERCORECORE_EXPORT vtkProcessModule : public vtkObject
vtkProcessModule(const vtkProcessModule&); // Not implemented.
void operator=(const vtkProcessModule&); // Not implemented.
+ void DetermineExecutablePath(int argc, char** argv);
+
// Helper to initialize Python environment. This doesn't initialize Python
// but simply sets up the environment so when Python is initialized, it can
- // find ParaView modules. This does nothing is not build with Python support.
- bool InitializePythonEnvironment(int argc, char** argv);
+ // find ParaView modules. This does nothing if not build with Python support.
+ bool InitializePythonEnvironment();
static ProcessTypes ProcessType;
@@ -269,6 +291,9 @@ class VTKPVCLIENTSERVERCORECORE_EXPORT vtkProcessModule : public vtkObject
bool MultipleSessionsSupport;
vtkIdType EventCallDataSessionId;
+
+ std::string ProgramPath;
+ std::string SelfDir;
//ETX
};
diff --git a/ParaViewCore/ClientServerCore/Core/vtkPythonAnnotationFilter.cxx b/ParaViewCore/ClientServerCore/Core/vtkPythonAnnotationFilter.cxx
index f7866bf145b..becc62a3af1 100644
--- a/ParaViewCore/ClientServerCore/Core/vtkPythonAnnotationFilter.cxx
+++ b/ParaViewCore/ClientServerCore/Core/vtkPythonAnnotationFilter.cxx
@@ -165,7 +165,7 @@ void vtkPythonAnnotationFilter::EvaluateExpression()
stream
<< "def vtkPythonAnnotationFilter_EvaluateExpression():" << endl
<< " from paraview import annotation as pv_ann" << endl
- << " from vtkPVClientServerCoreCorePython import vtkPythonAnnotationFilter" << endl
+ << " from paraview.vtk.vtkPVClientServerCoreCore import vtkPythonAnnotationFilter" << endl
<< " me = vtkPythonAnnotationFilter('" << vtkGetReferenceAsString(this) << " ')" << endl
<< " pv_ann.execute(me)" << endl
<< " del me" << endl
diff --git a/ParaViewCore/ClientServerCore/Core/vtkPythonExtractSelection.cxx b/ParaViewCore/ClientServerCore/Core/vtkPythonExtractSelection.cxx
index 27b03cf9b26..8346aedf635 100644
--- a/ParaViewCore/ClientServerCore/Core/vtkPythonExtractSelection.cxx
+++ b/ParaViewCore/ClientServerCore/Core/vtkPythonExtractSelection.cxx
@@ -154,7 +154,7 @@ int vtkPythonExtractSelection::RequestData(
stream
<< "def vtkPythonExtractSelection_RequestData():" << endl
<< " from paraview import extract_selection as pv_es" << endl
- << " from vtkPVClientServerCoreCorePython import vtkPythonExtractSelection" << endl
+ << " from paraview.vtk.vtkPVClientServerCoreCore import vtkPythonExtractSelection" << endl
<< " me = vtkPythonExtractSelection('" << aplus << " ')" << endl
<< " pv_es.execute(me)" << endl
<< " del me" << endl
diff --git a/ParaViewCore/ClientServerCore/Default/vtkAnnotateAttributeDataFilter.cxx b/ParaViewCore/ClientServerCore/Default/vtkAnnotateAttributeDataFilter.cxx
index 8de5b5843b4..fdea73e29fa 100644
--- a/ParaViewCore/ClientServerCore/Default/vtkAnnotateAttributeDataFilter.cxx
+++ b/ParaViewCore/ClientServerCore/Default/vtkAnnotateAttributeDataFilter.cxx
@@ -68,7 +68,7 @@ void vtkAnnotateAttributeDataFilter::EvaluateExpression()
stream
<< "def vtkAnnotateAttributeDataFilter_EvaluateExpression():" << endl
<< " from paraview import annotation as pv_ann" << endl
- << " from vtkPVClientServerCoreDefaultPython import vtkAnnotateAttributeDataFilter" << endl
+ << " from paraview.vtk.vtkPVClientServerCoreDefault import vtkAnnotateAttributeDataFilter" << endl
<< " me = vtkAnnotateAttributeDataFilter('" << vtkGetReferenceAsString(this) << " ')" << endl
<< " pv_ann.execute_on_attribute_data(me," << (evaluate_locally? "True" : "False")
<< ")" << endl
diff --git a/ParaViewCore/ClientServerCore/Default/vtkAnnotateGlobalDataFilter.cxx b/ParaViewCore/ClientServerCore/Default/vtkAnnotateGlobalDataFilter.cxx
index a24ca00ed80..127f3311a32 100644
--- a/ParaViewCore/ClientServerCore/Default/vtkAnnotateGlobalDataFilter.cxx
+++ b/ParaViewCore/ClientServerCore/Default/vtkAnnotateGlobalDataFilter.cxx
@@ -61,7 +61,7 @@ void vtkAnnotateGlobalDataFilter::EvaluateExpression()
stream
<< "def vtkAnnotateGlobalDataFilter_EvaluateExpression():" << endl
<< " from paraview import annotation as pv_ann" << endl
- << " from vtkPVClientServerCoreDefaultPython import vtkAnnotateGlobalDataFilter" << endl
+ << " from paraview.vtk.vtkPVClientServerCoreDefault import vtkAnnotateGlobalDataFilter" << endl
<< " me = vtkAnnotateGlobalDataFilter('" << vtkGetReferenceAsString(this) << " ')" << endl
<< " pv_ann.execute_on_global_data(me)" << endl
<< " del me" << endl
diff --git a/ParaViewCore/ClientServerCore/Default/vtkPythonCalculator.cxx b/ParaViewCore/ClientServerCore/Default/vtkPythonCalculator.cxx
index 7215ad80f16..37a3c412e77 100644
--- a/ParaViewCore/ClientServerCore/Default/vtkPythonCalculator.cxx
+++ b/ParaViewCore/ClientServerCore/Default/vtkPythonCalculator.cxx
@@ -137,7 +137,7 @@ void vtkPythonCalculator::Exec(const char* expression)
python_stream
<< "import paraview\n"
<< "from paraview import calculator\n"
- << "from vtkPVClientServerCoreDefaultPython import vtkPythonCalculator\n"
+ << "from paraview.vtk.vtkPVClientServerCoreDefault import vtkPythonCalculator\n"
<< "calculator.execute(vtkPythonCalculator('" << aplus << "'), '"
<< orgscript.c_str() << "')\n";
diff --git a/ParaViewCore/ClientServerCore/Rendering/vtkPythonView.cxx b/ParaViewCore/ClientServerCore/Rendering/vtkPythonView.cxx
index c31341b5e31..fc371b0ac8a 100644
--- a/ParaViewCore/ClientServerCore/Rendering/vtkPythonView.cxx
+++ b/ParaViewCore/ClientServerCore/Rendering/vtkPythonView.cxx
@@ -150,7 +150,7 @@ void vtkPythonView::Update()
// Import necessary items from ParaView
std::ostringstream importStream;
importStream << "import paraview" << endl
- << "from vtkPVClientServerCoreRenderingPython import vtkPythonView" << endl
+ << "from paraview.vtk.vtkPVClientServerCoreRendering import vtkPythonView" << endl
<< "pythonView = vtkPythonView('" << addressOfThis << " ')" << endl;
this->RunSimpleStringWithCustomLocals(importStream.str().c_str());
diff --git a/ParaViewCore/ClientServerCore/Rendering/vtkSpreadSheetRepresentation.cxx b/ParaViewCore/ClientServerCore/Rendering/vtkSpreadSheetRepresentation.cxx
index 4012876008f..1a508f59d42 100644
--- a/ParaViewCore/ClientServerCore/Rendering/vtkSpreadSheetRepresentation.cxx
+++ b/ParaViewCore/ClientServerCore/Rendering/vtkSpreadSheetRepresentation.cxx
@@ -15,6 +15,7 @@
#include "vtkSpreadSheetRepresentation.h"
#include "vtkBlockDeliveryPreprocessor.h"
+#include "vtkCleanArrays.h"
#include "vtkInformation.h"
#include "vtkInformationVector.h"
#include "vtkObjectFactory.h"
@@ -25,18 +26,16 @@ vtkStandardNewMacro(vtkSpreadSheetRepresentation);
vtkSpreadSheetRepresentation::vtkSpreadSheetRepresentation()
{
this->SetNumberOfInputPorts(3);
- this->DataConditioner = vtkBlockDeliveryPreprocessor::New();
this->DataConditioner->SetGenerateOriginalIds(1);
+ this->CleanArrays->SetInputConnection(this->DataConditioner->GetOutputPort());
- this->ExtractedDataConditioner = vtkBlockDeliveryPreprocessor::New();
this->ExtractedDataConditioner->SetGenerateOriginalIds(0);
+ this->ExtractedCleanArrays->SetInputConnection(this->ExtractedDataConditioner->GetOutputPort());
}
//----------------------------------------------------------------------------
vtkSpreadSheetRepresentation::~vtkSpreadSheetRepresentation()
{
- this->DataConditioner->Delete();
- this->ExtractedDataConditioner->Delete();
}
//----------------------------------------------------------------------------
@@ -54,10 +53,18 @@ int vtkSpreadSheetRepresentation::GetFieldAssociation()
}
//----------------------------------------------------------------------------
-void vtkSpreadSheetRepresentation::SetCompositeDataSetIndex(int val)
+void vtkSpreadSheetRepresentation::AddCompositeDataSetIndex(unsigned int val)
{
- this->DataConditioner->SetCompositeDataSetIndex(val);
- this->ExtractedDataConditioner->SetCompositeDataSetIndex(val);
+ this->DataConditioner->AddCompositeDataSetIndex(val);
+ this->ExtractedDataConditioner->AddCompositeDataSetIndex(val);
+ this->MarkModified();
+}
+
+//----------------------------------------------------------------------------
+void vtkSpreadSheetRepresentation::RemoveAllCompositeDataSetIndices()
+{
+ this->DataConditioner->RemoveAllCompositeDataSetIndices();
+ this->ExtractedDataConditioner->RemoveAllCompositeDataSetIndices();
this->MarkModified();
}
@@ -115,14 +122,14 @@ int vtkSpreadSheetRepresentation::RequestData(
vtkAlgorithmOutput* vtkSpreadSheetRepresentation::GetDataProducer()
{
return this->DataConditioner->GetNumberOfInputConnections(0)==1?
- this->DataConditioner->GetOutputPort(0) : NULL;
+ this->CleanArrays->GetOutputPort(0) : NULL;
}
//----------------------------------------------------------------------------
vtkAlgorithmOutput* vtkSpreadSheetRepresentation::GetExtractedDataProducer()
{
return this->ExtractedDataConditioner->GetNumberOfInputConnections(0)==1?
- this->ExtractedDataConditioner->GetOutputPort(0) : NULL;
+ this->ExtractedCleanArrays->GetOutputPort(0) : NULL;
}
//----------------------------------------------------------------------------
diff --git a/ParaViewCore/ClientServerCore/Rendering/vtkSpreadSheetRepresentation.h b/ParaViewCore/ClientServerCore/Rendering/vtkSpreadSheetRepresentation.h
index deb52ef0e0e..fc6f337cfe4 100644
--- a/ParaViewCore/ClientServerCore/Rendering/vtkSpreadSheetRepresentation.h
+++ b/ParaViewCore/ClientServerCore/Rendering/vtkSpreadSheetRepresentation.h
@@ -29,8 +29,10 @@
#include "vtkPVClientServerCoreRenderingModule.h" //needed for exports
#include "vtkPVDataRepresentation.h"
+#include "vtkNew.h" // needed for vtkNew.
class vtkBlockDeliveryPreprocessor;
+class vtkCleanArrays;
class VTKPVCLIENTSERVERCORERENDERING_EXPORT vtkSpreadSheetRepresentation : public vtkPVDataRepresentation
{
public:
@@ -55,7 +57,18 @@ class VTKPVCLIENTSERVERCORERENDERING_EXPORT vtkSpreadSheetRepresentation : publi
// Forwarded to vtkBlockDeliveryPreprocessor.
void SetFieldAssociation(int val);
int GetFieldAssociation();
- void SetCompositeDataSetIndex(int val);
+
+
+ // Description:
+ // Select the block indices to extract.
+ // Each node in the multi-block tree is identified by an \c index. The index can
+ // be obtained by performing a preorder traversal of the tree (including empty
+ // nodes). eg. A(B (D, E), C(F, G)).
+ // Inorder traversal yields: A, B, D, E, C, F, G
+ // Index of A is 0, while index of C is 4.
+ void AddCompositeDataSetIndex(unsigned int index);
+ void RemoveAllCompositeDataSetIndices();
+
//BTX
protected:
@@ -71,8 +84,11 @@ class VTKPVCLIENTSERVERCORERENDERING_EXPORT vtkSpreadSheetRepresentation : publi
virtual int RequestData(
vtkInformation*, vtkInformationVector**, vtkInformationVector*);
- vtkBlockDeliveryPreprocessor* DataConditioner;
- vtkBlockDeliveryPreprocessor* ExtractedDataConditioner;
+ vtkNew CleanArrays;
+ vtkNew DataConditioner;
+
+ vtkNew ExtractedCleanArrays;
+ vtkNew ExtractedDataConditioner;
private:
vtkSpreadSheetRepresentation(const vtkSpreadSheetRepresentation&); // Not implemented
diff --git a/ParaViewCore/ServerManager/Core/vtkSMCompositeTreeDomain.cxx b/ParaViewCore/ServerManager/Core/vtkSMCompositeTreeDomain.cxx
index 5f612b867e9..29c3d45beb2 100644
--- a/ParaViewCore/ServerManager/Core/vtkSMCompositeTreeDomain.cxx
+++ b/ParaViewCore/ServerManager/Core/vtkSMCompositeTreeDomain.cxx
@@ -31,6 +31,7 @@ vtkSMCompositeTreeDomain::vtkSMCompositeTreeDomain()
this->Information = 0;
this->LastInformation = 0;
this->Mode = ALL;
+ this->DefaultMode = DEFAULT;
this->Source = 0;
this->SourcePort = 0;
}
@@ -157,6 +158,18 @@ int vtkSMCompositeTreeDomain::ReadXMLAttributes(
return 0;
}
}
+ if (const char* default_mode = element->GetAttribute("default_mode"))
+ {
+ if (strcmp(default_mode, "nonempty-leaf") == 0)
+ {
+ this->DefaultMode = NONEMPTY_LEAF;
+ }
+ else
+ {
+ vtkErrorMacro("Unrecognized 'default_mode': " << mode);
+ return 0;
+ }
+ }
return 1;
}
@@ -167,9 +180,9 @@ int vtkSMCompositeTreeDomain::SetDefaultValues(
vtkSMIntVectorProperty* ivp = vtkSMIntVectorProperty::SafeDownCast(property);
vtkSMPropertyHelper helper(property);
helper.SetUseUnchecked(use_unchecked_values);
- if (ivp && this->Information && helper.GetNumberOfElements() == 1)
+ if (ivp && this->Information)
{
- if (this->Mode == LEAVES)
+ if (this->Mode == LEAVES || this->DefaultMode == NONEMPTY_LEAF)
{
// change the property default to be the first non-empty leaf.
vtkPVDataInformation* info = this->Information;
@@ -213,6 +226,19 @@ void vtkSMCompositeTreeDomain::PrintSelf(ostream& os, vtkIndent indent)
os << "UNKNOWN";
}
os << endl;
+ os << indent << "DefaultMode: ";
+ switch (this->DefaultMode)
+ {
+ case DEFAULT:
+ os << "DEFAULT";
+ break;
+ case NONEMPTY_LEAF:
+ os << "NONEMPTY_LEAF";
+ break;
+ default:
+ os << "UNKNOWN";
+ }
+ os << endl;
os << indent << "SourcePort: " << this->SourcePort << endl;
}
diff --git a/ParaViewCore/ServerManager/Core/vtkSMCompositeTreeDomain.h b/ParaViewCore/ServerManager/Core/vtkSMCompositeTreeDomain.h
index 67290328086..4eeb9b4312c 100644
--- a/ParaViewCore/ServerManager/Core/vtkSMCompositeTreeDomain.h
+++ b/ParaViewCore/ServerManager/Core/vtkSMCompositeTreeDomain.h
@@ -23,7 +23,29 @@
// flat index for a tree is obtained by performing a pre-order traversal of the
// tree eg. A ( B ( D, E), C (F, G)) becomes: [A,B,D,E,C,F,G], so flat-index of A is
// 0, while flat-index of C is 4.
-
+//
+// vtkSMCompositeTreeDomain can be used in multiple modes.
+// \li ALL : This mode is used if the property can accept any type of node index.
+// To select this mode in XML, use the `mode="all"`.
+// \li LEAVES: This mode is used if the property can only accept leaf nodes i.e.
+// indices for non-composite datasets. This is specified in XML
+// using `mode="leaves"`.
+// \li NON_LEAVES: This mode is used if the property can only accept non-leaf
+// node indices, specified using `mode="non-leaves"` in XML
+// configuration.
+//
+// vtkSMCompositeTreeDomain also provides ability to set default value on the
+// property. If mode is LEAVES, then the default value selected is the first
+// non-null leaf node. If mode is ALL, the same behaviour for default value is
+// possible by using `default_mode="nonempty-leaf"` in XML.
+// e.g.
+// \code{.xml}
+//
+//
+//
+//
+//
+// \endcode
#ifndef vtkSMCompositeTreeDomain_h
#define vtkSMCompositeTreeDomain_h
@@ -76,7 +98,6 @@ class VTKPVSERVERMANAGERCORE_EXPORT vtkSMCompositeTreeDomain : public vtkSMDomai
vtkGetMacro(Mode, int);
vtkSetMacro(Mode, int);
- //BTX
enum
{
ALL=0,
@@ -84,8 +105,22 @@ class VTKPVSERVERMANAGERCORE_EXPORT vtkSMCompositeTreeDomain : public vtkSMDomai
NON_LEAVES=2,
NONE=3
};
- //ETX
-
+
+
+ enum DefaultModes
+ {
+ DEFAULT=0,
+ NONEMPTY_LEAF=1
+ };
+
+ // Description:
+ // DefaultMode controls how the default value for the property is set by
+ // SetDefaultValues(). DEFAULT implies the default value is picked based on
+ // the default strategy for the selected Mode. NONEMPTY_LEAF indicates that
+ // the first non-empty leaf node is set as the default value, if possible.
+ vtkGetMacro(DefaultMode, int);
+ vtkSetMacro(DefaultMode, int);
+
// Description:
// A vtkSMProperty is often defined with a default value in the
// XML itself. However, many times, the default value must be determined
@@ -118,6 +153,7 @@ class VTKPVSERVERMANAGERCORE_EXPORT vtkSMCompositeTreeDomain : public vtkSMDomai
vtkWeakPointer Source;
int Mode;
+ int DefaultMode;
int SourcePort;
private:
vtkSMCompositeTreeDomain(const vtkSMCompositeTreeDomain&); // Not implemented
diff --git a/ParaViewCore/ServerManager/Core/vtkSMVectorPropertyTemplate.h b/ParaViewCore/ServerManager/Core/vtkSMVectorPropertyTemplate.h
index 973991f040e..90cc04a32e8 100644
--- a/ParaViewCore/ServerManager/Core/vtkSMVectorPropertyTemplate.h
+++ b/ParaViewCore/ServerManager/Core/vtkSMVectorPropertyTemplate.h
@@ -318,6 +318,13 @@ class vtkSMVectorPropertyTemplate
this->Property->Modified();
this->ClearUncheckedElements();
}
+ else if (this->Property->GetRepeatable())
+ {
+ this->Values.clear();
+ this->Initialized = true;
+ this->Property->Modified();
+ this->ClearUncheckedElements();
+ }
}
//---------------------------------------------------------------------------
diff --git a/ParaViewCore/ServerManager/Default/Testing/Python/CMakeLists.txt b/ParaViewCore/ServerManager/Default/Testing/Python/CMakeLists.txt
index 6c8146adf20..b081f8f70f7 100644
--- a/ParaViewCore/ServerManager/Default/Testing/Python/CMakeLists.txt
+++ b/ParaViewCore/ServerManager/Default/Testing/Python/CMakeLists.txt
@@ -139,6 +139,7 @@ if (PARAVIEW_USE_MPI AND VTK_MPIRUN_EXE AND NOT WIN32)
--symmetric)
paraview_add_test_pvbatch_mpi(
NO_DATA NO_OUTPUT NO_VALID
+ TestCleanArrays.py
TestMPI4PY.py
ParallelPythonImport.py
)
diff --git a/ParaViewCore/ServerManager/Default/Testing/Python/PointGaussianProperties.py b/ParaViewCore/ServerManager/Default/Testing/Python/PointGaussianProperties.py
index f6d98579fe7..f787a0f4ee1 100644
--- a/ParaViewCore/ServerManager/Default/Testing/Python/PointGaussianProperties.py
+++ b/ParaViewCore/ServerManager/Default/Testing/Python/PointGaussianProperties.py
@@ -1,7 +1,7 @@
import os, sys
from paraview import simple
-from vtkPVServerManagerRenderingPython import *
+from vtk.vtkPVServerManagerRendering import *
from vtk import *
from paraview import smtesting
diff --git a/ParaViewCore/ServerManager/Default/Testing/Python/PythonSelection.py b/ParaViewCore/ServerManager/Default/Testing/Python/PythonSelection.py
index 588dad03a3d..422a2658683 100644
--- a/ParaViewCore/ServerManager/Default/Testing/Python/PythonSelection.py
+++ b/ParaViewCore/ServerManager/Default/Testing/Python/PythonSelection.py
@@ -7,9 +7,11 @@
c =Cone(Resolution=10)
GroupDatasets(Input=[s,c])
GenerateIds()
+sel = SelectCells("Ids > 4")
+
+e = ExtractSelection(Selection=sel)
r = Show()
r.ColorArrayName = None
-SelectCells("Ids > 2")
RenderView1 = Render()
if not smtesting.DoRegressionTesting(RenderView1.SMProxy):
diff --git a/ParaViewCore/ServerManager/Default/Testing/Python/TestCleanArrays.py b/ParaViewCore/ServerManager/Default/Testing/Python/TestCleanArrays.py
new file mode 100644
index 00000000000..62b289de0bf
--- /dev/null
+++ b/ParaViewCore/ServerManager/Default/Testing/Python/TestCleanArrays.py
@@ -0,0 +1,108 @@
+from __future__ import print_function
+
+import vtk
+from vtk.vtkPVVTKExtensionsRendering import vtkCleanArrays
+cntrl = vtk.vtkMultiProcessController.GetGlobalController()
+rank = cntrl.GetLocalProcessId()
+numprocs = cntrl.GetNumberOfProcesses()
+
+#-----------------------------------------------------------------------------
+if rank == 0:
+ print("Testing on non-composite dataset")
+
+def get_dataset(pa=None,ca=None):
+ sphere = vtk.vtkSphereSource()
+ sphere.Update()
+
+ data = sphere.GetOutputDataObject(0)
+ data.GetPointData().Initialize()
+ data.GetCellData().Initialize()
+
+ if pa:
+ array = vtk.vtkIntArray()
+ array.SetName(pa)
+ array.SetNumberOfTuples(data.GetNumberOfPoints())
+ data.GetPointData().AddArray(array)
+
+ if ca:
+ array = vtk.vtkIntArray()
+ array.SetName(ca)
+ array.SetNumberOfTuples(data.GetNumberOfCells())
+ data.GetCellData().AddArray(array)
+ return data
+
+
+data = get_dataset("PD-%d" % rank, "CD-%d" % rank)
+cleanArrays = vtkCleanArrays()
+cleanArrays.SetInputDataObject(data)
+cleanArrays.SetController(cntrl)
+
+# Test removing partial arrays.
+cleanArrays.FillPartialArraysOff()
+cleanArrays.Update()
+result = cleanArrays.GetOutputDataObject(0)
+
+# Each rank tests the next ranks data.
+if numprocs > 1:
+ assert result.GetPointData().GetArray("PD-%d" % ((rank+1)%numprocs)) is None and \
+ result.GetCellData().GetArray("CD-%d" % ((rank+1)%numprocs)) is None
+
+# Test filling partial arrays.
+cleanArrays.FillPartialArraysOn()
+cleanArrays.Update()
+result = cleanArrays.GetOutputDataObject(0)
+
+# Each rank tests the next ranks data.
+assert result.GetPointData().GetNumberOfArrays() == numprocs and \
+ result.GetCellData().GetNumberOfArrays() == numprocs
+
+assert result.GetPointData().GetArray("PD-%d" % ((rank+1)%numprocs)) is not None and \
+ result.GetCellData().GetArray("CD-%d" % ((rank+1)%numprocs)) is not None
+
+
+#-----------------------------------------------------------------------------
+if rank == 0:
+ print("Testing on composite dataset")
+
+
+#-----------------------------------------------------------------------------
+# Dataset with identical arrays for non-empty datasets on all ranks.
+mb = vtk.vtkMultiBlockDataSet()
+mb.SetNumberOfBlocks(numprocs)
+mb.SetBlock(rank, get_dataset(pa="pa", ca="ca"))
+
+cleanArrays.SetInputDataObject(mb)
+cleanArrays.FillPartialArraysOff()
+cleanArrays.Update()
+result = cleanArrays.GetOutputDataObject(0)
+assert result.GetBlock(rank).GetPointData().GetNumberOfArrays() == 1 and \
+ result.GetBlock(rank).GetCellData().GetNumberOfArrays() == 1
+
+cleanArrays.FillPartialArraysOn()
+cleanArrays.Update()
+result = cleanArrays.GetOutputDataObject(0)
+assert result.GetBlock(rank).GetPointData().GetNumberOfArrays() == 1 and \
+ result.GetBlock(rank).GetCellData().GetNumberOfArrays() == 1
+
+#-----------------------------------------------------------------------------
+# Dataset with partial arrays for non-empty datasets on all ranks.
+mb = vtk.vtkMultiBlockDataSet()
+mb.SetNumberOfBlocks(2*numprocs)
+mb.SetBlock(rank, get_dataset(pa="pa-%d" % rank, ca="ca-%d" % rank))
+# Let's add an extra block with new arrays so the test can work even when
+# numprocs == 1.
+mb.SetBlock(numprocs + rank, get_dataset(pa="pa", ca="ca"))
+
+cleanArrays.SetInputDataObject(mb)
+cleanArrays.FillPartialArraysOff()
+cleanArrays.Update()
+result = cleanArrays.GetOutputDataObject(0)
+assert result.GetBlock(rank).GetPointData().GetNumberOfArrays() == 0 and \
+ result.GetBlock(rank).GetCellData().GetNumberOfArrays() == 0
+
+cleanArrays.FillPartialArraysOn()
+cleanArrays.Update()
+result = cleanArrays.GetOutputDataObject(0)
+assert result.GetBlock(rank).GetPointData().GetNumberOfArrays() == (numprocs+1) and \
+ result.GetBlock(rank).GetCellData().GetNumberOfArrays() == (numprocs+1)
+print("%d-Passed!" % rank)
diff --git a/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml b/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml
index b4e35d5c0a6..4b284431966 100644
--- a/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml
+++ b/ParaViewCore/ServerManager/SMApplication/Resources/views_and_representations.xml
@@ -7140,21 +7140,29 @@
-
- In case of Composite datasets, set the flat index of the
- dataset to pass. The flat index must point to a non-empty,
- non-composite dataset for anything to be passed through. If the input
- is not a composite dataset, then this index is ignored.
-
+ number_of_elements_per_command="1"
+ panel_visibility="default"
+ repeat_command="1">
+
-
+
+
+
+
+
+ In case of composite datasets, set the list of flat indices to
+ show in the spreadsheet view. If the input is not a composite dataset
+ the value is ignored. If nothing is selected for composite dataset, it
+ is same as selecting the root node i.e. all blocks in the dataset.
+ Note, then multiple blocks are being shown in the spreadsheet view,
+ partial arrays, if any are skipped.
+
GetNumberOfBlocks();
+ vtk_assert(nBlocks > 0);
+ for(unsigned int i = 0; i < nBlocks; ++i)
+ {
+ vtkMultiBlockDataSet* mb2 = vtkMultiBlockDataSet::SafeDownCast(mb->GetBlock(i));
+ for(unsigned int j = 0; j < mb2->GetNumberOfBlocks(); ++j)
+ {
+ vtkUnstructuredGrid* ug = vtkUnstructuredGrid::SafeDownCast(mb2->GetBlock(j));
+ int nc = ug->GetNumberOfCells();
+ vtk_assert(nc == nCells);
+ for(vtkIdType k = 0; k < ug->GetNumberOfCells(); ++k)
+ {
+ vtkCell* cell = ug->GetCell(k);
+ vtk_assert(cell->GetCellType() == type);
+ }
+ }
+ }
+ return 0;
+}
+
+int TestCGNSReader(int argc, char* argv[])
+{
+ if (argc < 4) return 0; // for some reason two tests are run, one without data data on the cmdline
+
+ const char* mixed = argv[2];
+ const char* nfacen = argv[3];
+
+
+ cout << "Opening " << mixed << endl;
+ cout << "Opening " << nfacen << endl;
+
+ vtkNew mixedReader;
+
+ mixedReader->SetFileName(mixed);
+ mixedReader->Update();
+
+ vtkMultiBlockDataSet* mb = mixedReader->GetOutput();
+
+ if (0 != TestOutput(mb, 7, VTK_HEXAHEDRON))
+ return 1;
+
+ vtkNew nfacenReader;
+ nfacenReader->SetFileName(nfacen);
+ nfacenReader->Update();
+ mb = nfacenReader->GetOutput();
+
+ if (0 != TestOutput(mb, 7, VTK_POLYHEDRON))
+ return 1;
+
+
+ cout << __FILE__ << " tests passed." << endl;
+ return 0;
+}
diff --git a/ParaViewCore/VTKExtensions/CGNSReader/Testing/Cxx/TestReadCGNSSolution.cxx b/ParaViewCore/VTKExtensions/CGNSReader/Testing/Cxx/TestReadCGNSSolution.cxx
new file mode 100644
index 00000000000..23b03dac0c8
--- /dev/null
+++ b/ParaViewCore/VTKExtensions/CGNSReader/Testing/Cxx/TestReadCGNSSolution.cxx
@@ -0,0 +1,81 @@
+/*=========================================================================
+
+ Program: ParaView
+ Module: TestReadCGNSFiles.cxx
+
+ Copyright (c) Menno Deij - van Rijswijk, MARIN, The Netherlands
+ All rights reserved.
+
+ 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 "vtkCGNSReader.h"
+#include "vtkNew.h"
+#include "vtkMultiBlockDataSet.h"
+#include "vtkUnstructuredGrid.h"
+#include "vtkCell.h"
+#include "vtkInformation.h"
+#include "vtkTestUtilities.h"
+#include "vtkCellData.h"
+
+#define TEST_SUCCESS 0
+#define TEST_FAILED 1
+
+#define vtk_assert(x)\
+ if (! (x) ) { cerr << "On line " << __LINE__ << " ERROR: Condition FAILED!! : " << #x << endl; return TEST_FAILED;}
+
+int TestOutput(vtkMultiBlockDataSet* mb, int nCells, VTKCellType type);
+
+int TestOutputData(vtkMultiBlockDataSet* mb, int nCells, int nArrays)
+{
+ int nBlocks = mb->GetNumberOfBlocks();
+ vtk_assert(nBlocks > 0);
+ for(unsigned int i = 0; i < nBlocks; ++i)
+ {
+ vtkMultiBlockDataSet* mb2 = vtkMultiBlockDataSet::SafeDownCast(mb->GetBlock(i));
+ for(unsigned int j = 0; j < mb2->GetNumberOfBlocks(); ++j)
+ {
+ vtkUnstructuredGrid* ug = vtkUnstructuredGrid::SafeDownCast(mb2->GetBlock(j));
+ vtkCellData* cd = ug->GetCellData();
+ int nArr = cd->GetNumberOfArrays();
+ if (nArr != nArrays) return 1;
+ for (int k = 0; k < nArr; ++k)
+ {
+ vtkDataArray* arr = cd->GetArray(k);
+ vtkIdType nTpl = arr->GetNumberOfTuples();
+ vtk_assert(nTpl == nCells);
+ }
+ }
+ }
+ return 0;
+}
+
+int TestReadCGNSSolution(int argc, char* argv[])
+{
+ if (argc < 3) return 0; // for some reason two tests are run, one without data file on cmd line
+
+ const char* solution = argv[2];
+ vtkNew reader;
+ vtkInformation* inf = reader->GetInformation();
+
+ reader->SetFileName(solution);
+ reader->Update();
+
+ reader->EnableAllCellArrays();
+ reader->EnableAllPointArrays();
+
+ reader->Update();
+
+ vtkMultiBlockDataSet* mb = reader->GetOutput();
+
+ if (0 != TestOutput(mb, 19742, VTK_POLYHEDRON))
+ return 1;
+
+ if (0 != TestOutputData(mb, 19742, 20))
+ return 1;
+
+ cout << __FILE__ << " tests passed." << endl;
+ return 0;
+}
diff --git a/ParaViewCore/VTKExtensions/CGNSReader/Testing/Data/Example_mixed.cgns.md5 b/ParaViewCore/VTKExtensions/CGNSReader/Testing/Data/Example_mixed.cgns.md5
new file mode 100644
index 00000000000..9054ef60da1
--- /dev/null
+++ b/ParaViewCore/VTKExtensions/CGNSReader/Testing/Data/Example_mixed.cgns.md5
@@ -0,0 +1 @@
+57faf376c4d77edb017a903fa9909c3c
diff --git a/ParaViewCore/VTKExtensions/CGNSReader/Testing/Data/Example_nface_n.cgns.md5 b/ParaViewCore/VTKExtensions/CGNSReader/Testing/Data/Example_nface_n.cgns.md5
new file mode 100644
index 00000000000..0a8d16b74c4
--- /dev/null
+++ b/ParaViewCore/VTKExtensions/CGNSReader/Testing/Data/Example_nface_n.cgns.md5
@@ -0,0 +1 @@
+83853f5f5a0dfc3e2965dec267da8bb5
diff --git a/ParaViewCore/VTKExtensions/CGNSReader/Testing/Data/channelBump_solution.cgns.md5 b/ParaViewCore/VTKExtensions/CGNSReader/Testing/Data/channelBump_solution.cgns.md5
new file mode 100644
index 00000000000..e98fef06fa0
--- /dev/null
+++ b/ParaViewCore/VTKExtensions/CGNSReader/Testing/Data/channelBump_solution.cgns.md5
@@ -0,0 +1 @@
+bb0dbc74a8d5f97b68d800f3f62859f2
diff --git a/ParaViewCore/VTKExtensions/CGNSReader/module.cmake b/ParaViewCore/VTKExtensions/CGNSReader/module.cmake
index f41ad777309..0744111f7f7 100644
--- a/ParaViewCore/VTKExtensions/CGNSReader/module.cmake
+++ b/ParaViewCore/VTKExtensions/CGNSReader/module.cmake
@@ -19,6 +19,12 @@ vtk_module(vtkPVVTKExtensionsCGNSReader
vtksys
vtkParallelCore
${cgns_private_depends}
+ TEST_DEPENDS
+ vtkInteractionStyle
+ vtkTestingCore
+ vtkTestingRendering
+ TEST_LABELS
+ PARAVIEW
KIT
vtkPVExtensions
)
@@ -27,3 +33,4 @@ set_property(GLOBAL PROPERTY
vtkPVVTKExtensionsCGNSReader_SERVERMANAGER_XMLS
${CMAKE_CURRENT_LIST_DIR}/resources/CGNSReader.xml
)
+unset(cgns_private_depends)
diff --git a/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReader.cxx b/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReader.cxx
index 57f371ae120..0b7296c4a11 100644
--- a/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReader.cxx
+++ b/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReader.cxx
@@ -15,6 +15,7 @@
// Copyright 2013-2014 Mickael Philit.
#include "vtkCGNSReader.h"
+#include "vtkCGNSReaderInternal.h" // For parsing information request
#include "vtkCallbackCommand.h"
#include "vtkCellArray.h"
@@ -87,8 +88,49 @@ namespace
};
}
+// vtkCGNSReader has several method that used types from CGNS
+// which resulted in CGNS include being exposed to the users of this class
+// causing build complications. This makes that easier.
+class vtkCGNSReader::vtkPrivate
+{
+public:
+ static bool IsVarEnabled(
+ CGNS_ENUMT(GridLocation_t) varcentering, const CGNSRead::char_33 name,
+ vtkCGNSReader* self);
+ static int getGridAndSolutionName(int base,
+ CGNSRead::char_33 GridCoordName, CGNSRead::char_33 SolutionName,
+ bool& readGridCoordName, bool& readSolutionName,
+ vtkCGNSReader* self);
+ static int getCoordsIdAndFillRind(const CGNSRead::char_33 GridCoordName,
+ const int physicalDim, std::size_t& nCoordsArray,
+ std::vector& gridChildId, int* rind,
+ vtkCGNSReader* self);
+ static int getVarsIdAndFillRind(
+ const double cgioSolId,
+ std::size_t& nVarArray, CGNS_ENUMT(GridLocation_t)& varCentering,
+ std::vector& solChildId, int* rind,
+ vtkCGNSReader* self);
+
+ static int fillArrayInformation(
+ const std::vector& solChildId,
+ const int physicalDim,
+ std::vector< CGNSRead::CGNSVariable >& cgnsVars,
+ std::vector< CGNSRead::CGNSVector >& cgnsVectors,
+ vtkCGNSReader* self);
+
+ static int AllocateVtkArray(
+ const int physicalDim, const vtkIdType nVals,
+ const CGNS_ENUMT(GridLocation_t) varCentering,
+ const std::vector< CGNSRead::CGNSVariable >& cgnsVars,
+ const std::vector< CGNSRead::CGNSVector >& cgnsVectors,
+ std::vector& vtkVars,
+ vtkCGNSReader* self);
+
+ static int AttachReferenceValue(const int base, vtkDataSet* ds, vtkCGNSReader* self);
+};
+
//----------------------------------------------------------------------------
-vtkCGNSReader::vtkCGNSReader()
+vtkCGNSReader::vtkCGNSReader() : Internal(new CGNSRead::vtkCGNSMetaData())
{
this->FileName = NULL;
@@ -137,6 +179,9 @@ vtkCGNSReader::~vtkCGNSReader()
this->BaseSelection->Delete();
this->SelectionObserver->Delete();
this->SetController(NULL);
+
+ delete this->Internal;
+ this->Internal = NULL;
}
//----------------------------------------------------------------------------
@@ -171,62 +216,65 @@ void vtkCGNSReader::SetController(vtkMultiProcessController* c)
}
//------------------------------------------------------------------------------
-bool vtkCGNSReader::IsVarEnabled(CGNS_ENUMT(GridLocation_t) varcentering,
- const CGNSRead::char_33 name)
+bool vtkCGNSReader::vtkPrivate::IsVarEnabled(
+ CGNS_ENUMT(GridLocation_t) varcentering, const CGNSRead::char_33 name,
+ vtkCGNSReader* self)
{
vtkDataArraySelection *DataSelection = 0;
if (varcentering == CGNS_ENUMV(Vertex))
{
- DataSelection = this->PointDataArraySelection;
+ DataSelection = self->PointDataArraySelection;
}
else
{
- DataSelection = this->CellDataArraySelection;
+ DataSelection = self->CellDataArraySelection;
}
return (DataSelection->ArrayIsEnabled(name) != 0);
}
//------------------------------------------------------------------------------
-int vtkCGNSReader::getGridAndSolutionName(const int base,
- CGNSRead::char_33 GridCoordName,
- CGNSRead::char_33 SolutionName,
- bool& readGridCoordName,
- bool& readSolutionName)
+int vtkCGNSReader::vtkPrivate::getGridAndSolutionName(
+ const int base,
+ CGNSRead::char_33 GridCoordName,
+ CGNSRead::char_33 SolutionName,
+ bool& readGridCoordName,
+ bool& readSolutionName,
+ vtkCGNSReader* self)
{
//
// Get Coordinates and FlowSolution node names
readGridCoordName = true;
readSolutionName = true;
- if ((this->Internal.GetBase(base).useGridPointers == true) ||
- (this->Internal.GetBase(base).useFlowPointers == true))
+ if ((self->Internal->GetBase(base).useGridPointers == true) ||
+ (self->Internal->GetBase(base).useFlowPointers == true))
{
CGNSRead::char_33 zoneIterName;
double ziterId = 0;
- std::size_t ptSize = 32*this->Internal.GetBase(base).steps.size() + 1;
+ std::size_t ptSize = 32*self->Internal->GetBase(base).steps.size() + 1;
char *pointers = new char[ptSize];
- if (CGNSRead::getFirstNodeId(this->cgioNum, this->currentId,
+ if (CGNSRead::getFirstNodeId(self->cgioNum, self->currentId,
"ZoneIterativeData_t", &ziterId) == CG_OK)
{
- cgio_get_name(cgioNum, ziterId, zoneIterName);
+ cgio_get_name(self->cgioNum, ziterId, zoneIterName);
//
CGNSRead::char_33 nodeLabel;
CGNSRead::char_33 nodeName;
std::vector iterChildId;
- CGNSRead::getNodeChildrenId(cgioNum, ziterId, iterChildId);
+ CGNSRead::getNodeChildrenId(self->cgioNum, ziterId, iterChildId);
for (std::size_t nn = 0; nn < iterChildId.size(); nn++)
{
- if (cgio_get_name(cgioNum, iterChildId[nn], nodeName) != CG_OK)
+ if (cgio_get_name(self->cgioNum, iterChildId[nn], nodeName) != CG_OK)
{
return 1;
}
- if (cgio_get_label(cgioNum, iterChildId[nn], nodeLabel) != CG_OK)
+ if (cgio_get_label(self->cgioNum, iterChildId[nn], nodeLabel) != CG_OK)
{
return 1;
}
@@ -234,9 +282,9 @@ int vtkCGNSReader::getGridAndSolutionName(const int base,
if (isDataArray &&
(strcmp(nodeName, "GridCoordinatesPointers") == 0))
{
- cgio_read_block_data(this->cgioNum, iterChildId[nn],
- (cgsize_t)(this->ActualTimeStep*32 + 1),
- (cgsize_t)(this->ActualTimeStep*32 + 32),
+ cgio_read_block_data(self->cgioNum, iterChildId[nn],
+ (cgsize_t)(self->ActualTimeStep*32 + 1),
+ (cgsize_t)(self->ActualTimeStep*32 + 32),
( void * ) GridCoordName);
GridCoordName[32] ='\0';
readGridCoordName = false;
@@ -244,14 +292,14 @@ int vtkCGNSReader::getGridAndSolutionName(const int base,
else if (isDataArray &&
(strcmp(nodeName, "FlowSolutionPointers") == 0))
{
- cgio_read_block_data(this->cgioNum, iterChildId[nn],
- (cgsize_t)(this->ActualTimeStep*32 + 1),
- (cgsize_t)(this->ActualTimeStep*32 + 32),
+ cgio_read_block_data(self->cgioNum, iterChildId[nn],
+ (cgsize_t)(self->ActualTimeStep*32 + 1),
+ (cgsize_t)(self->ActualTimeStep*32 + 32),
(void *) SolutionName);
SolutionName[32] ='\0';
readSolutionName = false;
}
- cgio_release_id(cgioNum, iterChildId[nn]);
+ cgio_release_id(self->cgioNum, iterChildId[nn]);
}
}
else
@@ -271,11 +319,13 @@ int vtkCGNSReader::getGridAndSolutionName(const int base,
}
//------------------------------------------------------------------------------
-int vtkCGNSReader::getCoordsIdAndFillRind(const CGNSRead::char_33 GridCoordName,
+int vtkCGNSReader::vtkPrivate::getCoordsIdAndFillRind(
+ const CGNSRead::char_33 GridCoordName,
const int physicalDim,
std::size_t& nCoordsArray,
std::vector& gridChildId,
- int* rind)
+ int* rind,
+ vtkCGNSReader* self)
{
char nodeLabel[CGIO_MAX_NAME_LENGTH+1];
std::size_t na;
@@ -283,17 +333,17 @@ int vtkCGNSReader::getCoordsIdAndFillRind(const CGNSRead::char_33 GridCoordName,
nCoordsArray = 0;
// Get GridCoordinate node ID for low level access
double gridId;
- if (cgio_get_node_id(this->cgioNum, this->currentId,
+ if (cgio_get_node_id(self->cgioNum, self->currentId,
GridCoordName, &gridId) != CG_OK)
{
char message[81];
cgio_error_message(message);
- vtkErrorMacro(<< "Error while reading mesh coordinates node :" << message);
+ vtkErrorWithObjectMacro(self, << "Error while reading mesh coordinates node :" << message);
return 1;
}
// Get the number of Coordinates in GridCoordinates node
- CGNSRead::getNodeChildrenId(this->cgioNum, gridId, gridChildId);
+ CGNSRead::getNodeChildrenId(self->cgioNum, gridId, gridChildId);
for (int n = 0; n < 6; n++)
{
@@ -301,10 +351,10 @@ int vtkCGNSReader::getCoordsIdAndFillRind(const CGNSRead::char_33 GridCoordName,
}
for (nCoordsArray = 0, na = 0; na < gridChildId.size(); ++na)
{
- if ( cgio_get_label(cgioNum, gridChildId[na], nodeLabel) != CG_OK)
+ if ( cgio_get_label(self->cgioNum, gridChildId[na], nodeLabel) != CG_OK)
{
- vtkErrorMacro(<< "Not enough coordinates in node "
- << GridCoordName << "\n");
+ vtkErrorWithObjectMacro(self, << "Not enough coordinates in node "
+ << GridCoordName << "\n");
continue;
}
@@ -319,29 +369,30 @@ int vtkCGNSReader::getCoordsIdAndFillRind(const CGNSRead::char_33 GridCoordName,
else if ( strcmp(nodeLabel, "Rind_t") == 0)
{
// check for rind
- CGNSRead::setUpRind(this->cgioNum, gridChildId[na], rind);
+ CGNSRead::setUpRind(self->cgioNum, gridChildId[na], rind);
}
else
{
- cgio_release_id(cgioNum, gridChildId[na]);
+ cgio_release_id(self->cgioNum, gridChildId[na]);
}
}
if (nCoordsArray < static_cast(physicalDim))
{
- vtkErrorMacro(<< "Not enough coordinates in node "
- << GridCoordName << "\n");
+ vtkErrorWithObjectMacro(self, << "Not enough coordinates in node "
+ << GridCoordName << "\n");
return 1;
}
- cgio_release_id(this->cgioNum, gridId);
+ cgio_release_id(self->cgioNum, gridId);
return 0;
}
//------------------------------------------------------------------------------
-int vtkCGNSReader::getVarsIdAndFillRind(const double cgioSolId,
+int vtkCGNSReader::vtkPrivate::getVarsIdAndFillRind(const double cgioSolId,
std::size_t& nVarArray,
CGNS_ENUMT(GridLocation_t) & varCentering,
std::vector& solChildId,
- int* rind)
+ int* rind,
+ vtkCGNSReader* self)
{
char nodeLabel[CGIO_MAX_NAME_LENGTH+1];
std::size_t na;
@@ -352,13 +403,13 @@ int vtkCGNSReader::getVarsIdAndFillRind(const double cgioSolId,
rind[n] = 0;
}
- CGNSRead::getNodeChildrenId ( this->cgioNum, cgioSolId, solChildId );
+ CGNSRead::getNodeChildrenId ( self->cgioNum, cgioSolId, solChildId );
for (nVarArray = 0, na = 0; na < solChildId.size(); ++na)
{
- if (cgio_get_label(cgioNum, solChildId[na], nodeLabel) != CG_OK)
+ if (cgio_get_label(self->cgioNum, solChildId[na], nodeLabel) != CG_OK)
{
- vtkErrorMacro(<< "Error while reading node label in solution\n");
+ vtkErrorWithObjectMacro(self, << "Error while reading node label in solution\n");
continue;
}
@@ -372,13 +423,13 @@ int vtkCGNSReader::getVarsIdAndFillRind(const double cgioSolId,
}
else if ( strcmp(nodeLabel, "Rind_t") == 0)
{
- CGNSRead::setUpRind(this->cgioNum, solChildId[na], rind);
+ CGNSRead::setUpRind(self->cgioNum, solChildId[na], rind);
}
else if ( strcmp(nodeLabel, "GridLocation_t") == 0)
{
CGNSRead::char_33 dataType;
- if (cgio_get_data_type(cgioNum, solChildId[na], dataType) != CG_OK)
+ if (cgio_get_data_type(self->cgioNum, solChildId[na], dataType) != CG_OK)
{
return 1;
}
@@ -391,7 +442,7 @@ int vtkCGNSReader::getVarsIdAndFillRind(const double cgioSolId,
}
std::string location;
- CGNSRead::readNodeStringData(this->cgioNum, solChildId[na], location);
+ CGNSRead::readNodeStringData(self->cgioNum, solChildId[na], location);
if (location == "Vertex")
{
@@ -408,28 +459,30 @@ int vtkCGNSReader::getVarsIdAndFillRind(const double cgioSolId,
}
else
{
- cgio_release_id(this->cgioNum, solChildId[na]);
+ cgio_release_id(self->cgioNum, solChildId[na]);
}
}
return 0;
}
//------------------------------------------------------------------------------
-int vtkCGNSReader::fillArrayInformation(const std::vector& solChildId,
- const int physicalDim,
- std::vector< CGNSRead::CGNSVariable >& cgnsVars,
- std::vector< CGNSRead::CGNSVector >& cgnsVectors)
+int vtkCGNSReader::vtkPrivate::fillArrayInformation(
+ const std::vector& solChildId,
+ const int physicalDim,
+ std::vector< CGNSRead::CGNSVariable >& cgnsVars,
+ std::vector< CGNSRead::CGNSVector >& cgnsVectors,
+ vtkCGNSReader* self)
{
// Read variable names
for (std::size_t ff = 0; ff < cgnsVars.size(); ++ff)
{
- cgio_get_name(cgioNum, solChildId[ff], cgnsVars[ff].name);
+ cgio_get_name(self->cgioNum, solChildId[ff], cgnsVars[ff].name);
cgnsVars[ff].isComponent = false;
cgnsVars[ff].xyzIndex = 0;
// read node data type
CGNSRead::char_33 dataType;
- cgio_get_data_type(cgioNum , solChildId[ff], dataType);
+ cgio_get_data_type(self->cgioNum , solChildId[ff], dataType);
if (strcmp(dataType, "R8") == 0)
{
cgnsVars[ff].dt = CGNS_ENUMV(RealDouble);
@@ -458,11 +511,12 @@ int vtkCGNSReader::fillArrayInformation(const std::vector& solChildId,
}
//------------------------------------------------------------------------------
-int vtkCGNSReader::AllocateVtkArray(const int physicalDim, const vtkIdType nVals,
+int vtkCGNSReader::vtkPrivate::AllocateVtkArray(const int physicalDim, const vtkIdType nVals,
const CGNS_ENUMT(GridLocation_t) varCentering,
const std::vector< CGNSRead::CGNSVariable >& cgnsVars,
const std::vector< CGNSRead::CGNSVector >& cgnsVectors,
- std::vector& vtkVars)
+ std::vector& vtkVars,
+ vtkCGNSReader* self)
{
for (std::size_t ff = 0; ff < cgnsVars.size(); ff++)
{
@@ -470,7 +524,7 @@ int vtkCGNSReader::AllocateVtkArray(const int physicalDim, const vtkIdType nVals
if (cgnsVars[ff].isComponent == false)
{
- if (IsVarEnabled(varCentering, cgnsVars[ff].name) == false)
+ if (vtkPrivate::IsVarEnabled(varCentering, cgnsVars[ff].name, self) == false)
{
continue;
}
@@ -505,7 +559,7 @@ int vtkCGNSReader::AllocateVtkArray(const int physicalDim, const vtkIdType nVals
{
vtkDataArray *arr = 0;
- if (IsVarEnabled(varCentering, iter->name) == false)
+ if (vtkPrivate::IsVarEnabled(varCentering, iter->name, self) == false)
{
continue;
}
@@ -546,11 +600,11 @@ int vtkCGNSReader::AllocateVtkArray(const int physicalDim, const vtkIdType nVals
}
//------------------------------------------------------------------------------
-int vtkCGNSReader::AttachReferenceValue(const int base, vtkDataSet* ds)
+int vtkCGNSReader::vtkPrivate::AttachReferenceValue(const int base, vtkDataSet* ds, vtkCGNSReader* self)
{
// Handle Reference Values (Mach Number, ...)
const std::map< std::string, double>& arrState =
- this->Internal.GetBase(base).referenceState;
+ self->Internal->GetBase(base).referenceState;
std::map< std::string, double>::const_iterator iteRef = arrState.begin();
for (iteRef = arrState.begin(); iteRef != arrState.end(); iteRef++)
{
@@ -567,9 +621,11 @@ int vtkCGNSReader::AttachReferenceValue(const int base, vtkDataSet* ds)
//------------------------------------------------------------------------------
int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
int cellDim, int physicalDim,
- cgsize_t *zsize,
+ void* v_zsize,
vtkMultiBlockDataSet *mbase)
{
+ cgsize_t* zsize = reinterpret_cast(v_zsize);
+
int rind[6];
int n;
//int ier;
@@ -595,11 +651,11 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
std::vector gridChildId;
std::size_t nCoordsArray = 0;
- this->getGridAndSolutionName(base, GridCoordName, SolutionName,
- readGridCoordName, readSolutionName);
+ vtkPrivate::getGridAndSolutionName(base, GridCoordName, SolutionName,
+ readGridCoordName, readSolutionName, this);
- this->getCoordsIdAndFillRind(GridCoordName, physicalDim,
- nCoordsArray, gridChildId, rind);
+ vtkPrivate::getCoordsIdAndFillRind(GridCoordName, physicalDim,
+ nCoordsArray, gridChildId, rind, this);
// Rind was parsed (or not) then populate dimensions :
// Compute structured grid coordinate range
@@ -687,8 +743,8 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
std::vector solChildId;
std::size_t nVarArray = 0;
- this->getVarsIdAndFillRind(cgioSolId, nVarArray, varCentering,
- solChildId, rind);
+ vtkPrivate::getVarsIdAndFillRind(cgioSolId, nVarArray, varCentering,
+ solChildId, rind, this);
vtkStructuredGrid *sgrid = vtkStructuredGrid::New();
sgrid->SetExtent(extent);
@@ -710,7 +766,7 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
std::vector< CGNSRead::CGNSVariable > cgnsVars(nVarArray);
std::vector< CGNSRead::CGNSVector > cgnsVectors;
- this->fillArrayInformation(solChildId, physicalDim, cgnsVars, cgnsVectors);
+ vtkPrivate::fillArrayInformation(solChildId, physicalDim, cgnsVars, cgnsVectors, this);
// Source
cgsize_t fieldSrcStart[3] = {1,1,1};
@@ -759,8 +815,8 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
std::vector vtkVars(nVarArray);
// Count number of vars and vectors
// Assign vars and vectors to a vtkvars array
- this->AllocateVtkArray(physicalDim, nVals, varCentering,
- cgnsVars, cgnsVectors, vtkVars);
+ vtkPrivate::AllocateVtkArray(physicalDim, nVals, varCentering,
+ cgnsVars, cgnsVectors, vtkVars, this);
// Load Data
for (std::size_t ff = 0; ff < nVarArray; ++ff)
@@ -831,7 +887,7 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
}
}
//
- this->AttachReferenceValue(base, sgrid);
+ vtkPrivate::AttachReferenceValue(base, sgrid, this);
//
mbase->SetBlock(zone, sgrid);
sgrid->Delete();
@@ -870,7 +926,7 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
cgio_get_name(this->cgioNum, zoneChildId[nn], SolutionName);
- this->getVarsIdAndFillRind(cgioSolId, nVarArray, varCentering, solChildId, rind);
+ vtkPrivate::getVarsIdAndFillRind(cgioSolId, nVarArray, varCentering, solChildId, rind, this);
if (varCentering != CGNS_ENUMV(Vertex))
{
@@ -902,7 +958,7 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
std::vector< CGNSRead::CGNSVariable > cgnsVars(nVarArray);
std::vector< CGNSRead::CGNSVector > cgnsVectors;
- this->fillArrayInformation(solChildId, physicalDim, cgnsVars, cgnsVectors);
+ vtkPrivate::fillArrayInformation(solChildId, physicalDim, cgnsVars, cgnsVectors, this);
// Source
cgsize_t fieldSrcStart[3] = {1,1,1};
@@ -952,7 +1008,7 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
// Assign vars and vectors to a vtkvars array
std::vector vtkVars(nVarArray);
- this->AllocateVtkArray(physicalDim, nVals, varCentering, cgnsVars, cgnsVectors, vtkVars);
+ vtkPrivate::AllocateVtkArray(physicalDim, nVals, varCentering, cgnsVars, cgnsVectors, vtkVars, this);
// Load Data
for (std::size_t ff = 0; ff < nVarArray; ++ff)
@@ -1024,7 +1080,7 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
}
cgio_release_id(cgioNum, zoneChildId[nn]);
}
- this->AttachReferenceValue(base, sgrid);
+ vtkPrivate::AttachReferenceValue(base, sgrid, this);
if (nosolutionread == false)
{
mbase->SetBlock((zone), sgrid);
@@ -1062,7 +1118,7 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
std::size_t nVarArray = 0;
std::vector solChildId;
- this->getVarsIdAndFillRind(cgioSolId, nVarArray, varCentering, solChildId, rind);
+ vtkPrivate::getVarsIdAndFillRind(cgioSolId, nVarArray, varCentering, solChildId, rind, this);
if ( varCentering != CGNS_ENUMV(Vertex) &&
varCentering != CGNS_ENUMV(CellCenter))
@@ -1086,7 +1142,7 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
std::vector< CGNSRead::CGNSVariable > cgnsVars(nVarArray);
std::vector< CGNSRead::CGNSVector > cgnsVectors;
- this->fillArrayInformation(solChildId, physicalDim, cgnsVars, cgnsVectors);
+ vtkPrivate::fillArrayInformation(solChildId, physicalDim, cgnsVars, cgnsVectors, this);
// Source
cgsize_t fieldSrcStart[3] = {1,1,1};
@@ -1136,7 +1192,7 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
// Assign vars and vectors to a vtkvars array
std::vector vtkVars(nVarArray);
- this->AllocateVtkArray(physicalDim, nVals, varCentering, cgnsVars, cgnsVectors, vtkVars);
+ vtkPrivate::AllocateVtkArray(physicalDim, nVals, varCentering, cgnsVars, cgnsVectors, vtkVars, this);
// Load Data
for (std::size_t ff = 0; ff < nVarArray; ++ff)
@@ -1211,7 +1267,7 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
for (std::size_t sol = 0; sol < StructuredGridList.size(); sol++)
{
mzone->GetMetaData(static_cast(sol))->Set(vtkCompositeDataSet::NAME(), SolutionNameList[sol]);
- this->AttachReferenceValue(base, StructuredGridList[sol]);
+ vtkPrivate::AttachReferenceValue(base, StructuredGridList[sol], this);
mzone->SetBlock((sol), StructuredGridList[sol]);
StructuredGridList[sol]->Delete();
}
@@ -1242,9 +1298,11 @@ int vtkCGNSReader::GetCurvilinearZone(int base, int zone,
//------------------------------------------------------------------------------
int vtkCGNSReader::GetUnstructuredZone(int base, int zone,
int cellDim, int physicalDim,
- cgsize_t *zsize,
+ void *v_zsize,
vtkMultiBlockDataSet *mbase)
{
+ cgsize_t* zsize = reinterpret_cast(v_zsize);
+
//========================================================================
// Test at compilation time with static assert ...
// In case cgsize_t < vtkIdType one could try to start from the array end
@@ -1286,9 +1344,9 @@ int vtkCGNSReader::GetUnstructuredZone(int base, int zone,
std::vector gridChildId;
std::size_t nCoordsArray = 0;
- this->getGridAndSolutionName(base, GridCoordName, SolutionName, readGridCoordName, readSolutionName);
+ vtkPrivate::getGridAndSolutionName(base, GridCoordName, SolutionName, readGridCoordName, readSolutionName, this);
- this->getCoordsIdAndFillRind(GridCoordName, physicalDim, nCoordsArray, gridChildId, rind);
+ vtkPrivate::getCoordsIdAndFillRind(GridCoordName, physicalDim, nCoordsArray, gridChildId, rind, this);
// Rind was parsed or not then populate dimensions :
// get grid coordinate range
@@ -1545,6 +1603,12 @@ int vtkCGNSReader::GetUnstructuredZone(int base, int zone,
return 1;
}
+ // Set up ugrid - we need to refer to it if we're building an NFACE_n or NGON_n grid
+ // Create an unstructured grid to contain the points.
+ vtkUnstructuredGrid *ugrid = vtkUnstructuredGrid::New();
+ ugrid->SetPoints(points);
+
+ bool buildGrid(true);
// Iterate over core sections.
for (std::vector::iterator iter = coreSec.begin();
iter != coreSec.end(); ++iter)
@@ -1563,7 +1627,7 @@ int vtkCGNSReader::GetUnstructuredZone(int base, int zone,
double cgioSectionId;
cgioSectionId = elemIdList[sec];
- if (elemType != CGNS_ENUMV(MIXED))
+ if (elemType != CGNS_ENUMV(MIXED) && elemType != CGNS_ENUMV(NFACE_n) && elemType != CGNS_ENUMV(NGON_n)) // MDvR: test for NFACE_n, NGON_n too
{
// All cells are of the same type.
int numPointsPerCell = 0;
@@ -1700,10 +1764,198 @@ int vtkCGNSReader::GetUnstructuredZone(int base, int zone,
CGNSRead::CGNS2VTKorder(elementSize, &cellsTypes[start-1], localElements);
}
}
+ else if ( elemType == CGNS_ENUMV(NFACE_n))
+ {
+ buildGrid = false;
+
+ // the faces are in NGON_n format, and are in another section - or multiple sections!
+ std::vector faceElements;
+ vtkIdType numFaces(0);
+ cgsize_t fDataSize(0);
+ for(size_t osec = 0, n = 0; osec < sectionInfoList.size(); ++osec)
+ {
+ // the documentation specifies that the faces of NFACE_n are always in NGON_n
+ // format, so look for another section that has that element type.
+ if (osec == sec) continue; // skip self
+ if (sectionInfoList[osec].elemType == CGNS_ENUMV(NGON_n))
+ {
+ fDataSize = sectionInfoList[osec].eDataSize;
+ // resize to fit the next batch of element connectivity values
+ faceElements.resize(faceElements.size() + fDataSize);
+
+ numFaces = 1 + sectionInfoList[osec].range[1] - sectionInfoList[osec].range[0];
+
+ cgsize_t memDim[2];
+
+ srcStart[0] = 1 ;
+ srcEnd[0] = fDataSize;
+ srcStride[0] = 1;
+
+ memStart[0] = 1;
+ memStart[1] = 1;
+ memEnd[0] = fDataSize;
+ memEnd[1] = 1;
+ memStride[0] = 1;
+ memStride[1] = 1;
+ memDim[0] = fDataSize;
+ memDim[1] = 1;
+
+ if(0 != CGNSRead::get_section_connectivity(this->cgioNum, elemIdList[osec], 1,
+ srcStart, srcEnd, srcStride,
+ memStart, memEnd, memStride,
+ memDim, &faceElements[n]))
+ {
+ vtkErrorMacro(<< "FAILED to read NGON_n cells\n");
+ return 1;
+ }
+
+ n += fDataSize; // points to next index
+ }
+ }
+
+ vtkNew cellArray;
+ cgsize_t eDataSize(0);
+ eDataSize = sectionInfoList[sec].eDataSize;
+
+ cellArray->SetNumberOfValues(eDataSize);
+ vtkIdType* cellElements = cellArray->GetPointer(0);
+ cgsize_t memDim[2];
+
+ srcStart[0] = 1 ;
+ srcEnd[0] = eDataSize;
+ srcStride[0] = 1;
+
+ memStart[0] = 1;
+ memStart[1] = 1;
+ memEnd[0] = eDataSize;
+ memEnd[1] = 1;
+ memStride[0] = 1;
+ memStride[1] = 1;
+ memDim[0] = eDataSize;
+ memDim[1] = 1;
+
+ if (0 != CGNSRead::get_section_connectivity(this->cgioNum, cgioSectionId, 1,
+ srcStart, srcEnd, srcStride,
+ memStart, memEnd, memStride,
+ memDim, cellElements))
+ {
+ vtkErrorMacro(<< "FAILED to read NFACE_n cells\n");
+ return 1;
+ }
+
+ // ok, now we have the face-to-node connectivity array and the cell-to-face connectivity array.
+ // VTK, however, has no concept of faces, and uses cell-to-node connectivity, so the intermediate faces
+ // need to be taken out of the description.
+
+ std::vector faceNodeLookupTable(numFaces);
+
+ vtkIdType p(0);
+ for(vtkIdType nf = 0; nf < numFaces; ++nf)
+ {
+ faceNodeLookupTable[nf] = p;
+ p += 1 + faceElements[p];
+ }
+
+ p = 0;
+ for(vtkIdType nc = 0; nc < numCoreCells; ++nc)
+ {
+ int numCellFaces = cellElements[p];
+
+ vtkNew faces;
+ faces->InsertNextId(numCellFaces);
+
+ for(vtkIdType nf = 0; nf < numCellFaces; ++nf)
+ {
+ vtkIdType faceId = cellElements[p + nf + 1];
+ bool mustReverse = faceId > 0;
+ faceId = abs(faceId);
+
+ // the following is needed because when the NGON_n face data preceeds the
+ // NFACE_n cell data, the indices are continuous, so a "global-to-local" mapping must be done.
+ faceId -= sectionInfoList[sec].range[1];
+ faceId -= 1; // CGNS uses FORTRAN ID style, starting at 1
+
+ vtkIdType q = faceNodeLookupTable[faceId];
+ vtkIdType numNodes = faceElements[q];
+ faces->InsertNextId(numNodes);
+ if (mustReverse)
+ {
+ for(vtkIdType nn = numNodes - 1; nn >= 0; --nn)
+ {
+ vtkIdType nodeID = faceElements[q + nn + 1] - 1; // AGAIN subtract 1 from node ID
+ faces->InsertNextId(nodeID);
+ }
+ }
+ else
+ {
+ for (vtkIdType nn = 0; nn < numNodes; ++nn)
+ {
+ vtkIdType nodeID = faceElements[q + nn + 1] - 1; // AGAIN subtract 1 from node ID
+ faces->InsertNextId(nodeID);
+ }
+ }
+ }
+ ugrid->InsertNextCell(VTK_POLYHEDRON, faces.GetPointer());
+ p += 1 + numCellFaces; //p now points to the index of the next cell
+ }
+ }
+ else if (elemType == CGNS_ENUMV(NGON_n))
+ {
+ buildGrid = false;
+ vtkNew ngonFaceArray;
+ cgsize_t eDataSize = 0;
+ eDataSize = sectionInfoList[sec].eDataSize;
+
+ ngonFaceArray->SetNumberOfValues(eDataSize);
+ vtkIdType* localElements = ngonFaceArray->GetPointer(0);
+ cgsize_t memDim[2];
+
+ srcStart[0] = 1 ;
+ srcEnd[0] = eDataSize;
+ srcStride[0] = 1;
+
+ memStart[0] = 1;
+ memStart[1] = 1;
+ memEnd[0] = eDataSize;
+ memEnd[1] = 1;
+ memStride[0] = 1;
+ memStride[1] = 1;
+ memDim[0] = eDataSize;
+ memDim[1] = 1;
+
+ if (0 != CGNSRead::get_section_connectivity(this->cgioNum, cgioSectionId, 1,
+ srcStart, srcEnd, srcStride,
+ memStart, memEnd, memStride,
+ memDim, localElements))
+ {
+ vtkErrorMacro(<< "FAILED to read NGON_n cells\n");
+ return 1;
+ }
+
+ vtkIdType numFaces = 1+ sectionInfoList[sec].range[1] - sectionInfoList[sec].range[0];
+ int p(0);
+ for(vtkIdType nf = 0; nf < numFaces ; ++nf)
+ {
+ vtkIdType numNodes = localElements[p];
+ vtkNew nodes;
+ //nodes->InsertNextId(numNodes);
+ for (vtkIdType nn = 0; nn < numNodes; ++nn)
+ {
+ vtkIdType nodeId = localElements[p+nn+1];
+ nodeId -= 1; // FORTRAN to C-style indexing
+ nodes->InsertNextId(nodeId);
+ }
+ ugrid->InsertNextCell(VTK_POLYGON, nodes.GetPointer());
+ p += 1 + numNodes;
+ }
+ }
+
cgio_release_id(this->cgioNum, cgioSectionId);
}
+
+ if (buildGrid)
+ cells->SetCells(numCoreCells , cellLocations.GetPointer());
- cells->SetCells(numCoreCells , cellLocations.GetPointer());
//
bool requiredPatch = (this->LoadBndPatch != 0);
// SetUp zone Blocks
@@ -1718,12 +1970,8 @@ int vtkCGNSReader::GetUnstructuredZone(int base, int zone,
}
mzone->GetMetaData((unsigned int) 0)->Set(vtkCompositeDataSet::NAME(), "Internal");
- // Set up ugrid
- // Create an unstructured grid to contain the points.
- vtkUnstructuredGrid *ugrid = vtkUnstructuredGrid::New();
- ugrid->SetPoints(points);
-
- ugrid->SetCells(cellsTypes, cells.GetPointer());
+ if(buildGrid)
+ ugrid->SetCells(cellsTypes, cells.GetPointer());
delete [] cellsTypes;
@@ -1755,7 +2003,7 @@ int vtkCGNSReader::GetUnstructuredZone(int base, int zone,
std::vector solChildId;
std::size_t nVarArray = 0;
- this->getVarsIdAndFillRind ( cgioSolId, nVarArray, varCentering, solChildId, rind);
+ vtkPrivate::getVarsIdAndFillRind ( cgioSolId, nVarArray, varCentering, solChildId, rind, this );
if ((varCentering != CGNS_ENUMV(Vertex)) &&
(varCentering != CGNS_ENUMV(CellCenter)))
@@ -1767,7 +2015,7 @@ int vtkCGNSReader::GetUnstructuredZone(int base, int zone,
std::vector< CGNSRead::CGNSVariable > cgnsVars(nVarArray);
std::vector< CGNSRead::CGNSVector > cgnsVectors;
- this->fillArrayInformation(solChildId, physicalDim, cgnsVars, cgnsVectors);
+ vtkPrivate::fillArrayInformation(solChildId, physicalDim, cgnsVars, cgnsVectors, this);
// Source layout
cgsize_t fieldSrcStart[3] = {1,1,1};
@@ -1813,7 +2061,7 @@ int vtkCGNSReader::GetUnstructuredZone(int base, int zone,
// Count number of vars and vectors
// Assign vars and vectors to a vtkvars array
std::vector vtkVars(nVarArray);
- this->AllocateVtkArray(physicalDim, nVals, varCentering, cgnsVars, cgnsVectors, vtkVars);
+ vtkPrivate::AllocateVtkArray(physicalDim, nVals, varCentering, cgnsVars, cgnsVectors, vtkVars, this);
// Load Data
for (std::size_t ff = 0; ff < nVarArray; ++ff)
@@ -1884,7 +2132,7 @@ int vtkCGNSReader::GetUnstructuredZone(int base, int zone,
}
// Handle Reference Values (Mach Number, ...)
- this->AttachReferenceValue(base, ugrid);
+ vtkPrivate::AttachReferenceValue(base, ugrid, this);
//--------------------------------------------------
// Read patch boundary Sections
@@ -2102,7 +2350,7 @@ int vtkCGNSReader::GetUnstructuredZone(int base, int zone,
bnd_id_arr->Delete();
// Handle Ref Values
- this->AttachReferenceValue(base, bndugrid);
+ vtkPrivate::AttachReferenceValue(base, bndugrid, this);
// Copy PointData if exists
vtkPointData* temp = ugrid->GetPointData();
@@ -2175,11 +2423,11 @@ int vtkCGNSReader::RequestData(vtkInformation *vtkNotUsed(request),
numProcessors =
outInfo->Get(vtkStreamingDemandDrivenPipeline::UPDATE_NUMBER_OF_PIECES());
- int numBases = this->Internal.GetNumberOfBaseNodes();
+ int numBases = this->Internal->GetNumberOfBaseNodes();
int numZones = 0;
for (int bb=0; bb < numBases; bb++)
{
- numZones += this->Internal.GetBase(bb).nzones;
+ numZones += this->Internal->GetBase(bb).nzones;
}
// Divide the files evenly between processors
@@ -2203,14 +2451,14 @@ int vtkCGNSReader::RequestData(vtkInformation *vtkNotUsed(request),
startRange = startRange - accumulated;
endRange = endRange - accumulated;
int startInterZone = std::max(startRange, 0);
- int endInterZone = std::min(endRange, this->Internal.GetBase(bb).nzones);
+ int endInterZone = std::min(endRange, this->Internal->GetBase(bb).nzones);
if ((endInterZone - startInterZone) > 0)
{
zoneRange[0] = startInterZone;
zoneRange[1] = endInterZone;
}
- accumulated = this->Internal.GetBase(bb).nzones;
+ accumulated = this->Internal->GetBase(bb).nzones;
baseToZoneRange[bb] = zoneRange;
}
}
@@ -2225,13 +2473,13 @@ int vtkCGNSReader::RequestData(vtkInformation *vtkNotUsed(request),
startRange = startRange - accumulated;
endRange = endRange - accumulated;
int startInterZone = std::max(startRange, 0);
- int endInterZone = std::min(endRange, this->Internal.GetBase(bb).nzones);
+ int endInterZone = std::min(endRange, this->Internal->GetBase(bb).nzones);
if ((endInterZone - startInterZone) > 0)
{
zoneRange[0] = startInterZone;
zoneRange[1] = endInterZone;
}
- accumulated = this->Internal.GetBase(bb).nzones;
+ accumulated = this->Internal->GetBase(bb).nzones;
baseToZoneRange[bb] = zoneRange;
}
}
@@ -2243,7 +2491,7 @@ int vtkCGNSReader::RequestData(vtkInformation *vtkNotUsed(request),
this->CreateEachSolutionAsBlock = 0;
}
- if (!this->Internal.Parse(this->FileName))
+ if (!this->Internal->Parse(this->FileName))
{
return 0;
}
@@ -2268,21 +2516,21 @@ int vtkCGNSReader::RequestData(vtkInformation *vtkNotUsed(request),
<< requestedTimeValue);
// Clamp requestedTimeValue to available time range.
- if (requestedTimeValue < this->Internal.GetTimes().front())
+ if (requestedTimeValue < this->Internal->GetTimes().front())
{
- requestedTimeValue = this->Internal.GetTimes().front();
+ requestedTimeValue = this->Internal->GetTimes().front();
}
- if (requestedTimeValue > this->Internal.GetTimes().back())
+ if (requestedTimeValue > this->Internal->GetTimes().back())
{
- requestedTimeValue = this->Internal.GetTimes().back() ;
+ requestedTimeValue = this->Internal->GetTimes().back() ;
}
std::vector::iterator timeIte = std::find_if(
- this->Internal.GetTimes().begin(), this->Internal.GetTimes().end(),
+ this->Internal->GetTimes().begin(), this->Internal->GetTimes().end(),
std::bind2nd(WithinTolerance(), requestedTimeValue));
//
- if (timeIte == this->Internal.GetTimes().end())
+ if (timeIte == this->Internal->GetTimes().end())
{
return 0;
}
@@ -2321,7 +2569,7 @@ int vtkCGNSReader::RequestData(vtkInformation *vtkNotUsed(request),
int cellDim = 0;
int physicalDim = 0;
- const CGNSRead::BaseInformation & curBaseInfo = this->Internal.GetBase(numBase);
+ const CGNSRead::BaseInformation & curBaseInfo = this->Internal->GetBase(numBase);
// skip unselected base
if ( this->BaseSelection->ArrayIsEnabled ( curBaseInfo.name ) == 0 )
@@ -2359,7 +2607,7 @@ int vtkCGNSReader::RequestData(vtkInformation *vtkNotUsed(request),
(requestedTimeValue > curBaseInfo.times.back()))
{
skipBase = true;
- requestedTimeValue = this->Internal.GetTimes().front();
+ requestedTimeValue = this->Internal->GetTimes().front();
}
std::vector::const_iterator iter ;
@@ -2592,7 +2840,7 @@ int vtkCGNSReader::RequestInformation(vtkInformation * request,
<< this->FileName << " for fields and time steps");
// Parse the file...
- if (!this->Internal.Parse(this->FileName))
+ if (!this->Internal->Parse(this->FileName))
{
vtkErrorMacro(<< "Failed to parse cgns file: " << this->FileName);
return false;
@@ -2604,13 +2852,13 @@ int vtkCGNSReader::RequestInformation(vtkInformation * request,
this->Broadcast(this->Controller);
}
- this->NumberOfBases = this->Internal.GetNumberOfBaseNodes();
+ this->NumberOfBases = this->Internal->GetNumberOfBaseNodes();
// Set up time information
- if (this->Internal.GetTimes().size() != 0)
+ if (this->Internal->GetTimes().size() != 0)
{
- std::vector timeSteps(this->Internal.GetTimes().begin(),
- this->Internal.GetTimes().end());
+ std::vector timeSteps(this->Internal->GetTimes().begin(),
+ this->Internal->GetTimes().end());
vtkInformation* outInfo = outputVector->GetInformationObject(0);
outInfo->Set(vtkStreamingDemandDrivenPipeline::TIME_STEPS(),
@@ -2623,9 +2871,9 @@ int vtkCGNSReader::RequestInformation(vtkInformation * request,
timeRange, 2);
}
- for (int base = 0; base < this->Internal.GetNumberOfBaseNodes() ; ++base)
+ for (int base = 0; base < this->Internal->GetNumberOfBaseNodes() ; ++base)
{
- const CGNSRead::BaseInformation& curBase = this->Internal.GetBase(base);
+ const CGNSRead::BaseInformation& curBase = this->Internal->GetBase(base);
// Fill base names
if ( base == 0 && (!this->BaseSelection->ArrayExists(curBase.name)))
{
@@ -2949,6 +3197,6 @@ void vtkCGNSReader::Broadcast(vtkMultiProcessController* ctrl)
if (ctrl)
{
int rank = ctrl->GetLocalProcessId();
- this->Internal.Broadcast(ctrl, rank);
+ this->Internal->Broadcast(ctrl, rank);
}
}
diff --git a/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReader.h b/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReader.h
index dbc999c1a90..67d95211fcf 100644
--- a/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReader.h
+++ b/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReader.h
@@ -35,12 +35,16 @@
#include "vtkMultiBlockDataSetAlgorithm.h"
#include "vtkPVVTKExtensionsCGNSReaderModule.h" // for export macro
-#include "vtkCGNSReaderInternal.h" // For parsing information request
class vtkDataSet;
class vtkDataArraySelection;
class vtkCallbackCommand;
+namespace CGNSRead
+{
+class vtkCGNSMetaData;
+}
+
class vtkMultiProcessController;
class VTKPVVTKEXTENSIONSCGNSREADER_EXPORT vtkCGNSReader : public vtkMultiBlockDataSetAlgorithm
{
@@ -136,51 +140,21 @@ class VTKPVVTKEXTENSIONSCGNSREADER_EXPORT vtkCGNSReader : public vtkMultiBlockDa
void* clientdata, void* calldata);
int GetCurvilinearZone(int base, int zone,
- int cell_dim, int phys_dim, cgsize_t *zsize,
+ int cell_dim, int phys_dim, void *zsize,
vtkMultiBlockDataSet *mbase);
int GetUnstructuredZone(int base, int zone,
- int cell_dim, int phys_dim, cgsize_t *zsize,
+ int cell_dim, int phys_dim, void *zsize,
vtkMultiBlockDataSet *mbase);
vtkMultiProcessController* Controller;
vtkIdType ProcRank;
vtkIdType ProcSize;
-#ifndef __WRAP__
- bool IsVarEnabled(CGNS_ENUMT(GridLocation_t) varcentering,
- const CGNSRead::char_33 name);
-
- int getGridAndSolutionName(int base,
- CGNSRead::char_33 GridCoordName, CGNSRead::char_33 SolutionName,
- bool& readGridCoordName, bool& readSolutionName);
-
- int getCoordsIdAndFillRind(const CGNSRead::char_33 GridCoordName,
- const int physicalDim, std::size_t& nCoordsArray,
- std::vector& gridChildId, int* rind);
-
- int getVarsIdAndFillRind(const double cgioSolId,
- std::size_t& nVarArray, CGNS_ENUMT(GridLocation_t)& varCentering,
- std::vector& solChildId, int* rind);
-
- int fillArrayInformation(const std::vector& solChildId,
- const int physicalDim,
- std::vector< CGNSRead::CGNSVariable >& cgnsVars,
- std::vector< CGNSRead::CGNSVector >& cgnsVectors);
-
- int AllocateVtkArray(const int physicalDim, const vtkIdType nVals,
- const CGNS_ENUMT(GridLocation_t) varCentering,
- const std::vector< CGNSRead::CGNSVariable >& cgnsVars,
- const std::vector< CGNSRead::CGNSVector >& cgnsVectors,
- std::vector& vtkVars);
-
- int AttachReferenceValue(const int base, vtkDataSet* ds);
-#endif
-
private:
vtkCGNSReader(const vtkCGNSReader&); // Not implemented.
void operator=(const vtkCGNSReader&); // Not implemented.
- CGNSRead::vtkCGNSMetaData Internal; // Metadata
+ CGNSRead::vtkCGNSMetaData *Internal; // Metadata
char *FileName; // cgns file name
int LoadBndPatch; // option to set section loading for unstructured grid
@@ -194,6 +168,9 @@ class VTKPVVTKEXTENSIONSCGNSREADER_EXPORT vtkCGNSReader : public vtkMultiBlockDa
//
unsigned int NumberOfBases;
int ActualTimeStep;
+
+ class vtkPrivate;
+ friend class vtkPrivate;
};
#endif // vtkCGNSReader_h
diff --git a/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReaderInternal.cxx b/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReaderInternal.cxx
index 73dc13bf00f..4987afefac5 100644
--- a/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReaderInternal.cxx
+++ b/ParaViewCore/VTKExtensions/CGNSReader/vtkCGNSReaderInternal.cxx
@@ -157,6 +157,7 @@ int get_section_connectivity(const int cgioNum, const double cgioSectionId,
char message[81];
cgio_error_message(message);
std::cerr << "cgio_read_data :" << message;
+ return 1;
}
}
else
diff --git a/ParaViewCore/VTKExtensions/CosmoTools/CMakeLists.txt b/ParaViewCore/VTKExtensions/CosmoTools/CMakeLists.txt
index 50ed9d366e6..b7fbc7776c6 100644
--- a/ParaViewCore/VTKExtensions/CosmoTools/CMakeLists.txt
+++ b/ParaViewCore/VTKExtensions/CosmoTools/CMakeLists.txt
@@ -50,7 +50,7 @@ set_source_files_properties(
vtkGenericIOUtilities
PROPERTIES WRAP_EXCLUDE_PYTHON 1)
vtk_module_library(vtkPVVTKExtensionsCosmoTools ${Module_SRCS})
-target_link_libraries(vtkPVVTKExtensionsCosmoTools
+vtk_module_link_libraries(vtkPVVTKExtensionsCosmoTools
LINK_PRIVATE
${CosmoToolsExternalLibs}
pthread
diff --git a/ParaViewCore/VTKExtensions/Rendering/vtkBlockDeliveryPreprocessor.cxx b/ParaViewCore/VTKExtensions/Rendering/vtkBlockDeliveryPreprocessor.cxx
index 79c77139974..8233b55ff8c 100644
--- a/ParaViewCore/VTKExtensions/Rendering/vtkBlockDeliveryPreprocessor.cxx
+++ b/ParaViewCore/VTKExtensions/Rendering/vtkBlockDeliveryPreprocessor.cxx
@@ -20,6 +20,7 @@
#include "vtkInformation.h"
#include "vtkInformationVector.h"
#include "vtkMultiBlockDataSet.h"
+#include "vtkNew.h"
#include "vtkObjectFactory.h"
#include "vtkSelection.h"
#include "vtkSelectionNode.h"
@@ -28,20 +29,48 @@
#include "vtkTable.h"
#include "vtkUniformGridAMRDataIterator.h"
+#include
+
+class vtkBlockDeliveryPreprocessor::CompositeDataSetIndicesType :
+ public std::set
+{
+};
+
vtkStandardNewMacro(vtkBlockDeliveryPreprocessor);
//----------------------------------------------------------------------------
vtkBlockDeliveryPreprocessor::vtkBlockDeliveryPreprocessor()
{
- this->CompositeDataSetIndex = 0;
this->FieldAssociation = vtkDataObject::FIELD_ASSOCIATION_POINTS;
this->FlattenTable = 0;
this->GenerateOriginalIds = true;
this->GenerateCellConnectivity = false;
+ this->CompositeDataSetIndices = new CompositeDataSetIndicesType();
}
//----------------------------------------------------------------------------
vtkBlockDeliveryPreprocessor::~vtkBlockDeliveryPreprocessor()
{
+ delete this->CompositeDataSetIndices;
+}
+
+//----------------------------------------------------------------------------
+void vtkBlockDeliveryPreprocessor::AddCompositeDataSetIndex(unsigned int index)
+{
+ if (this->CompositeDataSetIndices->find(index) == this->CompositeDataSetIndices->end())
+ {
+ this->CompositeDataSetIndices->insert(index);
+ this->Modified();
+ }
+}
+
+//----------------------------------------------------------------------------
+void vtkBlockDeliveryPreprocessor::RemoveAllCompositeDataSetIndices()
+{
+ if (this->CompositeDataSetIndices->size() > 0)
+ {
+ this->CompositeDataSetIndices->clear();
+ this->Modified();
+ }
}
//----------------------------------------------------------------------------
@@ -93,8 +122,6 @@ int vtkBlockDeliveryPreprocessor::RequestData(vtkInformation*,
vtkInformationVector** inputVector,
vtkInformationVector* outputVector)
{
- //cout << "vtkBlockDeliveryPreprocessor::CompositeDataSetIndex: "
- // << this->CompositeDataSetIndex << endl;
vtkDataObject* inputDO = vtkDataObject::GetData(inputVector[0], 0);
vtkDataObject* outputDO = vtkDataObject::GetData(outputVector, 0);
@@ -124,27 +151,32 @@ int vtkBlockDeliveryPreprocessor::RequestData(vtkInformation*,
split->Update();
}
- vtkMultiBlockDataSet* output = vtkMultiBlockDataSet::SafeDownCast(
- outputDO);
+ vtkMultiBlockDataSet* output = vtkMultiBlockDataSet::SafeDownCast(outputDO);
if (!output)
{
outputDO->ShallowCopy(filter->GetOutputDataObject(0));
return 1;
}
- if (this->CompositeDataSetIndex != 0)
+ if (this->CompositeDataSetIndices->size() == 0 ||
+ (this->CompositeDataSetIndices->size() == 1 &&
+ (*this->CompositeDataSetIndices->begin()) == 0))
+ {
+ output->ShallowCopy(filter->GetOutputDataObject(0));
+ }
+ else
{
- vtkSmartPointer eb = vtkSmartPointer::New();
+ vtkNew eb;
eb->SetInputConnection(filter->GetOutputPort());
- eb->AddIndex(this->CompositeDataSetIndex);
+ for (CompositeDataSetIndicesType::iterator iter = this->CompositeDataSetIndices->begin();
+ iter != this->CompositeDataSetIndices->end(); ++iter)
+ {
+ eb->AddIndex(*iter);
+ }
eb->PruneOutputOff();
eb->Update();
output->ShallowCopy(eb->GetOutput());
}
- else
- {
- output->ShallowCopy(filter->GetOutputDataObject(0));
- }
// Add meta-data about composite-index/hierarchical index to help
// vtkSelectionStreamer.
diff --git a/ParaViewCore/VTKExtensions/Rendering/vtkBlockDeliveryPreprocessor.h b/ParaViewCore/VTKExtensions/Rendering/vtkBlockDeliveryPreprocessor.h
index 77fcc9f112c..58b8fcc46df 100644
--- a/ParaViewCore/VTKExtensions/Rendering/vtkBlockDeliveryPreprocessor.h
+++ b/ParaViewCore/VTKExtensions/Rendering/vtkBlockDeliveryPreprocessor.h
@@ -34,10 +34,9 @@ class VTKPVVTKEXTENSIONSRENDERING_EXPORT vtkBlockDeliveryPreprocessor : public v
// Description:
// In case of Composite datasets, set the flat index of the subtree to pass.
- // Default is 0 which results in passing the entire composite tree.
- vtkSetMacro(CompositeDataSetIndex, unsigned int);
- vtkGetMacro(CompositeDataSetIndex, unsigned int);
- void SetCompositeDataSetIndex() { this->SetCompositeDataSetIndex(0); }
+ // Default or empty results in passing the entire composite tree.
+ void AddCompositeDataSetIndex(unsigned int index);
+ void RemoveAllCompositeDataSetIndices();
// Description:
// Allow user to enable/disable cell connectivity generation in the datamodel
@@ -89,13 +88,15 @@ class VTKPVVTKEXTENSIONSRENDERING_EXPORT vtkBlockDeliveryPreprocessor : public v
vtkInformationVector*);
int FieldAssociation;
- unsigned int CompositeDataSetIndex;
int FlattenTable;
bool GenerateOriginalIds;
bool GenerateCellConnectivity;
private:
vtkBlockDeliveryPreprocessor(const vtkBlockDeliveryPreprocessor&); // Not implemented
void operator=(const vtkBlockDeliveryPreprocessor&); // Not implemented
+
+ class CompositeDataSetIndicesType;
+ CompositeDataSetIndicesType *CompositeDataSetIndices;
//ETX
};
diff --git a/ParaViewCore/VTKExtensions/Rendering/vtkCleanArrays.cxx b/ParaViewCore/VTKExtensions/Rendering/vtkCleanArrays.cxx
index 60b4ad82533..7717febb47f 100644
--- a/ParaViewCore/VTKExtensions/Rendering/vtkCleanArrays.cxx
+++ b/ParaViewCore/VTKExtensions/Rendering/vtkCleanArrays.cxx
@@ -16,19 +16,51 @@
#include "vtkAbstractArray.h"
#include "vtkCellData.h"
+#include "vtkCompositeDataIterator.h"
+#include "vtkCompositeDataSet.h"
+#include "vtkDataArray.h"
#include "vtkMultiProcessController.h"
#include "vtkMultiProcessControllerHelper.h"
#include "vtkMultiProcessStream.h"
#include "vtkObjectFactory.h"
#include "vtkPointData.h"
-#include "vtkDataSet.h"
-#include "vtkDataArray.h"
#include
#include
#include
#include
+inline bool vtkSkipAttributeType(int attr)
+{
+ return (attr == vtkDataObject::POINT_THEN_CELL);
+}
+
+inline void vtkShallowCopy(vtkDataObject* output, vtkDataObject* input)
+{
+ vtkCompositeDataSet* cdout = vtkCompositeDataSet::SafeDownCast(output);
+ if (cdout == NULL)
+ {
+ output->ShallowCopy(input);
+ return;
+ }
+
+ // We can't use vtkCompositeDataSet::ShallowCopy() since that simply passes
+ // the leaf datasets without actually shallowcopying them. That doesn't work
+ // in our case since we will be modifying the datasets in the output.
+ vtkCompositeDataSet* cdin = vtkCompositeDataSet::SafeDownCast(input);
+ cdout->CopyStructure(cdin);
+ vtkSmartPointer initer;
+ initer.TakeReference(cdin->NewIterator());
+ for (initer->InitTraversal(); !initer->IsDoneWithTraversal(); initer->GoToNextItem())
+ {
+ vtkDataObject* in = initer->GetCurrentDataObject();
+ vtkDataObject* clone = in->NewInstance();
+ clone->ShallowCopy(in);
+ cdout->SetDataSet(initer, clone);
+ clone->FastDelete();
+ }
+}
+
vtkStandardNewMacro(vtkCleanArrays);
vtkCxxSetObjectMacro(vtkCleanArrays, Controller, vtkMultiProcessController);
//----------------------------------------------------------------------------
@@ -118,10 +150,43 @@ class vtkCleanArrays::vtkArraySet : public std::setValid = 1;
}
+ void Intersection(const vtkArraySet& other)
+ {
+ if (this->Valid && other.Valid)
+ {
+ vtkCleanArrays::vtkArraySet setC;
+ std::set_intersection(this->begin(), this->end(),
+ other.begin(), other.end(),
+ std::inserter(setC, setC.begin()));
+ setC.MarkValid();
+ this->swap(setC);
+ }
+ else if (other.Valid)
+ {
+ *this = other;
+ }
+ }
+ void Union(const vtkArraySet& other)
+ {
+ if (this->Valid && other.Valid)
+ {
+ vtkCleanArrays::vtkArraySet setC;
+ std::set_union(this->begin(), this->end(),
+ other.begin(), other.end(),
+ std::inserter(setC, setC.begin()));
+ setC.MarkValid();
+ this->swap(setC);
+ }
+ else if (other.Valid)
+ {
+ *this = other;
+ }
+ }
+
// Fill up \c this with arrays from \c dsa
- void Initialize(vtkDataSet* ds, vtkFieldData* dsa)
+ void Initialize(vtkFieldData* dsa)
{
- this->Valid = (ds->GetNumberOfPoints() > 0)? 1 : 0;
+ this->Valid = true;
int numArrays = dsa->GetNumberOfArrays();
if (dsa->GetNumberOfTuples() == 0)
{
@@ -140,12 +205,13 @@ class vtkCleanArrays::vtkArraySet : public std::setValid == 0)
{
return;
}
+ vtkArraySet myself = (*this);
int numArrays = dsa->GetNumberOfArrays();
for (int cc=numArrays-1; cc >= 0; cc--)
{
@@ -154,19 +220,19 @@ class vtkCleanArrays::vtkArraySet : public std::setfind(mda) == this->end())
+ if (myself.find(mda) == myself.end())
{
//cout << "Removing: " << array->GetName() << endl;
dsa->RemoveArray(array->GetName());
}
else
{
- this->erase(mda);
+ myself.erase(mda);
}
}
}
// Now fill any missing arrays.
- for (iterator iter = this->begin(); iter != this->end(); ++iter)
+ for (iterator iter = myself.begin(); iter != myself.end(); ++iter)
{
vtkAbstractArray* array = iter->NewArray(dsa->GetNumberOfTuples());
if (array)
@@ -220,35 +286,17 @@ class vtkCleanArrays::vtkArraySet : public std::setShallowCopy(input);
+ vtkDataObject* inputDO = vtkDataObject::GetData(inputVector[0], 0);
+ vtkDataObject* outputDO = vtkDataObject::GetData(outputVector, 0);
+ vtkShallowCopy(outputDO, inputDO);
+ vtkCompositeDataSet* outputCD = vtkCompositeDataSet::SafeDownCast(outputDO);
vtkMultiProcessController* controller = this->Controller;
- if (!controller || controller->GetNumberOfProcesses() <= 1)
+ if ( (!controller || controller->GetNumberOfProcesses() <= 1) && outputCD == NULL)
{
- // Nothing to do since not running in parallel.
+ // Nothing to do since not running in parallel or on composite datasets.
return 1;
}
- vtkCleanArrays::vtkArraySet pdSet;
- vtkCleanArrays::vtkArraySet cdSet;
- pdSet.Initialize(output, output->GetPointData());
- cdSet.Initialize(output, output->GetCellData());
-
- vtkMultiProcessStream pdStream;
- vtkMultiProcessStream cdStream;
- pdSet.Save(pdStream);
- cdSet.Save(cdStream);
+ // Build the array sets for all attribute types across all blocks (if any).
+ vtkCleanArrays::vtkArraySet arraySets[vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES];
+ if (outputCD)
+ {
+ vtkSmartPointer iter;
+ iter.TakeReference(outputCD->NewIterator());
+ for (iter->InitTraversal(); !iter->IsDoneWithTraversal(); iter->GoToNextItem())
+ {
+ vtkDataObject* dobj = iter->GetCurrentDataObject();
+ for (int attr=0; attr < vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES; attr++)
+ {
+ if (vtkSkipAttributeType(attr)) { continue; }
+ if (dobj->GetNumberOfElements(attr) > 0)
+ {
+ vtkCleanArrays::vtkArraySet myset;
+ myset.Initialize(dobj->GetAttributesAsFieldData(attr));
+ if (this->FillPartialArrays)
+ {
+ arraySets[attr].Union(myset);
+ }
+ else
+ {
+ arraySets[attr].Intersection(myset);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ for (int attr=0; attr < vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES; attr++)
+ {
+ if (vtkSkipAttributeType(attr)) { continue; }
+ if (outputDO->GetNumberOfElements(attr) > 0)
+ {
+ arraySets[attr].Initialize(outputDO->GetAttributesAsFieldData(attr));
+ }
+ }
+ }
- vtkMultiProcessControllerHelper::ReduceToAll(
- controller,
- pdStream,
- this->FillPartialArrays ? ::UnionStreams : ::IntersectStreams,
- 1278392);
- vtkMultiProcessControllerHelper::ReduceToAll(
- controller,
- cdStream,
- this->FillPartialArrays ? ::UnionStreams : ::IntersectStreams,
- 1278393);
- pdSet.Load(pdStream);
- cdSet.Load(cdStream);
+ if (controller && controller->GetNumberOfProcesses() > 1)
+ {
+ for (int attr=0; attr < vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES; attr++)
+ {
+ if (vtkSkipAttributeType(attr)) { continue; }
+ vtkMultiProcessStream mstream;
+ arraySets[attr].Save(mstream);
+ vtkMultiProcessControllerHelper::ReduceToAll(
+ controller,
+ mstream,
+ this->FillPartialArrays ? ::UnionStreams : ::IntersectStreams,
+ 1278392 + attr);
+ arraySets[attr].Load(mstream);
+ }
+ }
- cdSet.UpdateFieldData(output->GetCellData());
- pdSet.UpdateFieldData(output->GetPointData());
+ if (outputCD)
+ {
+ vtkSmartPointer iter;
+ iter.TakeReference(outputCD->NewIterator());
+ for (iter->InitTraversal(); !iter->IsDoneWithTraversal(); iter->GoToNextItem())
+ {
+ vtkDataObject* dobj = iter->GetCurrentDataObject();
+ for (int attr=0; attr < vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES; attr++)
+ {
+ if (vtkSkipAttributeType(attr)) { continue; }
+ arraySets[attr].UpdateFieldData(dobj->GetAttributesAsFieldData(attr));
+ }
+ }
+ }
+ else
+ {
+ for (int attr=0; attr < vtkDataObject::NUMBER_OF_ATTRIBUTE_TYPES; attr++)
+ {
+ if (vtkSkipAttributeType(attr)) { continue; }
+ arraySets[attr].UpdateFieldData(outputDO->GetAttributesAsFieldData(attr));
+ }
+ }
return 1;
}
@@ -335,5 +418,3 @@ void vtkCleanArrays::PrintSelf(ostream& os, vtkIndent indent)
os << indent << "FillPartialArrays: " << this->FillPartialArrays << endl;
os << indent << "Controller: " << this->Controller << endl;
}
-
-
diff --git a/ParaViewCore/VTKExtensions/Rendering/vtkCleanArrays.h b/ParaViewCore/VTKExtensions/Rendering/vtkCleanArrays.h
index c124139905e..543f8e66652 100644
--- a/ParaViewCore/VTKExtensions/Rendering/vtkCleanArrays.h
+++ b/ParaViewCore/VTKExtensions/Rendering/vtkCleanArrays.h
@@ -15,21 +15,23 @@
// .NAME vtkCleanArrays - filter used to remove partial arrays across processes.
// .SECTION Description
// vtkCleanArrays is a filter used to remove (or fill up) partial arrays in a
-// vtkDataSet across processes. Empty dataset on any processes is ignored i.e.
-// it does not affect the arrays on any processes.
+// vtkDataSet (or a vtkCompositeDataSet) across processes (and blocks).
+// Empty dataset on any processes is skipped and doesn't affect the array pruned
+// (or filled) in the output. This filter also handles certain non-composite
+// data objects such a tables.
+//
#ifndef vtkCleanArrays_h
#define vtkCleanArrays_h
-#include "vtkDataSetAlgorithm.h"
+#include "vtkPassInputTypeAlgorithm.h"
#include "vtkPVVTKExtensionsRenderingModule.h" // needed for export macro
class vtkMultiProcessController;
-
-class VTKPVVTKEXTENSIONSRENDERING_EXPORT vtkCleanArrays : public vtkDataSetAlgorithm
+class VTKPVVTKEXTENSIONSRENDERING_EXPORT vtkCleanArrays : public vtkPassInputTypeAlgorithm
{
public:
static vtkCleanArrays* New();
- vtkTypeMacro(vtkCleanArrays, vtkDataSetAlgorithm);
+ vtkTypeMacro(vtkCleanArrays, vtkPassInputTypeAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
diff --git a/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.cxx b/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.cxx
index ee1ca12fe2c..b916792cdd8 100644
--- a/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.cxx
+++ b/ParaViewCore/VTKExtensions/Rendering/vtkPVGeometryFilter.cxx
@@ -22,7 +22,6 @@
#include "vtkCellData.h"
#include "vtkCellTypes.h"
#include "vtkCellIterator.h"
-#include "vtkCleanArrays.h"
#include "vtkCommand.h"
#include "vtkCompositeDataPipeline.h"
#include "vtkCompositeDataSet.h"
diff --git a/Plugins/SciberQuestToolKit/eigen-3.0.3/eigen-eigen-3.0.3/Eigen/src/Core/util/Macros.h b/Plugins/SciberQuestToolKit/eigen-3.0.3/eigen-eigen-3.0.3/Eigen/src/Core/util/Macros.h
index 2a647cfda5e..93951db1497 100644
--- a/Plugins/SciberQuestToolKit/eigen-3.0.3/eigen-eigen-3.0.3/Eigen/src/Core/util/Macros.h
+++ b/Plugins/SciberQuestToolKit/eigen-3.0.3/eigen-eigen-3.0.3/Eigen/src/Core/util/Macros.h
@@ -249,7 +249,7 @@
#define EIGEN_UNUSED_VARIABLE(var) (void)var;
#if (defined __GNUC__)
-#define EIGEN_ASM_COMMENT(X) asm("#"X)
+#define EIGEN_ASM_COMMENT(X) asm("#" X)
#else
#define EIGEN_ASM_COMMENT(X)
#endif
diff --git a/Plugins/SurfaceLIC/Testing/Python/SurfaceLICTestDriver.py b/Plugins/SurfaceLIC/Testing/Python/SurfaceLICTestDriver.py
index b347cc4c679..09ead0056a8 100644
--- a/Plugins/SurfaceLIC/Testing/Python/SurfaceLICTestDriver.py
+++ b/Plugins/SurfaceLIC/Testing/Python/SurfaceLICTestDriver.py
@@ -22,7 +22,7 @@
del mapper
else:
em = rw.GetExtensionManager()
- painter = vtk.vtkRenderingLIC.vtkSurfaceLICPainter()
+ painter = vtk.vtkSurfaceLICPainter()
ok = painter.IsSupported(rw)
print
print 'SurfaceLIC %s Supported by:\n %s\n %s\n %s\n'%(
diff --git a/Qt/Components/pqProxyWidget.cxx b/Qt/Components/pqProxyWidget.cxx
index 8d2584319db..add81941b05 100644
--- a/Qt/Components/pqProxyWidget.cxx
+++ b/Qt/Components/pqProxyWidget.cxx
@@ -1312,7 +1312,7 @@ bool pqProxyWidget::restoreDefaults()
{
anyReset = true;
}
- smproperty->ResetToXMLDefaults();
+ smproperty->ResetToDefault();
}
}
}
diff --git a/Qt/Core/pqSMAdaptor.cxx b/Qt/Core/pqSMAdaptor.cxx
index f2cfb97919e..65e3283063a 100644
--- a/Qt/Core/pqSMAdaptor.cxx
+++ b/Qt/Core/pqSMAdaptor.cxx
@@ -1269,14 +1269,14 @@ void pqSMAdaptor::setMultipleElementProperty(vtkSMProperty* Property,
if(Type == CHECKED)
{
- if (num > 0)
+ if (num > 0 || dvp->GetRepeatable())
{
dvp->SetElements(dvalues, num);
}
}
else if(Type == UNCHECKED)
{
- if (num > 0)
+ if (num > 0 || dvp->GetRepeatable())
{
dvp->SetUncheckedElements(dvalues, num);
}
diff --git a/Qt/Widgets/pqFlatTreeView.cxx b/Qt/Widgets/pqFlatTreeView.cxx
index b5c196fff7e..2de040f7602 100644
--- a/Qt/Widgets/pqFlatTreeView.cxx
+++ b/Qt/Widgets/pqFlatTreeView.cxx
@@ -3230,7 +3230,8 @@ void pqFlatTreeView::layoutItem(pqFlatTreeViewItem *item, int &point,
}
int preferredWidth = 0;
- int preferredHeight = 0;
+ // default to the maximum of the height by the font metrics, and the indent width
+ int preferredHeight = std::max(fm.height(), this->IndentWidth);
for(i = 0; i < item->Cells.size(); i++)
{
if(item->Cells[i]->Width == 0 || this->FontChanged)
@@ -3251,10 +3252,6 @@ void pqFlatTreeView::layoutItem(pqFlatTreeViewItem *item, int &point,
else
{
item->Cells[i]->Width = this->getDataWidth(index, fm);
- if(fm.height() > preferredHeight)
- {
- preferredHeight = fm.height();
- }
}
}
@@ -3267,13 +3264,9 @@ void pqFlatTreeView::layoutItem(pqFlatTreeViewItem *item, int &point,
}
}
- // Save the preferred height for the item. If no font hints were
- // found, use the default height.
+
+ // Save the preferred height for the item.
item->Height = preferredHeight;
- if(item->Height < this->IndentWidth)
- {
- item->Height = this->IndentWidth;
- }
// Add padding to the height for the vertical connection. Increment
// the starting point for the next item.
diff --git a/Testing/Data/Baseline/PythonSelection.png.md5 b/Testing/Data/Baseline/PythonSelection.png.md5
index 5877e11bc2f..9b002ad0d95 100644
--- a/Testing/Data/Baseline/PythonSelection.png.md5
+++ b/Testing/Data/Baseline/PythonSelection.png.md5
@@ -1 +1 @@
-15c9ff9710e00383b97994ce56e253ab
+34842470e6b232c8c6f1c0ac15cad303
diff --git a/Testing/Data/Baseline/SpreadSheet3.png.md5 b/Testing/Data/Baseline/SpreadSheet3.png.md5
new file mode 100644
index 00000000000..c79763d491c
--- /dev/null
+++ b/Testing/Data/Baseline/SpreadSheet3.png.md5
@@ -0,0 +1 @@
+044dca08db93e83b1f09bf4c4a440b8d
diff --git a/VTK b/VTK
index adf0fff8eee..34e28445eae 160000
--- a/VTK
+++ b/VTK
@@ -1 +1 @@
-Subproject commit adf0fff8eee76b646b7c1aa2172ea4c0f647b261
+Subproject commit 34e28445eae7c5807a0a2c5fe707ad5ef33d5f33
diff --git a/Web/Applications/DataProber/server/pv_web_data_prober.py b/Web/Applications/DataProber/server/pv_web_data_prober.py
index a6182ae0aab..712283fa5ec 100644
--- a/Web/Applications/DataProber/server/pv_web_data_prober.py
+++ b/Web/Applications/DataProber/server/pv_web_data_prober.py
@@ -43,7 +43,7 @@
from paraview.web import protocols as pv_protocols
from vtk.web import server
-from vtkWebCorePython import *
+from vtk.vtkWebCore import *
# import annotations
from autobahn.wamp import register as exportRpc
diff --git a/Web/Applications/FileViewer/server/pv_web_file_loader.py b/Web/Applications/FileViewer/server/pv_web_file_loader.py
index 0c4c1bdabe0..a405b286dff 100644
--- a/Web/Applications/FileViewer/server/pv_web_file_loader.py
+++ b/Web/Applications/FileViewer/server/pv_web_file_loader.py
@@ -54,7 +54,7 @@
from paraview.web import protocols as pv_protocols
from vtk.web import server
-from vtkWebCorePython import *
+from vtk.vtkWebCore import *
# import annotations
from autobahn.wamp import register as exportRpc
diff --git a/Web/Applications/TestApp/server/pv_web_test_app.py b/Web/Applications/TestApp/server/pv_web_test_app.py
index f37b280ec47..4da038a2e61 100644
--- a/Web/Applications/TestApp/server/pv_web_test_app.py
+++ b/Web/Applications/TestApp/server/pv_web_test_app.py
@@ -37,7 +37,7 @@
from paraview.web import protocols as pv_protocols
from vtk.web import server
-from vtkWebCorePython import *
+from vtk.vtkWebCore import *
try:
import argparse
diff --git a/Web/Python/paraview/web/helper.py b/Web/Python/paraview/web/helper.py
index c91f3461672..6dd4f1fd12f 100644
--- a/Web/Python/paraview/web/helper.py
+++ b/Web/Python/paraview/web/helper.py
@@ -13,11 +13,11 @@
from paraview import simple, servermanager
from paraview.servermanager import ProxyProperty, InputProperty
-from vtkPVServerManagerCorePython import *
+from vtk.vtkPVServerManagerCore import *
# Needed for:
# vtkSMPVRepresentationProxy
-from vtkPVServerManagerRenderingPython import *
+from vtk.vtkPVServerManagerRendering import *
# =============================================================================
# Pipeline management
diff --git a/Web/Python/paraview/web/ipython.py b/Web/Python/paraview/web/ipython.py
index 538ed7d52ca..5a5060be885 100644
--- a/Web/Python/paraview/web/ipython.py
+++ b/Web/Python/paraview/web/ipython.py
@@ -78,17 +78,17 @@ def ComputeNextTimeStep():
from mpi4py import MPI
from vtk.web import server
from paraview.vtk import *
-from vtkCommonCorePython import *
-from vtkCommonDataModelPython import *
-from vtkCommonExecutionModelPython import *
-from vtkFiltersSourcesPython import *
-from vtkParallelCorePython import *
-from vtkParaViewWebCorePython import *
-from vtkPVClientServerCoreCorePython import *
-from vtkPVServerManagerApplicationPython import *
-from vtkPVServerManagerCorePython import *
-from vtkPVVTKExtensionsCorePython import *
-from vtkWebCorePython import *
+from vtk.vtkCommonCore import *
+from vtk.vtkCommonDataModel import *
+from vtk.vtkCommonExecutionModel import *
+from vtk.vtkFiltersSources import *
+from vtk.vtkParallelCore import *
+from vtk.vtkParaViewWebCore import *
+from vtk.vtkPVClientServerCoreCore import *
+from vtk.vtkPVServerManagerApplication import *
+from vtk.vtkPVServerManagerCore import *
+from vtk.vtkPVVTKExtensionsCore import *
+from vtk.vtkWebCore import *
from paraview.web import wamp as pv_wamp
diff --git a/Web/Python/paraview/web/protocols.py b/Web/Python/paraview/web/protocols.py
index 0026f58c83f..dd4095b1ed6 100644
--- a/Web/Python/paraview/web/protocols.py
+++ b/Web/Python/paraview/web/protocols.py
@@ -21,7 +21,7 @@
from vtk.web import protocols as vtk_protocols
from decorators import *
-from vtkWebCorePython import vtkWebInteractionEvent
+from vtk.vtkWebCore import vtkWebInteractionEvent
from vtk import vtkImageData
from vtk import vtkUnsignedCharArray
@@ -31,15 +31,15 @@
# vtkSMPVRepresentationProxy
# vtkSMTransferFunctionProxy
# vtkSMTransferFunctionManager
-from vtkPVServerManagerRenderingPython import *
+from vtk.vtkPVServerManagerRendering import *
# Needed for:
# vtkSMProxyManager
-from vtkPVServerManagerCorePython import *
+from vtk.vtkPVServerManagerCore import *
# Needed for:
# vtkDataObject
-from vtkCommonDataModelPython import *
+from vtk.vtkCommonDataModel import *
# =============================================================================
#
@@ -2575,8 +2575,8 @@ def listServerDirectory(self, relativeDir='.'):
# Handle Data Selection
#
# =============================================================================
-from vtkPVClientServerCoreRenderingPython import *
-from vtkCommonCorePython import *
+from vtk.vtkPVClientServerCoreRendering import *
+from vtk.vtkCommonCore import *
class ParaViewWebSelectionHandler(ParaViewWebProtocol):
diff --git a/Web/Python/paraview/web/wamp.py b/Web/Python/paraview/web/wamp.py
index 2211d8eb7db..833b9b67ad9 100644
--- a/Web/Python/paraview/web/wamp.py
+++ b/Web/Python/paraview/web/wamp.py
@@ -3,7 +3,7 @@
"""
from vtk.web import wamp
-from vtkParaViewWebCorePython import vtkPVWebApplication
+from vtk.vtkParaViewWebCore import vtkPVWebApplication
from paraview.web import protocols as pv_protocols
diff --git a/Web/Python/paraview/web/webgl.py b/Web/Python/paraview/web/webgl.py
index 8b654e043ef..5b34bbd090c 100644
--- a/Web/Python/paraview/web/webgl.py
+++ b/Web/Python/paraview/web/webgl.py
@@ -10,7 +10,7 @@
from paraview import simple
from paraview.web import helper
-from vtkParaViewWebCorePython import vtkPVWebApplication
+from vtk.vtkParaViewWebCore import vtkPVWebApplication
import exceptions
import base64
diff --git a/Wrapping/Python/CMakeLists.txt b/Wrapping/Python/CMakeLists.txt
index 4c669f78922..b721ed5e565 100644
--- a/Wrapping/Python/CMakeLists.txt
+++ b/Wrapping/Python/CMakeLists.txt
@@ -35,97 +35,144 @@ if (NOT PARAVIEW_ENABLE_PYTHON)
return()
endif()
-set(PV_PYTHON_MODULE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/paraview")
-set(PV_PYTHON_MODULE_BINARY_DIR "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/site-packages/paraview")
-
-
# Copy generated module files from VTK into place in the build tree
set(_vtkpy_modules
# Ninja BUG 760: In past this depended on vtkpython_pyc. However, due to Ninja
# bug, the dependency wasn't being setup properly. Hence we directly depend on
# the generated file. Once Ninja or Cmake is fixed, we can remove this file
# depedency and leave the target dependecy.
- ${CMAKE_BINARY_DIR}/VTK/Wrapping/Python/vtk_compile_complete
+ ${VTK_BINARY_DIR}/Wrapping/Python/vtk_compile_complete
vtkpython_pyc
)
if (TARGET vtkWebPython)
list(APPEND _vtkpy_modules vtkWebPython)
endif()
+
+#------------------------------------------------------------------------------
+# List ParaView *.py files.
+set(PV_PYTHON_SOURCE_FILES
+ paraview/annotation.py
+ paraview/benchmark.py
+ paraview/calculator.py
+ paraview/cinemaIO/cinema_store.py
+ paraview/cinemaIO/explorers.py
+ paraview/cinemaIO/__init__.py
+ paraview/cinemaIO/OexrHelper.py
+ paraview/cinemaIO/pv_explorers.py
+ paraview/cinemaIO/pv_introspect.py
+ paraview/cinemaIO/raster_wrangler.py
+ paraview/collaboration.py
+ paraview/coprocessing.py
+ paraview/cpstate.py
+ paraview/data_exploration.py
+ paraview/demos/demo1.py
+ paraview/demos/show_grid_as_background.py
+ paraview/extract_selection.py
+ paraview/__init__.py
+ paraview/lookuptable.py
+ paraview/numeric.py
+ paraview/pvfilters.py
+ paraview/pvvtkextensions.py
+ paraview/python_view.py
+ paraview/servermanager.py
+ paraview/simple.py
+ paraview/smstate.py
+ paraview/smtesting.py
+ paraview/smtrace.py
+ paraview/spatiotemporalparallelism.py
+ paraview/util.py
+ paraview/variant.py
+ paraview/vtk/__init__.py
+ )
+
+# This is odd; we shouldnt' need to configure cpexport.py, we can simply fill in
+# the version number when cpexport.py is used by the ParaView client.
+# Leaving this unchanged for now since don't want to make too many unrelated changes
+# here.
+configure_file(cpexport.py.in cpexport.py @ONLY)
+
+#------------------------------------------------------------------------------
add_custom_command(
- OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/vtk_py_copy_completed"
+ OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/pv_copy_and_compile_py_files_complete"
+
+ # We will presently skip removing old py files since the code to put together
+ # *.py files for the `paraview` package is scattered around e.g. under the Web module.
+ # The responsibility to put together the `paraview` Python package should really be in one place
+ # (which is here). Let's do that in near future. Until then, let's leave these "empty dir" lines
+ # commented out.
+ # # Empty '$pydir/paraview' to remove old files.
+ # COMMAND ${CMAKE_COMMAND} ARGS -E echo "emptying '.../site-packages/paraview'"
+ # COMMAND ${CMAKE_COMMAND} ARGS -E remove_directory "${VTK_BUILD_PYTHON_MODULE_DIR}/paraview"
+ # COMMAND ${CMAKE_COMMAND} ARGS -E echo "emptying '.../site-packages/vtk'"
+ # COMMAND ${CMAKE_COMMAND} ARGS -E remove_directory "${VTK_BUILD_PYTHON_MODULE_DIR}/vtk"
+
+ COMMAND ${CMAKE_COMMAND} ARGS -E echo "copying paraview/*.py to '.../site-paraview/paraview'"
+ COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory
+ "${CMAKE_CURRENT_SOURCE_DIR}/paraview"
+ "${VTK_BUILD_PYTHON_MODULE_DIR}/paraview"
+
+ COMMAND ${CMAKE_COMMAND} ARGS -E copy
+ "${CMAKE_CURRENT_BINARY_DIR}/cpexport.py"
+ "${VTK_BUILD_PYTHON_MODULE_DIR}/paraview/cpexport.py"
+
# Copy into $pydir/paraview/vtk.
# This is what scripts get when they do "import paraview.vtk".
- COMMAND ${CMAKE_COMMAND} ARGS -E echo "copying to ${PV_PYTHON_MODULE_BINARY_DIR}"
+ COMMAND ${CMAKE_COMMAND} ARGS -E echo "copying VTKs py files to '.../site-packages/paraview/vtk'"
COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory
"${VTK_BINARY_DIR}/Wrapping/Python/vtk"
- "${PV_PYTHON_MODULE_BINARY_DIR}/vtk"
+ "${VTK_BUILD_PYTHON_MODULE_DIR}/paraview/vtk"
+
# Overlay that with paraview's customizations.
- COMMAND ${CMAKE_COMMAND} ARGS -E echo "overlaying onto ${PV_PYTHON_MODULE_BINARY_DIR}"
- COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory
- "${CMAKE_CURRENT_SOURCE_DIR}/paraview/vtk"
- "${PV_PYTHON_MODULE_BINARY_DIR}/vtk"
+ COMMAND ${CMAKE_COMMAND} ARGS -E echo "copy minimized __init__.py to '.../site-packages/paraview/vtk'"
+ COMMAND ${CMAKE_COMMAND} ARGS -E copy
+ "${CMAKE_CURRENT_SOURCE_DIR}/paraview/vtk/__init__.py"
+ "${VTK_BUILD_PYTHON_MODULE_DIR}/paraview/vtk/__init__.py"
# Also copy into $pydir/vtk.
- # Scripts that want all of vtk can now "import vtk".
- COMMAND ${CMAKE_COMMAND} ARGS -E echo "copying to ${VTK_BUILD_PYTHON_MODULE_DIR}/vtk"
+ # ParaView (pvpython/pvbatch) scripts that want all of vtk can now "import vtk".
+ COMMAND ${CMAKE_COMMAND} ARGS -E echo "also copying VTKs py to .../site-packages/vtk"
COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory
"${VTK_BINARY_DIR}/Wrapping/Python/vtk"
"${VTK_BUILD_PYTHON_MODULE_DIR}/vtk"
+ # Duplicate a few files from vtk (backwards compatibility)
+ COMMAND ${CMAKE_COMMAND} -E copy
+ "${VTK_SOURCE_DIR}/Wrapping/Python/vtk/util/numpy_support.py"
+ "${VTK_BUILD_PYTHON_MODULE_DIR}/paraview/numpy_support.py"
+
+ COMMAND ${CMAKE_COMMAND} -E copy
+ "${VTK_SOURCE_DIR}/Wrapping/Python/vtk/util/vtkConstants.py"
+ "${VTK_BUILD_PYTHON_MODULE_DIR}/paraview/vtkConstants.py"
+
+ # Now compile the python module files.
+ COMMAND ${PYTHON_EXECUTABLE} -m compileall -q
+ "${VTK_BUILD_PYTHON_MODULE_DIR}/paraview"
+ "${VTK_BUILD_PYTHON_MODULE_DIR}/vtk"
+
+ # Copy ColorMaps.xml (obsolete: we should remove this soonish)
+ COMMAND ${CMAKE_COMMAND} ARGS -E copy
+ "${CMAKE_CURRENT_SOURCE_DIR}/ColorMaps.xml"
+ "${VTK_BUILD_PYTHON_MODULE_DIR}/paraview/ColorMaps.xml"
+
# Touch the OUTPUT file, otherwise this command will always be dirty.
- COMMAND ${CMAKE_COMMAND} ARGS -E touch "${CMAKE_CURRENT_BINARY_DIR}/vtk_py_copy_completed"
+ COMMAND ${CMAKE_COMMAND} ARGS -E touch "${CMAKE_CURRENT_BINARY_DIR}/pv_copy_and_compile_py_files_complete"
DEPENDS
${_vtkpy_modules}
+ "${CMAKE_CURRENT_BINARY_DIR}/cpexport.py"
"${VTK_BINARY_DIR}/Wrapping/Python/vtk/__init__.py"
+ "${VTK_SOURCE_DIR}/Wrapping/Python/vtk/util/numpy_support.py"
+ "${VTK_SOURCE_DIR}/Wrapping/Python/vtk/util/vtkConstants.py"
+ "${CMAKE_CURRENT_SOURCE_DIR}/ColorMaps.xml"
+ ${PV_PYTHON_SOURCE_FILES}
)
-add_custom_target(copy_vtk_py_files ALL
- DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/vtk_py_copy_completed"
-)
-
-# Copy ParaView specific python files
-file (COPY ${CMAKE_CURRENT_SOURCE_DIR}/paraview
- DESTINATION ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/site-packages
- USE_SOURCE_PERMISSIONS
- FILES_MATCHING
- PATTERN *.py)
-
-# Copy obsolete ColorMaps.xml for now.
-file (COPY ${CMAKE_CURRENT_SOURCE_DIR}/ColorMaps.xml
- DESTINATION ${PV_PYTHON_MODULE_BINARY_DIR}
- USE_SOURCE_PERMISSIONS)
-
-# Add a couple of vtk python files to "paraview" module.
-file (COPY "${ParaView_SOURCE_DIR}/VTK/Wrapping/Python/vtk/util/numpy_support.py"
- "${ParaView_SOURCE_DIR}/VTK/Wrapping/Python/vtk/util/vtkConstants.py"
- DESTINATION ${PV_PYTHON_MODULE_BINARY_DIR}
- USE_SOURCE_PERMISSIONS)
-
-# Byte compile the paraview Python files.
-configure_file(${PV_PYTHON_MODULE_SOURCE_DIR}/compile_all_pv.py.in
- ${PV_PYTHON_MODULE_BINARY_DIR}/compile_all_pv.py
- @ONLY IMMEDIATE)
-
-configure_file(${PV_PYTHON_MODULE_SOURCE_DIR}/cpexport.py.in
- ${PV_PYTHON_MODULE_BINARY_DIR}/cpexport.py
- @ONLY IMMEDIATE)
-
-
-
-add_custom_command(
- WORKING_DIRECTORY ${PV_PYTHON_MODULE_BINARY_DIR}
- COMMAND ${PYTHON_EXECUTABLE}
- ARGS compile_all_pv.py
- DEPENDS ${PV_PYTHON_SOURCE_FILES} ${PV_PYTHON_MODULE_BINARY_DIR}/compile_all_pv.py copy_vtk_py_files
- ${PV_PYTHON_OUTPUT_FILES}
- OUTPUT "${PV_PYTHON_MODULE_BINARY_DIR}/pv_compile_complete"
- )
-
add_custom_target(paraview_pyc ALL
- DEPENDS copy_vtk_py_files "${PV_PYTHON_MODULE_BINARY_DIR}/pv_compile_complete")
+ DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/pv_copy_and_compile_py_files_complete")
# Install the paraview module files.
+# XXX(uda): why are we installing all packages in site-packages? We should only install
+# ones we created here i.e. paraview and vtk.
install(DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/site-packages
DESTINATION ${VTK_INSTALL_LIBRARY_DIR}
COMPONENT Runtime
diff --git a/Wrapping/Python/paraview/cpexport.py.in b/Wrapping/Python/cpexport.py.in
similarity index 100%
rename from Wrapping/Python/paraview/cpexport.py.in
rename to Wrapping/Python/cpexport.py.in
diff --git a/Wrapping/Python/paraview/compile_all_pv.py.in b/Wrapping/Python/paraview/compile_all_pv.py.in
deleted file mode 100644
index 613d84d5833..00000000000
--- a/Wrapping/Python/paraview/compile_all_pv.py.in
+++ /dev/null
@@ -1,4 +0,0 @@
-import compileall
-compileall.compile_dir('@PV_PYTHON_MODULE_BINARY_DIR@')
-file = open('@PV_PYTHON_MODULE_BINARY_DIR@/pv_compile_complete', 'w')
-file.write('Done')
diff --git a/Wrapping/Python/paraview/coprocessing.py b/Wrapping/Python/paraview/coprocessing.py
index 0c045241df1..fbff27e3823 100644
--- a/Wrapping/Python/paraview/coprocessing.py
+++ b/Wrapping/Python/paraview/coprocessing.py
@@ -6,7 +6,7 @@
"""
from paraview import simple, servermanager
-from vtkPVVTKExtensionsCorePython import *
+from vtk.vtkPVVTKExtensionsCore import *
import math
# -----------------------------------------------------------------------------
diff --git a/Wrapping/Python/paraview/pvvtkextensions.py b/Wrapping/Python/paraview/pvvtkextensions.py
index 4279815824c..9cb4b69814e 100644
--- a/Wrapping/Python/paraview/pvvtkextensions.py
+++ b/Wrapping/Python/paraview/pvvtkextensions.py
@@ -1,4 +1,4 @@
from paraview import vtk
-from vtkPVVTKExtensionsCorePython import *
-from vtkPVVTKExtensionsDefaultPython import *
-from vtkPVVTKExtensionsRenderingPython import *
+from vtk.vtkPVVTKExtensionsCore import *
+from vtk.vtkPVVTKExtensionsDefault import *
+from vtk.vtkPVVTKExtensionsRendering import *
diff --git a/Wrapping/Python/paraview/python_view.py b/Wrapping/Python/paraview/python_view.py
index da2de6f9004..b1bae702711 100644
--- a/Wrapping/Python/paraview/python_view.py
+++ b/Wrapping/Python/paraview/python_view.py
@@ -19,23 +19,23 @@
import paraview
import vtk
-from vtkPVServerImplementationCorePython import *
-from vtkPVClientServerCoreCorePython import *
-from vtkPVServerManagerCorePython import *
+from vtk.vtkPVServerImplementationCore import *
+from vtk.vtkPVClientServerCoreCore import *
+from vtk.vtkPVServerManagerCore import *
try:
- from vtkPVServerManagerDefaultPython import *
+ from vtk.vtkPVServerManagerDefault import *
except:
- paraview.print_error("Error: Cannot import vtkPVServerManagerDefaultPython")
+ paraview.print_error("Error: Cannot import vtkPVServerManagerDefault")
try:
- from vtkPVServerManagerRenderingPython import *
+ from vtk.vtkPVServerManagerRendering import *
except:
- paraview.print_error("Error: Cannot import vtkPVServerManagerRenderingPython")
+ paraview.print_error("Error: Cannot import vtkPVServerManagerRendering")
try:
- from vtkPVServerManagerApplicationPython import *
+ from vtk.vtkPVServerManagerApplication import *
except:
- paraview.print_error("Error: Cannot import vtkPVServerManagerApplicationPython")
-from vtkPVCommonPython import *
+ paraview.print_error("Error: Cannot import vtkPVServerManagerApplication")
+from vtk.vtkPVCommon import *
def numpy_to_image(numpy_array):
diff --git a/Wrapping/Python/paraview/servermanager.py b/Wrapping/Python/paraview/servermanager.py
index 85a720d3241..16dc941b1ff 100644
--- a/Wrapping/Python/paraview/servermanager.py
+++ b/Wrapping/Python/paraview/servermanager.py
@@ -45,29 +45,33 @@
# PURPOSE. See the above copyright notice for more information.
#
#==============================================================================
-import paraview, re, os, os.path, new, sys, atexit, vtk
+import paraview, re, os, os.path, new, sys, atexit
-from vtkPVServerImplementationCorePython import *
-from vtkPVClientServerCoreCorePython import *
-from vtkPVServerManagerCorePython import *
+# prefer `vtk` from `paraview` since it doesn't import all
+# vtk modules.
+from paraview import vtk
+
+from vtk.vtkPVServerImplementationCore import *
+from vtk.vtkPVClientServerCoreCore import *
+from vtk.vtkPVServerManagerCore import *
try:
- from vtkPVServerManagerDefaultPython import *
+ from vtk.vtkPVServerManagerDefault import *
except:
- paraview.print_error("Error: Cannot import vtkPVServerManagerDefaultPython")
+ paraview.print_error("Error: Cannot import vtkPVServerManagerDefault")
try:
- from vtkPVServerManagerRenderingPython import *
+ from vtk.vtkPVServerManagerRendering import *
except:
- paraview.print_error("Error: Cannot import vtkPVServerManagerRenderingPython")
+ paraview.print_error("Error: Cannot import vtkPVServerManagerRendering")
try:
- from vtkPVServerManagerApplicationPython import *
+ from vtk.vtkPVServerManagerApplication import *
except:
- paraview.print_error("Error: Cannot import vtkPVServerManagerApplicationPython")
+ paraview.print_error("Error: Cannot import vtkPVServerManagerApplication")
try:
- from vtkPVAnimationPython import *
+ from vtk.vtkPVAnimation import *
except:
- paraview.print_error("Error: Cannot import vtkPVAnimationPython")
-from vtkPVCommonPython import *
+ paraview.print_error("Error: Cannot import vtkPVAnimation")
+from vtk.vtkPVCommon import *
def _wrap_property(proxy, smproperty):
""" Internal function.
diff --git a/Wrapping/Python/paraview/smtesting.py b/Wrapping/Python/paraview/smtesting.py
index 6b0d7664f8f..826abc24589 100644
--- a/Wrapping/Python/paraview/smtesting.py
+++ b/Wrapping/Python/paraview/smtesting.py
@@ -4,7 +4,7 @@
import re
import sys
import exceptions
-from vtkPVServerManagerDefaultPython import *
+from vtk.vtkPVServerManagerDefault import *
# we get different behavior based on how we import servermanager
# so we want to import servermanager the same way in this module
diff --git a/Wrapping/Python/paraview/util.py b/Wrapping/Python/paraview/util.py
index dbb4004d55d..9807a546477 100644
--- a/Wrapping/Python/paraview/util.py
+++ b/Wrapping/Python/paraview/util.py
@@ -1,5 +1,5 @@
from paraview import vtk
-from vtkPVVTKExtensionsDefaultPython import *
+from vtk.vtkPVVTKExtensionsDefault import *
def SetOutputWholeExtent(algorithm, extent):
"""
diff --git a/Wrapping/Python/paraview/vtk/__init__.py b/Wrapping/Python/paraview/vtk/__init__.py
index 28b304a19e7..b5fbb8a8e0c 100644
--- a/Wrapping/Python/paraview/vtk/__init__.py
+++ b/Wrapping/Python/paraview/vtk/__init__.py
@@ -1,38 +1,38 @@
import paraview
try:
- from vtkCommonComputationalGeometryPython import *
+ from vtkCommonComputationalGeometry import *
except ImportError:
- paraview.print_error("Error: Could not import vtkCommonComputationalGeometryPython")
-from vtkCommonCorePython import *
-from vtkCommonDataModelPython import *
-from vtkCommonExecutionModelPython import *
+ paraview.print_error("Error: Could not import vtkCommonComputationalGeometry")
+from vtkCommonCore import *
+from vtkCommonDataModel import *
+from vtkCommonExecutionModel import *
try:
- from vtkCommonMathPython import *
+ from vtkCommonMath import *
except ImportError:
- paraview.print_error("Error: Could not import vtkCommonMathPython")
+ paraview.print_error("Error: Could not import vtkCommonMath")
try:
- from vtkCommonMiscPython import *
+ from vtkCommonMisc import *
except ImportError:
- paraview.print_error("Error: Could not import vtkCommonMiscPython")
+ paraview.print_error("Error: Could not import vtkCommonMisc")
try:
- from vtkCommonSystemPython import *
+ from vtkCommonSystem import *
except ImportError:
- paraview.print_error("Error: Could not import vtkCommonSystemPython")
+ paraview.print_error("Error: Could not import vtkCommonSystem")
try:
- from vtkCommonTransformsPython import *
+ from vtkCommonTransforms import *
except ImportError:
- paraview.print_error("Error: Could not import vtkCommonTransformsPython")
-from vtkFiltersProgrammablePython import *
-from vtkParallelCorePython import *
+ paraview.print_error("Error: Could not import vtkCommonTransforms")
+from vtkFiltersProgrammable import *
+from vtkParallelCore import *
try:
- from vtkRenderingCorePython import vtkCamera
+ from vtkRenderingCore import vtkCamera
except ImportError:
- paraview.print_error("Error: Could not import vtkRenderingCorePython")
+ paraview.print_error("Error: Could not import vtkRenderingCore")
try:
- from vtkFiltersCorePython import *
+ from vtkFiltersCore import *
except ImportError:
- paraview.print_error("Error: Could not import vtkFiltersCorePython")
+ paraview.print_error("Error: Could not import vtkFiltersCore")
# --------------------------------------