BStreamFileToolkit

Functions

BStreamFileToolkit

~BStreamFileToolkit

TK_Status

SetAsciiMode

bool

GetAsciiMode

void

SetTabs

int

GetTabs

TK_Status

ParseBuffer

TK_Status

PrepareBuffer

int

CurrentBufferLength

void

ActivateContext

void

DeactivateContext

void

NewFileContext

int

GeneratedSoFar

unsigned int

ObjectsSoFar

void

SetOpcodeHandler

void

SetPrewalkHandler

void

SetPostwalkHandler

BBaseOpcodeHandler *

GetOpcodeHandler

void

Restart

TK_Status

IndexToKey

TK_Status

KeyToIndex

TK_Status

AddIndexKeyPair

TK_Status

AddVariant

TK_Status

AddBounds

TK_Status

GetOffset

TK_Status

GetOffset

TK_Status

GetOffset

TK_Status

GetBounds

int

NextTagIndex

int

PeekTagIndex

void

SetFilename

void

SetFilename

TK_Status

Read_Stream_File

void

SetNewFile

void

SetNewFile

wchar_t const *

GetCurrentFile

void

GetCurrentFile

TK_Status

SelectFile

TK_Status

SelectFile

TK_Status

OpenFile

TK_Status

OpenFile

TK_Status

CloseFile

TK_Status

ReadBuffer

TK_Status

WriteBuffer

TK_Status

PositionFile

TK_Status

GetFileSize

TK_Status

LocateDictionary

TK_Status

LocateEntity

int

GetFlags

void

SetFlags

void

SetWriteFlags

int

GetWriteFlags

void

SetReadFlags

int

GetReadFlags

int

GetNumNormalBits

void

SetNumNormalBits

int

GetNumVertexBits

void

SetNumVertexBits

int

GetNumParameterBits

void

SetNumParameterBits

int

GetNumColorBits

void

SetNumColorBits

int

GetNumIndexBits

void

SetNumIndexBits

void

SetJpegQuality

int

GetJpegQuality

int

GetVersion

void

SetReadVersion

void

SetTargetVersion

int

GetTargetVersion

unsigned int

GetFileOffset

void

SetFileOffset

int

Unused

TK_Status

Error

char const *

GetLogFile

void

SetLogFile

bool

GetLogging

void

SetLogging

unsigned int

GetLoggingOptions

void

SetLoggingOptions

TK_Status

OpenLogFile

void

LogEntry

void

LogEntry

void

CloseLogFile

unsigned int

NextOpcodeSequence

void

SetOpcodeSequence

bool

HeaderCommentSeen

TK_Progress_Callback

GetProgressCallback

void

SetProgressCallback

void *

GetProgressValue

void

SetProgressValue

int

GetBufferLimit

void

SetBufferLimit

void

SetLastKey

TK_Status

AppendLastKey

void

ClearLastKey

TK_Status

GetLastKey

void

SetDictionaryFormat

int

GetDictionaryFormat

int

GetDictionaryOptions

void

SetDictionaryOffset

int

GetDictionaryOffset

void

SetDictionarySize

int

GetDictionarySize

void

RecordPause

void

ClearPauses

int

GetPauseCount

int const *

GetPauseTable

void

SetFirstPause

int

GetFirstPause

int

GetPosition

void

SetWorldBounding

void

SetWorldBoundingBySphere

float const *

GetWorldBounding

bool

AddExternalReference

bool

AddExternalReference

bool

NextExternalReference

wchar_t const *

GetExternalReference

void

GetExternalReference

ID_Key

GetExternalReferenceContext

bool

MatchPreviousExRef

void

AddSegment

ID_Key

RemoveSegment

ID_Key

CurrentSegment

void

ResetQuantizationError

void

ReportQuantizationError

void

ReportQuantizationError

float

GetQuantizationError

TK_Status

OpenGeometry

TK_Status

CloseGeometry

bool

GeometryIsOpen

ID_Key

RevisitKey

ID_Key

RevisitOwner

bool

SupportsAsciiMode

int

ParseVersion

Detailed Description

class BStreamFileToolkit : public BControlledMemoryObject

The BStreamFileToolkit class provides support for importing/exporting HOOPS Stream File information.

