/*========================================================================= Program: Visualization Toolkit Module: vtkGeoJSONWriter.h Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ /** * @class vtkGeoJSONWriter * @brief Convert vtkPolyData to Geo JSON format. * * Outputs a Geo JSON (http://www.geojson.org) description of the input * polydata data set. */ #ifndef vtkGeoJSONWriter_h #define vtkGeoJSONWriter_h #include "vtkIOGeoJSONModule.h" // For export macro #include "vtkWriter.h" class vtkLookupTable; class VTKIOGEOJSON_EXPORT vtkGeoJSONWriter : public vtkWriter { public: static vtkGeoJSONWriter* New(); void PrintSelf(ostream& os, vtkIndent indent) override; vtkTypeMacro(vtkGeoJSONWriter, vtkWriter); ///@{ /** * Accessor for name of the file that will be opened on WriteData */ vtkSetFilePathMacro(FileName); vtkGetFilePathMacro(FileName); ///@} ///@{ /** * Enable writing to an OutputString instead of the default, a file. */ vtkSetMacro(WriteToOutputString, bool); vtkGetMacro(WriteToOutputString, bool); vtkBooleanMacro(WriteToOutputString, bool); ///@} ///@{ /** * When WriteToOutputString in on, then a string is allocated, written to, * and can be retrieved with these methods. The string is deleted during * the next call to write ... */ vtkGetMacro(OutputStringLength, int); vtkGetStringMacro(OutputString); unsigned char* GetBinaryOutputString() { return reinterpret_cast(this->OutputString); } ///@} ///@{ /** * Controls how data attributes are written out. * When 0, data attributes are ignored and not written at all. * When 1, values are mapped through a lookup table and colors are written to the output. * When 2, which is the default, the values are written directly. */ vtkSetMacro(ScalarFormat, int); vtkGetMacro(ScalarFormat, int); ///@} ///@{ /** * Controls the lookup table to use when ValueMode is set to map colors; */ void SetLookupTable(vtkLookupTable* lut); vtkGetObjectMacro(LookupTable, vtkLookupTable); ///@} /** * When WriteToOutputString is on, this method returns a copy of the * output string in a vtkStdString. */ vtkStdString GetOutputStdString(); /** * This convenience method returns the string, sets the IVAR to nullptr, * so that the user is responsible for deleting the string. * I am not sure what the name should be, so it may change in the future. */ char* RegisterAndGetOutputString(); protected: vtkGeoJSONWriter(); ~vtkGeoJSONWriter() override; // Only accepts vtkPolyData int FillInputPortInformation(int port, vtkInformation* info) override; // Implementation of Write() void WriteData() override; // Helper for Write that writes attributes out void WriteScalar(vtkDataArray* da, vtkIdType ptId); vtkLookupTable* LookupTable; bool WriteToOutputString; char* OutputString; int OutputStringLength; int ScalarFormat; // Internal helpers ostream* OpenFile(); void ConditionalComma(vtkIdType, vtkIdType); void CloseFile(ostream*); class Internals; Internals* WriterHelper; char* FileName; private: vtkGeoJSONWriter(const vtkGeoJSONWriter&) = delete; void operator=(const vtkGeoJSONWriter&) = delete; }; #endif // vtkGeoJSONWriter_h