SegmentKey

class HPS::SegmentKey : public HPS::Key

The SegmentKey class is a smart pointer to a database object. Segments are the nodes in the scene graph. They can contain attributes, geometry, or other segments, among other things.

Subclassed by HPS::WindowKey

Public Functions

SegmentKey Down(char const *in_segment_name, bool in_create_if_not_present = false) const

Returns the segment contained by this key with name of in_segment_name. If the segment does not exist and the flag in_create_if_not_present is not set, the key returned will be uninitialized.

size_t Find(Search::Type in_request, Search::Space in_search_space, SearchResults &out_results) const

Searches in_search_space for in_request and returns a handle to the results.

size_t Find(SearchOptionsKit const &in_options) const

Searches starting at this segment using in_options, returns count.

size_t Find(SearchOptionsKit const &in_options, SearchResults &out_results) const

Searches starting at this segment using in_options and writes found objects into out_results, returns count.

size_t Find(SearchTypeArray const &in_requests, Search::Space in_search_space, SearchResults &out_results) const

Searches in_search_space for in_request and returns a handle to the results.

size_t Find(size_t in_types_count, Search::Type const in_requests[], Search::Space in_search_space, SearchResults &out_results) const

Searches in_search_space for in_request and returns a handle to the results.

void Flush(Search::Type in_type_to_remove = Search::Type::Everything, Search::Space in_search_space = Search::Space::SegmentOnly)

Searches in_search_space for in_type_to_remove and deletes all instances from the segment(s).

void Flush(SearchTypeArray const &in_types_to_remove, Search::Space in_search_space = Search::Space::SegmentOnly)

Searches in_search_space for in_types_to_remove and deletes all instances from the segment(s).

void Flush(size_t in_types_count, Search::Type const in_types_to_remove[], Search::Space in_search_space = Search::Space::SegmentOnly)

Searches in_search_space for in_types_to_remove and deletes all instances from the segment(s).

AttributeLockControl GetAttributeLockControl()

Returns a control that allows the user to manipulate and query details of the attribute locks on this segment.

AttributeLockControl const GetAttributeLockControl() const

Returns a control that allows the user to manipulate and query details of the attribute locks on this segment.

BoundingControl GetBoundingControl()

Returns a control that allows the user to manipulate and query details of the bounding control on this segment.

BoundingControl const GetBoundingControl() const

Returns a control that allows the user to manipulate and query details of the bounding control on this segment.

CameraControl GetCameraControl()
Returns

A control that allows the user to manipulate and query details of the camera attribute on this segment.

CameraControl const GetCameraControl() const
Returns

A control that allows the user to manipulate and query details of the camera attribute on this segment.

ColorInterpolationControl GetColorInterpolationControl()
Returns

A control that allows the user to manipulate and query details of the color interpolation attributes on this segment.

ColorInterpolationControl const GetColorInterpolationControl() const
Returns

A control that allows the user to manipulate and query details of the color interpolation attributes on this segment.

ConditionControl GetConditionControl()
Returns

A control that allows the user to manipulate and query details of conditions on this segment.

ConditionControl const GetConditionControl() const
Returns

A control that allows the user to manipulate and query details of conditions on this segment.

ContourLineControl GetContourLineControl()
Returns

A control that allows the user to manipulate and query details of the contour line attributes on this segment.

ContourLineControl const GetContourLineControl() const
Returns

A control that allows the user to manipulate and query details of the contour line attributes on this segment.

CullingControl GetCullingControl()

Returns a control that allows the user to manipulate and query details of the culling attribute on this segment.

CullingControl const GetCullingControl() const

Returns a control that allows the user to manipulate and query details of the culling attribute on this segment.

CurveAttributeControl GetCurveAttributeControl()

Returns a control that allows the user to manipulate and query details of the curve attribute on this segment.

CurveAttributeControl const GetCurveAttributeControl() const

Returns a control that allows the user to manipulate and query details of the curve attribute on this segment.

CuttingSectionAttributeControl GetCuttingSectionAttributeControl()

Returns a control that allows the user to manipulate and query details of the cutting section attributes on this segment.

CuttingSectionAttributeControl const GetCuttingSectionAttributeControl() const

Returns a control that allows the user to manipulate and query details of the cutting section attributes on this segment.

CylinderAttributeControl GetCylinderAttributeControl()

Returns a control that allows the user to manipulate and query details of the cylinder attribute on this segment.

CylinderAttributeControl const GetCylinderAttributeControl() const

Returns a control that allows the user to manipulate and query details of the cylinder attribute on this segment.

DrawingAttributeControl GetDrawingAttributeControl()

Returns a control that allows the user to manipulate and query details of the drawing attribute on this segment.

DrawingAttributeControl const GetDrawingAttributeControl() const

Returns a control that allows the user to manipulate and query details of the drawing attribute on this segment.

EdgeAttributeControl GetEdgeAttributeControl()

Returns a control that allows the user to manipulate and query details of the edge attribute on this segment.

EdgeAttributeControl const GetEdgeAttributeControl() const

Returns a control that allows the user to manipulate and query details of the edge attribute on this segment.

HiddenLineAttributeControl GetHiddenLineAttributeControl()

Returns a control that allows the user to manipulate and query details of the hidden line attribute on this segment.

HiddenLineAttributeControl const GetHiddenLineAttributeControl() const

Returns a control that allows the user to manipulate and query details of the hidden line attribute on this segment.

LightingAttributeControl GetLightingAttributeControl()

Returns a control that allows the user to manipulate and query details of the lighting attribute on this segment.

LightingAttributeControl const GetLightingAttributeControl() const

Returns a control that allows the user to manipulate and query details of the lighting attribute on this segment.

LineAttributeControl GetLineAttributeControl()

Returns a control that allows the user to manipulate and query details of the line attribute on this segment.

LineAttributeControl const GetLineAttributeControl() const

Returns a control that allows the user to manipulate and query details of the line attribute on this segment.

MarkerAttributeControl GetMarkerAttributeControl()

Returns a control that allows the user to manipulate and query details of the marker attribute on this segment.

MarkerAttributeControl const GetMarkerAttributeControl() const

Returns a control that allows the user to manipulate and query details of the marker attribute on this segment.

MaterialMappingControl GetMaterialMappingControl()

Returns a control that allows the user to manipulate and query details of the material mapping on this segment.

