OOC

class HPS::OOC

The OOC class contains objects used for importing OOC files.

Public Types

typedef std::vector<Area, HPS::Allocator<Area>> AreaArray
enum IOResult

Designates the status of an IO operation.

Values:

enumerator Success
enumerator ErrorInvalidPointCloud
enumerator ErrorUnknownFailure
enumerator ErrorNoOOCView
enumerator ErrorCyclicFileDependencies
enumerator ErrorSerializationFailure
enumerator ErrorDeserializationFailure
enumerator ErrorIllegalFileName
enumerator ErrorFileSystemFailure
enumerator ErrorOOCRootAlreadyExists
enumerator ErrorInvalidBuffer
typedef std::vector<PointCloud, HPS::Allocator<PointCloud>> PointCloudArray

Public Members

class OOC_API PointCloud
class OOC_API QueryFilter
class OOC_API QueryIterator
class OOC_API QueryResult
class OOC_API SynchronizedActions
class Area

The Area class is represents a quadrilateral area for highlighting.

Public Functions

inline Area()
inline Area(HPS::Rectangle const &in_rect, HPS::MatrixKit const &in_world_to_window, char const *in_name)
inline HPS::UTF8 const &GetName() const

Returns the name associated with this Area

inline HPS::Point const &GetWindowMax() const
inline HPS::Point const &GetWindowMin() const
inline HPS::MatrixKit const &GetWorldToWindow() const

Returns the MatrixKit associated with this Area

inline bool Intersects(HPS::Point const &world_space_point) const

Determines if a point intersects this Area.

Parameters

world_space_point – The point to test

Returns

true if the point intersects this area, false otherwise.

inline bool Intersects(HPS::SimpleCuboid const &world_space_bounding) const

Determines if a cuboid intersects this Area.

Parameters

world_space_bounding – The cuboid to test

Returns

true if the cuboid interects this area, false otherwise.

class AreaHighlightTracker

Override this class to customize Area Highlighting.

Public Functions

void AddArea(HPS::Rectangle const &in_rect, HPS::MatrixKit const &in_world_to_window, bool in_clear)

Adds an Area to track.

Parameters
  • in_rect – The quadrilateral area to being tracking.

  • in_world_to_window – The MatrixKit associated with this Area.

  • in_clear – Indicates if all preexisting Areas should be removed before adding this new Area.

void AddPoint(HPS::WorldPoint const &in_point, bool in_clear)

Adds a world space point to track.

Parameters
  • in_point – The world space point being tracking.

  • in_clear – Indicates if all preexisting point should be removed before adding this new point.

AreaHighlightTracker(HPS::Canvas const &in_canvas, HPS::SegmentKey const &in_area_cameras)
void Clear()

Removes all Areas from this object.

bool Empty() const

Returns true if this object is not tracking any Areas.

HPS::SegmentKey const &GetAreaCameraSegment() const

Returns the Camera SegmentKey associated with this object.

HPS::OOC::AreaArray const &GetAreas() const

Returns an array of all of the tracked Areas.

HPS::Canvas const &GetCanvas() const

Returns the Canvas associated with this object.

bool GetInspecting() const
HPS::WindowKey const &GetWindowKey() const

Returns the WindowKey associated with this object.

bool Intersects(HPS::Point const &world_space_point) const

Determines if a point intersects any of the tracked Areas.

Parameters

world_space_point – The point to test

Returns

true if the point intersects one of the tracked Areas, false otherwise.

bool Intersects(HPS::SimpleCuboid const &world_space_bounding) const

Determines if a cuboid intersects any of the tracked Areas.

Parameters

world_space_bounding – The cuboid to test

Returns

true if the cuboid intersects one of the tracked Areas, false otherwise.

inline virtual void Process(HPS::KeyArray const &shell_keys)
virtual ~AreaHighlightTracker()
class File

The File class provides functions to import OOC files.

Public Static Functions

static ImportNotifier Import(char const *in_file_name, ImportOptionsKit const &in_options)

