10 #ifndef smtk_vtk_ModelMultiBlockSource_h
11 #define smtk_vtk_ModelMultiBlockSource_h
14 #include "smtk/common/UUID.h"
15 #include "smtk/extension/vtk/source/vtkResourceMultiBlockSource.h"
16 #include "smtk/extension/vtk/source/vtkSMTKSourceExtModule.h"
17 #include "smtk/extension/vtk/source/vtkTracksAllInstances.h"
18 #include "smtk/model/CellEntity.h"
20 #include "vtkMultiBlockDataSetAlgorithm.h"
22 #include "vtkSmartPointer.h"
26 #define VTK_INSTANCE_COLOR "instance color"
27 #define VTK_INSTANCE_ORIENTATION "instance orientation"
28 #define VTK_INSTANCE_SCALE "instance scale"
29 #define VTK_INSTANCE_SOURCE "instance source"
30 #define VTK_INSTANCE_VISIBILITY "instance visibility"
33 class vtkPolyDataNormals;
34 class vtkInformationStringKey;
46 void PrintSelf(ostream& os, vtkIndent indent)
override;
49 enum ToplevelBlockType
64 vtkGetObjectMacro(CachedOutputMBDS, vtkMultiBlockDataSet);
65 vtkGetObjectMacro(CachedOutputInst, vtkMultiBlockDataSet);
70 void GetUUID2BlockIdMap(std::map<smtk::common::UUID, vtkIdType>& uuid2mid);
73 vtkGetVector4Macro(DefaultColor,
double);
74 vtkSetVector4Macro(DefaultColor,
double);
76 vtkGetMacro(ShowAnalysisTessellation,
int);
77 vtkSetMacro(ShowAnalysisTessellation,
int);
78 vtkBooleanMacro(ShowAnalysisTessellation,
int);
80 vtkGetMacro(AllowNormalGeneration,
int);
81 vtkSetMacro(AllowNormalGeneration,
int);
82 vtkBooleanMacro(AllowNormalGeneration,
int);
86 static const char* GetEntityTagName() {
return "Entity"; }
87 static const char* GetGroupTagName() {
return "Group"; }
88 static const char* GetVolumeTagName() {
return "Volume"; }
89 static const char* GetAttributeTagName() {
return "Attribute"; }
97 static void AddPointsAsAttribute(vtkPolyData* data);
103 vtkSmartPointer<vtkDataObject> GenerateRepresentationFromModel(
106 vtkSmartPointer<vtkPolyData> GenerateRepresentationFromTessellation(
110 vtkSmartPointer<vtkPolyData> GenerateRepresentationFromMeshTessellation(
114 void GenerateRepresentationFromModel(
118 void AddInstanceMetadata(
122 std::map<smtk::model::EntityRef, vtkIdType>& instancePrototypes);
123 void PreparePrototypeOutput(
124 vtkMultiBlockDataSet* mbds,
125 vtkMultiBlockDataSet* protoBlocks,
126 std::map<smtk::model::EntityRef, vtkIdType>& instancePrototypes);
127 void PrepareInstanceOutput(
128 vtkMultiBlockDataSet* instanceBlocks,
130 std::map<smtk::model::EntityRef, vtkIdType>&);
131 void AddInstancePoints(
132 vtkPolyData* instancePoly,
134 std::map<smtk::model::EntityRef, vtkIdType>& instancePrototypes);
135 void GenerateRepresentationFromModel(
136 vtkMultiBlockDataSet* mbds,
137 vtkMultiBlockDataSet* instancePoly,
138 vtkMultiBlockDataSet* protoBlocks,
140 void GenerateRepresentationFromMeshTessellation(
144 void GenerateRepresentationFromModel(
145 vtkMultiBlockDataSet* mbds,
149 vtkInformation* request,
150 vtkInformationVector** inInfo,
151 vtkInformationVector* outInfo)
override;
153 void SetCachedOutput(vtkMultiBlockDataSet*, vtkMultiBlockDataSet*, vtkMultiBlockDataSet*);
155 vtkMultiBlockDataSet* CachedOutputMBDS;
156 vtkMultiBlockDataSet* CachedOutputProto;
157 vtkMultiBlockDataSet* CachedOutputInst;
158 double DefaultColor[4];
159 int AllowNormalGeneration;
160 int ShowAnalysisTessellation;
161 vtkNew<vtkPolyDataNormals> NormalGenerator;
162 std::map<smtk::common::UUID, vtkIdType> UUID2BlockIdMap;
169 #endif // smtk_vtk_ModelMultiBlockSource_h