Alphabetical Class Index   Class Hierarchy   Compound Members   File Members   File List  

BStream.h File Reference

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

#include <math.h>
#include <string.h>
#include <stdio.h>
#include "BOpcodeHandler.h"
#include "BStreamFileToolkit.h"

Go to the source code of this file.

Defines

#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   2000

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 }
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 }
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.
TK_Status BBINFILETK_API TK_Read_Stream_File (char const *filename, int flags=0)
 Reads a HOOPS Stream File.
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

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


Define Documentation

#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

#define TK_File_Format_Version   2000

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

Referenced by BStreamFileToolkit::SetTargetVersion().


Enumeration Type Documentation

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

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

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

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.

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