BStreamFileToolkit is the primary support class which manages streaming of HOOPS Stream File data into the HOOPS database. The class also provides support for the user to manage export of information from the HOOPS database to a HOOPS Stream File. It is HOOPS/3dGS-independent; therefore the data does not have to reside in a HOOPS/3dGS scene-graph prior to export and it will not be mapped to a HOOPS/3dGS scene-graph during import. (See the opcode handler notes below)

The HSF file reading process involves reading the opcode at the start of each piece of binary information, and calling the Read method of the associated opcode handler. After the opcode handler reports that reading is complete, the Execute method should be called. The ParseBuffer method of the BStreamFileToolkit object encapsulates this process.

The HSF file writing process involves determining the proper opcode for each piece of binary information, and calling the Interpret method of the associated opcode handler. After interpretation is complete, the Write method of the opcode handler should be called until writing is complete.

BStreamFileToolkit uses a concept of opcode handlers to manage reading and writing of logical pieces of binary information stored in the file. A set of default opcode handlers support standard HOOPS file objects such as segments, attributes and geometry, and the toolkit can be extended by deriving from the existing opcode handlers or adding new ones in order to handle user-specific data. All of the default opcode handlers registered with this class are of the naming convention TK_XXX, where XXX is the type of HSF object. The TK_XXX opcode handlers only provide implementations of the Read and Write methods; therefore the following two methods need to be implemented:

  • Interpret : this method should query the graphics data (meaning, extract it from data structures); the data will then be written out to an HSF via the Write method

  • Execute : this method should map the HSF data to custom data structures after it has been read in from the HSF file via the Read method

Streaming refers to a method of import where the user can incrementally supply pieces of data to the file toolkit object. This is useful in order to incrementally update the scene while data is still being read in, rather than wait until the entire file has been read before any visual result is available.

To begin the streaming process, read a buffer of HOOPS Stream File data from a local file, a remote location, or memory. This reading process could happen asynchronously on a thread that is separate from the main application thread. The toolkit class provides some wrapper functions to open/close and read/write a buffer of data to and from the HOOPS Stream File.

Subclassed by HStreamFileToolkit

Public Functions

BStreamFileToolkit()

Default constructor for an BStreamFileToolkit object

virtual ~BStreamFileToolkit()
TK_Status SetAsciiMode(bool whether)

Ascii is a deprecated mode. DO NOT USE.

bool GetAsciiMode()

Ascii is a deprecated mode. DO NOT USE.

void SetTabs(int)
int GetTabs()
virtual TK_Status ParseBuffer(char const *b, int s, TK_Status mode = TK_Normal)

ParseBuffer reads the opcode at the start of the binary data buffer and continually calls the Read method of the associated opcode handler. The Read methods of the default object handlers read binary information from the buffer that was passed in and convert it into HOOPS/3dGS formatted segment, geometry and attribute information. After the opcode handler reports that reading is complete, ParseBuffer calls the Execute method of the opcode handler.

If the HOOPS/3dGS-specific opcode handlers are being used (the HoopsStream classes, of the form HTK_XXX) then the Execute methods will call the appropriate HOOPS/3dGS functions to either create segemnts, insert geometry or set attributes underneath the currently open HOOPS/3dGS segment. When using HoopsStream, a HOOPS/3dGS scene-graph segment must currently be open before calling ParseBuffer.

If the HOOPS/3dGS-independent default object handlers are used (the BaseStream classes, of the form TK_XXX), then the Execute method does nothing and the developer would need to overload it to map the HSF data to custom data structures.

If the buffer being parsed ends in the middle of an object, it will be saved along with any HOOPS database state information and the next buffer will be appended to it.

The mode parameter allows for control of how the buffer is parsed. The default of TK_Normal indicates read until the Termination code.

TK_Pause indicates read to the next Pause or Termination. If the HOOPS Stream File has been written out with default streaming properties, a pause will occur at the end of the HOOPS segment tree. This tree contains simple bounding box representations for the HOOPS geometric primitives that are used to represent facetted surfaces.

TK_Single indicates read only the first object in the buffer. If the buffer ends in the middle of an object, it will be saved and the next buffer will be appended to it. Any extra data in the buffer than is associated with more than one object is thrown away. This is referred to as ‘a la carte mode’, and is useful when the application wants specific entities to be read in from the file, typically from random locations. This is necessary for image sweetening.

