pub struct Countdown {Show 14 fields
pub seconds: f64,
pub show_hours: bool,
pub show_minutes: bool,
pub show_seconds: bool,
pub digit_size: f32,
pub digit_color: String,
pub digit_background: String,
pub separator_color: String,
pub gap: f32,
pub border_radius: f32,
pub timing: TimingConfig,
pub style: CssStyle,
pub timeline: Vec<TimelineStep>,
pub stagger: Option<f32>,
}Expand description
#[serde(from = "CountdownRaw")]: box_builder.rs’s width formula for
this component (visible * 2*box_w + (visible-1)*gap) doesn’t include
the small inner gap (gap*0.3) paint() actually inserts within
each digit pair — only the gap between pairs (the separator). That
mismatch compounds with every extra group and is exactly what #127
measured (153×67 assigned vs. 187×68 painted). Since paint() draws
from self.digit_size/self.gap, not layout.width (same pattern as
switch/slider), the fix is to fold the exact formula paint()
uses into style.width here, so box_builder.rs’s if css.width.is_none() never gets a chance to apply its slightly-off one.
Fields§
§seconds: f64§show_hours: bool§show_minutes: bool§show_seconds: bool§digit_size: f32§digit_color: String§digit_background: String§separator_color: String§gap: f32§border_radius: f32§timing: TimingConfig§style: CssStyle§timeline: Vec<TimelineStep>§stagger: Option<f32>Trait Implementations§
Source§impl Animatable for Countdown
impl Animatable for Countdown
fn animation_effects(&self) -> &[AnimationEffect]
Source§fn timeline_steps(&self) -> &[TimelineStep]
fn timeline_steps(&self) -> &[TimelineStep]
Timed animation steps (
timeline field): each step’s animations are
resolved with delay += step.at. Empty by default.Source§impl<'de> Deserialize<'de> for Countdown
impl<'de> Deserialize<'de> for Countdown
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl JsonSchema for Countdown
impl JsonSchema for Countdown
Source§fn schema_name() -> String
fn schema_name() -> String
The name of the generated JSON Schema. Read more
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Returns a string that uniquely identifies the schema produced by this type. Read more
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Generates a JSON Schema for this type. Read more
Source§fn is_referenceable() -> bool
fn is_referenceable() -> bool
Whether JSON Schemas generated for this type should be re-used where possible using the
$ref keyword. Read moreSource§impl Painter for Countdown
impl Painter for Countdown
Source§fn paint_content(
&self,
canvas: &Canvas,
layout: &BoxLayout,
_props: &AnimatedProperties,
ctx: &PaintCtx,
)
fn paint_content( &self, canvas: &Canvas, layout: &BoxLayout, _props: &AnimatedProperties, ctx: &PaintCtx, )
Paint the component’s content into the canvas. The canvas is
already translated to the content-box origin and clipped if
overflow: hidden was set. Generic decorations (bg, border,
shadow) are already painted by the engine. Read moreSource§fn intrinsic_size(
&self,
_available: AvailableSize,
_ctx: &MeasureCtx,
) -> Option<(f32, f32)>
fn intrinsic_size( &self, _available: AvailableSize, _ctx: &MeasureCtx, ) -> Option<(f32, f32)>
Optional intrinsic measurement for leaves like
text, image,
codeblock. Return None to let taffy compute the size from the
CSS style alone. available mirrors taffy’s AvailableSpace.Auto Trait Implementations§
impl Freeze for Countdown
impl RefUnwindSafe for Countdown
impl Send for Countdown
impl Sync for Countdown
impl Unpin for Countdown
impl UnsafeUnpin for Countdown
impl UnwindSafe for Countdown
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
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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> ⓘ
Converts
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> ⓘ
Converts
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