MaterialMappingControl const GetMaterialMappingControl() const

Returns a control that allows the user to manipulate and query details of the material mapping on this segment.

ModellingMatrixControl GetModellingMatrixControl()

Returns a control that allows the user to manipulate and query details of the modelling matrix on this segment.

ModellingMatrixControl const GetModellingMatrixControl() const

Returns a control that allows the user to manipulate and query details of the modelling matrix on this segment.

NURBSSurfaceAttributeControl GetNURBSSurfaceAttributeControl()

Returns a control that allows the user to manipulate and query details of the NURBS surface attribute on this segment.

NURBSSurfaceAttributeControl const GetNURBSSurfaceAttributeControl() const

Returns a control that allows the user to manipulate and query details of the NURBS surface attribute on this segment.

PerformanceControl GetPerformanceControl()

Returns a control that allows the user to manipulate and query details of the performance attribute on this segment.

PerformanceControl const GetPerformanceControl() const

Returns a control that allows the user to manipulate and query details of the performance attribute on this segment.

PortfolioControl GetPortfolioControl()
Returns

A control that allows the user to manipulate and query portfolios in use on this segment.

PortfolioControl const GetPortfolioControl() const
Returns

A control that allows the user to manipulate and query portfolios in use on this segment.

SelectabilityControl GetSelectabilityControl()

Returns a control that allows the user to manipulate and query details of the selectability attribute on this segment.

SelectabilityControl const GetSelectabilityControl() const

Returns a control that allows the user to manipulate and query details of the selectability attribute on this segment.

SphereAttributeControl GetSphereAttributeControl()

Returns a control that allows the user to manipulate and query details of the sphere attribute on this segment.

SphereAttributeControl const GetSphereAttributeControl() const

Returns a control that allows the user to manipulate and query details of the sphere attribute on this segment.

StyleControl GetStyleControl()
Returns

A control that allows the user to manipulate and query details of styles on this segment.

StyleControl const GetStyleControl() const
Returns

A control that allows the user to manipulate and query details of styles on this segment.

SubwindowControl GetSubwindowControl()

Returns a control that allows the user to manipulate and query details of the subwindow attribute on this segment.

SubwindowControl const GetSubwindowControl() const

Returns a control that allows the user to manipulate and query details of the subwindow attribute on this segment.

TextAttributeControl GetTextAttributeControl()

Returns a control that allows the user to manipulate and query details of the text attribute on this segment.

TextAttributeControl const GetTextAttributeControl() const

Returns a control that allows the user to manipulate and query details of the text attribute on this segment.

TextureMatrixControl GetTextureMatrixControl()

Returns a control that allows the user to manipulate and query details of the texture matrix on this segment.

TextureMatrixControl const GetTextureMatrixControl() const

Returns a control that allows the user to manipulate and query details of the texture matrix on this segment.

TransformMaskControl GetTransformMaskControl()

Returns a control that allows the user to manipulate and query details of the transform mask on this segment.

TransformMaskControl const GetTransformMaskControl() const

Returns a control that allows the user to manipulate and query details of the transform mask on this segment.

TransparencyControl GetTransparencyControl()

Returns a control that allows the user to manipulate and query details of the transparency attribute on this segment.

TransparencyControl const GetTransparencyControl() const

Returns a control that allows the user to manipulate and query details of the transparency attribute on this segment.

VisibilityControl GetVisibilityControl()

Returns a control that allows the user to manipulate and query details of the visibility attribute on this segment.

VisibilityControl const GetVisibilityControl() const

Returns a control that allows the user to manipulate and query details of the visibility attribute on this segment.

VisualEffectsControl GetVisualEffectsControl()

Returns a control that allows the user to manipulate and query details of the visual effects attribute on this segment.

VisualEffectsControl const GetVisualEffectsControl() const

Returns a control that allows the user to manipulate and query details of the visual effects attribute on this segment.

IncludeKey IncludeSegment(SegmentKey const &in_seg)

Creates a link between this segment and in_seg, returns a handle to the include itself. Included segments are treated like child segments for most operations including drawing.

IncludeKey IncludeSegment(SegmentKey const &in_seg, ConditionalExpression const &in_conditional)

Creates a link between this segment and in_seg, returns a handle to the include itself. The link will only be applied if the condition is set in the draw path. Included segments are treated like child segments for most operations including drawing.

CircleKey InsertCircle(CircleKit const &in_kit)

Creates a new circle geometry in this segment and returns a key to it.

CircleKey InsertCircle(Point const &in_center, float in_radius, Vector const &in_normal)

Creates a new circle geometry in this segment and returns a key to it.

CircleKey InsertCircle(Point const &in_start, Point const &in_middle, Point const &in_end)

Creates a new circle geometry in this segment and returns a key to it.

CircularArcKey InsertCircularArc(CircularArcKit const &in_kit)

Creates a new circular arc geometry in this segment and returns a key to it.

CircularArcKey InsertCircularArc(Point const &in_start, Point const &in_middle, Point const &in_end)

Creates a new circular arc geometry in this segment and returns a key to it.

CircularWedgeKey InsertCircularWedge(CircularWedgeKit const &in_kit)

Creates a new circular wedge geometry in this segment and returns a key to it.

CircularWedgeKey InsertCircularWedge(Point const &in_start, Point const &in_middle, Point const &in_end)

Creates a new circular wedge geometry in this segment and returns a key to it.

CuttingSectionKey InsertCuttingSection(CuttingSectionKit const &in_kit)

Creates a new cutting section in this segment and returns a key to it.

CuttingSectionKey InsertCuttingSection(Plane const &in_plane)

Creates a new cutting section in this segment and returns a key to it.

CuttingSectionKey InsertCuttingSection(PlaneArray const &in_planes)

Creates a new cutting section in this segment and returns a key to it.

CuttingSectionKey InsertCuttingSection(size_t in_planes_count, Plane const in_planes[])

Creates a new cutting section in this segment and returns a key to it.

CylinderKey InsertCylinder(CylinderKit const &in_kit)

Creates a new cylinder geometry in this segment and returns a key to it.

CylinderKey InsertCylinder(Point const &in_point1, Point const &in_point2, float in_radius, Cylinder::Capping in_caps = Cylinder::Capping::Both)

Creates a new cylinder geometry in this segment and returns a key to it.