Parameters
  • b – A pointer to a character buffer.

  • s – An integer denoting the length of the buffer.

  • mode – A flag controlling how the buffer is to be parsed.

Returns

The result of the function call.

TK_Status PrepareBuffer(char *b, int s)

Tells the toolkit where to begin writing data.

Parameters
  • b – A character pointer denoting the buffer to write into.

  • s – Size of the buffer

inline int CurrentBufferLength()

Returns how much of the internal data buffer is currently filled

inline virtual void ActivateContext(ID_Key key)

While parsing a buffer it may be necessary to keep a context. This method will be called by ParseBuffer to activate a context, and should be overloaded to provide custom context-activation.

Parameters

key – A context identifier

inline virtual void DeactivateContext(ID_Key key)

While parsing a buffer it may be necessary to keep a context. This method will be called by ParseBuffer to deactivate a context, and should be overloaded to provide custom context-deactivation.

Parameters

key – A context identifier

inline virtual void NewFileContext(ID_Key key)

While processing External_References a previously visited context will be revisited. This method will be called by the default Read_Stream_File to indicate that context should be prepared to receive content, and should be overloaded to provide custom preparation. This might include operations such as clearing out any placeholder geometry.

Parameters

key – A context identifier

inline int GeneratedSoFar() const

Returns the number of bytes that have been written since the beginning of the writing process. This is currently used internally during writing to build up a dictionary of file offets for each logical piece of binary data in the file, so that random lookups may be performed during file loading.

inline unsigned int ObjectsSoFar() const

Returns the number of objects that have been written since the beginning of the writing process. This is available to applications for estimation of writing progress if there is a means of estimating the total.

void SetOpcodeHandler(int which, BBaseOpcodeHandler *handler)

Registers an opcode handler for the specified type, allowing for variations on normal processing of HOOPS Stream Metafile objects, or handling of user-defined binary objects.

Parameters
  • which – The type of binary object to associated the opcode handler with.

  • handler – A pointer to an BBaseOpcodeHandler object.

void SetPrewalkHandler(BBaseOpcodeHandler *handler)

Registers an opcode handler which will be called by the toolkit before it processes (walks and imports/exports) the HOOPS segment tree. This allows the user to import/export user-specified data from/to the HOOPS Stream File, at a location prior to the segment tree information. objects, or handling of user-defined binary objects.

Parameters

handler – A pointer to an BBaseOpcodeHandler object.

void SetPostwalkHandler(BBaseOpcodeHandler *handler)

Registers an opcode handler which will be called by the toolkit after it processes (walks and imports/exports) the HOOPS segment tree. This allows the user to import/export user-specified data from/to the HOOPS Stream File, at a location following the segment tree information. objects, or handling of user-defined binary objects.

Parameters

handler – A pointer to an BBaseOpcodeHandler object.

inline BBaseOpcodeHandler *GetOpcodeHandler(int which) const
Returns

A pointer to the requested opcode handler

virtual void Restart()

Initializes the file toolkit. This is useful if a single toolkit object is to be used for dealing with different files, rather than deleting the current toolkit object and creating a new instance. Call this function after processing of the current file is complete.

TK_Status IndexToKey(int index, ID_Key &key) const

Calculates the HOOPS key associated with the specified index.

Parameters
  • index – An integer denoting a file index.

  • key – The HOOPS key associated with the specified index. Returned to user. Passed by reference.

Returns

The result of the function call.

TK_Status KeyToIndex(ID_Key key, int &index) const

Calculates the index associated with the specified HOOPS key.

Parameters
  • key – A HOOPS key.

  • index – An integer denoting the file index associated with the HOOPS key. Returned to user. Passed by reference.

Returns

The result of the function call.

inline TK_Status AddIndexKeyPair(int index, ID_Key key)

Associates a HOOPS key with a file index, and adds the an entry to the toolit’s index/key association table.

Parameters
  • index – An integer denoting a file index.

  • key – The HOOPS key that to associate with the specified index.

Returns

The result of the function call.

inline TK_Status AddVariant(ID_Key key, int variant, int value1, int value2 = -1)

Records the file offset, and optionally the size, of a variant (LOD) associated with a previously recorded key.

Parameters
  • key – The HOOPS key of the object

  • variant – The variant (LOD number) being recorded

  • value1 – The file offset of the start of the variant

  • value2 – The size of the variant

Returns

The result of the function call.

inline TK_Status AddBounds(ID_Key key, float const bounds[])

Records the bounding volume associated with a previously recorded object.

Parameters
  • key – The HOOPS key of the object

  • bounds – The bounding volume as 6 floats (min & max points of a box)

Returns

The result of the function call.

inline TK_Status GetOffset(ID_Key key, int variant, int &offset) const

Returns the file offset of a variant (LOD) associated with a previously recorded key.

Parameters
  • key – The HOOPS key of the object

  • variant – The variant (LOD number) being recorded

  • offset – The file offset of the start of the variant

Returns

The result of the function call.

inline TK_Status GetOffset(ID_Key key, int variant, int &offset, int &length) const

Returns the file offset and length of a variant (LOD) associated with a previously recorded key.

Parameters
  • key – The HOOPS key of the object

  • variant – The variant (LOD number) being recorded

  • offset – The file offset of the start of the variant

  • length – The size of the variant (returned as 0 if unknown)

Returns

The result of the function call.

TK_Status GetOffset(ID_Key key, int variant, int &offset, int &length, wchar_t const *&filename) const

Returns the file offset and length of a variant (LOD) associated with a previously recorded key.

Parameters
  • key – The HOOPS key of the object

  • variant – The variant (LOD number) being recorded

  • offset – The file offset of the start of the variant

  • length – The size of the variant (returned as 0 if unknown)

  • filename – pointer to the stored filename associated with the key (may be null)

Returns

The result of the function call.

inline TK_Status GetBounds(ID_Key key, float bounds[]) const

Returns the bounding volume associated with a previously recorded key.

Parameters
  • key – The HOOPS key of the object

  • bounds – The bounding volume as 6 floats (min & max points of a box)

Returns

The result of the function call.

inline int NextTagIndex()

Reserves & returns the next available tag index

Returns

The tag index.

inline int PeekTagIndex() const

Returns the next available tag index without reserving it for use

Returns

The tag index.

void SetFilename(char const *name)

Sets the starting filename for the toolkit (normally used internally).

Parameters

name – The name of the file.

void SetFilename(wchar_t const *name)

Sets the starting filename for the toolkit (normally used internally).

Parameters

name – The name of the file.

TK_Status Read_Stream_File()

Reads the file associated with the toolkit (internal utility).

Returns

The result of the function call.

void SetNewFile(char const *name)

Associates a new filename with the toolkit.

Parameters

name – The name of the file.

void SetNewFile(wchar_t const *name)

Associates a new Unicode filename with the toolkit.

Parameters

name – The name of the file.

inline wchar_t const *GetCurrentFile() const

Returns the name of the last file, if any, that was associated with the toolkit.

Returns

The name of the file associated with the toolkit.

inline void GetCurrentFile(wchar_t const *&filename) const

Returns the name of the last file, if any, that was associated with the toolkit.

Parameters

The – pointer to receive the adress of then name of the file associated with the toolkit.

TK_Status SelectFile(char const *name)

[Re]Selects a previously accessed file for further processing

Parameters

name – The name of the file.

Returns

TK_Normal if the file was found and selected, TK_NotFound otherwise.

TK_Status SelectFile(wchar_t const *name)

[Re]Selects a previously accessed file for further processing

Parameters

name – The Unicode name of the file.

Returns

TK_Normal if the file was found and selected, TK_NotFound otherwise.

virtual TK_Status OpenFile(char const *name, bool write = false)

Opens a file. This acts as a simple wrapper for the ‘fopen’ command.

Parameters
  • name – The name of the file to open.

  • write – True if the file is open for writing, otherwise, file is open for reading.

Returns

The result of function call.

virtual TK_Status OpenFile(wchar_t const *name, bool write = false)

Opens a file. This acts as a simple wrapper for the ‘fopen’ command.

Parameters
  • name – The name of the file to open.

  • write – True if the file is open for writing, otherwise, file is open for reading.

Returns

The result of function call.

virtual TK_Status CloseFile()

Closes a file. This acts as a simple wrapper for the ‘fclose’ command.

Returns

The result of function call.

virtual TK_Status ReadBuffer(char *buffer, int size, int &amount_read)

Reads a buffer of data to the file associated with the BStreamFileToolkit object. This acts as a simple wrapper for the ‘fread’ command.

