< Home

< Table of Contents

REFERENCE MANUAL

SceneTree Class Reference

#include <sprk.h>

Inheritance diagram for SceneTree:
Sprocket Object

Public Types

enum  ItemType : uint32_t {
  ItemType::None = 0x00000000, ItemType::GenericMask = 0xffff0000, ItemType::Segment = 0x00000001, ItemType::Include = 0x00000002,
  ItemType::ConditionalExpression = 0x00000003, ItemType::StaticModelSegment = 0x00000004, ItemType::AttributeFilter = 0x00000005, ItemType::Geometry = 0x00010000,
  ItemType::CuttingSection = 0x00010001, ItemType::Shell = 0x00010002, ItemType::Mesh = 0x00010003, ItemType::Grid = 0x00010004,
  ItemType::NURBSSurface = 0x00010005, ItemType::Cylinder = 0x00010006, ItemType::Sphere = 0x00010007, ItemType::Polygon = 0x00010008,
  ItemType::Circle = 0x00010009, ItemType::CircularWedge = 0x0001000a, ItemType::Ellipse = 0x0001000b, ItemType::Line = 0x0001000c,
  ItemType::NURBSCurve = 0x0001000d, ItemType::CircularArc = 0x0001000e, ItemType::EllipticalArc = 0x0001000f, ItemType::InfiniteLine = 0x00010010,
  ItemType::InfiniteRay = 0x00010011, ItemType::Marker = 0x00010012, ItemType::Text = 0x00010013, ItemType::Reference = 0x00010014,
  ItemType::DistantLight = 0x00010015, ItemType::Spotlight = 0x00010016, ItemType::Attribute = 0x00020000, ItemType::Portfolio = 0x00020001,
  ItemType::SegmentStyle = 0x00020002, ItemType::NamedStyle = 0x00020003, ItemType::MaterialPalette = 0x00020004, ItemType::Priority = 0x00020005,
  ItemType::Material = 0x00020006, ItemType::Camera = 0x00020007, ItemType::ModellingMatrix = 0x00020008, ItemType::UserData = 0x00020009,
  ItemType::TextureMatrix = 0x0002000a, ItemType::Culling = 0x0002000b, ItemType::CurveAttribute = 0x0002000c, ItemType::CylinderAttribute = 0x0002000d,
  ItemType::EdgeAttribute = 0x0002000e, ItemType::LightingAttribute = 0x0002000f, ItemType::LineAttribute = 0x00020010, ItemType::MarkerAttribute = 0x00020011,
  ItemType::SurfaceAttribute = 0x00020012, ItemType::Selectability = 0x00020013, ItemType::SphereAttribute = 0x00020014, ItemType::Subwindow = 0x00020015,
  ItemType::TextAttribute = 0x00020016, ItemType::Transparency = 0x00020017, ItemType::Visibility = 0x00020018, ItemType::VisualEffects = 0x00020019,
  ItemType::Performance = 0x00020020, ItemType::DrawingAttribute = 0x00020021, ItemType::HiddenLineAttribute = 0x00020022, ItemType::ContourLine = 0x00020023,
  ItemType::Condition = 0x00020024, ItemType::Bounding = 0x00020025, ItemType::AttributeLock = 0x00020026, ItemType::TransformMask = 0x00020027,
  ItemType::ColorInterpolation = 0x00020028, ItemType::CuttingSectionAttribute = 0x00020029, ItemType::Debugging = 0x00020030, ItemType::PostProcessEffects = 0x00020031,
  ItemType::SelectionOptions = 0x00020032, ItemType::UpdateOptions = 0x00020033, ItemType::Definition = 0x00040000, ItemType::NamedStyleDefinition = 0x00040001,
  ItemType::TextureDefinition = 0x00040002, ItemType::LinePatternDefinition = 0x00040003, ItemType::GlyphDefinition = 0x00040004, ItemType::CubeMapDefinition = 0x00040005,
  ItemType::ImageDefinition = 0x00040006, ItemType::MaterialPaletteDefinition = 0x00040007, ItemType::ShaderDefinition = 0x00040008, ItemType::Group = 0x00080000,
  ItemType::SegmentGroup = 0x00080100, ItemType::GeometryGroup = 0x00080200, ItemType::AttributeGroup = 0x00080300, ItemType::PortfolioGroup = 0x00080400,
  ItemType::StyleGroup = 0x00080500, ItemType::IncludeGroup = 0x00080600, ItemType::DefinitionGroup = 0x00180000, ItemType::NamedStyleDefinitionGroup = 0x00180700,
  ItemType::TextureDefinitionGroup = 0x00180800, ItemType::LinePatternDefinitionGroup = 0x00180900, ItemType::GlyphDefinitionGroup = 0x00180a00, ItemType::CubeMapDefinitionGroup = 0x00180b00,
  ItemType::ImageDefinitionGroup = 0x00180c00, ItemType::MaterialPaletteDefinitionGroup = 0x00180d00, ItemType::ShaderDefinitionGroup = 0x00180e00, ItemType::CuttingSectionGroup = 0x00080001,
  ItemType::ShellGroup = 0x00080002, ItemType::MeshGroup = 0x00080003, ItemType::GridGroup = 0x00080004, ItemType::NURBSSurfaceGroup = 0x00080005,
  ItemType::CylinderGroup = 0x00080006, ItemType::SphereGroup = 0x00080007, ItemType::PolygonGroup = 0x00080008, ItemType::CircleGroup = 0x00080009,
  ItemType::CircularWedgeGroup = 0x0008000a, ItemType::EllipseGroup = 0x0008000b, ItemType::LineGroup = 0x0008000c, ItemType::NURBSCurveGroup = 0x0008000d,
  ItemType::CircularArcGroup = 0x0008000e, ItemType::EllipticalArcGroup = 0x0008000f, ItemType::InfiniteLineGroup = 0x00080010, ItemType::InfiniteRayGroup = 0x00080011,
  ItemType::MarkerGroup = 0x00080012, ItemType::TextGroup = 0x00080013, ItemType::ReferenceGroup = 0x00080014, ItemType::DistantLightGroup = 0x00080015,
  ItemType::SpotlightGroup = 0x00080016
}
 
- Public Types inherited from Sprocket
enum  UpdateType { Synchronous, Asynchronous }
 

Public Member Functions

virtual void Assign (SceneTree const &in_that)
 
bool Equals (SceneTree const &in_that) const
 
virtual void Flush ()
 
size_t GetGroupingLimit () const
 
HighlightOptionsKit GetHighlightOptions () const
 
SceneTreeItemPtr GetRoot () const
 
virtual Type ObjectType () const
 
bool operator!= (SceneTree const &in_that) const
 
SceneTreeoperator= (SceneTree const &in_that)
 
SceneTreeoperator= (SceneTree &&in_that)
 
bool operator== (SceneTree const &in_that) const
 
 SceneTree ()
 
 SceneTree (Canvas const &in_canvas)
 
 SceneTree (SceneTree const &in_that)
 
 SceneTree (SceneTree &&in_that)
 
void SetGroupingLimit (size_t in_limit)
 
void SetHighlightOptions (HighlightOptionsKit const &in_options)
 
void SetRoot (SceneTreeItemPtr const &in_root)
 
- Public Member Functions inherited from Sprocket
 Sprocket (Sprocket &&in_that)
 
- Public Member Functions inherited from Object
virtual bool Empty () const
 
intptr_t GetClassID () const
 
intptr_t GetInstanceID () const
 
bool HasType (Type in_mask) const
 
 Object (Object &&in_that)
 
Objectoperator= (Object const &other_object)
 
Objectoperator= (Object &&in_that)
 
virtual void Reset ()
 
Type Type () const
 

Additional Inherited Members

- Static Public Member Functions inherited from Object
template<typename T >
static intptr_t ClassID ()
 

Detailed Description

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.

Member Enumeration Documentation

enum SceneTree::ItemType : uint32_t
strong

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

Enumerator
None 

No type.

GenericMask 

Mask for the grouping bits in the enum.

Segment 

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

Include 

Item is an IncludeKey.

ConditionalExpression 

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

StaticModelSegment 

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

AttributeFilter 

Item is an attribute filter on an include or style.

Geometry 

Mask for geometry items.

CuttingSection 

Item is a CuttingSectionKey.

Shell 

Item is a ShellKey.

Mesh 

Item is a MeshKey.

Grid 

Item is a GridKey.

NURBSSurface 

Item is a NURBSSurfaceKey.

Cylinder 

Item is a CylinderKey.

Sphere 

Item is a SphereKey.

Polygon 

Item is a PolygonKey.

Circle 

Item is a CircleKey.

CircularWedge 

Item is a CircularWedgeKey.

Ellipse 

Item is an EllipseKey.

Line 

Item is a LineKey.

NURBSCurve 

Item is a NURBSCurveKey.

CircularArc 

Item is a CircularArcKey.

EllipticalArc 

Item is an EllipticalArcKey.

InfiniteLine 

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

InfiniteRay 

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

Marker 

Item is a MarkerKey.