Performs an asynchronous import of the specified OOC file with the provided options. May throw an IOException prior to starting the asynchronous import.

Parameters
  • in_file_name – The name of the OOC file to import.

  • in_options – The options controlling the import of the OOC file.

Returns

An ImportNotfier object that can be used to query the import progress and status.

class ImportNotifier : public HPS::IONotifier

The ImportNotifier class is a smart-pointer that is tied to a file import. It is used to interact with an ongoing import or get the results from a completed import.

Public Functions

void Assign(ImportNotifier const &in_that)

Associate this ImportNotifier with the same file import as the source ImportNotifier.

Parameters

in_that – The source ImportNotifier for the assignment.

HPS::Model &GetTarget() const

Get the the Model where the OOC data was imported into. Throws an IOException if the import is not complete or was not successful.

Returns

The ImportResultsKit for a successful file import.

ImportNotifier()

The default constructor creates an ImportNotifier object which is not tied to any file import.

ImportNotifier(ImportNotifier &&in_that)

The move constructor creates an ImportNotifier by transferring the underlying impl of the rvalue reference to this ImportNotifier thereby avoiding a copy and allocation.

Parameters

in_that – An rvalue reference to an ImportNotifier to take the impl from.

ImportNotifier(ImportNotifier const &in_that)

The copy constructor creates a new ImportNotifier object that is associated with the same file import as the source ImportNotifier.

Parameters

in_that – The source ImportNotifier to copy.

ImportNotifier(IONotifier const &in_that)

The conversion constructor creates a new derived ImportNotifier object from a base IONotifier object. The copy will only be successful if the source notifier is really an upcast of this notifier type. Otherwise the copy will fail and the resulting ImportNotifier will be invalid.

Parameters

in_that – The source IONotifier to copy.

inline virtual HPS::Type ObjectType() const

This function returns the type the object, as declared (if the object is derived, this does not give the true type of the derived object).

Returns

The declared type of the object in question, which may differ from the true, underlying type.

ImportNotifier &operator=(ImportNotifier &&in_that)

The move assignment operator transfers the underlying impl of the rvalue reference to this ImportNotifier thereby avoiding a copy.

Parameters

in_that – An rvalue reference to an ImportNotifier to take the impl from.

Returns

A reference to this ImportNotfier.

ImportNotifier &operator=(ImportNotifier const &in_that)

Associate this ImportNotifier with the same file import as the source ImportNotifier.

Parameters

in_that – The source ImportNotifier for the assignment.

Returns

A reference to this ImportNotifier.

virtual ~ImportNotifier()

Public Static Attributes

static const HPS::Type staticType = HPS::Type::OOCImportNotifier
class ImportOptionsKit : public HPS::Sprocket

The ImportOptionsKit class is a user space object. It contains settings controlling what and how data is imported via OOC.

Public Functions

virtual bool Empty() const

Indicates whether this ImportOptionsKit has any values set on it.

Returns

true if no values are set on this ImportOptionsKit, false otherwise.

bool Equals(ImportOptionsKit const &in_kit) const

Check if the source ImportOptionsKit is equivalent to this ImportOptionsKit.

Parameters

in_kit – The source ImportOptionsKit to compare to this ImportOptionsKit.

Returns

true if the objects are equivalent, false otherwise.

ImportOptionsKit()

The default constructor creates an empty ImportOptionsKit object.

ImportOptionsKit(ImportOptionsKit &&in_that)

The move constructor creates an ImportOptionsKit by transferring the underlying impl of the rvalue reference to this ImportOptionsKit thereby avoiding a copy and allocation.

Parameters

in_that – An rvalue reference to an ImportOptionsKit to take the impl from.

ImportOptionsKit(ImportOptionsKit const &in_kit)

The copy constructor creates a new ImportOptionsKit object that contains the same settings as the source ImportOptionsKit.

Parameters

in_kit – The source ImportOptionsKit to copy.

inline virtual HPS::Type ObjectType() const

This function returns the type the object, as declared (if the object is derived, this does not give the true type of the derived object).