CylinderKey InsertCylinder(PointArray const &in_points, FloatArray const &in_radii, Cylinder::Capping in_caps = Cylinder::Capping::Both)

Creates a new cylinder geometry in this segment and returns a key to it.

CylinderKey InsertCylinder(size_t in_pcount, Point const in_points[], size_t in_rcount, float const in_radii[], Cylinder::Capping in_caps = Cylinder::Capping::Both)

Creates a new cylinder geometry in this segment and returns a key to it.

DistantLightKey InsertDistantLight(DistantLightKit const &in_kit)

Creates a new distant light geometry in this segment and returns a key to it.

DistantLightKey InsertDistantLight(Vector const &in_direction)

Creates a new distant light geometry in this segment and returns a key to it.

EllipseKey InsertEllipse(EllipseKit const &in_kit)

Creates a new ellipse geometry in this segment and returns a key to it.

EllipseKey InsertEllipse(Point const &in_center, Point const &in_major, Point const &in_minor)

Creates a new ellipse geometry in this segment and returns a key to it.

EllipticalArcKey InsertEllipticalArc(EllipticalArcKit const &in_kit)

Creates a new elliptical arc geometry in this segment and returns a key to it.

EllipticalArcKey InsertEllipticalArc(Point const &in_center, Point const &in_major, Point const &in_minor, float in_start, float in_end)

Creates a new elliptical arc geometry in this segment and returns a key to it.

GridKey InsertGrid(GridKit const &in_kit)

Creates a new grid in this segment and returns a key to it.

GridKey InsertGrid(Point const &in_origin, Point const &in_first_point = Point(1, 0, 0), Point const &in_second_point = Point(0, 1, 0), int in_first_count = 0, int in_second_count = 0, Grid::Type in_type = Grid::Type::Quadrilateral)

Creates a new grid in this segment and returns a key to it.

InfiniteLineKey InsertInfiniteLine(InfiniteLineKit const &in_kit)

Creates a new infinite line geometry in this segment and returns a key to it.

InfiniteLineKey InsertInfiniteLine(Point const &in_first, Point const &in_second, InfiniteLine::Type in_type)

Creates a new infinite line geometry in this segment and returns a key to it.

LineKey InsertLine(LineKit const &in_kit)

Creates a new line geometry in this segment and returns a key to it.

LineKey InsertLine(Point const &pt1, Point const &pt2)

Creates a new line geometry in this segment and returns a key to it.

LineKey InsertLine(PointArray const &in_pts)

Creates a new line geometry in this segment and returns a key to it.

LineKey InsertLine(size_t in_count, Point const in_pts[])

Creates a new line geometry in this segment and returns a key to it.

LineKey InsertLineFromGeometry(CircleKey const &in_circle, float in_deviation = -1.0f)

Creates a new line geometry in this segment which approximates the given circle and returns a key to it.

Parameters
  • in_circle – The CircleKey that will be used to compute the line approximation.

  • in_deviation – The distance in object space from the line approximation to the circle. Default value is -1.0f, which tells Visualize to compute a deviation based on the bounding volume of the circle.

Returns

The reference to the newly created line. Will have a type of Type::None if line insertion failed.

LineKey InsertLineFromGeometry(CircularArcKey const &in_circular_arc, float in_deviation = -1.0f)

Creates a new line geometry in this segment which approximates the given circular arc and returns a key to it.

Parameters
  • in_circular_arc – The CircularArcKey that will be used to compute the line approximation.

  • in_deviation – The distance in object space from the line approximation to the circular arc. Default value is -1.0f, which tells Visualize to compute a deviation based on the bounding volume of the circular arc.

Returns

The reference to the newly created line. Will have a type of Type::None if line insertion failed.

LineKey InsertLineFromGeometry(CircularWedgeKey const &in_circular_wedge, float in_deviation = -1.0f)

Creates a new line geometry in this segment which approximates the given circular wedge and returns a key to it.

Parameters
  • in_circular_wedge – The CircularWedgeKey that will be used to compute the line approximation.

  • in_deviation – The distance in object space from the line approximation to the circular wedge. Default value is -1.0f, which tells Visualize to compute a deviation based on the bounding volume of the circular wedge.

Returns

The reference to the newly created line. Will have a type of Type::None if line insertion failed.

LineKey InsertLineFromGeometry(EllipseKey const &in_ellipse, float in_deviation = -1.0f)

Creates a new line geometry in this segment which approximates the given ellipse and returns a key to it.

Parameters
  • in_ellipse – The EllipseKey that will be used to compute the line approximation.

  • in_deviation – The distance in object space from the line approximation to the ellipse. Default value is -1.0f, which tells Visualize to compute a deviation based on the bounding volume of the ellipse.

Returns

The reference to the newly created line. Will have a type of Type::None if line insertion failed.

LineKey InsertLineFromGeometry(EllipticalArcKey const &in_elliptical_arc, float in_deviation = -1.0f)

Creates a new line geometry in this segment which approximates the given elliptical arc and returns a key to it.

Parameters
  • in_elliptical_arc – The EllipticalArcKey that will be used to compute the line approximation.

  • in_deviation – The distance in object space from the line approximation to the elliptical arc. Default value is -1.0f, which tells Visualize to compute a deviation based on the bounding volume of the elliptical arc.

Returns

The reference to the newly created line. Will have a type of Type::None if line insertion failed.

LineKey InsertLineFromGeometry(NURBSCurveKey const &in_nurbs_curve, float in_deviation = -1.0f)

Creates a new line geometry in this segment which approximates the given NURBS curve and returns a key to it.

Parameters
  • in_nurbs_curve – The NURBSCurveKey that will be used to compute the line approximation.

  • in_deviation – The distance in object space from the line approximation to the NURBS curve. Default value is -1.0f, which tells Visualize to compute a deviation based on the bounding volume of the NURBS curve.

Returns

The reference to the newly created line. Will have a type of Type::None if line insertion failed.

MarkerKey InsertMarker(MarkerKit const &in_kit)

Creates a new marker geometry in this segment and returns a key to it.

MarkerKey InsertMarker(Point const &in_position)

Creates a new marker geometry in this segment and returns a key to it.

MeshKey InsertMesh(MeshKit const &in_kit)

Creates a new mesh geometry in this segment and returns a key to it.

MeshKey InsertMesh(size_t in_rows, size_t in_columns, PointArray const &in_points)

Creates a new mesh geometry in this segment and returns a key to it.

MeshKey InsertMesh(size_t in_rows, size_t in_columns, size_t in_point_count, Point const in_points[])

Creates a new mesh geometry in this segment and returns a key to it.

NURBSCurveKey InsertNURBSCurve(NURBSCurveKit const &in_kit)

Creates a new NURBS curve geometry in this segment and returns a key to it.

NURBSCurveKey InsertNURBSCurve(size_t in_degree, PointArray const &in_points, FloatArray const &in_weights, FloatArray const &in_knots, float in_start_u, float in_end_u)

Creates a new NURBS curve geometry in this segment and returns a key to it.

NURBSCurveKey InsertNURBSCurve(size_t in_degree, size_t in_pcount, Point const in_points[], float const in_weights[], size_t in_knot_count, float const in_knots[], float in_start_u, float in_end_u)

Creates a new NURBS curve geometry in this segment and returns a key to it.

NURBSSurfaceKey InsertNURBSSurface(NURBSSurfaceKit const &in_kit)

Creates a new NURBS surface geometry in this segment and returns a key to it.

NURBSSurfaceKey InsertNURBSSurface(size_t in_udegree, size_t in_vdegree, size_t in_ucount, size_t in_vcount, PointArray const &in_points, FloatArray const &in_weights, FloatArray const &in_uknots, FloatArray const &in_vknots)

Creates a new NURBS surface geometry in this segment and returns a key to it.

NURBSSurfaceKey InsertNURBSSurface(size_t in_udegree, size_t in_vdegree, size_t in_ucount, size_t in_vcount, PointArray const &in_points, FloatArray const &in_weights, FloatArray const &in_uknots, FloatArray const &in_vknots, TrimKitArray const &in_trims)

Creates a new NURBS surface geometry in this segment and returns a key to it.

NURBSSurfaceKey InsertNURBSSurface(size_t in_udegree, size_t in_vdegree, size_t in_ucount, size_t in_vcount, size_t in_point_count, Point const in_points[], float const in_weights[], size_t in_uknot_count, float const in_uknots[], size_t in_vknot_count, float const in_vknots[])

Creates a new NURBS surface geometry in this segment and returns a key to it.

NURBSSurfaceKey InsertNURBSSurface(size_t in_udegree, size_t in_vdegree, size_t in_ucount, size_t in_vcount, size_t in_point_count, Point const in_points[], float const in_weights[], size_t in_uknot_count, float const in_uknots[], size_t in_vknot_count, float const in_vknots[], size_t in_trim_count, TrimKit const in_trims[])

Creates a new NURBS surface geometry in this segment and returns a key to it.

PolygonKey InsertPolygon(PointArray const &in_points)

Creates a new polygon geometry in this segment and returns a key to it.

PolygonKey InsertPolygon(PolygonKit const &in_kit)

Creates a new polygon geometry in this segment and returns a key to it.

PolygonKey InsertPolygon(size_t in_count, Point const in_points[])

Creates a new polygon geometry in this segment and returns a key to it.

ShellKey InsertShell(PointArray const &in_points, IntArray const &in_facelist)

Creates a new shell geometry in this segment and returns a key to it.

ShellKey InsertShell(ShellKit const &in_kit)

Creates a new shell geometry in this segment and returns a key to it.

ShellKey InsertShell(size_t in_point_count, Point const in_points[], size_t in_facelist_count, int const in_facelist[])

Creates a new shell geometry in this segment and returns a key to it.

ShellKey InsertShellByTristrips(PointArray const &in_points, IntArray const &in_tristrips)

Creates a new shell geometry in this segment and then returns a key to it.


Parameters
  • in_points – An array of HPS::Point that will serve as vertices in the tri-strip.

  • in_tristrips – An array of integers that designates the order of the vertices. The first number indicates the number of vertices in a tri-strip. For example, the following declaration specifies two tri-strips, the first with three vertices and the second with five: IntArray triStripIndex = { 3, 0, 1, 2, 5, 3, 4, 5, 6, 7 };

ShellKey InsertShellByTristrips(size_t in_point_count, Point const in_points[], size_t in_tristrips_count, int const in_tristrips[])

Creates a new shell geometry in this segment and returns a key to it.

ShellKey InsertShellFromGeometry(CircleKey const &in_circle)

Creates a new shell geometry in this segment which approximates the given circle and returns a key to it.

Parameters

in_circle – The CircleKey that will be used to compute the shell approximation.

Returns

The reference to the newly created shell. Will have a type of Type::None if shell insertion failed.

ShellKey InsertShellFromGeometry(CircularWedgeKey const &in_circular_wedge)

Creates a new shell geometry in this segment which approximates the given circular wedge and returns a key to it.

Parameters

in_circular_wedge – The CircularWedgeKey that will be used to compute the shell approximation.

Returns

The reference to the newly created shell. Will have a type of Type::None if shell insertion failed.

ShellKey InsertShellFromGeometry(CylinderKey const &in_cylinder)

Creates a new shell geometry in this segment which approximates the given cylinder and returns a key to it.

Parameters

in_cylinder – The CylinderKey that will be used to compute the shell approximation.

Returns

The reference to the newly created shell. Will have a type of Type::None if shell insertion failed.

ShellKey InsertShellFromGeometry(EllipseKey const &in_ellipse)

Creates a new shell geometry in this segment which approximates the given ellipse and returns a key to it.

Parameters

in_ellipse – The EllipseKey that will be used to compute the shell approximation.

Returns

The reference to the newly created shell. Will have a type of Type::None if shell insertion failed.

ShellKey InsertShellFromGeometry(MeshKey const &in_mesh)

Creates a new shell geometry in this segment which approximates the given mesh and returns a key to it.

Parameters

in_mesh – The MeshKey that will be used to compute the shell approximation.

Returns

The reference to the newly created shell. Will have a type of Type::None if shell insertion failed.

ShellKey InsertShellFromGeometry(NURBSSurfaceKey const &in_nurbs_surface)

Creates a new shell geometry in this segment which approximates the given NURBS surface and returns a key to it.

Parameters

in_nurbs_surface – The NURBSSurfaceKey that will be used to compute the shell approximation.

Returns

The reference to the newly created shell. Will have a type of Type::None if shell insertion failed.

ShellKey InsertShellFromGeometry(PolygonKey const &in_polygon)

