========
Overview
========

This guide explains how to use the HOOPS/Stream base classes to directly export/import data to/from an HSF file. These classes are intended to be used to export an HSF file when the graphics information is not stored in the HOOPS 3D Graphics System scene-graph, or to import an HSF file when the graphics information is not going to be mapped to the HOOPS/3dGS scene-graph. This is useful for developers who already have their own graphics subsystem during the export phase, the import phase, or both.

If the data to be exported to an HSF file already resides in the HOOPS/3dGS scene-graph, or if data being imported from an HSF file needs to be mapped to the HOOPS/3dGS scene-graph, then the 3dGS-specific classes should be used. The 3dGS-specific classes and the full HOOPS 3D Graphics System are part of the HOOPS 3D Application Framework (HOOPS/3dAF).

The following are prerequisites to creating or importing an HSF file using the base classes: 

1. Because an HSF file is essentially an archive of the HOOPS/3dGS scene-graph contents (geometry, attributes, and segments) it is important to understand how the scene-graph should be organized, and what geometry and attributes are supported. Refer to the HOOPS/3dGS Programming Guide for information on scene-graph architecture/usage and details on supported geometry and attributes. The HOOPS/3dGS Reference Manual provides specific details on geometry types and multi-option attributes. (The HOOPS/3dGS Reference Manual is located in the HOOPS/3dGS section of the documentation.)

2. An understanding of HSF opcodes/objects, opcode handlers, and general HOOPS/Stream Toolkit architecture. This information is reviewed in the HOOPS/Stream Technical Overview.


Compiling and linking
=====================

If you need to recompile the base stream library, find the Microsoft Visual Studio project files or Unix makefile in the */dev_tools/base_stream/source* directory. The HOOPS/Stream base-class headers and exported library are located in the following directories:

.. csv-table:::
	:header: "Platform", "Header location", "Library location", "Library names"
	
	"Windows", "*/Dev_Tools/base_stream/source/stream_common*", "*/Dev_Tools/base_stream/lib/<platform>*", "*base_stream.lib*"
	"Linux", "*<UNIX COMMON PACKAGE>/Dev_Tools/base_stream/source/stream_common*", "*/Dev_Tools/base_stream/lib/linux*", "libbase_stream.a*"
	"OS X", "*<UNIX COMMON PACKAGE>/Dev_Tools/base_stream/source/stream_common*", "*/Dev_Tools/base_stream/lib/<platform>*", "*libbase_stream.dylib*"

Windows runtime DLLs are located at */bin/<platform>/hoops_stream<version>_<platform>.dll*. Linux and OS X runtimes are the same as the exported libraries mentioned in the table above. Regardless of platform, you must include the HOOPS/3dGS runtime libraries in the execution environment.
