1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
/**
* @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"
VTK_ABI_NAMESPACE_BEGIN
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<unsigned char*>(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;
};
VTK_ABI_NAMESPACE_END
#endif // vtkGeoJSONWriter_h
|