Parameters
  • buffer – Character buffer used to store the data being read.

  • size – Integer denoting amount of data to read.

  • amount_read – The amount of data actually read into the buffer.

Returns

The result of function call.

virtual TK_Status WriteBuffer(char *buffer, int size)

Writes a buffer of data to the file associated with the BStreamFileToolkit object. This acts as a simple wrapper for the ‘fwrite’ command.

Parameters
  • buffer – Character buffer to be written out.

  • size – Integer denoting amount of data to write.

Returns

The result of function call.

virtual TK_Status PositionFile(int offset)

Utility function which repositions the current file pointer. This acts a wrapper for fseek, and is used by LocateDictionary and LocateEntity, but might be reimplemented by classes derived from BStreamFileToolkit to perform custom file repositioning.

Parameters

offset – If positive, repositions the file pointer to offset bytes from the beginning of the file, otherwise repositions the file pointer to offset bytes from the end of the file.

Returns

The result of function call.

virtual TK_Status GetFileSize(unsigned long &size)

Utility function which returns the size of the currently open file. This acts a wrapper for fstat, and is used by the progress callback (if any), but might be reimplemented by classes derived from BStreamFileToolkit to perform custom file repositioning.

Parameters

size – reference to the variable to receive the file size.

Returns

The result of function call.

virtual TK_Status LocateDictionary()

Instructs the BStreamFileToolkit object to sets its internal file pointer to the location of the file dictionary. The dictionary contains entries for the file locations of various representations of entities.

Objects which are derived from BStreamFileToolkit may reimplement to support locating a dictionary for a file that resides on a remote location such as a web server. This might involve passing a message that instructs the server process to locate the dictionary.

Returns

The result of function call.

virtual TK_Status LocateEntity(ID_Key key, int variant)

Instructs the BStreamFileToolkit object to sets its internal file pointer to the location of a variant of an entity, which could be the full representation or a LOD representation. This allows reading a single entity from the file, even though it resides at an offset in the file.

Parameters
  • key – The key of a HOOPS entity.

  • variant – The variant of the HOOPS entity to locate. 0 represents the full representation, 1 represents LOD level 1, etc….

Returns

The result of function call.

inline int GetFlags() const

Deprecated; Use GetWriteFlags; Returns the writing flags set on the toolkit.

inline void SetFlags(int flags)

Deprecated; Use SetWriteFlags; Sets the toolkit writing flags.

inline void SetWriteFlags(int flags)

Sets the toolkit writing flags. These flags control a variety of export properties, and are defined in TK_File_Write_Options

inline int GetWriteFlags(int mask = ~0) const

Returns the writing flags set on the toolkit. These flags control a variety of export properties, and are defined in TK_File_Write_Options

Parameters

mask – of flags to be returned (default is all).

Returns

The result of function call.

inline void SetReadFlags(int flags)

Sets the toolkit reading flags. These flags control various import properties, and are defined in TK_File_Read_Options

inline int GetReadFlags(int mask = ~0) const

Returns the reading flags set on the toolkit. These flags control various import properties, and are defined in TK_File_Read_Options

Parameters

mask – of flags to be returned (default is all).

Returns

The result of function call.

inline int GetNumNormalBits() const

Returns the maximum number of bits that will be used per normal

inline void SetNumNormalBits(int numbits)

Sets the maximum number of bits that will be used per normal (x,y, and z combined). The default is 10 (for the entire normal). Opcode handlers may, at their option, decide to use less

inline int GetNumVertexBits() const

Returns the maximum number of bits that will be used per vertex location (x,y,z combined).

inline void SetNumVertexBits(int numbits)

Sets the maximum number of bits to use for vertex locations (x,y, and z combined). Default is 24.

inline int GetNumParameterBits() const

Returns 3 times the number of bits that will be used per sample in vertex parameters (texture cordinate)

inline void SetNumParameterBits(int numbits)

Sets the number of bits per sample for vertex parameters (texture coordinates). For backwards compatibility it is specified as 3 times the number (previous versions of the stream toolkit specified the number of bits for the entire parameter, but always assumed 3 parameters (u,v,w) per vertex). Thus, for example, if you specify ‘24’ bits, a 1d texture will have 8 bits total, a 2d texture will have 16, and a 3d texture will have 24.

inline int GetNumColorBits() const

Returns the maximum number of bits that will be used per vertex color