Returns

The declared type of the object in question, which may differ from the true, underlying type.

bool operator!=(ImportOptionsKit const &in_kit) const

Check if the source ImportOptionsKit is not equivalent to this ImportOptionsKit.

Parameters

in_kit – The source ImportOptionsKit to compare to this ImportOptionsKit.

Returns

true if the objects are not equivalent, false otherwise.

ImportOptionsKit &operator=(ImportOptionsKit &&in_that)

The move assignment operator transfers the underlying impl of the rvalue reference to this ImportOptionsKit thereby avoiding a copy.

Parameters

in_that – An rvalue reference to an ImportOptionsKit to take the impl from.

Returns

A reference to this ImportOptionsKit.

ImportOptionsKit &operator=(ImportOptionsKit const &in_kit)

Copies the source ImportOptionsKit into this ImportOptionsKit.

Parameters

in_kit – The source ImportOptionsKit to copy.

Returns

A reference to this ImportOptionsKit.

bool operator==(ImportOptionsKit const &in_kit) const

Check if the source ImportOptionsKit is equivalent to this ImportOptionsKit.

Parameters

in_kit – The source ImportOptionsKit to compare to this ImportOptionsKit.

Returns

true if the objects are equivalent, false otherwise.

void Set(ImportOptionsKit const &in_kit)

Copies the source ImportOptionsKit into this ImportOptionsKit.

Parameters

in_kit – The source ImportOptionsKit to copy.

ImportOptionsKit &SetAreaHighlightTracker(HPS::OOC::AreaHighlightTracker &in_area_highlight_tracker)

Sets the AreaHighlightTracker.

Note

You should pass in an instance of a class that derives from AreaHighlightTracker that implements your desired behavior.

Parameters

in_area_highlight_tracker – The AreaHighlightTracker to use for this

Returns

A reference to this ImportOptionsKit.

ImportOptionsKit &SetCenterBounding(bool in_center_bounding)

Configures the model set a transform to the center of the bounding.

Parameters

in_center_bounding – The new center bounding setting

Returns

A reference to this ImportOptionsKit.

ImportOptionsKit &SetManualUpdates(bool in_manual_updates)

Configures the model to only load based on manual updates.

Parameters

in_manual_updates – The new manual update setting

Returns

A reference to this ImportOptionsKit.

ImportOptionsKit &SetTarget(HPS::Model const &in_target)

Uses the Model to set the root segment, library segment, and portfolio where the data will be imported.

Parameters

in_modelModel to use to implicitly set Segment, Library and Portfolio into which the data will be imported.

Returns

A reference to this ImportOptionsKit.

ImportOptionsKit &SetTranslation(double in_x, double in_y, double in_z)

Configures a translate to be set on the model.

Parameters
  • in_x – The x translate

  • in_y – The y translate

  • in_z – The z translate

Returns

A reference to this ImportOptionsKit.

void Show(ImportOptionsKit &out_kit) const

Copies this ImportOptionsKit into the given ImportOptionsKit.

Parameters

out_kit – The ImportOptionsKit to populate with the contents of this ImportOptionsKit.

bool ShowCenterBounding(bool &out_center_bounding) const

Shows if the model is configured to transform to the center of the bounding.

Parameters

out_center_bounding – The current center bounding setting

Returns

Returns false if there is no manual update setting.

bool ShowManualUpdates(bool &out_manual_updates) const

Shows if the model is configured to only load based on manual updates.

Parameters

out_manual_updates – The current manual update setting

Returns

Returns false if there is no manual update setting.

bool ShowTarget(HPS::Model &out_model) const

Shows the root and library segments and portfolio where the data will be imported. If no segments are specified, root segments will be created for this purpose during import.

Parameters

out_modelModel to use to implicitly set Segment, Library and Portfolio into which the data will be imported.

Returns

Returns false if there is no target, false otherwise.

bool ShowTranslation(double &out_x, double &out_y, double &out_z) const

Shows if a translate is set.

