Ptex
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
PtexWriterBase Class Referenceabstract

#include <PtexWriter.h>

Inheritance diagram for PtexWriterBase:
PtexWriter PtexIO Ptex PtexIncrWriter PtexMainWriter

Classes

struct  MetaEntry
 

Public Member Functions

virtual void setBorderModes (Ptex::BorderMode uBorderMode, Ptex::BorderMode vBorderMode)
 Set border modes. More...
 
virtual void writeMeta (const char *key, const char *value)
 Write a string as meta data. More...
 
virtual void writeMeta (const char *key, const int8_t *value, int count)
 Write an array of signed 8-bit integers as meta data. More...
 
virtual void writeMeta (const char *key, const int16_t *value, int count)
 Write an array of signed 16-bit integers as meta data. More...
 
virtual void writeMeta (const char *key, const int32_t *value, int count)
 Write an array of signed 32-bit integers as meta data. More...
 
virtual void writeMeta (const char *key, const float *value, int count)
 Write an array of signed 32-bit floats as meta data. More...
 
virtual void writeMeta (const char *key, const double *value, int count)
 Write an array of signed 32-bit doubles as meta data. More...
 
virtual void writeMeta (PtexMetaData *data)
 Copy meta data from an existing meta data block. More...
 
virtual bool close (Ptex::String &error)
 Close the file. More...
 
virtual void release ()
 Release resources held by this pointer (pointer becomes invalid). More...
 
bool ok (Ptex::String &error)
 
void getError (Ptex::String &error)
 
- Public Member Functions inherited from PtexWriter
virtual bool writeFace (int faceid, const Ptex::FaceInfo &info, const void *data, int stride=0)=0
 Write texture data for a face. More...
 
virtual bool writeConstantFace (int faceid, const Ptex::FaceInfo &info, const void *data)=0
 Write constant texture data for a face. More...
 

Protected Member Functions

virtual void finish ()=0
 
 PtexWriterBase (const char *path, Ptex::MeshType mt, Ptex::DataType dt, int nchannels, int alphachan, int nfaces, bool compress)
 
virtual ~PtexWriterBase ()
 
int writeBlank (FILE *fp, int size)
 
int writeBlock (FILE *fp, const void *data, int size)
 
int writeZipBlock (FILE *fp, const void *data, int size, bool finish=true)
 
int readBlock (FILE *fp, void *data, int size)
 
int copyBlock (FILE *dst, FILE *src, FilePos pos, int size)
 
Res calcTileRes (Res faceres)
 
virtual void addMetaData (const char *key, MetaDataType t, const void *value, int size)
 
void writeConstFaceBlock (FILE *fp, const void *data, FaceDataHeader &fdh)
 
void writeFaceBlock (FILE *fp, const void *data, int stride, Res res, FaceDataHeader &fdh)
 
void writeFaceData (FILE *fp, const void *data, int stride, Res res, FaceDataHeader &fdh)
 
void writeReduction (FILE *fp, const void *data, int stride, Res res)
 
int writeMetaDataBlock (FILE *fp, MetaEntry &val)
 
void setError (const std::string &error)
 
bool storeFaceInfo (int faceid, FaceInfo &dest, const FaceInfo &src, int flags=0)
 
- Protected Member Functions inherited from PtexWriter
virtual ~PtexWriter ()
 Destructor not for public use. Use release() instead. More...
 

Protected Attributes

bool _ok
 
std::string _error
 
std::string _path
 
std::string _tilepath
 
FILE * _tilefp
 
Header _header
 
ExtHeader _extheader
 
int _pixelSize
 
std::vector< MetaEntry_metadata
 
std::map< std::string, int > _metamap
 
z_stream_s _zstream
 
PtexUtils::ReduceFn_reduceFn
 

Additional Inherited Members

- Public Types inherited from PtexIO
enum  Encoding { enc_constant, enc_zipped, enc_diffzipped, enc_tiled }
 
enum  EditType { et_editfacedata, et_editmetadata }
 
- Public Types inherited from Ptex
enum  MeshType { mt_triangle, mt_quad }
 Type of base mesh for which the textures are defined. More...
 
enum  DataType { dt_uint8, dt_uint16, dt_half, dt_float }
 Type of data stored in texture file. More...
 
enum  BorderMode { m_clamp, m_black, m_periodic }
 How to handle mesh border when filtering. More...
 
enum  EdgeId { e_bottom, e_right, e_top, e_left }
 Edge IDs used in adjacency data in the Ptex::FaceInfo struct. More...
 
enum  MetaDataType {
  mdt_string, mdt_int8, mdt_int16, mdt_int32,
  mdt_float, mdt_double
}
 Type of meta data entry. More...
 
- Static Public Member Functions inherited from PtexWriter
static PtexWriteropen (const char *path, Ptex::MeshType mt, Ptex::DataType dt, int nchannels, int alphachan, int nfaces, Ptex::String &error, bool genmipmaps=true)
 Open a new texture file for writing. More...
 
static PtexWriteredit (const char *path, bool incremental, Ptex::MeshType mt, Ptex::DataType dt, int nchannels, int alphachan, int nfaces, Ptex::String &error, bool genmipmaps=true)
 Open an existing texture file for writing. More...
 
