SceneTree

class HPS::SceneTree : public HPS::Sprocket

The SceneTree class is a smart pointer which corresponds to a tree object in a GUI toolkit, e.g., a TreeView in WPF or a CTreeCtrl in MFC. This class can be derived from to facilitate tree creation in the various GUI toolkits. It is used to create a scene graph or segment browser.

Public Types

enum ItemType

Enumerates the types of items that can be contained in a SceneTree.

Values:

enumerator None

No type.

enumerator GenericMask

Mask for the grouping bits in the enum.

enumerator Segment

Item is a SegmentKey, or some object derived from a SegmentKey.

enumerator Include

Item is an IncludeKey.

enumerator ConditionalExpression

Item is a logical conditional expression. This is the condition associated with a conditional include, reference or style.

enumerator StaticModelSegment

Item is a SegmentKey which corresponds to the shadow tree for the static model.

enumerator AttributeFilter

Item is an attribute filter on an include or style.

enumerator Geometry

Mask for geometry items.

enumerator CuttingSection

Item is a CuttingSectionKey.

enumerator Shell

Item is a ShellKey.

enumerator Mesh

Item is a MeshKey.

enumerator Grid

Item is a GridKey.

enumerator NURBSSurface

Item is a NURBSSurfaceKey.

enumerator Cylinder

Item is a CylinderKey.

enumerator Sphere

Item is a SphereKey.

enumerator Polygon

Item is a PolygonKey.

enumerator Circle

Item is a CircleKey.

enumerator CircularWedge

Item is a CircularWedgeKey.

enumerator Ellipse

Item is an EllipseKey.

enumerator Line

Item is a LineKey.

enumerator NURBSCurve

Item is a NURBSCurveKey.

enumerator CircularArc

Item is a CircularArcKey.

enumerator EllipticalArc

Item is an EllipticalArcKey.

enumerator InfiniteLine

Item is an InfiniteLineKey of type InfiniteLine::Type::Line.

enumerator InfiniteRay

Item is an InfiniteLineKey of type InfiniteLine::Type::Ray.

enumerator Marker

Item is a MarkerKey.

enumerator Text

Item is a TextKey.

enumerator Reference

Item is a ReferenceKey.

enumerator DistantLight

Item is a DistantLightKey.

enumerator Spotlight

Item is a SpotlightKey.

enumerator Attribute

Mask for attribute items.

enumerator Portfolio

Item is a PortfolioKey that has been pushed onto a SegmentKey.

enumerator SegmentStyle

Item is a StyleKey for a SegmentKey that was styled onto a SegmentKey.

enumerator NamedStyle

Item is a StyleKey for a name of a NamedStyleDefinition that was styled onto a SegmentKey.

enumerator MaterialPalette

Item is a MaterialPalette on a SegementKey.

enumerator Priority

Item is a Priority on a SegmentKey.

enumerator Material

Item is a MaterialMappingKit on a SegmentKey.

enumerator Camera

Item is a CameraKit on a SegmentKey.

enumerator ModellingMatrix

Item is a modelling matrix on a SegmentKey.

enumerator UserData

Item is user data on a SegmentKey.

enumerator TextureMatrix

Item is a texture matrix on a SegmentKey.

enumerator Culling

Item is a CullingKit on a SegmentKey.

enumerator CurveAttribute

Item is a CurveAttributeKit on a SegmentKey.

enumerator CylinderAttribute

Item is a CylinderAttributeKit on a SegmentKey.

enumerator EdgeAttribute

Item is an EdgeAttributeKit on a SegmentKey.

enumerator LightingAttribute

Item is a LightingAttributeKit on a SegmentKey.

enumerator LineAttribute

Item is a LineAttributeKit on a SegmentKey.

enumerator MarkerAttribute

Item is a MarkerAttributeKit on a SegmentKey.

enumerator SurfaceAttribute

Item is a SurfaceAttributeKit on a SegmentKey.

enumerator Selectability

Item is a SelectabilityKit on a SegmentKey.

enumerator SphereAttribute

Item is a SphereAttributeKit on a SegmentKey.

enumerator Subwindow

Item is a SubwindowKit on a SegmentKey.

enumerator TextAttribute

Item is a TextAttributeKit on a SegmentKey.

enumerator Transparency

Item is a TransparencyKit on a SegmentKey.

enumerator Visibility

Item is a VisibilityKit on a SegmentKey.

enumerator VisualEffects

Item is a VisualEffectsKit on a SegmentKey.

enumerator Performance

Item is a PerformanceKit on a SegmentKey.

enumerator DrawingAttribute

Item is a DrawingAttributeKit on a SegmentKey.

enumerator HiddenLineAttribute

Item is a HiddenLineAttributeKit on a SegmentKey.

enumerator ContourLine

Item is a ContourLineKit on a SegmentKey.

enumerator Condition

Item is a Condition on a SegmentKey.

enumerator Bounding

Item is a BoundingKit on a SegmentKey.

enumerator AttributeLock

Item is a AttributeLockKit on a SegmentKey.

enumerator TransformMask

Item is a TransformMaskKit on a SegmentKey.

enumerator ColorInterpolation

Item is a ColorInterpolationKit on a SegmentKey.

enumerator CuttingSectionAttribute

Item is a CuttingSectionAttributeKit on a SegmentKey.

enumerator PBRMaterial

Item is a MaterialMappingKit on a SegmentKey.

enumerator Debugging

Item is a DebuggingKit on a WindowKey.

enumerator PostProcessEffects

Item is a PostProcessEffectsKit on a WindowKey.

enumerator SelectionOptions

Item is a SelectionOptionsKit on a WindowKey.

enumerator UpdateOptions

Item is an UpdateOptionsKit on a WindowKey.

enumerator Definition

Mask for definition items.

enumerator NamedStyleDefinition

Item is a NamedStyleDefintion in a PortfolioKey.

enumerator TextureDefinition

Item is a TextureDefinition in a PortfolioKey.

enumerator LinePatternDefinition

Item is a LinePatternDefinition in a PortfolioKey.

enumerator GlyphDefinition

Item is a GlyphDefinition in a PortfolioKey.

enumerator CubeMapDefinition

Item is a CubeMapDefinition in a PortfolioKey.

enumerator ImageDefinition

Item is a ImageDefinition in a PortfolioKey.

enumerator MaterialPaletteDefinition

Item is a MaterialPaletteDefinition in a PortfolioKey.

enumerator LegacyShaderDefinition

Item is a LegacyShaderDefinition in a PortfolioKey.

enumerator ShapeDefinition

Item is a ShapeDefinition in a PortfolioKey.

enumerator Group

Mask for group items.

enumerator SegmentGroup

Item is a collection of SegmentKey objects.

enumerator GeometryGroup

Item is a collection of specific geometry type groups.

enumerator AttributeGroup

Item is a collection of attributes.

enumerator PortfolioGroup

Item is a collection of PortfolioKey objects.

enumerator StyleGroup

Item is a collection of StyleKey objects.

enumerator IncludeGroup

Item is a collection of IncludeKey objects.

enumerator DefinitionGroup

Mask for definition group items.

enumerator NamedStyleDefinitionGroup

Item is a collection of NamedStyleDefinition objects.

enumerator TextureDefinitionGroup

Item is a collection of TextureDefinition objects.

enumerator LinePatternDefinitionGroup

Item is a collection of LinePatternDefinition objects.

enumerator GlyphDefinitionGroup

Item is a collection of GlyphDefinition objects.

enumerator CubeMapDefinitionGroup

Item is a collection of CubeMapDefinition objects.

enumerator ImageDefinitionGroup

Item is a collection of ImageDefinition objects.

enumerator MaterialPaletteDefinitionGroup

Item is a collection of MaterialPaletteDefinition objects.

enumerator LegacyShaderDefinitionGroup

Item is a collection of LegacyShaderDefinition objects.

enumerator ShapeDefinitionGroup

Item is a collection of ShapeDefinition objects.

enumerator GeometryGroupMask

Mask for groups that contain geometry.

enumerator CuttingSectionGroup

Item is a collection of CuttingSectionKey objects.

enumerator ShellGroup

Item is a collection of ShellKey objects.

enumerator MeshGroup

Item is a collection of MeshKey objects.

enumerator GridGroup

Item is a collection of GridKey objects.

enumerator NURBSSurfaceGroup

Item is a collection of NURBSSurfaceKey objects.

enumerator CylinderGroup

Item is a collection of CylinderKey objects.

enumerator SphereGroup

Item is a collection of SphereKey objects.

enumerator PolygonGroup

Item is a collection of PolygonKey objects.

enumerator CircleGroup

Item is a collection of CircleKey objects.

enumerator CircularWedgeGroup

Item is a collection of CircularWedgeKey objects.

enumerator EllipseGroup

Item is a collection of EllipseKey objects.

enumerator LineGroup

Item is a collection of LineKey objects.

enumerator NURBSCurveGroup

Item is a collection of NURBSCurveKey objects.

enumerator CircularArcGroup

Item is a collection of CircularArcKey objects.

enumerator EllipticalArcGroup

Item is a collection of EllipticalArcKey objects.

enumerator InfiniteLineGroup

Item is a collection of InfiniteLineKey (of type InfiniteLine::Type::Line) objects.

enumerator InfiniteRayGroup

Item is a collection of InfiniteLineKey (of type InfiniteLine::Type::Ray) objects.

enumerator MarkerGroup

Item is a collection of MarkerKey objects.

enumerator TextGroup

Item is a collection of TextKey objects.

enumerator ReferenceGroup

Item is a collection of ReferenceKey objects.

enumerator DistantLightGroup

Item is a collection of DistantLightKey objects.

enumerator SpotlightGroup

Item is a collection of SpotlightKey objects.

Public Functions

void AddHighlightOptions(HighlightOptionsKit const &in_options)

Appends one highlight options that will be used by this SceneTree. These options are used to perform highlights of elements within the tree and to determine what items within the tree need to be marked as selected when highlights are performed by a HighlightOperator or HighlightAreaOperator.

See

SceneTreeItem::Highlight

See

SceneTreeItem::Unhighlight

See

HighlightOperator

See

HighlightAreaOperator

Parameters

in_options – highlight options that will be used by this SceneTree.

virtual void Assign(SceneTree const &in_that)

Share the underlying smart-pointer of the SceneTree source.

Parameters

in_that – The SceneTree source of the assignment.

Returns

A reference to this SceneTree.

bool Equals(SceneTree const &in_that) const

Check if the source SceneTree points to the same underlying impl as this SceneTree.

Parameters

in_that – The source SceneTree to compare to this SceneTree.

Returns

true if the objects reference the same impl, false otherwise.

virtual void Flush()

Resets the root SceneTreeItem for this SceneTree. This will release the root SceneTreeItem by this SceneTree and set the root to a null pointer. If this function is overridden, the overriding function should invoke this base function.

size_t GetGroupingLimit() const

Gets the grouping limit for this SceneTree.

Returns

The grouping limit for this SceneTree.

bool GetHighlightEventHandling() const

Whether this SceneTree is currently handling highlight events This include expanding the tree to the highlighted SceneTreeItem, and making the text for the highlighted SceneTreeItem bold.

Returns

Whether this SceneTreeItem is currently handling highlight events.

HighlightOptionsKitArray GetHighlightOptions() const

Gets the highlight options that will be used by this SceneTree.

Returns

The highlight options that will be used by this SceneTree.

SceneTreeItemPtr GetRoot() const

Gets the root SceneTreeItem for this SceneTree.

Returns

The root SceneTreeItem for this SceneTree.

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!=(SceneTree const &in_that) const

Check if the source SceneTree points to a different impl than this SceneTree.

Parameters

in_that – The source SceneTree to compare to this SceneTree.

Returns

true if the objects reference different impls, false otherwise.

SceneTree &operator=(SceneTree &&in_that)

The move assignment operator transfers the underlying object of the rvalue reference to this SceneTree.

Parameters

in_that – An rvalue reference to a SceneTree to take the underlying object from.

Returns

A reference to this SceneTree.

SceneTree &operator=(SceneTree const &in_that)

Share the underlying smart-pointer of the SceneTree source.

Parameters

in_that – The SceneTree source of the assignment.

Returns

A reference to this SceneTree.

bool operator==(SceneTree const &in_that) const

Check if the source SceneTree points to the same underlying impl as this SceneTree.

Parameters

in_that – The source SceneTree to compare to this SceneTree.