Creates a new shell geometry in this segment which approximates the given polygon and returns a key to it.

Parameters

in_polygon – The PolygonKey that will be used to compute the shell approximation.

Returns

The reference to the newly created shell. Will have a type of Type::None if shell insertion failed.

ShellKey InsertShellFromGeometry(SphereKey const &in_sphere)

Creates a new shell geometry in this segment which approximates the given sphere and returns a key to it.

Parameters

in_sphere – The SphereKey that will be used to compute the shell approximation.

Returns

The reference to the newly created shell. Will have a type of Type::None if shell insertion failed.

ShellKey InsertShellFromGeometry(TextKey const &in_text)

Creates a new shell geometry in this segment which approximates the given text and returns a key to it. The text must be inserted into the window segment in order for this call to succeed.

Parameters

in_text – The TextKey that will be used to compute the shell approximation.

Returns

The reference to the newly created shell. Will have a type of Type::None if shell insertion failed.

SphereKey InsertSphere(Point const &in_center, float in_radius, Vector const &in_axis = Vector(0, 1, 0), Vector const &in_prime_meridian = Vector(1, 0, 0))

Creates a new sphere geometry in this segment and returns a key to it.

Parameters
  • in_center – The Point that will define the center of the sphere

  • in_radius – The radius of the sphere

  • in_axis – The Vector that will define the axis of the sphere

  • in_prime_meridian – The Vector that will define the orientation of the sphere (as rotated on its axis)

Returns

The reference to the newly created sphere. Will have a type of Type::None if sphere insertion failed

SphereKey InsertSphere(SphereKit const &in_kit)

Creates a new sphere geometry in this segment and returns a key to it.

Parameters

in_kit – The SphereKit that will define the sphere

Returns

The reference to the newly created sphere. Will have a type of Type::None if sphere insertion failed

SpotlightKey InsertSpotlight(Point const &in_position, Point const &in_target)

Creates a new spot light geometry in this segment and returns a key to it.

SpotlightKey InsertSpotlight(SpotlightKit const &in_kit)

Creates a new spot light geometry in this segment and returns a key to it.

TextKey InsertText(Point const &in_position, char const *in_text)

Creates a new text geometry in this segment and returns a key to it.

Parameters
  • in_position – The position, in world coordinates, where the text will be inserted.

  • in_text – The text UTF-8 encoded string to insert.

Returns

A reference to the newly created TextKey object. Will have a type of Type::None if line insertion failed.

TextKey InsertText(TextKit const &in_kit)

Creates a new text geometry in this segment and returns a key to it.

UTF8 Name() const

Returns the name given to this segment when it was created.

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.

SegmentKey &operator=(SegmentKey &&in_that)

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

Parameters

in_that – An rvalue reference to a SegmentKey to take the impl from.

Returns

A reference to this SegmentKey.

SegmentKey &operator=(SegmentKey const &other)

Copy assignment operator for SegmentKey

void Optimize(SegmentOptimizationOptionsKit const &in_kit)

Optimizes this Segment according to the options specified in the SegmentOptimizationOptionsKit.

Parameters

in_kit – A SegmentOptimizationOptionsKit that specifies how the Segment should be optimized.

OptimizeMappingResults OptimizeWithMapping(SegmentOptimizationOptionsKit const &in_kit)

Optimizes this Segment according to the options specified in the SegmentOptimizationOptionsKit.

Note

If shell merging is specified in the SegmentOptimizationOptionsKit then the original shells will be preserved. Original shells may be flushed after merging information has been retrieved from the returned OptimizeMappingResults.

Parameters

in_kit – A SegmentOptimizationOptionsKit that specifies how the Segment should be optimized.

Returns

OptimizeMappingResults with information about merged shells.

ReferenceKey ReferenceGeometry(Key const &in_key)

References either a geometry key or a segment key in this segment. If the provided key is a geometry key, that geometry will be drawn as though it was in this segment. If the provided key is a segment key, all geometry in that segment will be drawn as though they were in this segment, however no attributes, subsegments or geometry in subsegments will be brought along (though attributes set directly on geometry within the segment will be preserved).

Parameters

in_key – A key to either a piece of geometry or a segment.

Returns

A reference to the newly created geometry reference. This will have a type of Type::None if geometry reference creation failed.

ReferenceKey ReferenceGeometry(Key const &in_key, ConditionalExpression const &in_conditional)

Conditionally references either a geometry key or a segment key in this segment. If the provided key is a geometry key, that geometry will be drawn as though it was in this segment. If the provided key is a segment key, all geometry in that segment will be drawn as though they were in this segment, however no attributes, subsegments or geometry in subsegments will be brought along (though attributes set directly on geometry within the segment will be preserved). The referenced geometry will only get drawn in this segment if a condition is set above the geometry reference satisfying the provided condition.

Parameters
  • in_key – A key to either a piece of geometry or a segment.

  • in_conditional – A conditional expression which will determine whether the referenced geometry gets drawn for this segment.

Returns

A reference to the newly created geometry reference. This will have a type of Type::None if geometry reference creation failed.

SegmentKey()

An uninitialized key refers to no database object and Type() will return Type::None.

explicit SegmentKey(Key const &in_that)

Shares a reference to a database object referred to by in_that. If the key assignment is invalid, this key will revert to an uninitialized state.

SegmentKey(SegmentKey &&in_that)

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

Parameters

in_that – An rvalue reference to a SegmentKey to take the impl from.

SegmentKey(SegmentKey const &in_that)

Shares a reference to a database object referred to by in_that.

SegmentKey &SetAttributeLock(AttributeLockKit const &in_kit)

Sets the attribute locks designated by in_kit on this segment.

SegmentKey &SetBounding(BoundingKit const &in_kit)

Sets the bounding designated by in_kit on this segment.

SegmentKey &SetCamera(CameraKit const &in_kit)

Sets the camera attribute designated by in_kit on this segment.

SegmentKey &SetColorInterpolation(ColorInterpolationKit const &in_kit)

Sets the color interpolation attributes designated by in_kit on this segment.

SegmentKey &SetCondition(char const *in_condition)

Sets in_condition as the only condition on this segment, replacing any existing conditions.

SegmentKey &SetConditions(size_t in_count, UTF8 const in_conditions[])

Sets in_conditions as the only conditions on this segment, replacing any existing conditions.

SegmentKey &SetConditions(UTF8Array const &in_conditions)