static bool applyEdits (const char *path, Ptex::String &error)
 Apply edits to a file. More...
 
- Static Public Member Functions inherited from PtexIO
static bool LittleEndian ()
 
- Static Public Member Functions inherited from Ptex
static const char * MeshTypeName (MeshType mt)
 Look up name of given mesh type. More...
 
static const char * DataTypeName (DataType dt)
 Look up name of given data type. More...
 
static const char * BorderModeName (BorderMode m)
 Look up name of given border mode. More...
 
static const char * EdgeIdName (EdgeId eid)
 Look up name of given edge ID. More...
 
static const char * MetaDataTypeName (MetaDataType mdt)
 Look up name of given meta data type. More...
 
static int DataSize (DataType dt)
 Look up size of given data type (in bytes). More...
 
static float OneValue (DataType dt)
 Look up value of given data type that corresponds to the normalized value of 1.0. More...
 
static float OneValueInv (DataType dt)
 Lookup up inverse value of given data type that corresponds to the normalized value of 1.0. More...
 
static void ConvertToFloat (float *dst, const void *src, Ptex::DataType dt, int numChannels)
 Convert a number of data values from the given data type to float. More...
 
static void ConvertFromFloat (void *dst, const float *src, Ptex::DataType dt, int numChannels)
 Convert a number of data values from float to the given data type. More...
 
- Static Public Attributes inherited from PtexIO
static const uint32_t Magic = 'P' | ('t'<<8) | ('e'<<16) | ('x'<<24)
 
static const int HeaderSize = sizeof(Header)
 
static const int ExtHeaderSize = sizeof(ExtHeader)
 
static const int LevelInfoSize = sizeof(LevelInfo)
 
static const int FaceDataHeaderSize = sizeof(FaceDataHeader)
 
static const int EditFaceDataHeaderSize = sizeof(EditFaceDataHeader)
 
static const int EditMetaDataHeaderSize = sizeof(EditMetaDataHeader)
 
static const int IBuffSize = 8192
 
static const int BlockSize = 16384
 
static const int TileSize = 65536
 
static const int AllocaMax = 16384
 
static const int MetaDataThreshold = 1024
 

Detailed Description

Definition at line 49 of file PtexWriter.h.

Constructor & Destructor Documentation

PtexWriterBase::PtexWriterBase ( const char *  path,
Ptex::MeshType  mt,
Ptex::DataType  dt,
int  nchannels,
int  alphachan,
int  nfaces,
bool  compress 
)
protected
PtexWriterBase::~PtexWriterBase ( )
protectedvirtual

Definition at line 312 of file PtexWriter.cpp.

References _zstream.

Member Function Documentation

void PtexWriterBase::addMetaData ( const char *  key,
MetaDataType  t,
const void *  value,
int  size 
)
protectedvirtual
Ptex::Res PtexWriterBase::calcTileRes ( Res  faceres)
protected
bool PtexWriterBase::close ( Ptex::String error)
virtual

Close the file.

This operation can take some time if mipmaps are being generated or if there are many edit blocks. If an error occurs while writing, false is returned and an error string is written into the error parameter.

Implements PtexWriter.

Reimplemented in PtexIncrWriter, and PtexMainWriter.

Definition at line 318 of file PtexWriter.cpp.

References _ok, _tilefp, _tilepath, finish(), and getError().

Referenced by PtexMainWriter::close(), PtexIncrWriter::close(), and release().

int PtexWriterBase::copyBlock ( FILE *  dst,
FILE *  src,
FilePos  pos,
int  size 
)
protected
virtual void PtexWriterBase::finish ( )
protectedpure virtual

Implemented in PtexIncrWriter, and PtexMainWriter.

Referenced by close().

void PtexWriterBase::getError ( Ptex::String error)
inline

Definition at line 70 of file PtexWriter.h.

References _error, and _path.

Referenced by close(), and ok().

bool PtexWriterBase::ok ( Ptex::String error)
inline

Definition at line 66 of file PtexWriter.h.

References _ok, and getError().

Referenced by PtexWriter::edit(), and PtexWriter::open().

int PtexWriterBase::readBlock ( FILE *  fp,
void *  data,
int  size 
)
protected

Definition at line 543 of file PtexWriter.cpp.

References setError().

Referenced by PtexMainWriter::generateReductions().

void PtexWriterBase::release ( )
virtual

Release resources held by this pointer (pointer becomes invalid).

Implements PtexWriter.

Definition at line 303 of file PtexWriter.cpp.

References _tilefp, Ptex::String::c_str(), and close().

Referenced by PtexWriter::edit(), and PtexWriter::open().

virtual void PtexWriterBase::setBorderModes ( Ptex::BorderMode  uBorderMode,
Ptex::BorderMode  vBorderMode 
)
inlinevirtual

Set border modes.

Implements PtexWriter.

Definition at line 51 of file PtexWriter.h.

References _extheader, PtexIO::ExtHeader::ubordermode, and PtexIO::ExtHeader::vbordermode.

Referenced by PtexMainWriter::PtexMainWriter().

void PtexWriterBase::setError ( const std::string &  error)
inlineprotected
bool PtexWriterBase::storeFaceInfo ( int  faceid,
FaceInfo dest,
const FaceInfo src,
int  flags = 0 
)
protected
int PtexWriterBase::writeBlank ( FILE *  fp,
int  size 
)
protected
int PtexWriterBase::writeBlock ( FILE *  fp,
const void *  data,
int  size 
)
protected
void PtexWriterBase::writeConstFaceBlock ( FILE *  fp,
const void *  data,
FaceDataHeader fdh 
)
protected

Definition at line 594 of file PtexWriter.cpp.

References _pixelSize, PtexIO::enc_constant, PtexIO::FaceDataHeader::set(), and writeBlock().

Referenced by writeFaceData().

void PtexWriterBase::writeFaceBlock ( FILE *  fp,
const void *  data,
int  stride,
Res  res,
FaceDataHeader fdh 
)
protected
void PtexWriterBase::writeFaceData ( FILE *  fp,
const void *  data,
int  stride,
Res  res,
FaceDataHeader fdh 
)
protected
void PtexWriterBase::writeMeta ( const char *  key,
const char *  string 
)
virtual

Write a string as meta data.

Both the key and string params must be null-terminated strings.

Implements PtexWriter.

Definition at line 363 of file PtexWriter.cpp.

References addMetaData(), and Ptex::mdt_string.

Referenced by PtexMainWriter::PtexMainWriter(), and writeMeta().

void PtexWriterBase::writeMeta ( const char *  key,
const int8_t *  value,
int  count 
)
virtual

Write an array of signed 8-bit integers as meta data.

The key must be a null-terminated string.

Implements PtexWriter.

Definition at line 369 of file PtexWriter.cpp.

References addMetaData(), and Ptex::mdt_int8.

void PtexWriterBase::writeMeta ( const char *  key,
const int16_t *  value,
int  count 
)
virtual

Write an array of signed 16-bit integers as meta data.

The key must be a null-terminated string.

Implements PtexWriter.

Definition at line 375 of file PtexWriter.cpp.

References addMetaData(), and Ptex::mdt_int16.

void PtexWriterBase::writeMeta ( const char *  key,
const int32_t *  value,
int  count 
)
virtual

Write an array of signed 32-bit integers as meta data.

The key must be a null-terminated string.

Implements PtexWriter.

Definition at line 381 of file PtexWriter.cpp.

References addMetaData(), and Ptex::mdt_int32.

void PtexWriterBase::writeMeta ( const char *  key,
const float *  value,
int  count 
)
virtual

Write an array of signed 32-bit floats as meta data.

The key must be a null-terminated string.

Implements PtexWriter.

Definition at line 387 of file PtexWriter.cpp.

References addMetaData(), and Ptex::mdt_float.

void PtexWriterBase::writeMeta ( const char *  key,
const double *  value,
int  count 
)
virtual

Write an array of signed 32-bit doubles as meta data.

The key must be a null-terminated string.

Implements PtexWriter.

Definition at line 393 of file PtexWriter.cpp.

References addMetaData(), and Ptex::mdt_double.

void PtexWriterBase::writeMeta ( PtexMetaData data)
virtual
int PtexWriterBase::writeMetaDataBlock ( FILE *  fp,
MetaEntry val 
)
protected
void PtexWriterBase::writeReduction ( FILE *  fp,
const void *  data,
int  stride,
Res  res 
)
protected
int PtexWriterBase::writeZipBlock ( FILE *  fp,
const void *  data,
int  size,
bool  finish = true 
)
protected

Member Data Documentation

std::string PtexWriterBase::_error
protected

Definition at line 107 of file PtexWriter.h.

Referenced by getError(), and setError().

ExtHeader PtexWriterBase::_extheader
protected
Header PtexWriterBase::_header
protected
std::vector<MetaEntry> PtexWriterBase::_metadata
protected
std::map<std::string,int> PtexWriterBase::_metamap
protected

Definition at line 115 of file PtexWriter.h.

Referenced by addMetaData().

bool PtexWriterBase::_ok
protected
std::string PtexWriterBase::_path
protected

Definition at line 108 of file PtexWriter.h.

Referenced by PtexMainWriter::close(), and getError().

int PtexWriterBase::_pixelSize
protected
PtexUtils::ReduceFn* PtexWriterBase::_reduceFn
protected

Definition at line 118 of file PtexWriter.h.

Referenced by PtexWriterBase(), and writeReduction().

FILE* PtexWriterBase::_tilefp
protected

Definition at line 110 of file PtexWriter.h.

Referenced by close(), PtexWriterBase(), release(), and writeFaceData().

std::string PtexWriterBase::_tilepath
protected

Definition at line 109 of file PtexWriter.h.

Referenced by close(), and PtexWriterBase().

z_stream_s PtexWriterBase::_zstream
protected

Definition at line 116 of file PtexWriter.h.

Referenced by PtexWriterBase(), writeZipBlock(), and ~PtexWriterBase().


The documentation for this class was generated from the following files: