pub struct ShapePiece { /* private fields */ }Expand description
A shape piece — one data-oriented piece parameterised by ShapeKind, rendered atop the canvas.
Implementations§
Source§impl ShapePiece
impl ShapePiece
pub fn fill<M>(self, p: impl IntoReactive<Color, M>) -> ShapePiece
Sourcepub fn fill_linear<M>(
self,
g: impl IntoReactive<LinearGradient, M>,
) -> ShapePiece
pub fn fill_linear<M>( self, g: impl IntoReactive<LinearGradient, M>, ) -> ShapePiece
Fill with a LinearGradient (unit points resolve against the shape’s bounds). Takes
precedence over Self::fill when both are set; reactive like every other property:
rectangle().fill_linear(move || sky_gradient(state.get())).
Sourcepub fn fill_radial<M>(
self,
g: impl IntoReactive<RadialGradient, M>,
) -> ShapePiece
pub fn fill_radial<M>( self, g: impl IntoReactive<RadialGradient, M>, ) -> ShapePiece
Fill with a RadialGradient (center + radius in the unit space of the shape’s bounds,
stretching elliptically in non-square bounds). Precedence: radial over linear over solid.
pub fn stroke<M1, M2>( self, color: impl IntoReactive<Color, M1>, width: impl IntoReactive<f64, M2>, ) -> ShapePiece
Sourcepub fn inset<M>(self, v: impl IntoReactive<f64, M>) -> ShapePiece
pub fn inset<M>(self, v: impl IntoReactive<f64, M>) -> ShapePiece
Uniform inset applied before resolving geometry (keeps strokes inside the frame).
Sourcepub fn rotate<M>(self, deg: impl IntoReactive<f64, M>) -> ShapePiece
pub fn rotate<M>(self, deg: impl IntoReactive<f64, M>) -> ShapePiece
Rotate the drawn shape about its centre, in degrees.
Sourcepub fn scale<M>(self, s: impl IntoReactive<f64, M>) -> ShapePiece
pub fn scale<M>(self, s: impl IntoReactive<f64, M>) -> ShapePiece
Scale the drawn shape about its centre (uniform).
Sourcepub fn offset<M1, M2>(
self,
x: impl IntoReactive<f64, M1>,
y: impl IntoReactive<f64, M2>,
) -> ShapePiece
pub fn offset<M1, M2>( self, x: impl IntoReactive<f64, M1>, y: impl IntoReactive<f64, M2>, ) -> ShapePiece
Translate the drawn shape within its frame.
Sourcepub fn at(self, fx: f64, fy: f64, fw: f64, fh: f64) -> ShapePiece
pub fn at(self, fx: f64, fy: f64, fw: f64, fh: f64) -> ShapePiece
Resolve this shape inside the fractional sub-rect (fx, fy, fw, fh) of its bounds —
unit-space, applied before Self::inset. The workhorse for composing glyphs in a
shape_group, mirroring hand-drawn Rect::new(ox + fx * s, oy + fy * s, …) canvas code.
Sourcepub fn on_tap(self, f: impl Fn() + 'static) -> ShapePiece
pub fn on_tap(self, f: impl Fn() + 'static) -> ShapePiece
Fire when the shape is tapped (path-precise — the tap is tested against the resolved path).
Sourcepub fn on_drag(self, f: impl Fn(Drag) + 'static) -> ShapePiece
pub fn on_drag(self, f: impl Fn(Drag) + 'static) -> ShapePiece
Fire on each phase of a drag over the shape.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ShapePiece
impl !RefUnwindSafe for ShapePiece
impl !Send for ShapePiece
impl !Sync for ShapePiece
impl Unpin for ShapePiece
impl UnsafeUnpin for ShapePiece
impl !UnwindSafe for ShapePiece
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
Source§impl<P> Decorate for Pwhere
P: Piece,
impl<P> Decorate for Pwhere
P: Piece,
Source§fn id(self, id: impl Into<String>) -> AnyPiece
fn id(self, id: impl Into<String>) -> AnyPiece
Source§fn id_of(self, id: impl Fn() -> String + 'static) -> AnyPiece
fn id_of(self, id: impl Fn() -> String + 'static) -> AnyPiece
list. A plain
id is assigned once at build, but a recycled cell REBINDS to different
items over its life (and drag-to-reorder rebinds eagerly), so a static item-derived id
keeps naming the first-bound item. This variant re-registers whenever the closure’s
value changes — read your ItemSlot inside it:
.id_of(move || format!("row-remove-{}", slot.key())).Source§fn id_keyed(self, prefix: &'static str, key: impl Display) -> AnyPiece
fn id_keyed(self, prefix: &'static str, key: impl Display) -> AnyPiece
prefix:key (§5.5).Source§fn tweak(self, f: impl FnOnce(RNode) + 'static) -> AnyPiece
fn tweak(self, f: impl FnOnce(RNode) + 'static) -> AnyPiece
f runs once at mount, after the native widget exists, with the
realized node (docs/tweaks.md). Reach the typed native handle through the compiled
backend’s ext accessor (day_appkit::with_native, day_gtk::with_native, …) — or apply
a packaged day-tweak-* crate’s modifier instead of calling this directly. If the native
change affects the widget’s intrinsic size, follow it with
day_core::invalidate_size. Day may overwrite managed properties (title, value,
enabled, frame, a11y) on its next patch; unmanaged properties are stable.Source§fn selectable(self) -> AnyPiece
fn selectable(self) -> AnyPiece
label: text is NOT selectable by default
on any backend, matching each platform’s native behavior. Applied to the piece’s own
widget, so on a container it makes all the text within it selectable. Read moreSource§fn native_ref(self, r: &NativeRef) -> AnyPiece
fn native_ref(self, r: &NativeRef) -> AnyPiece
NativeRef to this piece’s realized node for later imperative access
(docs/tweaks.md). The ref clears automatically when the piece’s scope is disposed.fn padding(self, insets: impl IntoInsets) -> AnyPiece
Source§fn max_width(self, max: f64) -> AnyPiece
fn max_width(self, max: f64) -> AnyPiece
max points: the child is never PROPOSED more, so text
wraps inside the cap (chat bubbles, readable columns) while narrower content hugs.fn frame(self, width: f64, height: f64) -> AnyPiece
Source§fn width(self, width: f64) -> AnyPiece
fn width(self, width: f64) -> AnyPiece
width points while its height stays flexible (hugging its content
or filling on the cross axis). The single-axis complement to Self::frame — e.g. a
fixed-width sidebar pane in a row whose height fills the window.Source§fn height(self, height: f64) -> AnyPiece
fn height(self, height: f64) -> AnyPiece
height points while its width stays flexible. The single-axis
complement to Self::frame — e.g. a fixed-height header/toolbar bar that fills its width.fn a11y(self, f: impl FnOnce(A11yBuilder) -> A11yBuilder + 'static) -> AnyPiece
Source§fn on_tap(self, f: impl Fn() + 'static) -> AnyPiece
fn on_tap(self, f: impl Fn() + 'static) -> AnyPiece
Source§fn focused<M>(self, binding: impl IntoFocusBinding<M>) -> AnyPiece
fn focused<M>(self, binding: impl IntoFocusBinding<M>) -> AnyPiece
Signal<bool> for one control, or (Signal<Option<K>>, K::Variant) binding one control
of a group — writing false/None resigns focus (dismissing the soft keyboard on
mobile). Focus applies asynchronously: a write is a request, resolved on the next turn,
and the signal always ends up reflecting what the platform actually did.menu_item/sub_menu/menu_role/
menu_separator. Passing an empty Vec removes any menu.Source§fn on_drag(self, f: impl Fn(Drag) + 'static) -> AnyPiece
fn on_drag(self, f: impl Fn(Drag) + 'static) -> AnyPiece
Source§fn background<M>(self, color: impl IntoReactive<Color, M>) -> AnyPiece
fn background<M>(self, color: impl IntoReactive<Color, M>) -> AnyPiece
Color, a Signal<Color>, or a Fn() -> Color; a
reactive color repaints the surface when its source changes. Wraps the piece in a native
container that carries the fill, so it composes with Self::corner_radius for a rounded
colored surface and with Self::padding for interior inset.Source§fn corner_radius(self, radius: f64) -> AnyPiece
fn corner_radius(self, radius: f64) -> AnyPiece
radius points, clipping its background and content to the
rounded rectangle. Compose after Self::background for a rounded colored surface, or use
alone to round a clipped child (e.g. an avatar image).Source§fn opacity<M>(self, opacity: impl IntoReactive<f64, M>) -> AnyPiece
fn opacity<M>(self, opacity: impl IntoReactive<f64, M>) -> AnyPiece
0.0 transparent … 1.0 opaque). Wrapped in a native
layer so it composes with .background; the change animates when made inside
with_animation or under a .animation ancestor (§8.4).Source§fn transform<M>(self, t: impl IntoReactive<Transform, M>) -> AnyPiece
fn transform<M>(self, t: impl IntoReactive<Transform, M>) -> AnyPiece
Transform (translate/scale/rotate about the center) — the cheap
movement/scaling channel that never triggers relayout (§8.4). Prefer this over .offset
for animated motion.Source§fn scale<M>(self, factor: impl IntoReactive<f64, M>) -> AnyPiece
fn scale<M>(self, factor: impl IntoReactive<f64, M>) -> AnyPiece
factor about its center (animatable). Convenience over
Self::transform.Source§fn rotation<M>(self, degrees: impl IntoReactive<f64, M>) -> AnyPiece
fn rotation<M>(self, degrees: impl IntoReactive<f64, M>) -> AnyPiece
degrees clockwise about its center (animatable).Source§fn translation<Mx, My>(
self,
x: impl IntoReactive<f64, Mx>,
y: impl IntoReactive<f64, My>,
) -> AnyPiece
fn translation<Mx, My>( self, x: impl IntoReactive<f64, Mx>, y: impl IntoReactive<f64, My>, ) -> AnyPiece
x, y) points WITHOUT relayout (animatable) — the
animation-friendly sibling of .offset.Source§fn animation(self, anim: AnimSpec) -> AnyPiece
fn animation(self, anim: AnimSpec) -> AnyPiece
anim even outside a with_animation. SwiftUI’s
.animation. The ambient with_animation takes precedence when both apply.Source§fn modifier(self, m: impl Modifier) -> AnyPiece
fn modifier(self, m: impl Modifier) -> AnyPiece
Modifier — or, via the blanket impl, a plain FnOnce(AnyPiece) -> AnyPiece
closure — to this piece. Pure composition: content.modifier(m) == m.apply(content.any()).Source§fn overlay(self, over: impl Piece) -> AnyPiece
fn overlay(self, over: impl Piece) -> AnyPiece
over on top of this piece, centered, WITHOUT affecting layout size — a badge /
annotation overlay. self is the sizing content (bottom of the z-order); over is proposed
self’s size and drawn on top. For an explicit alignment use Self::overlay_aligned; for
a stack that sizes to the UNION of its children use zstack.Source§fn overlay_aligned(self, align: Alignment, over: impl Piece) -> AnyPiece
fn overlay_aligned(self, align: Alignment, over: impl Piece) -> AnyPiece
Self::overlay with an explicit Alignment for the annotation (e.g. a corner badge with
Alignment::TopTrailing).Source§fn grow(self) -> AnyPiece
fn grow(self) -> AnyPiece
Flex — the stack
offers it the space and it fills; no native backing, so this is a pure layout change.Source§fn grid_span(self, n: usize) -> AnyPiece
fn grid_span(self, n: usize) -> AnyPiece
n columns (n ≥ 1) of the enclosing grid (docs/grid.md). Grid modifiers set
facts on the node the grid sees: apply them LAST (outermost), like .grow_w() — an
outer wrapper would hide the facts from the grid.Source§fn grid_align(self, a: Alignment) -> AnyPiece
fn grid_align(self, a: Alignment) -> AnyPiece
grid
(docs/grid.md). Apply LAST (outermost), like Self::grid_span.Source§fn defers_system_gestures(self, edges: Edges) -> AnyPiece
fn defers_system_gestures(self, edges: Edges) -> AnyPiece
edges (docs/cover.md) — the SwiftUI defersSystemGestures(on:)
analogue. Put it on a game or drawing surface whose touches run to the screen edge,
so a swipe up from the bottom doesn’t leave the app. iOS defers the chosen edges’
system gestures; Android enters swipe-to-reveal immersive mode while any subtree
requests deferral; desktop backends no-op.Source§fn interactive_dismiss_disabled(self) -> AnyPiece
fn interactive_dismiss_disabled(self) -> AnyPiece
cover (or other modal surface) must
not be dismissed interactively — the SwiftUI interactiveDismissDisabled() analogue
(docs/cover.md). System back / sheet gestures are ignored; only programmatic writes
(an explicit close control) dismiss it.fn any(self) -> AnyPiece
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more