Sets in_conditions as the only conditions on this segment, replacing any existing conditions.

SegmentKey &SetContourLine(ContourLineKit const &in_kit)

Sets the contour line attributes designated by in_kit on this segment.

SegmentKey &SetCulling(CullingKit const &in_kit)

Sets the culling attributes designated by in_kit on this segment.

SegmentKey &SetCurveAttribute(CurveAttributeKit const &in_kit)

Sets the curve attributes designated by in_kit on this segment.

SegmentKey &SetCuttingSectionAttribute(CuttingSectionAttributeKit const &in_kit)

Sets the cutting section attributes designated by in_kit on this segment.

SegmentKey &SetCylinderAttribute(CylinderAttributeKit const &in_kit)

Sets the cylinder attributes designated by in_kit on this segment.

SegmentKey &SetDrawingAttribute(DrawingAttributeKit const &in_kit)

Sets the drawing attributes designated by in_kit on this segment.

SegmentKey &SetEdgeAttribute(EdgeAttributeKit const &in_kit)

Sets the edge attributes designated by in_kit on this segment.

SegmentKey &SetHiddenLineAttribute(HiddenLineAttributeKit const &in_kit)

Sets the hidden line attributes designated by in_kit on this segment.

SegmentKey &SetLightingAttribute(LightingAttributeKit const &in_kit)

Sets the lighting attributes designated by in_kit on this segment.

SegmentKey &SetLineAttribute(LineAttributeKit const &in_kit)

Sets the line attributes designated by in_kit on this segment.

SegmentKey &SetMarkerAttribute(MarkerAttributeKit const &in_kit)

Sets the marker attributes designated by in_kit on this segment.

SegmentKey &SetMaterialMapping(MaterialMappingKit const &in_kit)

Sets the material mappings designated by in_kit on this segment.

SegmentKey &SetMaterialPalette(char const *in_name)

Applies the material palette associated with in_name to this segment, replacing any existing material palette.

SegmentKey &SetModellingMatrix(MatrixKit const &in_kit)

Sets the modelling matrix attributes designated by in_kit on this segment.

SegmentKey &SetName(char const *in_name)

Sets the new name of this segment.

Returns

A reference to this key

SegmentKey &SetNURBSSurfaceAttribute(NURBSSurfaceAttributeKit const &in_kit)

Sets the NURBS surface attributes designated by in_kit on this segment.

SegmentKey &SetPBRMaterial(PBRMaterialKit const &in_kit)

Sets a PBR material designated by in_kit on this segment.

SegmentKey &SetPerformance(PerformanceKit const &in_kit)

Sets the performance attributes designated by in_kit on this segment.

SegmentKey &SetPixelShader(PixelShaderKey const &in_shader, HPS::Shader::Primitives in_target)

Sets a pixel shader on this segment.

SegmentKey &SetPixelShaderUniformData(HPS::Shader::Primitives in_target, ByteArray const &in_data)
SegmentKey &SetPixelShaderUniformData(HPS::Shader::Primitives in_target, size_t in_size, byte const in_data[])

Sets pixel shader uniform data on this segment.

SegmentKey &SetPriority(int in_priority)

Assigns a specific drawing priority value to this segment. It affects the order in which the segment is visited if and only if the rendering algorithm is set to Priority. Segments have a default drawing priority assigned, based on the order that they were created.

See

SubwindowKit::SetRenderingAlgorithm()

Parameters

in_priority – The drawing priority, higher priority items are drawn on top of lower priority items.

Returns

A reference to this object.

SegmentKey &SetSelectability(SelectabilityKit const &in_kit)

Sets the selectability attributes designated by in_kit on this segment.

SegmentKey &SetSphereAttribute(SphereAttributeKit const &in_kit)

Sets the sphere attributes designated by in_kit on this segment.

SegmentKey &SetSubwindow(SubwindowKit const &in_kit)

Sets the subwindow attributes designated by in_kit on this segment.

SegmentKey &SetTextAttribute(TextAttributeKit const &in_kit)

Sets the text attributes designated by in_kit on this segment.

SegmentKey &SetTextureMatrix(MatrixKit const &in_kit)

Sets the texture matrix attributes designated by in_kit on this segment.

SegmentKey &SetTransformMask(TransformMaskKit const &in_kit)

Sets the transform mask designated by in_kit on this segment.

SegmentKey &SetTransparency(TransparencyKit const &in_kit)

Sets the transparency attributes designated by in_kit on this segment.

SegmentKey &SetUserData(intptr_t in_index, ByteArray const &in_data)

Sets user data on this key.

Parameters
  • in_index – The index of the user data to set.

  • in_data – The bytes of user data to set.

Returns

A reference to this key.

SegmentKey &SetUserData(intptr_t in_index, size_t in_bytes, byte const in_data[])

Sets user data on this key.

Parameters
  • in_index – The index of the user data to set.

  • in_bytes – The number of bytes of user data to set.

  • in_data – The bytes of user data to set.

Returns

A reference to this key.

SegmentKey &SetUserData(IntPtrTArray const &in_indices, ByteArrayArray const &in_data)

Sets user data on this key.

Parameters
  • in_indices – An array of user data indices to set.

  • in_data – An array of bytes of user data to set.

Returns

A reference to this key.

SegmentKey &SetVertexShader(VertexShaderKey const &in_shader, HPS::Shader::Primitives in_target)

Sets a vertex shader on this segment.

SegmentKey &SetVertexShaderUniformData(HPS::Shader::Primitives in_target, ByteArray const &in_data)
SegmentKey &SetVertexShaderUniformData(HPS::Shader::Primitives in_target, size_t in_size, byte const in_data[])

Sets vertex shader uniform data on this segment.

SegmentKey &SetVisibility(VisibilityKit const &in_kit)

Sets the visibility attribute designated by in_kit on this segment.

SegmentKey &SetVisualEffects(VisualEffectsKit const &in_kit)

Sets the visual effects attributes designated by in_kit on this segment.

bool ShowAttributeLock(AttributeLockKit &out_kit) const

Shows the attribute locks settings on this segment.

Returns

False if no attribute locks settings exist on this segment.

bool ShowBounding(BoundingKit &out_kit) const

Shows the bounding or bounding settings on this segment.

Returns

False if no bounding or bounding settings on this segment.

bool ShowCamera(CameraKit &out_kit) const

