pub struct DecorationElement {
pub id: DecorationId,
pub base_bounds: RectF,
pub canvas_size: (u32, u32),
pub followers: Vec<(DecorationId, RectF)>,
}Expand description
Renderer-measured base bounds, before user offsets. A fresh frame supplies these after resizing/reflow; hosts never reconstruct text or axis geometry.
Fields§
§id: DecorationId§base_bounds: RectF§canvas_size: (u32, u32)§followers: Vec<(DecorationId, RectF)>Parts that move together with this target (e.g. a detached axis’s labels).
Trait Implementations§
Source§impl Clone for DecorationElement
impl Clone for DecorationElement
Source§impl Debug for DecorationElement
impl Debug for DecorationElement
Source§impl Draggable<DecorationLayout> for DecorationElement
impl Draggable<DecorationLayout> for DecorationElement
Source§fn nudge_element(&self) -> DecorationElement
fn nudge_element(&self) -> DecorationElement
The nudge-path element this drag target moves. This mapping is the
only thing an implementation defines; movement itself happens in
Self::drag_by.Source§fn drag_by(&self, cfg: &mut C, dx: f32, dy: f32) -> NudgeResult
fn drag_by(&self, cfg: &mut C, dx: f32, dy: f32) -> NudgeResult
Default drag pipeline: apply the pointer delta through
Config::nudge. Returns NudgeResult::Rejected (and leaves cfg
untouched) when the move would leave the chart area. Read moreSource§impl Resizable<DecorationLayout> for DecorationElement
impl Resizable<DecorationLayout> for DecorationElement
Source§fn resize_targets(&self, handle: ResizeHandle) -> (Option<Self>, Option<Self>)
fn resize_targets(&self, handle: ResizeHandle) -> (Option<Self>, Option<Self>)
The nudge elements a handle’s (horizontal, vertical) motion drives —
the only thing an implementation defines.
None components are
discarded (an edge-midpoint handle resizes along one dimension).Source§fn resize_by(
&self,
cfg: &mut DecorationLayout,
handle: ResizeHandle,
dx: f32,
dy: f32,
) -> NudgeResult
fn resize_by( &self, cfg: &mut DecorationLayout, handle: ResizeHandle, dx: f32, dy: f32, ) -> NudgeResult
Default resize pipeline: each motion component routes through
Config::nudge on its target element, so resize obeys exactly the
same feasibility rules as dragging those elements directly.Source§fn resize_handles(
&self,
cfg: &C,
measure: &dyn MeasureText,
) -> Option<[(ResizeHandle, RectF); 8]>
fn resize_handles( &self, cfg: &C, measure: &dyn MeasureText, ) -> Option<[(ResizeHandle, RectF); 8]>
Default handle geometry: eight squares on the selection box (element
bounds +
SELECTION_PADDING).Source§fn hit_resize_handle(
&self,
cfg: &C,
measure: &dyn MeasureText,
x: f32,
y: f32,
) -> Option<ResizeHandle>
fn hit_resize_handle( &self, cfg: &C, measure: &dyn MeasureText, x: f32, y: f32, ) -> Option<ResizeHandle>
Default handle hit test.
Source§impl Selectable<DecorationLayout> for DecorationElement
impl Selectable<DecorationLayout> for DecorationElement
Source§fn bounds(&self, cfg: &DecorationLayout, _: &dyn MeasureText) -> Option<RectF>
fn bounds(&self, cfg: &DecorationLayout, _: &dyn MeasureText) -> Option<RectF>
Interaction bounds of this element under
cfg, or None when the
element is hidden, empty, or the layout is infeasible. Text-bearing
elements use measure; tick-label elements remain representative
strips rather than exact rendered-label unions.Source§fn as_draggable(&self) -> Option<&dyn Draggable<DecorationLayout>>
fn as_draggable(&self) -> Option<&dyn Draggable<DecorationLayout>>
Source§fn as_resizable(&self) -> Option<&dyn Resizable<DecorationLayout>>
fn as_resizable(&self) -> Option<&dyn Resizable<DecorationLayout>>
This element’s resize capability, if any. Elements that also implement
Resizable override this with Some(self) — their selection box
then grows the eight resize handles automatically.Source§fn element_id(&self) -> String
fn element_id(&self) -> String
Stable element name for hosts that key on identity rather than
HitId (e.g. a wasm host exposing hit-testing as strings):
"data_area", "axis_bottom", "tick_labels_left",
"axis_title_left", "legend", "chart_title",
"colorbar_axis", "colorbar_tick_labels", "colorbar_title".
Custom host elements keep the default.Source§fn selection_box(
&self,
cfg: &C,
measure: &dyn MeasureText,
) -> Option<SelectionBox>
fn selection_box( &self, cfg: &C, measure: &dyn MeasureText, ) -> Option<SelectionBox>
Default selection policy: a blue box
SELECTION_PADDING px outside
the bounds, stroked SELECTION_STROKE_WIDTH px in
SELECTION_COLOR. Resizable elements additionally carry the eight
resize handle squares.Source§fn contains(&self, cfg: &C, measure: &dyn MeasureText, x: f32, y: f32) -> bool
fn contains(&self, cfg: &C, measure: &dyn MeasureText, x: f32, y: f32) -> bool
Default hit test: point-in-bounds.
Auto Trait Implementations§
impl Freeze for DecorationElement
impl RefUnwindSafe for DecorationElement
impl Send for DecorationElement
impl Sync for DecorationElement
impl Unpin for DecorationElement
impl UnsafeUnpin for DecorationElement
impl UnwindSafe for DecorationElement
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more