BStream.h File Reference

Contains definitions of global variables, functions and enumerated types. More...

#include <cmath>
#include <cstring>
#include <cstdio>
#include "BOpcodeHandler.h"
#include "BStreamFileToolkit.h"

Go to the source code of this file.

Macros

#define __wchar_t   wchar_t
 
#define alter
 complementary to const, indicates we thought about it instead of a forgotten "const"
 
#define BBINFILETK_API   BBINFILETK_API2
 
#define BBINFILETK_API2
 
#define ID_Key   long
 
#define TK_DEFAULT_BUFFER_SIZE   32768
 default amount of the internal memory buffer used for file processing
 
#define TK_File_Format_Version   2080
 

Enumerations

enum  TK_Debug_Logging_Options { TK_Logging_Sequence = 0x00000001, TK_Logging_Tagging = 0x00000002, TK_Logging_Segment_Names = 0x00000004 }
 
enum  TK_Dictionary_Options { TK_Dictionary_Bounding_Volumes = 0x00000001 }
 
enum  TK_File_Read_Options {
  TK_Flag_Unhandled_Opcodes = 0x00000001, TK_Ignore_Version = 0x00000002, TK_Skip_External_References = 0x00000004, TK_Ignore_Bounding_LODs = 0x00000008,
  TK_Disable_Deferal = 0x00000010
}
 
enum  TK_File_Write_Options {
  TK_Suppress_LOD = 0x00000002, TK_Full_Resolution_Vertices = 0x00000004, TK_Full_Resolution_Normals = 0x00000008, TK_First_LOD_Is_Bounding_Box = 0x00000010,
  TK_Force_Tags = 0x00000020, TK_Disable_Priority_Heuristic = 0x00000040, TK_Disable_Global_Compression = 0x00000100, TK_Disable_Instancing = 0x00000200,
  TK_Generate_Dictionary = 0x00000400, TK_Connectivity_Compression = 0x00000800, TK_Disable_Tristrips = 0x00001000, TK_Disable_Compound_Primitives = 0x00002000,
  TK_Global_Quantization = 0x00004000, TK_Full_Resolution_Parameters = 0x00008000, TK_Full_Resolution_Colors = 0x00010000, TK_Full_Resolution_Index_Colors = 0x00020000,
  TK_Communicator_Mode = 0x00040000, TK_Full_Resolution = (TK_Full_Resolution_Vertices|TK_Full_Resolution_Normals|TK_Full_Resolution_Parameters|TK_Full_Resolution_Colors|TK_Full_Resolution_Index_Colors)
}
 Options which control how the HOOPS Stream File is generated. More...
 
enum  TK_General_Flags {
  TK_Double_Precision = 0x01, TK_Has_Condition = 0x01, TK_Has_Filter = 0x02, TK_Has_Custody = 0x04,
  TK_UTF8_Strings = 0x80
}
 
enum  TK_Status {
  TK_Normal = 0, TK_Error = 1, TK_Pause = 2, TK_Single = 3,
  TK_Pending = 4, TK_Revisit = 5, TK_Complete = 6, TK_Version = 7,
  TK_NotFound = 8, TK_Abort = 9, TK_LibraryNotFound = 10
}
 Codes which can be either passed to various toolkit functions, or indicate the result of a toolkit function call. More...
 

Functions

template<typename T >
void Swap (T &a, T &b)
 
TK_Status BBINFILETK_API TK_Read_Stream_File (char const *filename, BStreamFileToolkit *tk)
 Reads a HOOPS Stream File. More...
 
TK_Status BBINFILETK_API TK_Read_Stream_File (char const *filename, int flags=0)
 Reads a HOOPS Stream File. More...
 
TK_Status BBINFILETK_API TK_Read_Stream_File (__wchar_t const *filename, BStreamFileToolkit *tk)
 
TK_Status BBINFILETK_API TK_Read_Stream_File (__wchar_t const *filename, int flags=0)
 
TK_Status BBINFILETK_API TK_Read_Stream_File (char const *filename, int flags, BStreamFileToolkit *tk)
 Deprecated; reads a HOOPS Stream File More...
 

Variables

