VTK  9.0.1
vtkJSONSceneExporter.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkJSONSceneExporter.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
25 #ifndef vtkJSONSceneExporter_h
26 #define vtkJSONSceneExporter_h
27 
28 #include "vtkExporter.h"
29 #include "vtkIOExportModule.h" // For export macro
30 #include "vtkSmartPointer.h" // For vtkSmartPointer
31 
32 #include <map> // For member variables
33 #include <string> // For string parameter
34 #include <vector> // For member variables
35 
36 class vtkActor;
37 class vtkDataObject;
38 class vtkDataSet;
39 class vtkPolyData;
40 class vtkScalarsToColors;
41 class vtkTexture;
42 
43 class VTKIOEXPORT_EXPORT vtkJSONSceneExporter : public vtkExporter
44 {
45 public:
46  static vtkJSONSceneExporter* New();
48  void PrintSelf(ostream& os, vtkIndent indent) override;
49 
51 
55  vtkSetStringMacro(FileName);
56  vtkGetStringMacro(FileName);
58 
60 
65  vtkSetMacro(WriteTextures, bool);
66  vtkGetMacro(WriteTextures, bool);
68 
70 
79  vtkSetMacro(WriteTextureLODs, bool);
80  vtkGetMacro(WriteTextureLODs, bool);
82 
84 
89  vtkSetMacro(TextureLODsBaseSize, size_t);
90  vtkGetMacro(TextureLODsBaseSize, size_t);
92 
94 
98  vtkSetStringMacro(TextureLODsBaseUrl);
99  vtkGetStringMacro(TextureLODsBaseUrl);
101 
103 
117  vtkSetMacro(WritePolyLODs, bool);
118  vtkGetMacro(WritePolyLODs, bool);
120 
122 
129  vtkSetMacro(PolyLODsBaseSize, size_t);
130  vtkGetMacro(PolyLODsBaseSize, size_t);
132 
134 
138  vtkSetStringMacro(PolyLODsBaseUrl);
139  vtkGetStringMacro(PolyLODsBaseUrl);
141 
142 protected:
144  ~vtkJSONSceneExporter() override;
145 
146  void WriteDataObject(ostream& os, vtkDataObject* dataObject, vtkActor* actor);
147  std::string ExtractRenderingSetup(vtkActor* actor);
148  std::string WriteDataSet(vtkDataSet* dataset, const char* addOnMeta);
149  void WriteLookupTable(const char* name, vtkScalarsToColors* lookupTable);
150 
151  void WriteData() override;
152 
153  std::string CurrentDataSetPath() const;
154 
155  std::string WriteTexture(vtkTexture* texture);
156  std::string WriteTextureLODSeries(vtkTexture* texture);
157 
158  // The returned pointer is the smallest poly LOD, intended to be
159  // written out in the vtkjs file.
160  vtkSmartPointer<vtkPolyData> WritePolyLODSeries(vtkPolyData* polys, std::string& config);
161 
162  char* FileName;
171  std::map<std::string, std::string> LookupTables;
172  std::map<vtkTexture*, std::string> TextureStrings;
173  std::map<vtkTexture*, std::string> TextureLODStrings;
174 
175  // Files that subclasses should zip
176  std::vector<std::string> FilesToZip;
177 
178 private:
180  void operator=(const vtkJSONSceneExporter&) = delete;
181 };
182 
183 #endif
vtkJSONSceneExporter::TextureLODsBaseUrl
char * TextureLODsBaseUrl
Definition: vtkJSONSceneExporter.h:166
vtkJSONSceneExporter::TextureLODStrings
std::map< vtkTexture *, std::string > TextureLODStrings
Definition: vtkJSONSceneExporter.h:173
vtkJSONSceneExporter::PolyLODsBaseSize
size_t PolyLODsBaseSize
Definition: vtkJSONSceneExporter.h:168
vtkJSONSceneExporter::TextureStrings
std::map< vtkTexture *, std::string > TextureStrings
Definition: vtkJSONSceneExporter.h:172
vtkJSONSceneExporter::DatasetCount
int DatasetCount
Definition: vtkJSONSceneExporter.h:170
vtkObject::New
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on.
vtkSmartPointer< vtkPolyData >
vtkExporter::WriteData
virtual void WriteData()=0
vtkJSONSceneExporter::TextureLODsBaseSize
size_t TextureLODsBaseSize
Definition: vtkJSONSceneExporter.h:165
vtkTexture
handles properties associated with a texture map
Definition: vtkTexture.h:65
vtkActor
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:45
vtkIndent
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkSmartPointer.h
vtkJSONSceneExporter::WriteTextures
bool WriteTextures
Definition: vtkJSONSceneExporter.h:163
vtkJSONSceneExporter::LookupTables
std::map< std::string, std::string > LookupTables
Definition: vtkJSONSceneExporter.h:171
vtkScalarsToColors
Superclass for mapping scalar values to colors.
Definition: vtkScalarsToColors.h:59
vtkExporter::PrintSelf
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkX3D::name
@ name
Definition: vtkX3D.h:225
vtkJSONSceneExporter
Export the content of a vtkRenderWindow into a directory with a JSON meta file describing the scene a...
Definition: vtkJSONSceneExporter.h:43
vtkJSONSceneExporter::FileName
char * FileName
Definition: vtkJSONSceneExporter.h:162
vtkJSONSceneExporter::FilesToZip
std::vector< std::string > FilesToZip
Definition: vtkJSONSceneExporter.h:176
vtkDataSet
abstract class to specify dataset behavior
Definition: vtkDataSet.h:56
WriteDataSet
void WriteDataSet(vtkUnstructuredGrid *grid, const std::string &file)
vtkX3D::string
@ string
Definition: vtkX3D.h:496
vtkJSONSceneExporter::PolyLODsBaseUrl
char * PolyLODsBaseUrl
Definition: vtkJSONSceneExporter.h:169
vtkExporter
abstract class to write a scene to a file
Definition: vtkExporter.h:47
vtkPolyData
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
vtkExporter.h
vtkDataObject
general representation of visualization data
Definition: vtkDataObject.h:59
vtkJSONSceneExporter::WriteTextureLODs
bool WriteTextureLODs
Definition: vtkJSONSceneExporter.h:164
vtkJSONSceneExporter::WritePolyLODs
bool WritePolyLODs
Definition: vtkJSONSceneExporter.h:167