C

DelegatingEdgeStyle
abstract

A foundational abstract implementation of IEdgeStyle that delegates its behavior to pre-configured style instances.

Remarks

This class supports three primary use cases:

  • Wrapping another style with a customized API. This is ideal for providing a simpler or domain-specific API by mapping properties from a subclass to the corresponding values of the delegated style. Subclasses typically return the preconfigured instance from getStyle and modify it in the constructor or through custom property setters.
  • Dynamically reconfiguring a style based on the target edge. In this scenario, the implementation keeps one or more style instances as fields and switches between them in getStyle, depending on attributes of the edge, such as its tag property. This approach may also involve dynamically reconfiguring the style instance for specific edge instances. When appropriate, implementations may override clone to simply return this.
  • Replacing one part of the implementation of another style. Instead of subclassing another style, the implementation delegates to all but a subset of the various aspects to an existing implementation and provides its own implementation, otherwise, via overriding specific methods of the base EdgeStyleBase<TVisual> class.

Subclasses must implement getStyle and should ensure that it executes quickly and without allocations.

See Also

Developer's Guide

API

getStyle

Members

Show:

Constructors

Creates a new instance of this style.

Properties

Gets the renderer implementation for this instance.
The private implementation will delegate all API calls back to this instance.
readonlyfinal

Methods

Adds the arrows to a given container.
protected

Parameters

context: IRenderContext
The context for the rendering.
group: SVGGElement
The container to which the arrows should be added.
edge: IEdge
The edge that is being rendered.
edgePath: GeneralPath
The edge path.
sourceArrow: IArrow
The source arrow.
targetArrow: IArrow
The target arrow.
Returns a memberwise clone.
Note that stateless subclasses that implement the flyweight pattern and do not carry any state can override this method and return this, instead, as the base implementation is completely stateless.

Return Value

Object
A clone of this instance.
Creates the visual with the style from getStyle and the edge from getEdge.
protected

Parameters

context: IRenderContext
The render context.
edge: IEdge
The edge to which this style instance is assigned.

Return Value

Visual
The visual as required by the createVisual interface.

See Also

API
updateVisual
Crops the edge's path at the nodes.
This implementation uses the IEdgePathCropper instances found in the lookup of the source and target port of the edge to perform the actual cropping.
protected

Parameters

edge: IEdge
The edge that is being rendered.
sourceArrow: IArrow
The source arrow instance.
targetArrow: IArrow
The target arrow instance.
path: GeneralPath
The path that should be cropped.

Return Value

GeneralPath
The cropped path. This can be either the same instance of the given path or a newly created instance.
Gets the bounds with the style from getStyle and the edge from getEdge.
protected

Parameters

context: ICanvasContext
The canvas context.
edge: IEdge
The edge to which this style instance is assigned.

Return Value

Rect
The visual bounds of the visual representation.
Returns the edge used for rendering.
Overriding this method allows for advanced customizations such as using a SimpleEdge with modified bends and use it for rendering while preserving the original edge's structure.
protected

Parameters

edge: IEdge
The original edge to be rendered.

Return Value

IEdge
The edge used for rendering. By default, this method returns the provided edge. Subclasses can override this method to return a different edge, such as a SimpleEdge, to customize rendering behavior.
Gets the path of the edge from getEdge by using the style from getStyle.
protected

Parameters

edge: IEdge
The edge.

Return Value

GeneralPath
The path.
Gets the segment count of the edge from getEdge by using the style from getStyle.
protected

Parameters

edge: IEdge
The edge.

Return Value

number
The segment count.
Calculates the source arrow anchor and direction for a given arrow and path.
protected

Parameters

path: GeneralPath
The path of the edge.
arrow: IArrow
The arrow.

Return Value

Tangent
The anchor and directional vector of the arrow, if any exist.
Provides the core implementation of this style, returning the instance to delegate rendering logic.
This method should ideally return the same instance for identical items to ensure optimal performance. It should avoid performing expensive operations as it will be invoked frequently during rendering and other operations like hit-testing. Ideally, it should be implemented allocation-free.
protectedabstract

Parameters

edge: IEdge
The edge for which the style instance should be returned and applied.

Return Value

IEdgeStyle
The IEdgeStyle instance responsible for handling all related requests.
Determines the tangent of the edge from getEdge by using the style from getStyle.
protected

Parameters

edge: IEdge
The edge.
ratio: number
A value between 0 and 1 inclusively that indicates a ratio from the beginning to the end of the edge path.

Return Value

Tangent
The tangent, if it exists.
Determines the tangent of the edge from getEdge by using the style from getStyle.
protected

Parameters

edge: IEdge
The edge.
segmentIndex: number
Index of the edge segment.
ratio: number
A value between 0 and 1 inclusively that indicates a ratio from the beginning to the end of the edge segment.

Return Value

Tangent
The tangent, if it exists.
Calculates the target arrow anchor and direction for a given arrow and path.
protected

Parameters

path: GeneralPath
The path of the edge.
arrow: IArrow
The arrow.

Return Value

Tangent
The anchor and directional vector of the arrow, if any exist.
Determines with the style from getStyle whether the visualization of the edge from getEdge is hit at the given location.
protected

Parameters

context: IInputModeContext
The input mode context.
location: Point
The point to test.
edge: IEdge
The edge to which this style instance is assigned.

Return Value

boolean
true if the specified edge is hit; false otherwise.
Determines with the style from getStyle whether the visualization of the edge from getEdge is included in the marquee selection.
protected

Parameters

context: IInputModeContext
The input mode context.
rectangle: Rect
The marquee selection box.
edge: IEdge
The edge to which this style instance is assigned.

Return Value

boolean
true if the specified edge is visible and selected by the marquee rectangle; false otherwise.
Determines with the style from getStyle whether the visualization of the edge from getEdge is included in the lasso selection.
protected

Parameters

context: IInputModeContext
The input mode context.
path: GeneralPath
The lasso selection path.
edge: IEdge
The edge to which this style instance is assigned.

Return Value

boolean
true if the specified edge is visible and selected by the lasso path; false otherwise.
Determines with the style from getStyle whether the visualization of the edge from getEdge is visible.
protected

Parameters

context: ICanvasContext
The canvas context.
rectangle: Rect
The clipping rectangle.
edge: IEdge
The edge to which this style instance is assigned.

Return Value

boolean
true if the specified edge is visible in the clipping rectangle; false otherwise.
Performs the lookup operation with the style from getStyle and the edge from getEdge.
protected

Parameters

edge: IEdge
The edge to use for the context lookup.
type: Constructor
The type to query.

Return Value

any
An implementation of the type or null.
Updates the arrows in a given container.
protected

Parameters

context: IRenderContext
The context for the rendering.
group: SVGGElement
The container to which the arrows should be added.
edge: IEdge
The edge that is being rendered.
edgePath: GeneralPath
The edge path.
sourceArrow: IArrow
The source arrow.
targetArrow: IArrow
The target arrow.
Updates the visual with the style from getStyle and the edge from getEdge.
protected

Parameters

context: IRenderContext
The render context.
oldVisual: Visual
The visual that has been created in the call to createVisual.
edge: IEdge
The edge to which this style instance is assigned.

Return Value

Visual
The visual as required by the createVisual interface.

See Also

API
createVisual