BBINFILETK_API int TK_File_Format_History []
 Table of format changes, commented values are informational (were never included in a release,.
 

Detailed Description

Contains definitions of global variables, functions and enumerated types.

The HOOPS/Stream Toolkit utilizes several global enumerated types. The functions which black box support for writing and reading HOOPS Stream Files are also global, and are defined in BStream.h

Macro Definition Documentation

◆ ID_Key

#define ID_Key   long

ID_Key is just a pointer sized long integer by which it is assumed that the graphics system can uniquely identify its contents. Declared as 64-bit on win64 systems because a long is not big enough to store a pointer there (unlike all other 64-bit systems we have supported in the past

◆ TK_File_Format_Version

#define TK_File_Format_Version   2080

the HSF specification version that this toolkit supports (along with any previous versions)

Referenced by BStreamFileToolkit::SetTargetVersion().

Enumeration Type Documentation

◆ TK_Debug_Logging_Options

Options which control what data is collected when creating a debug log

Enumerator
TK_Logging_Sequence 

Record sequence numbers

TK_Logging_Tagging 

Record tag indices

TK_Logging_Segment_Names 

Record segment names

◆ TK_Dictionary_Options

This enumerated type gives the user control of specific options to include if a dictionary is generated

Enumerator
TK_Dictionary_Bounding_Volumes 

dictionary entries include bounding volume info

◆ TK_File_Read_Options

Options which control how the HOOPS Stream File is read

Enumerator
TK_Flag_Unhandled_Opcodes 

Instructs toolkit to return an error for opcodes which are not handled by a custom toolkit during reading; the default is to silently skip over unhandled opcodes

TK_Ignore_Version 

Version checking will be bypassed

TK_Skip_External_References 

TKE_External_Reference filespecs will not be read (the strings will still be stored in toolkit by the default handler)

TK_Ignore_Bounding_LODs 

Instructs the toolkit to ignore any explicit bounding box lods included in the stream file

TK_Disable_Deferal 

Instructs the toolkit to do thing in order rather than reordering as desired.

◆ TK_File_Write_Options

Options which control how the HOOPS Stream File is generated.

An HSF file has a variety of properties, and the toolkit utilizes default logic when generating a file.
This enumerated type gives the user high-level control over file compression, tagging and content. These options are set by calling BStreamFileToolkit::SetWriteFlags

Enumerator
TK_Suppress_LOD 

No LODS are exported, only the original shells are written out (single pass); implicitly disables dictionary

TK_Full_Resolution_Vertices 

Data fidelity is required for geometry; this causes the full single-precision floating point information to be exported; does not affect LODs or lossless compression of connectivity information

TK_Full_Resolution_Normals 

Data fidelity is required for normals; as in above description of TK_Full_Resolution_Points

TK_First_LOD_Is_Bounding_Box 

Adds a new LOD to represent the lowest resolution of objects, which is a bounding box representation

TK_Force_Tags 

All appropriate objects (geometries,segments,includes) will be tagged

TK_Disable_Priority_Heuristic 

Disables organization of multiresolution objects according to heuristic cost/benifit.

TK_Disable_Global_Compression 

Inline lossless compression will not be used

TK_Disable_Instancing 

Object instancing will not be used

TK_Generate_Dictionary 

Enables random-access by creation of the file dictionary

TK_Connectivity_Compression 

Enables connectivity compression

TK_Disable_Tristrips 

Disables triangle strips, and the triangulation it requires, in shells. Incurs a heavy read-time computational cost.

TK_Disable_Compound_Primitives 

Disables the use of OpcodeHandlers that encode multiple primitives (since they cannot be properly tagged)

TK_Global_Quantization 

Causes any required quantization to be global (bbox of scene) instead of local (bbox of individual geometry) . Regardless of this flag, however, local quantization applies until the first TKE_Bounding_Info. HStreamFiletoolkit sends a TKE_Bounding_Info automatically, but BStreamFiletoolkit does not.

TK_Full_Resolution_Parameters 

Data fidelity is required for parameters (a.k.a texture coordinates); as in above description of TK_Full_Resolution_Points

TK_Full_Resolution_Colors 

Data fidelity is required for vertex/face colors; as in above description of TK_Full_Resolution_Points

TK_Full_Resolution_Index_Colors 

Data fidelity is required for vertex/face colors-by-index; as in above description of TK_Full_Resolution_Points

TK_Communicator_Mode 

Alters HSF Export for easier web viewer parsing

TK_Full_Resolution 

for convenience, a combination of 5 other options.

◆ TK_General_Flags

General flags which may be used by many opcodes

Enumerator
TK_Double_Precision 

entity is double precision

TK_Has_Condition 

entity has an associated condition

TK_Has_Filter 

entity has an associated filter

TK_Has_Custody 

entity has an owning interest in its referee

TK_UTF8_Strings 

entity string(s) are UTF8 rather than (presumably) ISO Latin-1