1 /*=========================================================================
2 
3   Program:   Visualization Toolkit
4   Module:    vtkX3DExporterFIWriter.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 =========================================================================*/
15 /**
16  * @class   vtkX3DExporterFIWriter
17  *
18 */
19 
20 #ifndef vtkX3DExporterFIWriter_h
21 #define vtkX3DExporterFIWriter_h
22 
23 #include "vtkIOExportModule.h" // For export macro
24 #include "vtkX3DExporterWriter.h"
25 
26 class vtkX3DExporterFIByteWriter;
27 class vtkX3DExporterFINodeInfoStack;
28 class vtkZLibDataCompressor;
29 
30 class VTKIOEXPORT_EXPORT vtkX3DExporterFIWriter : public vtkX3DExporterWriter
31 {
32 public:
33   static vtkX3DExporterFIWriter *New();
34   vtkTypeMacro(vtkX3DExporterFIWriter, vtkX3DExporterWriter);
35   void PrintSelf(ostream& os, vtkIndent indent) override;
36 
37   void CloseFile() override;
38   int OpenFile(const char* file) override;
39   int OpenStream() override;
40 
41   //void Write(const char* str);
42 
43   void Flush() override;
44 
45   void StartDocument() override;
46   void EndDocument() override;
47 
48   // Elements
49   void StartNode(int elementID) override;
50   void EndNode() override;
51 
52   // Attributes
53   // SFString / MFString
54   //void SetField(int attributeID, const std::string &value);
55   void SetField(int attributeID, const char*, bool mfstring = false) override;
56   // SFInt32
57   void SetField(int attributeID, int) override;
58   // SFFloat
59   void SetField(int attributeID, float) override;
60   // SFDouble
61   void SetField(int attributeID, double) override;
62   // SFBool
63   void SetField(int attributeID, bool) override;
64 
65   // For MFxxx attributes
66   void SetField(int attributeID, int type, const double* a) override;
67   void SetField(int attributeID, int type, vtkDataArray* a) override;
68   void SetField(int attributeID, const double* values, size_t size) override;
69 
70   // MFInt32
71   void SetField(int attributeID, int type, vtkCellArray* a);
72   void SetField(int attributeID, const int* values, size_t size, bool image = false) override;
73 
74   //@{
75   /**
76    * Use fastest instead of best compression
77    */
78   vtkSetClampMacro(Fastest, vtkTypeBool, 0, 1);
79   vtkBooleanMacro(Fastest, vtkTypeBool);
80   vtkGetMacro(Fastest, vtkTypeBool);
81   //@}
82 
83 protected:
84   vtkX3DExporterFIWriter();
85   ~vtkX3DExporterFIWriter() override;
86 
87 private:
88   void StartAttribute(int attributeID, bool literal, bool addToTable = false);
89   void EndAttribute();
90 
91   void CheckNode(bool callerIsAttribute = true);
92   bool IsLineFeedEncodingOn;
93 
94   //int Depth;
95   vtkX3DExporterFIByteWriter* Writer;
96   vtkX3DExporterFINodeInfoStack* InfoStack;
97   vtkZLibDataCompressor* Compressor;
98 
99   vtkTypeBool Fastest;
100 
101   vtkX3DExporterFIWriter(const vtkX3DExporterFIWriter&) = delete;
102   void operator=(const vtkX3DExporterFIWriter&) = delete;
103 
104 };
105 
106 #endif
107 
108