Constructors

Attributes

#
public Attributes(T owner)
owner (T)

Properties

AggregateBounds

#
public RectangleF AggregateBounds { get; }
Gets the aggregate bounds of this object. This will include the bounds of all objects attached in some way to this object.
AggregateBounds

Bounds

#
public RectangleF Bounds { get; protected set; }
Gets the total outer bounds of the attributes. The attributes are assumed not to exist beyond this limit. Note that the bounds are updated during calls to Layout(), so may be out-of-date or even unset when called outside of the usual process.
Bounds
Explicit

IAttributes.Owner

#
Owner

IntegerPivot

#
protected virtual bool IntegerPivot { get; }
Gets whether the pivot of these attributes is always rounded to integer coordinates. By default this property returns true, as the vast majority of objects ought to be laid out in integer coordinates.

Owner

#
public T Owner { get; }

Pivot

#
public PointF Pivot { get; set; }
Gets or sets the pivot point for these attributes. The pivot is the main point around which the attribute geometry is positioned during layout.
Pivot

Snappable

#
public virtual bool Snappable { get; }
Gets whether these attributes can be used to align other objects on the canvas. Return false specifically when your object shape is not rectangular.
Snappable

Stack

#
protected StackF Stack { get; set; }
The horizontal layout stack along the apex row. Derived classes typically (re)assign this during Layout(Shape) and reference sub-regions via class-local index constants. The default PivotMoved(PointF, PointF) translates the stack along with Bounds.

Methods

DefaultTooltipContent

#
protected bool DefaultTooltipContent(PointF point, out IIcon icon, out string caption, out string message, out object details, out bool warnings, out bool errors)
Create the tooltip fields which are associated with this object by default.
point (PointF)Point for tooltip.
icon (out IIcon)Icon.
caption (out string)Caption text.
message (out string)Message text.
details (out object)Either text or an Action<Context, Rectangle> or null.
warnings (out bool)Boolean flag indicating the existence of warnings.
errors (out bool)Boolean flag indicating the existence of errors.
True if a tooltip ought to be shown for this object at the given location.

Draw

#
protected virtual void Draw(Context context, Skin skin, Capsule capsule)
Internal drawing method. Consider overriding this one instead of Draw(Context, Skin).
context (Context)Graphics context.
skin (Skin)Skin.
capsule (Capsule)Provided as a courtesy. There is no expectation this is the shape that must be drawn.

Draw

#
public virtual void Draw(Context context, Skin skin)
Render the owner object of these attributes.
context (Context)Drawing context.
skin (Skin)Object skin.
Draw

HandleDoubleClick

#
public virtual bool HandleDoubleClick(PointF point)
Handle a double click operation on these attributes. Since this is such a common operation it is provided by the base interface, rather than requiring an IResponseAttribues implementation.
point (PointF)
HandleDoubleClick

Intersects

#
public virtual bool Intersects(RectangleF box)
Test whether a given rectangle intersects the shape of these attributes.
box (RectangleF)Intersection box.
True if rectangle intersects these attributes.
Intersects

InvalidateDisplay

#
public virtual void InvalidateDisplay()
Signals that the attribute's visual appearance has changed without affecting layout. Fires the owner's DocumentObject.OnDisplayChanged(), which propagates through the document to the canvas redraw subscription.
InvalidateDisplay

InvalidateLayout

#
public abstract void InvalidateLayout()
Marks the layout as dirty so it gets recomputed on the next draw cycle. Subclasses typically flip an internal _layoutValid flag. Most callers should also raise DocumentObject.OnLayoutChanged() on the owner to actually trigger a canvas redraw.
InvalidateLayout

IsCoincident

#
public virtual bool IsCoincident(PointF point)
Test whether a given point is considered to be on the interior of these attributes.
point (PointF)Test point.
True if point is on the object.
IsCoincident

IsContained

#
public virtual bool IsContained(RectangleF box)
Test whether the shape of these attributes is fully contained within a given rectangle.
box (RectangleF)Containment box.
True if rectangle contains these attributes.
IsContained

Layout

#
public abstract void Layout(Shape shape)
Perform a layout operation on these attributes. Layout() ought to be called as part of every control painting process.
shape (Shape)Shape skin to use.
Layout

Move

#
public virtual void Move(float dx, float dy)
Move these attributes a certain amount in X and Y.
dx (float)Motion in X. Positive is towards the right.
dy (float)Motion in Y. Positive is downwards.
Move

PivotMoved

#
protected virtual void PivotMoved(PointF oldPivot, PointF newPivot)
Override this method if your attributes need to handle pivot motion. The default implementation translates Bounds and Stack by the pivot delta. Overrides should typically chain to this base implementation.
oldPivot (PointF)
newPivot (PointF)

ShowTooltipAt

#
public virtual bool ShowTooltipAt(PointF point)
Display the tooltip at the given point. The tooltip can be accessed via Tooltip.
point (PointF)Location of pointer.
True if tooltip was shown.
ShowTooltipAt

TooltipDetails

#
protected virtual object TooltipDetails(PointF point, ObjectSolutionState state)
Override this method to return custom details for a tooltip.
point (PointF)
state (ObjectSolutionState)
One of the acceptable types of data for details. For example an array of LazyStrings or a Action<Context, RectangleF>.