inline void SetNumColorBits(int numbits)

Sets the maximum number of bits to use for vertex colors

inline int GetNumIndexBits() const

Returns the maximum number of bits that will be used per vertex color-by-index

inline void SetNumIndexBits(int numbits)

Sets the maximum number of bits to use for vertex colors-by-index

inline void SetJpegQuality(int quality = 75)

Sets the quality level for JPEG compression, range is 0-100, 0 disables, 75 by default

inline int GetJpegQuality() const

Returns the current JPEG quality setting

inline int GetVersion() const

Returns the file format version during reading

inline void SetReadVersion(int version)

for reading embedded hsf data for which format version is externally available.

inline void SetTargetVersion(int version)

This method sets the file format version desired for writing. The default value for the target version is the most recent version in the File Version table.

\param version The HSF file version you are writing out.  For instance, to export a v15.00 HSF File, pass 1500.

inline int GetTargetVersion() const

Returns the file format version desired for writing

inline unsigned int GetFileOffset() const

Gets the file offset, a displacement to be added to positions used in the dictionary (for example, in case the data is appended to another file)

inline void SetFileOffset(unsigned int offset)

Sets the file offset, a displacement to be added to positions used in the dictionary (for example, in case the data is appended to another file)

inline int Unused() const
Returns

the amount of data in the user’s buffer left unused

virtual TK_Status Error(char const *msg = 0) const

Prints out a debug message informing the user that an error has occurred. Also provides a handy choke point for break points during debugging.

Returns

TK_Error always

inline char const *GetLogFile() const

Returns the name of the log file

void SetLogFile(char const *filename = 0)

Sets the name of the log file

inline bool GetLogging() const

Returns the logging state

inline void SetLogging(bool setting)

Sets the logging state. If true, the toolkit will output files called hsf_export_log.txt and hsf_import_log.txt which contain a byte representing each opcode that was exported or imported. during the write and/or read phase, respectively.

inline unsigned int GetLoggingOptions(unsigned int mask = ~0) const

Returns the logging options

inline void SetLoggingOptions(unsigned int options = ~0)

Sets the logging options. controls the types of logging information collected.

TK_Status OpenLogFile(char const *filename, char const *mode)

Opens the log file for writing.

Parameters
  • filename – the name of the file to be opened as a log

  • mode – passed through to fopen

Returns

TK_Error on failure

void LogEntry(char const *string) const

Writes a message into the log

void LogEntry(wchar_t const *string) const

Writes a message into the log with wide characters

void CloseLogFile()

Closes the log file

inline unsigned int NextOpcodeSequence()

internal use

inline void SetOpcodeSequence(unsigned int seq = 0)

internal use

inline bool HeaderCommentSeen() const

Returns true if the header comment has been processed

inline TK_Progress_Callback GetProgressCallback() const

Returns the progress callback

inline void SetProgressCallback(TK_Progress_Callback cb = 0)

Sets the progress callback

inline void *GetProgressValue() const

Returns the progress passthrough value

inline void SetProgressValue(void *value)

Sets the progress passthrough value

inline int GetBufferLimit() const

Returns the progress passthrough value

inline void SetBufferLimit(int limit)

Sets the progress passthrough value

void SetLastKey(ID_Key key)

Reports to the toolkit the identifier of the last object processed

TK_Status AppendLastKey(ID_Key key)

Appends the identifier of the last object processed to the current identifier list

void ClearLastKey()

Clears identifier of the last object processed

TK_Status GetLastKey(ID_Key &key) const

Returns identifier of the last object processed

inline void SetDictionaryFormat(int format = 3, int options = TK_Dictionary_Bounding_Volumes)

Sets the desired dictionary format level and options

Parameters
  • format – The desried dictionary format

  • options – Bitmask of any options that many modify a specific format

inline int GetDictionaryFormat() const

Returns the currently requested dictionary format level

Returns

Dictionary format

inline int GetDictionaryOptions() const

Returns the options for the dictionary format.

Returns

Dictionary options bitmask

inline void SetDictionaryOffset(int offset)

Sets (records) the dictionary offset

Parameters

offset – The dictionary offset

inline int GetDictionaryOffset() const

Returns the recorded dictionary offset

Returns

Dictionary offset

inline void SetDictionarySize(int size)

Sets (records) the dictionary size

