public class ImageNodeStyleRenderer extends Object implements INodeStyleRenderer, IShapeGeometry, IBoundsProvider, IVisibilityTestable, IMarqueeTestable, IHitTestable, ILookup, IVisualCreator
ImageNodeStyle
instances.EMPTY, UNBOUNDED
ALWAYS, NEVER
ALWAYS, NEVER
ALWAYS, NEVER
Constructor and Description |
---|
ImageNodeStyleRenderer() |
Modifier and Type | Method and Description |
---|---|
protected void |
configure()
Prepares this instance for subsequent calls after the style and node have been initialized.
|
Node |
createVisual(IRenderContext context)
This method is called by the framework to create a
Node that will be included into the IRenderContext . |
RectD |
getBounds(ICanvasContext context)
Returns the layout bounds as an upper bound for the painting bound.
|
IBoundsProvider |
getBoundsProvider(INode node,
INodeStyle style)
|
ILookup |
getContext(INode node,
INodeStyle style)
|
IHitTestable |
getHitTestable(INode node,
INodeStyle style)
|
protected Image |
getImage()
Get the image that is currently used to render the style.
|
PointD |
getIntersection(PointD inner,
PointD outer)
Tries to use the
NormalizedOutline to perform the intersection
calculation, otherwise reverts to default (rectangular) behavior. |
IRectangle |
getLayout()
Returns the
Layout of the node this renderer is currently configured for. |
IMarqueeTestable |
getMarqueeTestable(INode node,
INodeStyle style)
|
protected INode |
getNode()
Gets the currently configured node.
|
GeneralPath |
getOutline()
Tries to use the
NormalizedOutline to create the outline shape path,
otherwise reverts to default (rectangular) behavior. |
IShapeGeometry |
getShapeGeometry(INode node,
INodeStyle style)
|
protected ImageNodeStyle |
getStyle()
Gets the currently configured style.
|
IVisibilityTestable |
getVisibilityTestable(INode node,
INodeStyle style)
|
IVisualCreator |
getVisualCreator(INode node,
INodeStyle style)
|
boolean |
isHit(IInputModeContext context,
PointD location)
Tries to use
NormalizedOutline to perform the hit test analysis, otherwise
reverts to default (rectangular) behavior. |
boolean |
isInBox(IInputModeContext context,
RectD rectangle)
Tries to use the
NormalizedOutline to perform the marquee intersection
analysis, otherwise reverts to default (rectangular) behavior. |
boolean |
isInside(PointD location)
Tries to use the
NormalizedOutline to perform the contains test, otherwise
reverts to default (rectangular) behavior. |
boolean |
isVisible(ICanvasContext context,
RectD rectangle)
Determines visibility by checking for an intersection with the
Layout . |
<TLookup> TLookup |
lookup(Class<TLookup> type)
Implements the
ILookup interface. |
protected void |
setNode(INode value)
Sets the currently configured node.
|
protected void |
setStyle(ImageNodeStyle value)
Sets the currently configured style.
|
Node |
updateVisual(IRenderContext context,
Node oldVisual)
This method updates or replaces a previously created
Node for inclusion in the IRenderContext . |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
fromRectangle
create
createDictionaryLookup, createDynamic, createSingle, createSingle, createWrapped, lookup, lookup, safeLookup
protected void configure()
Upon invocation the Style
and Node
properties have been populated by the
getVisualCreator(INode, INodeStyle)
, getBoundsProvider(INode, INodeStyle)
,
getHitTestable(INode, INodeStyle)
, or getMarqueeTestable(INode, INodeStyle)
methods.
This is an empty implementation. Subclasses might have to override this method.
public Node createVisual(IRenderContext context)
IVisualCreator
Node
that will be included into the IRenderContext
.
CanvasControl
uses this interface through the ICanvasObjectDescriptor
to populate the visual canvas object tree.
createVisual
in interface IVisualCreator
context
- The context that describes where the visual will be used.null
.IVisualCreator.updateVisual(IRenderContext, Node)
public RectD getBounds(ICanvasContext context)
This implementation simply sets the Layout
's bounds to the scratch variable and returns.
getBounds
in interface IBoundsProvider
context
- the context to calculate the bounds fornull
to indicate an unbound areapublic IBoundsProvider getBoundsProvider(INode node, INodeStyle style)
getBoundsProvider
in interface INodeStyleRenderer
node
- The node to retrieve the bounds provider for. The value will be stored in the Node
property.style
- The style to associate with the node. The value will be stored in the Style
property.this
getBounds(ICanvasContext)
public ILookup getContext(INode node, INodeStyle style)
style
and node
parameters, does not call configure()
and returns
this
.
As this method may be called often it will not automatically call configure()
, instead subclasses should ensure
that in the lookup(Class)
method call they should call configure()
only if needed, i.e. if they decide
to return this
or an instance that depends on a correctly configured this
.
getContext
in interface INodeStyleRenderer
node
- The node to query the context for. The value will be stored in the Node
property.style
- The style to associate with the node. The value will be stored in the Style
property.this
lookup(Class)
public IHitTestable getHitTestable(INode node, INodeStyle style)
getHitTestable
in interface INodeStyleRenderer
node
- The node to query hit test with. The value will be stored in the Node
property.style
- The style to associate with the node. The value will be stored in the Style
property.this
isHit(IInputModeContext, PointD)
protected Image getImage()
public PointD getIntersection(PointD inner, PointD outer)
NormalizedOutline
to perform the intersection
calculation, otherwise reverts to default (rectangular) behavior.getIntersection
in interface IShapeGeometry
inner
- The first point of the line that is inside the shape.outer
- The second point of the line that is outside the shape.public final IRectangle getLayout()
Layout
of the node this renderer is currently configured for.
Returns Node.Layout
.
public IMarqueeTestable getMarqueeTestable(INode node, INodeStyle style)
getMarqueeTestable
in interface INodeStyleRenderer
node
- The node to query marquee intersection tests. The value will be stored in the Node
property.style
- The style to associate with the node. The value will be stored in the Style
property.this
isInBox(IInputModeContext, RectD)
protected final INode getNode()
setNode(INode)
public GeneralPath getOutline()
NormalizedOutline
to create the outline shape path,
otherwise reverts to default (rectangular) behavior.getOutline
in interface IShapeGeometry
null
if no outline can be provided.public IShapeGeometry getShapeGeometry(INode node, INodeStyle style)
getShapeGeometry
in interface INodeStyleRenderer
node
- The node to retrieve the shape geometry for. The value will be stored in the Node
property.style
- The style to associate with the node. The value will be stored in the Style
property.this
isInside(PointD)
,
getIntersection(PointD, PointD)
protected final ImageNodeStyle getStyle()
setStyle(ImageNodeStyle)
public IVisibilityTestable getVisibilityTestable(INode node, INodeStyle style)
style
and node
parameters, does not call configure()
and returns
this
.
Unlike most of the other methods this implementation does not call configure()
. If the subclass
implementation depends on this instance to be configured, it needs to call Configure
in
isVisible(ICanvasContext, RectD)
.
getVisibilityTestable
in interface INodeStyleRenderer
node
- The node to query visibility tests. The value will be stored in the Node
property.style
- The style to associate with the node. The value will be stored in the Style
property.this
isVisible(ICanvasContext, RectD)
public IVisualCreator getVisualCreator(INode node, INodeStyle style)
getVisualCreator
in interface INodeStyleRenderer
node
- The node to retrieve the IVisualCreator
for. The value will be stored in the Node
property.style
- The style to associate with the node. The value will be stored in the Style
property.this
createVisual(IRenderContext)
,
updateVisual(IRenderContext, Node)
public boolean isHit(IInputModeContext context, PointD location)
NormalizedOutline
to perform the hit test analysis, otherwise
reverts to default (rectangular) behavior.isHit
in interface IHitTestable
context
- the context the hit test is performed inlocation
- the coordinates in world coordinate systempublic boolean isInBox(IInputModeContext context, RectD rectangle)
NormalizedOutline
to perform the marquee intersection
analysis, otherwise reverts to default (rectangular) behavior.isInBox
in interface IMarqueeTestable
context
- the current input mode contextrectangle
- the box describing the marquee's boundstrue
if the item is considered to be captured by the marqueepublic boolean isInside(PointD location)
NormalizedOutline
to perform the contains test, otherwise
reverts to default (rectangular) behavior.isInside
in interface IShapeGeometry
location
- The point to test.public boolean isVisible(ICanvasContext context, RectD rectangle)
Layout
.isVisible
in interface IVisibilityTestable
context
- The context.rectangle
- The current clipLayout
is visible in the clip.public <TLookup> TLookup lookup(Class<TLookup> type)
ILookup
interface.
This method will be used by default if getContext(INode, INodeStyle)
has been queried for a lookup
implementation. Note that it cannot be assumed that configure()
has already been invoked. However, normally Node
and Style
will be correctly configured if invoked directly after GetContext
. Subclass
implementations should make sure to configure this instance before they return this
as a result of a successful
lookup. This implementation will check if type.IsInstanceOfType(this)
and will call configure()
on
success and return this
.
protected final void setNode(INode value)
value
- The Node to set.getNode()
protected final void setStyle(ImageNodeStyle value)
value
- The Style to set.getStyle()
public Node updateVisual(IRenderContext context, Node oldVisual)
IVisualCreator
Node
for inclusion in the IRenderContext
.
The CanvasControl
uses this method to give implementations a chance to update an existing
Visual that has previously been created by the same instance during a call to IVisualCreator.createVisual(IRenderContext)
.
Implementation may update the oldVisual
and return that same reference, or create a new visual and return the
new instance or null
.
updateVisual
in interface IVisualCreator
context
- The context that describes where the visual will be used in.oldVisual
- The visual instance that had been returned the last time the IVisualCreator.createVisual(IRenderContext)
method was called on
this instance.oldVisual
, if this instance modified the visual, or a new visual that should replace the existing one in the
canvas object visual tree.IVisualCreator.createVisual(IRenderContext)
,
ICanvasObjectDescriptor
,
CanvasControl