# BStream.h

## Macro Definitions

| `__wchar_t`
| `BBINFILETK_API2`
| `BBINFILETK_API`
| `TK_File_Format_Version`
| `TK_DEFAULT_BUFFER_SIZE`
| `ID_Key`
| `alter`

## Types

| `TK_Status`
| `TK_File_Write_Options`
| `TK_Dictionary_Options`
| `TK_File_Read_Options`
| `TK_Debug_Logging_Options`
| `TK_General_Flags`

## Fields

| `TK_Normal`
| `TK_Error`
| `TK_Pause`
| `TK_Single`
| `TK_Pending`
| `TK_Revisit`
| `TK_Complete`
| `TK_Version`
| `TK_NotFound`
| `TK_Abort`
| `TK_LibraryNotFound`
| `TK_Suppress_LOD`
| `TK_Full_Resolution_Vertices`
| `TK_Full_Resolution_Normals`
| `TK_First_LOD_Is_Bounding_Box`
| `TK_Force_Tags`
| `TK_Disable_Priority_Heuristic`
| `TK_Disable_Global_Compression`
| `TK_Disable_Instancing`
| `TK_Generate_Dictionary`
| `TK_Connectivity_Compression`
| `TK_Disable_Tristrips`
| `TK_Disable_Compound_Primitives`
| `TK_Global_Quantization`
| `TK_Full_Resolution_Parameters`
| `TK_Full_Resolution_Colors`
| `TK_Full_Resolution_Index_Colors`
| `TK_Communicator_Mode`
| `TK_Disable_Custom_Shader`
| `TK_Full_Resolution`
| `TK_Dictionary_Bounding_Volumes`
| `TK_Flag_Unhandled_Opcodes`
| `TK_Ignore_Version`
| `TK_Skip_External_References`
| `TK_Ignore_Bounding_LODs`
| `TK_Disable_Deferal`
| `TK_Logging_Sequence`
| `TK_Logging_Tagging`
| `TK_Logging_Segment_Names`
| `TK_Double_Precision`
| `TK_Has_Condition`
| `TK_Has_Filter`
| `TK_Has_Custody`
| `TK_UTF8_Strings`
int | `TK_File_Format_History`

## Functions

typename T | `Swap`
`TK_Status` | `TK_Read_Stream_File`
`TK_Status` | `TK_Read_Stream_File`
`TK_Status` | `TK_Read_Stream_File`
`TK_Status` | `TK_Read_Stream_File`
`TK_Status` | `TK_Read_Stream_File`

## Detailed Description

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

__wchar_t

BBINFILETK_API2

BBINFILETK_API

TK_File_Format_Version

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

TK_DEFAULT_BUFFER_SIZE

  default amount of the internal memory buffer used for file processing

ID_Key

  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

alter

  complementary to const, indicates we thought about it instead of a forgotten “const”

## Type Documentation

enum 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

  Values:

  enumerator TK_Suppress_LOD

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

  enumerator 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

  enumerator TK_Full_Resolution_Normals

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

  enumerator TK_First_LOD_Is_Bounding_Box

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

  enumerator TK_Force_Tags

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

  enumerator TK_Disable_Priority_Heuristic

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

  enumerator TK_Disable_Global_Compression

    Inline lossless compression will not be used

  enumerator TK_Disable_Instancing

    Object instancing will not be used

  enumerator TK_Generate_Dictionary

    Enables random-access by creation of the file dictionary

  enumerator TK_Connectivity_Compression

    Enables connectivity compression

  enumerator TK_Disable_Tristrips

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

  enumerator TK_Disable_Compound_Primitives

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

  enumerator 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.

  enumerator TK_Full_Resolution_Parameters

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

  enumerator TK_Full_Resolution_Colors

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

  enumerator TK_Full_Resolution_Index_Colors

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

  enumerator TK_Communicator_Mode

    Alters HSF Export for easier web viewer parsing

  enumerator TK_Disable_Custom_Shader

    Disables custom shaders.

  enumerator TK_Full_Resolution

    for convenience, a combination of 5 other options.

enum TK_Dictionary_Options

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

  Values:

  enumerator TK_Dictionary_Bounding_Volumes

    dictionary entries include bounding volume info

enum TK_File_Read_Options

  Options which control how the HOOPS Stream File is read

  Values:

  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

  enumerator TK_Ignore_Version

    Version checking will be bypassed

  enumerator TK_Skip_External_References

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

  enumerator TK_Ignore_Bounding_LODs

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

  enumerator TK_Disable_Deferal

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

enum TK_Debug_Logging_Options

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

  Values:

  enumerator TK_Logging_Sequence

    Record sequence numbers

  enumerator TK_Logging_Tagging

    Record tag indices

  enumerator TK_Logging_Segment_Names

    Record segment names

enum TK_General_Flags

  General flags which may be used by many opcodes

  Values:

  enumerator TK_Double_Precision

    entity is double precision

  enumerator TK_Has_Condition

    entity has an associated condition

  enumerator TK_Has_Filter

    entity has an associated filter

  enumerator TK_Has_Custody

    entity has an owning interest in its referee

  enumerator TK_UTF8_Strings

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

## Field Documentation

int TK_File_Format_History[]

  Table of format changes, commented values are informational (were never included in a release,.

## Function Documentation

template<typename T>
void Swap(T &a, T &b)