Incular logoIncular
API ReferencePainting & Animation

Transform Widget

Affine widget transforms with compositor-driven transitions.

Applies after layout; only the compositor, hit-testing, and semantics observe it. Default pivot is the child center.

ConstructorTransform
new(t, child)Arbitrary affine + origin pivot
translation(offset, child)Shift
scale(s, child)Uniform scale
rotation(radians, child)Clockwise rotation
skew(x, y, child)Shear
use incular::prelude::*;

fn main() {
    let app = Application::new(|_cx| {
        Container::builder()
            .padding(EdgeInsets::all(24.0))
            .alignment(Alignment::CENTER)
            .child(
                Column::builder()
                    .main_axis_size(MainAxisSize::Min)
                    .spacing(8.0)
                    .children(Vec::<Widget>::from([
                        Transform::translation(
                            Offset::new(8.0, 0.0),
                            Text::new("Shifted"),
                        ).into(),
                        Transform::scale(
                            1.25,
                            Text::new("Scaled"),
                        ).into(),
                        Transform::rotation(
                            0.2,
                            Text::new("Tilted"),
                        ).into(),
                    ]))
                    .build(),
            )
            .build()
            .into()
    })
    .expect("valid application");
    incular::run(app).expect("run application");
}

ScaleTransition and RotationTransition keep child layout and picture caches warm during animation. See Transform for the affine value type.

Related: Opacity.