You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
4.9 KiB
135 lines
4.9 KiB
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: $RCSfile: vtkPLYWriter.h,v $
|
|
|
|
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.
|
|
|
|
=========================================================================*/
|
|
// .NAME vtkPLYWriter - write Stanford PLY file format
|
|
// .SECTION Description
|
|
// vtkPLYWriter writes polygonal data in Stanford University PLY format
|
|
// (see http://graphics.stanford.edu/data/3Dscanrep/). The data can be
|
|
// written in either binary (little or big endian) or ASCII representation.
|
|
|
|
// .SECTION Caveats
|
|
// PLY does not handle big endian versus little endian correctly. Also,
|
|
// this class is compiled into VTK only if the PLY library is found
|
|
// during the make process (using CMake).
|
|
|
|
// .SECTION See Also
|
|
// vtkPLYReader
|
|
|
|
#ifndef __vtkPLYWriter_h
|
|
#define __vtkPLYWriter_h
|
|
|
|
#include "vtkPolyDataWriter.h"
|
|
|
|
class vtkScalarsToColors;
|
|
class vtkDataSetAttributes;
|
|
|
|
#define VTK_LITTLE_ENDIAN 0
|
|
#define VTK_BIG_ENDIAN 1
|
|
|
|
#define VTK_COLOR_MODE_DEFAULT 0
|
|
#define VTK_COLOR_MODE_UNIFORM_CELL_COLOR 1
|
|
#define VTK_COLOR_MODE_UNIFORM_POINT_COLOR 2
|
|
#define VTK_COLOR_MODE_UNIFORM_COLOR 3
|
|
#define VTK_COLOR_MODE_OFF 4
|
|
|
|
|
|
class VTK_IO_EXPORT vtkPLYWriter : public vtkPolyDataWriter
|
|
{
|
|
public:
|
|
static vtkPLYWriter *New();
|
|
vtkTypeRevisionMacro(vtkPLYWriter,vtkPolyDataWriter);
|
|
void PrintSelf(ostream& os, vtkIndent indent);
|
|
|
|
// Description:
|
|
// If the file type is binary, then the user can specify which
|
|
// byte order to use (little versus big endian).
|
|
vtkSetClampMacro(DataByteOrder,int,VTK_LITTLE_ENDIAN,VTK_BIG_ENDIAN);
|
|
vtkGetMacro(DataByteOrder,int);
|
|
void SetDataByteOrderToBigEndian()
|
|
{this->SetDataByteOrder(VTK_BIG_ENDIAN);}
|
|
void SetDataByteOrderToLittleEndian()
|
|
{this->SetDataByteOrder(VTK_LITTLE_ENDIAN);}
|
|
|
|
// Description:
|
|
// These methods enable the user to control how to add color into the PLY
|
|
// output file. The default behavior is as follows. The user provides the
|
|
// name of an array and a component number. If the type of the array is
|
|
// three components, unsigned char, then the data is written as three
|
|
// separate "red", "green" and "blue" properties. If the type is not
|
|
// unsigned char, and a lookup table is provided, then the array/component
|
|
// are mapped through the table to generate three separate "red", "green"
|
|
// and "blue" properties in the PLY file. The user can also set the
|
|
// ColorMode to specify a uniform color for the whole part (on a vertex
|
|
// colors, face colors, or both. (Note: vertex colors or cell colors may be
|
|
// written, depending on where the named array is found. If points and
|
|
// cells have the arrays with the same name, then both colors will be
|
|
// written.)
|
|
vtkSetMacro(ColorMode,int);
|
|
vtkGetMacro(ColorMode,int);
|
|
void SetColorModeToDefault()
|
|
{this->SetColorMode(VTK_COLOR_MODE_DEFAULT);}
|
|
void SetColorModeToUniformCellColor()
|
|
{this->SetColorMode(VTK_COLOR_MODE_UNIFORM_CELL_COLOR);}
|
|
void SetColorModeToUniformPointColor()
|
|
{this->SetColorMode(VTK_COLOR_MODE_UNIFORM_POINT_COLOR);}
|
|
void SetColorModeToUniformColor() //both cells and points are colored
|
|
{this->SetColorMode(VTK_COLOR_MODE_UNIFORM_COLOR);}
|
|
void SetColorModeToOff() //No color information is written
|
|
{this->SetColorMode(VTK_COLOR_MODE_OFF);}
|
|
|
|
// Description:
|
|
// Specify the array name to use to color the data.
|
|
vtkSetStringMacro(ArrayName);
|
|
vtkGetStringMacro(ArrayName);
|
|
|
|
// Description:
|
|
// Specify the array component to use to color the data.
|
|
vtkSetClampMacro(Component,int,0,VTK_LARGE_INTEGER);
|
|
vtkGetMacro(Component,int);
|
|
|
|
// Description:
|
|
// A lookup table can be specified in order to convert data arrays to
|
|
// RGBA colors.
|
|
virtual void SetLookupTable(vtkScalarsToColors*);
|
|
vtkGetObjectMacro(LookupTable,vtkScalarsToColors);
|
|
|
|
// Description:
|
|
// Set the color to use when using a uniform color (either point or cells,
|
|
// or both). The color is specified as a triplet of three unsigned chars
|
|
// between (0,255). This only takes effect when the ColorMode is set to
|
|
// uniform point, uniform cell, or uniform color.
|
|
vtkSetVector3Macro(Color,unsigned char);
|
|
vtkGetVector3Macro(Color,unsigned char);
|
|
|
|
protected:
|
|
vtkPLYWriter();
|
|
~vtkPLYWriter();
|
|
|
|
void WriteData();
|
|
unsigned char *GetColors(vtkIdType num, vtkDataSetAttributes *dsa);
|
|
|
|
int DataByteOrder;
|
|
char *ArrayName;
|
|
int Component;
|
|
int ColorMode;
|
|
vtkScalarsToColors *LookupTable;
|
|
unsigned char Color[3];
|
|
|
|
private:
|
|
vtkPLYWriter(const vtkPLYWriter&); // Not implemented.
|
|
void operator=(const vtkPLYWriter&); // Not implemented.
|
|
};
|
|
|
|
#endif
|
|
|
|
|