Shows the camera attribute settings on this segment. Returns false if no camera is set on this segment.

bool ShowColorInterpolation(ColorInterpolationKit &out_kit) const

Shows the color interpolation attribute settings on this segment. Returns false if no color interpolation attribute settings exist on this segment.

bool ShowConditions(UTF8Array &out_conditions) const

Shows all conditions on this segment.

bool ShowContourLine(ContourLineKit &out_kit) const

Shows the contour line attribute settings on this segment. Returns false if no contour line attribute settings exist on this segment.

bool ShowCulling(CullingKit &out_kit) const

Shows the culling attribute settings on this segment.

Returns

False if no culling attribute settings exist on this segment.

bool ShowCurveAttribute(CurveAttributeKit &out_kit) const

Shows the curve attribute settings on this segment. Returns false if no curve attribute settings exist on this segment.

bool ShowCuttingSectionAttribute(CuttingSectionAttributeKit &out_kit) const

Shows the cutting section attribute settings on this segment. Returns false if no cutting section attribute settings exist on this segment.

bool ShowCylinderAttribute(CylinderAttributeKit &out_kit) const

Shows the cylinder attribute settings on this segment. Returns false if no cylinder attribute settings exist on this segment.

bool ShowDrawingAttribute(DrawingAttributeKit &out_kit) const

Shows the drawing attribute settings on this segment. Returns false if no drawing settings exist on this segment.

bool ShowEdgeAttribute(EdgeAttributeKit &out_kit) const

Shows the edge attribute settings on this segment. Returns false if no edge attribute settings exist on this segment.

bool ShowHiddenLineAttribute(HiddenLineAttributeKit &out_kit) const

Shows the hidden line attribute settings on this segment. Returns false if no hidden line settings exist on this segment.

size_t ShowIncluders(IncludeKeyArray &out_includes) const

Shows the all the includes of this key.

Parameters

out_includes – The list of all includes of this key.

Returns

The number of includes of this key.

size_t ShowIncluders(SegmentKeyArray &out_segments) const

Shows the all the segments which contain includes of this key.

Parameters

out_segments – The list of segments which contains includes of this key.

Returns

The number of segments which contain includes of this key.

bool ShowLightingAttribute(LightingAttributeKit &out_kit) const

Shows the lighting attribute settings on this segment. Returns false if no lighting attribute settings exist on this segment.

bool ShowLineAttribute(LineAttributeKit &out_kit) const

Shows the line attribute settings on this segment. Returns false if no line attribute settings exist on this segment.

bool ShowMarkerAttribute(MarkerAttributeKit &out_kit) const

Shows the marker attribute settings on this segment. Returns false if no marker attribute settings exist on this segment.

bool ShowMaterialMapping(MaterialMappingKit &out_kit) const

Shows the material mapping settings on this segment. Returns false if no material mapping settings exist on this segment.

bool ShowMaterialPalette(UTF8 &out_name) const

Shows the existing material palette, if any, that is active on this segment.

bool ShowModellingMatrix(MatrixKit &out_kit) const

Shows the modelling matrix setting on this segment. Returns false if no modelling matrix setting exists on this segment.

bool ShowNURBSSurfaceAttribute(NURBSSurfaceAttributeKit &out_kit) const

Shows the NURBS surface attribute settings on this segment. Returns false if no NURBS surface attribute settings exist on this segment.

bool ShowPBRMaterial(PBRMaterialKit &out_kit) const

Shows the PBR material settings on this segment. Returns false if no PBR material settings exist on this segment.

bool ShowPerformance(PerformanceKit &out_kit) const

Shows the performance attribute settings on this segment. Returns false if no performance settings exist on this segment.

bool ShowPixelShader(PixelShaderKey &out_shader, HPS::Shader::Primitives in_target) const

Shows the pixel shader for a specified target on this segment. Returns false if no pixel shader for the target exists on this segment.

bool ShowPixelShaderUniformData(HPS::Shader::Primitives in_target, ByteArray &out_data) const

Shows the pixel shader uniform data for a specified target on this segment. Returns false if no pixel shader data for the target exists on this segment.

bool ShowPriority(int &out_priority) const

Shows the drawing priority.

Parameters

out_priority – The drawing priority, higher priority items are drawn on top of lower priority items.

Returns

true if a priority was specified, false otherwise.

size_t ShowReferrers(ReferenceKeyArray &out_references) const

Shows the all the references to this key.

Parameters

out_references – The list of all references to this key.

Returns

The number of references to this key.

size_t ShowReferrers(SegmentKeyArray &out_segments) const

Shows the all the segments which contain references to this key. Note that while a segment may only appear once in the returned array, that segment could have multiple references to this key.

Parameters

out_segments – The list of segments which contains references to this key.

Returns

The number of segments which contain references to this key.

bool ShowSelectability(SelectabilityKit &out_kit) const

Shows the selectability attribute settings on this segment.

Returns

False if no selectability settings exist on this segment.

bool ShowSphereAttribute(SphereAttributeKit &out_kit) const

Shows the sphere attribute settings on this segment.

Returns

False if no sphere attribute settings exist on this segment.

size_t ShowStylers(SegmentKeyArray &out_segments) const

Shows the all the segments which are styled by this key. Note that while a segment may only appear once in the returned array, that segment could have multiple styles which refer to this key.

Parameters

out_segments – The list of segments which are styled by this key.

Returns

The number of segments which are styled by this key.

size_t ShowStylers(StyleKeyArray &out_styles) const

Shows the all the styles which refer to this key.

Parameters

out_styles – The list of all styles which refer to this key.

Returns

The number of styles which refer to this key.

size_t ShowSubsegments() const
Returns

A count of all child segments of this segment

size_t ShowSubsegments(SegmentKeyArray &out_children) const
Returns

A count of all child segments of this segment and populates out_children with keys to them.

bool ShowSubwindow(SubwindowKit &out_kit) const

Shows the subwindow attribute settings on this segment.

Returns

False if no subwindow attribute settings exist on this segment.

bool ShowTextAttribute(TextAttributeKit &out_kit) const

Shows the text attribute settings on this segment. Returns false if no text attribute settings exist on this segment.

bool ShowTextureMatrix(MatrixKit &out_kit) const

Shows the texture matrix setting on this segment.

Returns

False if no texture matrix setting exists on this segment.