Text 

Item is a TextKey.

Reference 

Item is a ReferenceKey.

DistantLight 

Item is a DistantLightKey.

Spotlight 

Item is a SpotlightKey.

Attribute 

Mask for attribute items.

Portfolio 

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

SegmentStyle 

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

NamedStyle 

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

MaterialPalette 

Item is a MaterialPalette on a SegementKey.

Priority 

Item is a Priority on a SegmentKey.

Material 

Item is a MaterialMappingKit on a SegmentKey.

Camera 

Item is a CameraKit on a SegmentKey.

ModellingMatrix 

Item is a modelling matrix on a SegmentKey.

UserData 

Item is user data on a SegmentKey.

TextureMatrix 

Item is a texture matrix on a SegmentKey.

Culling 

Item is a CullingKit on a SegmentKey.

CurveAttribute 

Item is a CurveAttributeKit on a SegmentKey.

CylinderAttribute 

Item is a CylinderAttributeKit on a SegmentKey.

EdgeAttribute 

Item is an EdgeAttributeKit on a SegmentKey.

LightingAttribute 

Item is a LightingAttributeKit on a SegmentKey.

LineAttribute 

Item is a LineAttributeKit on a SegmentKey.

MarkerAttribute 

Item is a MarkerAttributeKit on a SegmentKey.

SurfaceAttribute 

Item is a SurfaceAttributeKit on a SegmentKey.

Selectability 

Item is a SelectabilityKit on a SegmentKey.

SphereAttribute 

Item is a SphereAttributeKit on a SegmentKey.

Subwindow 

Item is a SubwindowKit on a SegmentKey.

TextAttribute 

Item is a TextAttributeKit on a SegmentKey.

Transparency 

Item is a TransparencyKit on a SegmentKey.

Visibility 

Item is a VisibilityKit on a SegmentKey.

VisualEffects 

Item is a VisualEffectsKit on a SegmentKey.

Performance 

Item is a PerformanceKit on a SegmentKey.

DrawingAttribute 

Item is a DrawingAttributeKit on a SegmentKey.

HiddenLineAttribute 

Item is a HiddenLineAttributeKit on a SegmentKey.

ContourLine 

Item is a ContourLineKit on a SegmentKey.

Condition 

Item is a Condition on a SegmentKey.

Bounding 

Item is a BoundingKit on a SegmentKey.

AttributeLock 

Item is a AttributeLockKit on a SegmentKey.

TransformMask 

Item is a TransformMaskKit on a SegmentKey.

ColorInterpolation 

Item is a ColorInterpolationKit on a SegmentKey.

CuttingSectionAttribute 

Item is a CuttingSectionAttributeKit on a SegmentKey.

Debugging 

Item is a DebuggingKit on a WindowKey.

PostProcessEffects 

Item is a PostProcessEffectsKit on a WindowKey.

SelectionOptions 

Item is a SelectionOptionsKit on a WindowKey.

UpdateOptions 

Item is an UpdateOptionsKit on a WindowKey.

Definition 

Mask for definition items.

NamedStyleDefinition 

Item is a NamedStyleDefintion in a PortfolioKey.

TextureDefinition 

Item is a TextureDefinition in a PortfolioKey.

LinePatternDefinition 

Item is a LinePatternDefinition in a PortfolioKey.

GlyphDefinition 

Item is a GlyphDefinition in a PortfolioKey.

CubeMapDefinition 

Item is a CubeMapDefinition in a PortfolioKey.

ImageDefinition 

Item is a ImageDefinition in a PortfolioKey.

MaterialPaletteDefinition 

Item is a MaterialPaletteDefinition in a PortfolioKey.

ShaderDefinition 

Item is a ShaderDefinition in a PortfolioKey.

Group 

Mask for group items.

SegmentGroup 

Item is a collection of SegmentKey objects.

GeometryGroup 

Item is a collection of specific geometry type groups.

AttributeGroup 

Item is a collection of attributes.

PortfolioGroup 

Item is a collection of PortfolioKey objects.

StyleGroup 

Item is a collection of StyleKey objects.

IncludeGroup 

Item is a collection of IncludeKey objects.

DefinitionGroup 

Mask for definition group items.

NamedStyleDefinitionGroup 

Item is a collection of NamedStyleDefinition objects.

TextureDefinitionGroup 

Item is a collection of TextureDefinition objects.

LinePatternDefinitionGroup 

Item is a collection of LinePatternDefinition objects.

GlyphDefinitionGroup 

Item is a collection of GlyphDefinition objects.

CubeMapDefinitionGroup 