Parameters
  • out_x – The x translate

  • out_y – The y translate

  • out_z – The z translate

Returns

Returns false if there is no manual update setting.

ImportOptionsKit &UnsetAreaHighlightTracker()

Removes the AreaHighlightTracker.

Returns

A reference to this ImportOptionsKit.

ImportOptionsKit &UnsetCenterBounding()

Removes the center bounding setting.

Returns

A reference to this ImportOptionsKit.

ImportOptionsKit &UnsetEverything()

Removes all settings from this ImportOptionsKit.

Returns

A reference to this ImportOptionsKit.

ImportOptionsKit &UnsetManualUpdates()

Removes the manual update setting.

Returns

A reference to this ImportOptionsKit.

ImportOptionsKit &UnsetTarget()

Removes the target and library segments, and Model import state.

Returns

A reference to this ImportOptionsKit.

ImportOptionsKit &UnsetTranslation()

Removes a translate setting.

Returns

A reference to this ImportOptionsKit.

virtual ~ImportOptionsKit()

Public Static Functions

static ImportOptionsKit GetDefault()

Creates an ImportOptionsKit which contains the default settings. The returned object will not necessarily have values set for every option, but it will have settings for those options where it is reasonable to have a default. These values will be used for import unless an option is overridden by the options passed to File::Import.

Returns

An ImportOptionsKit with the default settings.

Public Static Attributes

static const HPS::Type staticType = HPS::Type::OOCImportOptionsKit
class NodeHandle

Public Functions

bool Empty() const

Check the state of the NodeHandle.

Returns

Returns true if this NodeHandle doesn’t exist.

bool Equals(NodeHandle const &other) const
HPS::SegmentKey GetSegment() const

Get the SegementKey associated with this node.

Returns

Returns the SegmentKey, if any.

HPS::ShellKey GetShell() const

Get the ShellKey associated with this node. This is unsynchronized.

Returns

Returns the ShellKey, if any.

NodeHandle(NodeHandle &&that)
bool operator!=(NodeHandle const &other) const
NodeHandle &operator=(NodeHandle &&other)
bool operator==(NodeHandle const &other) const
~NodeHandle()

Friends

friend class HPS::OOC::FilterForwarder
friend class HPS::OOC::PointCloud
friend class HPS::OOC::QueryIterator
friend class HPS::OOC::SynchronizedActions
class PointCloud

The PointCloud class provides interactions with a OOC point cloud.

Public Functions

size_t AddPoints(HPS::PointArray const &points, HPS::FloatArray const &intensities, HPS::RGBColorArray const &color)

Add points to the point cloud, and remove points outside of the bounding box.

Parameters
  • points – The points to add

  • intensities – The intensities for each points

  • color – The color for each points

Returns

number of points added

IOResult CommitDeltasToFile()

Saves to disk any changes made to the point cloud. Beware that moving or renaming dependent files will impact the saved delta file (OOCD) because the OOCD file references them. The most likely result would be that the file cannot be loaded.

A file is generated in the directory xxx/yyy_deltas/ as zzz.oocd where

  • xxx is the root directory for the OOC files

  • yyy is given by xxx/yyy.ooc

  • zzz is the generated file_name for the changes saved to disk.

Example: C:/some_dir/ooc_house_root/house.ooc C:/some_dir/ooc_house_root/house_deltas/00535fe253-0000251e.oocd Here

  • xxx is C:/some_dir/ooc_house_root

  • yyy is house

  • zzz is 00535fe253-0000251e

Returns

an IOResult return code.

IOResult CommitDeltasToFile(HPS::UTF8 &out_delta_file_name)
bool DeleteFromPointCloud(HPS::OOC::AreaHighlightTracker &tracker)

Deletes points that intersect the areas from the provided tracker.

Returns

Returns true if no error occurs Returns false otherwise.

void Destroy()

Releases and removes point cloud. This is automatic when model is deleted.

bool Empty()

Check the state of the PointCloud.

Returns

Returns true if this PointCloud doesn’t exist.

bool Equals(PointCloud const &other) const
void Export()

Export the point cloud to the ooc file

NodeHandle GetNodeHandle(HPS::SegmentKey const &node_key)

Get a NodeHandle associated with a specific segment.

Parameters

node_key – The SegmentKey for the requested Node.

Returns

Returns the NodeHandle for the provided segment.

HPS::SegmentKey GetSegment()

Gets a the top segment for this PointCloud.

Returns

Returns the top segment for this PointCloud.

bool HasUncommittedDeltas()

Queries whether or not there are any uncommitted deltas in memory for a particular PointCloud.

Returns

Returns true if there have been any changes made to the point cloud that have not been committed to disk. Returns false otherwise.

bool operator!=(PointCloud const &other) const
PointCloud &operator=(PointCloud &&other)
bool operator==(PointCloud const &other) const
PointCloud()

Constructs an uninitialized point cloud.

Returns

The uninitialized point cloud.

PointCloud(HPS::Model const &in_model)

Retrieve an already displayed point cloud under an existing Model.

Returns

The point cloud.

PointCloud(HPS::Model const &in_model, OOC::PointCloudOptions const &pointCloudOptions)

Constructs a new point cloud under an existing Model, with a bounding box.

Parameters
PointCloud(PointCloud &&that)

Move constructs a point cloud from an existing one.

Returns

The point cloud.

bool PollUpdateNeeded()

Used with manual updates load option. If this returns true an Update must be called on the model.

Returns

Returns true if the model must be updated otherwise it returns false.

OOC::QueryIterator QueryPoints(QueryFilter &filter)

Begin a query.

Parameters

filter – The filter to apply to the query.

Returns

Returns the QueryIterator.

void Release()

Removes ooc hooks. This is automatic when model is deleted.

HPS::OOC::SynchronizedActions::Result Synchronize(Synchronized &synchronized)

Begin a synchronized action.

Parameters

synchronized – The object to synchronize.

Returns

Returns the result of the synchronized actions.

~PointCloud()

Public Static Functions

static bool ShowPointClouds(HPS::Model const &in_model, HPS::OOC::PointCloudArray &out_point_clouds)

Returns an array of PointClouds that exist under this model.

Parameters

in_model – The the model to use.

class PointCloudOptions

Public Functions

HPS::Point const &GetBoundingBoxMax() const
HPS::Point const &GetBoundingBoxMin() const
HPS::UTF8 const &GetOutputOOCFileName() const
inline PointCloudOptions(HPS::UTF8 const &outputOOCFilename, HPS::Point min, HPS::Point max)

Setup options for a new Point cloud

Parameters
  • output_ooc_filename – path to the new ooc model to create

  • min – The min point of the bounding box

  • max – The mqx point of the bounding box

class QueryFilter

QueryFilter is an class used to indicate what point data should be retrieved from OOC::PointCloud::QueryPoints. The default QueryFilter rejects nothing.

Public Functions

inline virtual bool AcceptPoint(Point const &point, size_t point_index)

Determines whether or not a single point is accepted by the filter.

Parameters
  • point – The coordinates of the point to accept or not in object space.

  • point_index – The index of the point to accept or not.

Returns

Returns true if the point is accepted. Returns false otherwise.

inline QueryFilter()
inline virtual bool RejectBounding(Point const &min_bound, Point const &max_bound)

Determines whether or not a bounding box of points is rejected by the filter.

Parameters
  • min_bound – The minimum corner of the bounding box to accept or reject in object space.

  • max_bound – The maximum corner of the bounding box to accept or reject in object space.

Returns

Returns true if the bounding is rejected. Returns false otherwise.

inline virtual bool RejectNode(NodeHandle const &node_handle)

Determines whether or not a point cloud node is rejected by the filter.

Parameters

node_handle – The handle of the node to accept or reject.

Returns

Returns true if the node is rejected. Returns false otherwise.

inline virtual bool RejectPointsInMemory()

Determines whether or not points in memory are rejected by the filter.

Returns

Returns true if the filter rejects points that are loaded into memory. Returns false otherwise.

inline virtual bool RejectPointsOnDisk()

Determines whether or not points not in memory are rejected by the filter.

Returns

Returns true if the filter rejects points that are not loaded into memory. Returns false otherwise.

inline virtual ~QueryFilter()
class QueryIterator

The iterator returned from a call to OOC::PointCloud::QueryPoints.

Public Types

enum Status

Designates the status of an QueryIterator.

Values:

enumerator Alive
enumerator Dead
enumerator ErrorUnknownFailure
enumerator ErrorFileSystemFailure
enumerator ErrorDeserializationFailure
enumerator ErrorCouldNotFindNode
enumerator ErrorCorruptNode
enum Storage

Designates the location of an QueryResult.

Values:

enumerator Memory
enumerator Disk

Public Functions

NodeHandle GetNodeHandle() const

Yields the currently processed point’s node handle.

Returns

the node handle of the current result

Point GetNodePoint() const

Yields the currently processed point’s coordinates in object space.

Returns

the object space coordinates for the point of the current result

RGBColor GetNodePointColor() const

Yields the currently processed point’s RGB color.

Returns

the RGB color for the point of the current result

size_t GetNodePointIndex() const

Yields the currently processed point’s index.

Returns

the index for the point of the current result.

Status GetStatus() const
Returns

the status of the iterator.

Storage GetStorage() const

Yields the currently processed point’s storage.

Returns

the storage for the point of the current result.

void Next()

Advances the iterator to the next point result. This is only legal to call when this->GetStatus() returns OOC::QueryIterator::Status::Alive.

QueryIterator &operator=(QueryIterator &&other)
QueryIterator()

Constructs a dead query iterator.

Returns

The dead iterator

QueryIterator(QueryIterator &&other)

Constructs a query iterator from another with the same state and progress of other.

Returns

The query iterator to construct from.

~QueryIterator()

Friends

friend class HPS::OOC::PointCloud
class Synchronized

Override this class to access SynchronizedActions on a point cloud.

Public Functions

inline virtual HPS::OOC::SynchronizedActions::Result Actions(SynchronizedActions const &actions)

A virtual function for performing actions on a point cloud in a synchronized mannor. Override this function to call SynchronizedActions on a point cloud by calling PointCloud::Synchronize.

Parameters

actions – A SynchronizedActions object that enables you to perform delete and optimize operations on the point cloud.

Returns

The result of the action.

Synchronized()
virtual ~Synchronized()
class SynchronizedActions

This class provides ways to create and optimize OOC deltas.

Public Types

enum Result

Designates the result of an synchronized action.

Values:

enumerator Success
enumerator ErrorInvalidNode
enumerator ErrorInvalidPointCloud
enumerator ErrorUnknownFailure
enumerator ErrorInternalFailure
enumerator ErrorCouldNotFindNode
enumerator ErrorInputIndicesAreNotStrictlyIncreasing
enumerator ErrorIllegalInputIndices
enumerator ErrorCorruptNode
enumerator ErrorFileSystemFailure

Public Functions

Result DeleteNode(NodeHandle const &node_handle) const

Remove a whole node in the OOC model.

Parameters

node_handle – The node to apply to delete from the point cloud.

Returns

The result of the action.

Result DeleteSpecificPoints(NodeHandle const &node_handle, HPS::Int32Array const &point_indices) const

Remove a specific points from node in the OOC model.

Parameters
  • node_handle – The node to apply to delete points from.

  • point_indices – The indices of points to delete from the point cloud.

Returns

The result of the action.

Result DeleteSpecificPoints(NodeHandle const &node_handle, int32_t const point_indices[], size_t count) const

Remove a specific points from node in the OOC model.

Parameters
  • node_handle – The node to apply to delete points from.

  • point_indices – The indices of points to delete from the point cloud.

  • count – The number of indices provided.

Returns

The result of the action.

Result OptimizeDeltas() const

Optimize the deltas for this model.

Returns

The result of the action.

Friends

friend class HPS::OOC::PointCloud