# 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_All_Global_Textures`
| `TK_No_Global_Textures`
| `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_All_Global_Textures`

    Include all global textures, new default is only those referenced.

  enumerator `TK_No_Global_Textures`

    Skip all global textures. Overrides “All” option if both set

  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)

Conversation saved
HOOPSY BETA

### Hello! I'm HOOPSY

Your multilingual generative AI assistant for documentation. Ask me anything about HOOPS Visualize 3DF in your own language, or choose a sample question below to start a conversation:

What is HOOPS Visualize 3DF?
What are the latest release notes for HOOPS Visualize 3DF?
How do I start evaluating HOOPS Visualize 3DF?
How do I write my first sample application?
How can I get assistance?

HOOPSY may store conversations according to OpenAI's policy. Responses may not always be accurate.

HOOPSY is thinking...