Parameters

size – The dictionary size

inline int GetDictionarySize() const

Returns the recorded dictionary size

Returns

Dictionary size

void RecordPause(int offset)

Record a pause at the given file offset

Parameters

offset – File offset of this pause

inline void ClearPauses()

Clears the pause table

inline int GetPauseCount() const

Returns the number of pauses recorded

Returns

The number of pauses

inline int const *GetPauseTable() const

Returns the pause offsets

Returns

address of an array of file offsets corresponding the the pauses

inline void SetFirstPause(int offset)

supported for older code

inline int GetFirstPause() const

supported for older code

inline int GetPosition() const

Returns the current file position

void SetWorldBounding(float const bbox[])

Sets the global bounding box to be used for bounding box aggegation. This is utilized when the TK_Global_Quantization bit of TK_File_Write_Options is set

Parameters

bbox – pointer to the bounding box coordinates

void SetWorldBoundingBySphere(float const pt[], float radius)

Sets the global bounding box (by sphere) be used for bounding box aggegation. This is utilized when the TK_Global_Quantization bit of TK_File_Write_Options is set

Parameters
  • pt – center point of sphere

  • radius – radius of sphere

inline float const *GetWorldBounding() const
Returns

the world bounding box

bool AddExternalReference(char const *ref, ID_Key context)

Saves an external reference (string) and associated context (current open segment) to be processed.

Parameters
  • ref – external reference string

  • context – external reference context

Returns

true if the reference was added, false if the reference would form a loop

bool AddExternalReference(wchar_t const *ref, ID_Key context)

Saves an external reference (Unicode string) and associated context (current open segment) to be processed.

Parameters
  • ref – external reference Unicode string

  • context – external reference context

Returns

true if the reference was added, false if the reference would form a loop

bool NextExternalReference()

Removes the current external reference and readies the next one (if any).

Returns

true if another external reference is present

inline wchar_t const *GetExternalReference() const

Returns the string representing the external reference at the beginning of the list, null if none.

Returns

external reference string

inline void GetExternalReference(wchar_t const *&exref) const

Returns the string representing the external reference at the beginning of the list, null if none.

Parameters

pointer – to receive the address of the external reference string

inline ID_Key GetExternalReferenceContext() const

Returns the context associated with the external reference at the beginning of the list, -1 if none.

Returns

external reference context

inline virtual bool MatchPreviousExRef() const

Allows derived toolkits to process an external reference directly if it matches a previous one

Returns

true if the function matched and handled the reference, false if we need to try to read the reference

void AddSegment(ID_Key key)

Adds the specified key to the from of a list to keep track of “open” segments.

Parameters

key – of segment being openned

ID_Key RemoveSegment()

Removes the most currently “openned” segment

Returns

the key of the segment which was removed

inline ID_Key CurrentSegment()

Returns the key of the currently “open” segment

Returns

key of the current segment

inline void ResetQuantizationError()

resets the quantization error back to zero

inline void ReportQuantizationError(float error)

Intended primarily for use by opcode handlers, this function sets m_quantization_error to error if it is the largest error seen so far.

void ReportQuantizationError(int bits_per_sample, float const *bounding, int num_dimensions = 3)

Intended primarily for use by opcode handlers, this function calculates the longest dimension cell size and uses that as an upper bound on quantization error for a call to ReportQuantizationError

inline float GetQuantizationError() const
Returns

the largest quantization error reported by any of the opcodes during writing. Error reported is object space, with no attempt to account for modelling matrices.

inline virtual TK_Status OpenGeometry()

Prepares the toolkit for dealing with geometry-level attributes

Returns

status of the request, error if a geometry is already open

inline virtual TK_Status CloseGeometry()

Completes dealing with geometry-level attributes

Returns

status of the request, error if no geometry is open

inline bool GeometryIsOpen() const

Queries the state of geometry-level attribute handling

Returns

whether geometry-level handling is active

inline ID_Key RevisitKey() const
inline ID_Key RevisitOwner() const

Public Static Functions

static inline bool SupportsAsciiMode()

Ascii is a deprecated mode. DO NOT USE.

static int ParseVersion(char const *block)

ParseVersion attempts to read a given block as a header to extract the file version

Parameters

block – A pointer to a character buffer.

Returns

the version number if the block starts with “;; HSF V”, otherwise 0