bool ShowTransformMask(TransformMaskKit &out_kit) const

Shows the transform mask settings on this segment.

Returns

False if no bounding settings exist on this segment.

bool ShowTransparency(TransparencyKit &out_kit) const

Shows the transparency attribute settings on this segment.

Returns

False if no transparency attribute settings exist on this segment.

bool ShowUserData(intptr_t in_index, ByteArray &out_data) const

Shows the user data at a given index for this key.

Parameters
  • in_index – The index of the user data to show.

  • out_data – The user data at the given index.

Returns

true if there is user data at the given index, false otherwise.

bool ShowUserData(IntPtrTArray &out_indices, ByteArrayArray &out_data) const

Shows all user data for this key.

Parameters
  • out_indices – An array of all user data indices set on this key.

  • out_data – An array of all user data set on this key.

Returns

true if there is user data on this key, false otherwise.

size_t ShowUserDataCount() const

Get the number of user data indices set on this key.

bool ShowUserDataIndices(IntPtrTArray &out_indices) const

Shows the indices of all user data set on this key.

Parameters

out_indices – The user data indices set on this key.

Returns

The number of user data indices set on this key.

bool ShowVertexShader(VertexShaderKey &out_shader, HPS::Shader::Primitives in_target) const

Shows the vertex shader for a specified target on this segment. Returns false if no vertex shader for the target exists on this segment.

bool ShowVertexShaderUniformData(HPS::Shader::Primitives in_target, ByteArray &out_data) const

Shows the vertex shader uniform data for a specified target on this segment. Returns false if no vertex shader data for the target exists on this segment.

bool ShowVisibility(VisibilityKit &out_kit) const

Shows the visibility attribute settings on this segment.

Returns

False if no visibility is set on this segment.

bool ShowVisualEffects(VisualEffectsKit &out_kit) const

Shows the visual effects attribute settings on this segment.

Returns

False if no visual effects attribute settings exist on this segment.

SegmentKey Subsegment(char const *in_segment_name = "", bool in_create_if_not_present = true) const

Returns the segment contained by this key with name of in_segment_name. The segment will be created automatically if it does not exist. To prevent automatic segment creation, pass a value of false for in_create_not_present.

SegmentKey &UnsetAllUserData()

Removes all user data from this key.

Returns

A reference to this key.

SegmentKey &UnsetAttributeLock()

Removes all attribute locks settings from this segment.

SegmentKey &UnsetBounding()

Removes all bounding settings from this segment.

SegmentKey &UnsetCamera()

Removes any camera set on this segment.

SegmentKey &UnsetColorInterpolation()

Removes any color interpolation attributes set on this segment.

SegmentKey &UnsetConditions()

Unsets all conditions on this segment.

SegmentKey &UnsetContourLine()

Removes any contour line attributes set on this segment.

SegmentKey &UnsetCulling()

Removes all culling attribute settings from this segment.

SegmentKey &UnsetCurveAttribute()

Removes all curve attribute settings from this segment.

SegmentKey &UnsetCuttingSectionAttribute()

Removes all cutting section attribute settings from this segment.

SegmentKey &UnsetCylinderAttribute()

Removes all cylinder attribute settings from this segment.

SegmentKey &UnsetDrawingAttribute()

Removes all drawing settings from this segment.

SegmentKey &UnsetEdgeAttribute()

Removes all edge attribute settings from this segment.

SegmentKey &UnsetHiddenLineAttribute()

Removes all hidden line settings from this segment.

SegmentKey &UnsetLightingAttribute()

Removes all lighting attribute settings from this segment.

SegmentKey &UnsetLineAttribute()

Removes all line attribute settings from this segment.

SegmentKey &UnsetMarkerAttribute()

Removes all marker attribute settings from this segment.

SegmentKey &UnsetMaterialMapping()

Removes all material mapping settings from this segment.

SegmentKey &UnsetMaterialPalette()

Removes the existing material palette, if any, that is active on this segment.

SegmentKey &UnsetModellingMatrix()

Removes any modelling matrix settings from this segment.

SegmentKey &UnsetNURBSSurfaceAttribute()

Removes all NURBS surface attribute settings from this segment.

SegmentKey &UnsetPBRMaterial()

Removes all PBR material settings from this segment.

SegmentKey &UnsetPerformance()

Removes all performance settings from this segment.

SegmentKey &UnsetPixelShader(HPS::Shader::Primitives in_target = HPS::Shader::Primitives::All)

Removes the specified (defaults to All) pixel shader settings from this segment.

SegmentKey &UnsetPriority()

Removes the drawing priority setting.

Returns

A reference to this object.

SegmentKey &UnsetSelectability()

Removes all selectability settings from this segment.

SegmentKey &UnsetSphereAttribute()

Removes all sphere attribute settings from this segment.

SegmentKey &UnsetSubwindow()

Removes all subwindow attribute settings from this segment.

SegmentKey &UnsetTextAttribute()

Removes all text attribute settings from this segment.

SegmentKey &UnsetTextureMatrix()

Removes any texture matrix settings from this segment.

SegmentKey &UnsetTransformMask()

Removes all transform mask settings from this segment.

SegmentKey &UnsetTransparency()

Removes all transparency attribute settings from this segment.

SegmentKey &UnsetUserData(HPS::IntPtrTArray const &in_indices)

Removes the user data at the given indices from this key.

Parameters

in_indices – The indices of the user data to remove.

Returns

A reference to this key.

SegmentKey &UnsetUserData(intptr_t in_index)

Removes the user data at the given index from this key.

Parameters

in_index – The index of the user data to remove.

Returns

A reference to this key.

SegmentKey &UnsetUserData(size_t in_count, intptr_t const in_indices[])

Removes the user data at the given indices from this key.

Parameters
  • in_count – The size of the following array.

  • in_indices – The indices of the user data to remove.

Returns

A reference to this key.

SegmentKey &UnsetVertexShader(HPS::Shader::Primitives in_target = HPS::Shader::Primitives::All)

Removes the specified (defaults to All) vertex shader settings from this segment.

SegmentKey &UnsetVisibility()

Removes all visibility settings from this segment.

SegmentKey &UnsetVisualEffects()

Removes all visual effects attribute settings from this segment.

~SegmentKey()

Releases a reference to a database object but does not destroy the database object.

Public Static Attributes

static const HPS::Type staticType = HPS::Type::SegmentKey