Returns

true if the objects reference the same impl, false otherwise.

void ReExpand()

Collapses the root SceneTreeItem for this SceneTree and then re-expands the tree. It will try to preserve the original expansion state, however, if the underlying scene structure has changed, the resulting expansion may look different.

SceneTree()

The default constructor creates an uninitialized SceneTree object. The Type() function will return Type::None.

SceneTree(Canvas const &in_canvas)

This constructor creates a SceneTree object associated with a Canvas. This constructor should be used to create a new SceneTree object.

Parameters

in_canvas – The Canvas to associate this SceneTree with.

SceneTree(SceneTree &&in_that)

The move constructor creates a SceneTree by transferring the underlying object of the rvalue reference to this SceneTree.

Parameters

in_that – An rvalue reference to a SceneTree to take the underlying object from.

SceneTree(SceneTree const &in_that)

The copy constructor creates a SceneTree object that shares the underlying smart-pointer of the source SceneTree.

Parameters

in_that – The source SceneTree to copy.

void SetGroupingLimit(size_t in_limit)

Sets the grouping limit for this SceneTree. The grouping limit determines when to collect certain items into groups of a particular size. This limit is used to keep the number of children for a particular SceneTreeItem constrained to ensure reasonable performance. Presently this limit is used for segments and geometry SceneTreeItem objects.

Parameters

in_limit – The grouping limit for this SceneTree.

void SetHighlightEventHandling(bool in_state)

Whether the SceneTree should handle highlighting events. This include expanding the tree to the highlighted SceneTreeItem, and making the text for the highlighted SceneTreeItem bold. By default the SceneTree will handle highlight events.

Parameters

in_state – Whether to handle highlight events.

void SetHighlightOptions(HighlightOptionsKit const &in_options)

Sets the highlight options that will be used by this SceneTree. These options are used to perform highlights of elements within the tree and to determine what items within the tree need to be marked as selected when highlights are performed by a HighlightOperator or HighlightAreaOperator. Calling this function replaces any highlight options previously set on this object.

See

SceneTreeItem::Highlight

See

SceneTreeItem::Unhighlight

See

HighlightOperator

See

HighlightAreaOperator

Parameters

in_options – The highlight options that will be used by this SceneTree.

void SetHighlightOptions(HighlightOptionsKitArray const &in_options)

Sets the highlight options that will be used by this SceneTree. These options are used to perform highlights of elements within the tree and to determine what items within the tree need to be marked as selected when highlights are performed by a HighlightOperator or HighlightAreaOperator. Calling this function replaces any highlight options previously set on this object. All elements of the array should be unique. In the case of multiple identical elements, only the first unique one will be added.

See

SceneTreeItem::Highlight

See

SceneTreeItem::Unhighlight

See

HighlightOperator

See

HighlightAreaOperator

Parameters

in_options – An array of highlight options that will be used by this SceneTree.

void SetHighlightOptions(size_t in_count, HighlightOptionsKit const in_options[])

Sets the highlight options that will be used by this SceneTree. These options are used to perform highlights of elements within the tree and to determine what items within the tree need to be marked as selected when highlights are performed by a HighlightOperator or HighlightAreaOperator. Calling this function replaces any highlight options previously set on this object. All elements of the array should be unique. In the case of multiple identical elements, only the first unique one will be added.

See

SceneTreeItem::Highlight

See

SceneTreeItem::Unhighlight

See

HighlightOperator

See

HighlightAreaOperator

Parameters
  • in_count – the number of highlight options kits in the in_options array

  • in_options – An array of highlight options that will be used by this SceneTree.

void SetRoot(SceneTreeItemPtr const &in_root)

Sets the root SceneTreeItem for this SceneTree. This object should be created on the heap and it should have been created with a SceneTreeItem constructor which took a Model, View, Canvas or Layout, otherwise an exception will be thrown. Additionally, if there was already an existing root for this SceneTree, the Flush function will be invoked prior to setting this as the new root, and Expand will be invoked on the new root.

See

Flush

See

SceneTreeItem::Expand

Parameters

in_root – The root SceneTreeItem for this SceneTree.

virtual ~SceneTree()

Public Static Attributes

static const HPS::Type staticType = HPS::Type::SceneTree