Item is a collection of CubeMapDefinition objects.

ImageDefinitionGroup 

Item is a collection of ImageDefinition objects.

MaterialPaletteDefinitionGroup 

Item is a collection of MaterialPaletteDefinition objects.

ShaderDefinitionGroup 

Item is a collection of ShaderDefinition objects.

CuttingSectionGroup 

Item is a collection of CuttingSectionKey objects.

ShellGroup 

Item is a collection of ShellKey objects.

MeshGroup 

Item is a collection of MeshKey objects.

GridGroup 

Item is a collection of GridKey objects.

NURBSSurfaceGroup 

Item is a collection of NURBSSurfaceKey objects.

CylinderGroup 

Item is a collection of CylinderKey objects.

SphereGroup 

Item is a collection of SphereKey objects.

PolygonGroup 

Item is a collection of PolygonKey objects.

CircleGroup 

Item is a collection of CircleKey objects.

CircularWedgeGroup 

Item is a collection of CircularWedgeKey objects.

EllipseGroup 

Item is a collection of EllipseKey objects.

LineGroup 

Item is a collection of LineKey objects.

NURBSCurveGroup 

Item is a collection of NURBSCurveKey objects.

CircularArcGroup 

Item is a collection of CircularArcKey objects.

EllipticalArcGroup 

Item is a collection of EllipticalArcKey objects.

InfiniteLineGroup 

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

InfiniteRayGroup 

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

MarkerGroup 

Item is a collection of MarkerKey objects.

TextGroup 

Item is a collection of TextKey objects.

ReferenceGroup 

Item is a collection of ReferenceKey objects.

DistantLightGroup 

Item is a collection of DistantLightKey objects.

SpotlightGroup 

Item is a collection of SpotlightKey objects.

Constructor & Destructor Documentation

SceneTree::SceneTree ( )

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

SceneTree::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_canvasThe Canvas to associate this SceneTree with.
SceneTree::SceneTree ( SceneTree const &  in_that)

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

Parameters
in_thatThe source SceneTree to copy.
SceneTree::SceneTree ( SceneTree &&  in_that)

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

Parameters
in_thatAn rvalue reference to a SceneTree to take the underlying object from.

Member Function Documentation

virtual void SceneTree::Assign ( SceneTree const &  in_that)
virtual

Share the underlying smart-pointer of the SceneTree source.

Parameters
in_thatThe SceneTree source of the assignment.
Returns
A reference to this SceneTree.
bool SceneTree::Equals ( SceneTree const &  in_that) const

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

Parameters
in_thatThe source SceneTree to compare to this SceneTree.
Returns
true if the objects reference the same impl, false otherwise.
virtual void SceneTree::Flush ( )
virtual

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 SceneTree::GetGroupingLimit ( ) const

Gets the grouping limit for this SceneTree.

Returns
The grouping limit for this SceneTree.
HighlightOptionsKit SceneTree::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 SceneTree::GetRoot ( ) const

Gets the root SceneTreeItem for this SceneTree.

Returns
The root SceneTreeItem for this SceneTree.
virtual Type SceneTree::ObjectType ( ) const
inlinevirtual

This function returns the type the object, as declared. This does not necessarily give the true type of the underlying object.

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

Reimplemented from Object.

bool SceneTree::operator!= ( SceneTree const &  in_that) const

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

Parameters
in_thatThe source SceneTree to compare to this SceneTree.
Returns
true if the objects reference different impls, false otherwise.
SceneTree& SceneTree::operator= ( SceneTree const &  in_that)

Share the underlying smart-pointer of the SceneTree source.

Parameters
in_thatThe SceneTree source of the assignment.
Returns
A reference to this SceneTree.
SceneTree& SceneTree::operator= ( SceneTree &&  in_that)

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

Parameters
in_thatAn rvalue reference to a SceneTree to take the underlying object from.
Returns
A reference to this SceneTree.
bool SceneTree::operator== ( SceneTree const &  in_that) const

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

Parameters
in_thatThe source SceneTree to compare to this SceneTree.
Returns
true if the objects reference the same impl, false otherwise.
void SceneTree::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_limitThe grouping limit for this SceneTree.
void SceneTree::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.

Parameters
in_optionsThe highlight options that will be used by this SceneTree.
See also
SceneTreeItem::Highlight
SceneTreeItem::Unhighlight
HighlightOperator
HighlightAreaOperator
void SceneTree::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.

Parameters
in_rootThe root SceneTreeItem for this SceneTree.
See also
Flush
SceneTreeItem::Expand

The documentation for this class was generated from the following file: