# fframes-kit components > fframes-kit is a Rust component library for fframes videos: Remotion's model (props, children, time set by the parent) with Manim's animation names, LaTeX formulas typeset by a built-in Typst, and explainer kits for math, physics, chemistry, computer science, machine learning, biology and 3D. Every component is a struct: set the fields you need, fill the rest with `..ui.defaults()`, draw it with `ui.show(..)`. `theme.` defaults are fields of the current `Theme`. ## ActionPotential An action potential traced on axes of time (ms) against membrane potential (mV), `x_length` by `y_length` (units of `ui.space`) around `center`. From `delay` the trace draws from 0 to 6 ms in `duration` seconds, a dot at its head; the dashed threshold and resting lines are there from the start. Each phase is named as the trace reaches it: resting potential, stimulus, depolarization, the peak, repolarization and hyperpolarization. Page: https://fframes-kit.pages.dev/docs/biology/action-potential.md · feature `biology` - `delay: f32 = 0.0`: Seconds after the container's start before the trace begins to draw. - `duration: f32 = 5.0`: Seconds the trace takes to draw from 0 to 6 ms. - `center: (f64, f64) = (0.0, -0.3)`: The middle of the axes, in units of `ui.space`. - `x_length: f64 = 9.0`: Width of the axes, in units of `ui.space`. - `y_length: f64 = 5.2`: Height of the axes, in units of `ui.space`. - `trace_color: Color = Color::hex("#ffd43b")`: Colour of the trace and the dot at its head. - `threshold_color: Color = Color::hex("#ff8787")`: Colour of the dashed threshold line (-55 mV). - `axis_color: Color = theme.colors.muted`: Colour of the axes and the dashed resting line (-70 mV). - `label_style: TextStyle = label_style`: The font of the axis labels and numbers: family, size in pixels and weight. - `phase_style: TextStyle = theme.typography.caption`: The font of the phase names along the trace: family, size in pixels and weight. - `text_color: Color = theme.colors.text`: Colour of the phase names. - `enter: Option = None`: Fade in at the start; `None` for none. - `exit: Option = None`: Fade out before the end; `None` for none. ## Angle The mark of the angle between two lines (Manim `Angle`): an arc of `radius` about where they cross, counterclockwise on screen from the first line to the second. Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/shapes.md - `line1: Segment = ((0.0, 0.0), (200.0, 0.0))`: The first line as two points `((x1, y1), (x2, y2))` in pixels of the canvas; the mark starts from it. - `line2: Segment = ((0.0, 0.0), (0.0, -200.0))`: The second line, in the same form; the mark turns to it. - `radius: f32 = ANGLE_RADIUS`: Radius of the mark in pixels, about where the lines cross. - `quadrant: (f32, f32) = (1.0, 1.0)`: Which half of each line the mark sits on: `1` along its direction, `-1` against. - `other_angle: bool = false`: Marks the other angle, clockwise from the first line to the second. - `elbow: bool`: A square corner instead of an arc. - `dot: bool = false`: A dot inside the mark, `dot_distance` of the way out from the corner. - `dot_radius: f32 = 5.0`: Radius of the dot in pixels. - `dot_distance: f32 = 0.55`: How far out the dot sits, as a fraction of the mark's radius (0 at the corner, 1 on the mark). - `dot_color: Color = theme.colors.title`: Colour of the dot. - `label: ShapeLabel = ShapeLabel::None`: A label beside the mark, `label_buff` beyond its radius. - `label_buff: f32 = 3.0 * SMALL_BUFF`: Pixels between the mark's radius and the label. - `label_style: TextStyle = theme.typography.body`: The label's font: family, size in pixels and weight. - `label_color: Color = theme.colors.title`: Colour of the label text. - `stroke: Option = Some(theme.colors.accent)`: `None` draws no outline. - `stroke_width: f32 = theme.stroke.regular`: Outline width in pixels. - `opacity: f32 = 1.0`: 0 transparent to 1 opaque. - `enter: Option = None`: How it appears; `None` shows it from the start. - `exit: Option = None`: How it leaves at the end of its container; `None` stays. - `emphasis: Option = None`: An emphasis animation (`Indicate`, `Wiggle`, ..) played while it is shown. - `fn value(&self) -> f32`: The angle the mark spans in radians, always positive (Manim `get_value`). - `fn path(&self) -> BezPath`: The mark alone: an arc, or a square corner. ## AnimatedBoundary An outline that keeps drawing itself in one colour after another, the previous colour fading out under it (Manim's `AnimatedBoundary`). It never ends; put it in a `Sequence` to stop it. Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/geometry-animations.md - `shape: Shape`: The shape whose outline is traced; the shape itself is not drawn. - `colors: Vec`: The colours it draws in, one after another; empty draws nothing. - `max_stroke_width: f32`: Outline width in pixels of the colour being drawn; the previous colour thins from this to 0. - `cycle_rate: f32`: Colours per second. - `back_and_forth: bool`: Every other colour draws from the end back. - `draw_rate_func: RateFunc`: Easing of each colour's drawing along the outline. - `fade_rate_func: RateFunc`: Easing of the previous colour fading out. - `delay: f32`: Seconds after the container's start before it begins. - `fn new(shape: Shape, colors: Vec) -> Self`: Around `shape` in `colors`, Manim's defaults otherwise. ## AnimatedEmoji A Noto animated emoji (Remotion's ``), played from `start` seconds of its container from the file `file_name` gives in the media folder. `(x, y)` is the top left of a `size` pixel square. It fades in over `fade` seconds and plays at `speed`, again and again with `looping`, otherwise its last frame stays. A missing file draws nothing, and `inspect` warns with the address to download it from. The tone applies to the emoji that have skin tones. Page: https://fframes-kit.pages.dev/docs/media-and-overlays/cursors-emoji-sound-effects-and-gi-fs.md - `name: &str = "grinning"`: Name of the emoji from `NAMES`, which also names its `.json` file in the media folder. - `skin_tone: Option = None`: Skin tone of a hand emoji; `None` for the default, and ignored for emoji without skin tones. - `x: f32 = 880.0`: Left edge in pixels of the canvas. - `y: f32 = 460.0`: Top edge in pixels of the canvas. - `size: f32 = 160.0`: Side of the square the emoji fills, in pixels. - `start: f32 = 0.0`: Second it starts playing, local to the parent container. - `speed: f32 = 1.0`: Playback speed; 1 is normal, 2 twice as fast. - `looping: bool = true`: Plays again and again; `false` keeps the last frame. - `fade: f32 = theme.motion.duration.fast`: Seconds it takes to fade in from `start`. - `fn file(&self) -> String`: The file this emoji plays. ## AnimationGroup Every child at once (Manim's `AnimationGroup` with no lag). Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/geometry-animations.md - `children: Vec`: The children, all started together; each is a closure taking the `Ui`. ## Annotation An annotation: a dot on the `target`, an elbow line to `label` (first across, then up or down) and the text at its end. The line draws on over `run_time` seconds from `delay`; the text fades in over the last 40 %. (The shape called `Callout` is the Remotion speech bubble, so this one has another name.) Page: https://fframes-kit.pages.dev/docs/media-and-overlays/overlays.md - `target: (f32, f32) = (0.0, 0.0)`: The point the dot marks, in pixels of the canvas. - `label: (f32, f32) = (0.0, 0.0)`: Where the line ends and the text sits, in pixels of the canvas; the text goes right of it when it is right of `target`, else left. - `text: Cow = Cow::Borrowed("")`: The words at the end of the line. - `color: Color = theme.colors.accent`: Colour of the dot, line and text. - `style: TextStyle = theme.typography.caption`: The font: family, size in pixels and weight. - `letter_spacing: f32 = 2.0`: Extra space between letters of the text, in pixels. - `stroke_width: f32 = theme.stroke.thin`: Width of the line and the ring around the dot, in pixels. - `delay: f32 = 0.0`: Seconds after the container's start before it begins. - `run_time: f32 = theme.motion.duration.slow`: Seconds the line takes to draw on; the text fades in over the last 40 %. - `rate_func: RateFunc = theme.motion.easing.standard`: Easing of the drawing over its run time. - `fn draw(self, progress: f32) -> Svgr`: The annotation `progress` (0 to 1) of the way drawn. ## AnnotationDot A dot that marks a point for an annotation (Manim `AnnotationDot`): a third larger than a `Dot`, filled in the accent colour with a light outline. Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/shapes.md - `cx: f32 = 0.0`: Center x in pixels of the canvas. - `cy: f32 = 0.0`: Center y in pixels of the canvas (y down). - `radius: f32 = 10.4`: Radius in pixels. - `fill: Option`: `None` leaves the inside empty. - `stroke: Option`: `None` draws no outline. - `stroke_width: f32`: Outline width in pixels. - `dash: Option<(f32, f32)> = None`: Dash and gap lengths of the outline. - `opacity: f32 = 1.0`: 0 transparent to 1 opaque. - `enter: Option = None`: How it appears; `None` shows it from the start. - `exit: Option = None`: How it leaves at the end of its container; `None` stays. - `emphasis: Option = None`: An emphasis animation (`Indicate`, `Wiggle`, ..) played while it is shown. - `fn shape(&self) -> Shape`: The path and paint as a `Shape`. ## AnnularSector The part of a ring from `start_angle` by `angle` (Manim `AnnularSector`). Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/shapes.md - `cx: f32 = 0.0`: Center x in pixels of the canvas. - `cy: f32 = 0.0`: Center y in pixels of the canvas (y down). - `inner_radius: f32 = 50.0`: Radius in pixels of the inner edge. - `outer_radius: f32 = 100.0`: Radius in pixels of the outer edge. - `start_angle: f32 = 0.0`: Where it starts, in radians counterclockwise on screen from the right (0 is right). - `angle: f32 = std::f32::consts::FRAC_PI_2`: Turn in radians, counterclockwise on screen for a positive value. - `fill: Option = Paint::solid(theme).fill`: `None` leaves the inside empty. - `stroke: Option = Paint::solid(theme).stroke`: `None` draws no outline. - `stroke_width: f32 = Paint::solid(theme).stroke_width`: Outline width in pixels. - `dash: Option<(f32, f32)> = None`: Dash and gap lengths of the outline. - `opacity: f32 = 1.0`: 0 transparent to 1 opaque. - `enter: Option = None`: How it appears; `None` shows it from the start. - `exit: Option = None`: How it leaves at the end of its container; `None` stays. - `emphasis: Option = None`: An emphasis animation (`Indicate`, `Wiggle`, ..) played while it is shown. - `fn shape(&self) -> Shape`: The path and paint as a `Shape`. ## Annulus A ring between two circles (Manim `Annulus`). Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/shapes.md - `cx: f32 = 0.0`: Center x in pixels of the canvas. - `cy: f32 = 0.0`: Center y in pixels of the canvas (y down). - `inner_radius: f32 = 50.0`: Radius in pixels of the hole. - `outer_radius: f32 = 100.0`: Radius in pixels of the outer edge. - `fill: Option = Paint::solid(theme).fill`: `None` leaves the inside empty. - `stroke: Option = Paint::solid(theme).stroke`: `None` draws no outline. - `stroke_width: f32 = Paint::solid(theme).stroke_width`: Outline width in pixels. - `dash: Option<(f32, f32)> = None`: Dash and gap lengths of the outline. - `opacity: f32 = 1.0`: 0 transparent to 1 opaque. - `enter: Option = None`: How it appears; `None` shows it from the start. - `exit: Option = None`: How it leaves at the end of its container; `None` stays. - `emphasis: Option = None`: An emphasis animation (`Indicate`, `Wiggle`, ..) played while it is shown. - `fn shape(&self) -> Shape`: The path and paint as a `Shape`. ## Appear Shows its children from `from` seconds on: they rise `rise` units into place, grow from `scale_from` about `center` and fade in over `enter` seconds. They leave the same way up over `exit` seconds, ending at `until` seconds, or at the end of the container (`ui.duration`) when `until` is `None`. Inside, time starts at `from`, as in a `Sequence`. Page: https://fframes-kit.pages.dev/docs/media-and-overlays/overlays.md - `from: f32`: Seconds after the container's start when the children appear; inside, their time starts at `from`. - `until: Option`: Seconds when the children are gone, after leaving over `exit`; `None` ends with the container. - `center: (f32, f32)`: The point the content scales about, in canvas units. - `rise: f32`: Pixels the children rise into place as they enter, and sink as they leave. - `scale_from: f32`: Scale the children grow from as they enter, 1 for no growth. - `enter: f32`: Seconds the children take to fade, rise and grow in. - `exit: f32`: Seconds the children take to leave before `until` or the end of the container; 0 cuts them off. - `rate_func: RateFunc`: Easing of the entrance over `enter` seconds. - `children: Children`: What it shows (a closure taking the `Ui`). - `fn new(ui: &Ui, from: f32, center: (f32, f32), children: Children) -> Self`: Times and motion from the theme: `motion.duration.enter` and `exit`, a 60 unit rise, scaling from 0.92. - `fn state(&self, t: f32, end: Option) -> (f32, f32)`: `(entered, left)`, both from 0 to 1, at `t` seconds of a container that ends at `end`. ## ApplyComplexFunction Moves every point of the shape to `function(re, im)` of the complex number at it (Manim's `ApplyComplexFunction`, 1 second), in the units of `ui.space`. As in Manim the points travel on arcs as wide as the angle of `function(1)`, so a rotation turns. Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/geometry-animations.md - `shape: Shape`: The shape that is transformed; drawn unchanged until `delay` has passed. - `function: fn((f64, f64)) -> (f64, f64)`: Maps the complex number `(re, im)` at a point, in units of `ui.space`, to where the point ends up. - `delay: f32`: Seconds after the container's start before it begins. - `run_time: f32`: Seconds the animation takes. - `rate_func: RateFunc`: Easing of the animation over its run time. - `fn new(shape: Shape, function: fn((f64, f64)) -> (f64, f64)) -> Self`: Manim's 1 second, smooth. - `fn path_arc(&self) -> f64`: The angle of `function(1)`: how far the points turn on their way. ## ApplyFunction Morphs the shape into `function(shape)` (Manim's `ApplyFunction`, a `Transform` in 1 second). Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/geometry-animations.md - `shape: Shape`: The shape that is transformed; drawn unchanged until `delay` has passed. - `function: fn(Shape) -> Shape`: Builds the shape it morphs into from a copy of `shape`. - `delay: f32`: Seconds after the container's start before it begins. - `run_time: f32`: Seconds the animation takes. - `rate_func: RateFunc`: Easing of the animation over its run time. - `fn new(shape: Shape, function: fn(Shape) -> Shape) -> Self`: Manim's 1 second, smooth. ## ApplyMatrix Moves every point of the shape by the 2×2 `matrix` about `about_point` (Manim's `ApplyMatrix`, about the origin of `ui.space` in 3 seconds). The matrix and the point are in the units of `ui.space`, `y` up: `[[0, -1], [1, 0]]` turns a quarter counterclockwise. Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/geometry-animations.md - `shape: Shape`: The shape that is transformed; drawn unchanged until `delay` has passed. - `matrix: [[f64; 2]; 2]`: The 2x2 matrix, row by row, applied to each point's offset from `about_point`, in units of `ui.space` with y up. - `about_point: Option<(f64, f64)>`: In units; `None` is the origin of the space. - `delay: f32`: Seconds after the container's start before it begins. - `run_time: f32`: Seconds the animation takes. - `rate_func: RateFunc`: Easing of the animation over its run time. - `fn new(shape: Shape, matrix: [[f64; 2]; 2]) -> Self`: About the origin in Manim's 3 seconds, smooth. - `fn map(&self, space: Space, p: Point) -> Point`: Where the pixel `p` ends up. ## ApplyPointwiseFunction Moves every point of the shape to `function(x, y)` (Manim's `ApplyPointwiseFunction`, 3 seconds), in the units of `ui.space`, `y` up. The path is cut into small pieces first like a `super::Homotopy`, so straight lines bend. Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/geometry-animations.md - `shape: Shape`: The shape that is transformed; drawn unchanged until `delay` has passed. - `function: fn(f64, f64) -> (f64, f64)`: Maps a point `(x, y)` in units of `ui.space` (y up) to where it ends up. - `delay: f32`: Seconds after the container's start before it begins. - `run_time: f32`: Seconds the animation takes. - `rate_func: RateFunc`: Easing of the animation over its run time. - `fn new(shape: Shape, function: fn(f64, f64) -> (f64, f64)) -> Self`: Manim's 3 seconds, smooth. ## ApplyPointwiseFunctionToCenter Moves the whole shape so its center goes to `function(center)` (Manim's `ApplyPointwiseFunctionToCenter`, 3 seconds), in the units of `ui.space`. The shape keeps its form. Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/geometry-animations.md - `shape: Shape`: The shape that is transformed; drawn unchanged until `delay` has passed. - `function: fn(f64, f64) -> (f64, f64)`: Maps the shape's center `(x, y)` in units of `ui.space` (y up) to where the center ends up. - `delay: f32`: Seconds after the container's start before it begins. - `run_time: f32`: Seconds the animation takes. - `rate_func: RateFunc`: Easing of the animation over its run time. - `fn new(shape: Shape, function: fn(f64, f64) -> (f64, f64)) -> Self`: Manim's 3 seconds, smooth. ## ApplyWave A wave runs across the shape from left to right and bends it by `amplitude` pixels in `direction` (Manim's `ApplyWave`). The shape is drawn as built before and after. Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/geometry-animations.md - `shape: Shape`: The shape that is bent by the wave; drawn as built before and after. - `direction: (f32, f32)`: Canvas units, `y` down: `(0.0, -1.0)` is Manim's `UP`. - `amplitude: f32`: How far points are nudged at the crest, in pixels of the canvas. - `wave_func: RateFunc`: Easing that shapes each ripple of the wave. - `time_width: f32`: The wave's length as a fraction of the shape's width. - `ripples: usize`: Number of crests that pass across the shape (at least 1). - `delay: f32`: Seconds after the container's start before it begins. - `run_time: f32`: Seconds the wave takes to cross the shape. - `rate_func: RateFunc`: Easing of the animation over its run time. - `fn new(shape: Shape) -> Self`: Up by 27 pixels (Manim's 0.2 units), one ripple in 2 seconds. - `fn path_at(&self, p: f32) -> BezPath`: The path at progress `p`. ## Arc Part of a circle's outline from `start_angle` by `angle` (Manim `Arc`). Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/shapes.md - `cx: f32 = 0.0`: Center x in pixels of the canvas. - `cy: f32 = 0.0`: Center y in pixels of the canvas (y down). - `radius: f32 = 100.0`: Radius in pixels. - `start_angle: f32 = 0.0`: Where the arc starts, in radians counterclockwise on screen from the right (0 is right). - `angle: f32 = std::f32::consts::FRAC_PI_2`: How far the arc turns, in radians; counterclockwise on screen for a positive value. - `fill: Option = Paint::outline(theme).fill`: `None` leaves the inside empty. - `stroke: Option = Paint::outline(theme).stroke`: `None` draws no outline. - `stroke_width: f32 = Paint::outline(theme).stroke_width`: Outline width in pixels. - `dash: Option<(f32, f32)> = None`: Dash and gap lengths of the outline. - `opacity: f32 = 1.0`: 0 transparent to 1 opaque. - `enter: Option = None`: How it appears; `None` shows it from the start. - `exit: Option = None`: How it leaves at the end of its container; `None` stays. - `emphasis: Option = None`: An emphasis animation (`Indicate`, `Wiggle`, ..) played while it is shown. - `fn shape(&self) -> Shape`: The path and paint as a `Shape`. ## ArcBetweenPoints The arc from `(x1, y1)` to `(x2, y2)` that turns by `angle`, counterclockwise on screen for a positive angle (Manim `ArcBetweenPoints`). A `radius` replaces the angle with the shorter arc of that radius (negative for the other side). Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/shapes.md - `x1: f32 = 0.0`: Start x in pixels of the canvas. - `y1: f32 = 0.0`: Start y in pixels of the canvas (y down). - `x2: f32 = 200.0`: End x in pixels of the canvas. - `y2: f32 = 0.0`: End y in pixels of the canvas (y down). - `angle: f32 = std::f32::consts::FRAC_PI_2`: Turn in radians, counterclockwise on screen for a positive value. - `radius: Option = None`: `Some` replaces `angle` with the shorter arc of this radius in pixels (negative for the other side); `None` uses `angle`. - `fill: Option = Paint::outline(theme).fill`: `None` leaves the inside empty. - `stroke: Option = Paint::outline(theme).stroke`: `None` draws no outline. - `stroke_width: f32 = Paint::outline(theme).stroke_width`: Outline width in pixels. - `dash: Option<(f32, f32)> = None`: Dash and gap lengths of the outline. - `opacity: f32 = 1.0`: 0 transparent to 1 opaque. - `enter: Option = None`: How it appears; `None` shows it from the start. - `exit: Option = None`: How it leaves at the end of its container; `None` stays. - `emphasis: Option = None`: An emphasis animation (`Indicate`, `Wiggle`, ..) played while it is shown. - `fn shape(&self) -> Shape`: The path and paint as a `Shape`. - `fn turn(&self) -> f64`: The turn of the arc: `angle`, or the one `radius` gives. ## ArcBrace A brace bent along an arc (Manim `ArcBrace`): round the circle of `radius` about `(cx, cy)` from `start_angle` turning `angle` (radians, counterclockwise on screen), its tip `depth` pixels outward, or toward the center when `inside`. `ArcBrace::tip` is where a label goes. Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/shapes.md - `cx: f32 = 0.0`: Center x in pixels of the canvas. - `cy: f32 = 0.0`: Center y in pixels of the canvas (y down). - `radius: f32 = 135.0`: Radius in pixels of the circle the brace follows. - `start_angle: f32 = -1.0`: Where the brace starts, in radians counterclockwise on screen from the right. - `angle: f32 = 2.0`: How far the brace turns, in radians; counterclockwise on screen for a positive value, clockwise for a negative one. - `depth: f32 = 24.0`: How far in pixels the tip sticks out of the arc; negative turns the brace over. - `inside: bool = false`: Puts the tip toward the center instead of outward. - `fill: Option = Paint::outline(theme).fill`: `None` leaves the inside empty. - `stroke: Option = Paint::outline(theme).stroke`: `None` draws no outline. - `stroke_width: f32 = Paint::outline(theme).stroke_width`: Outline width in pixels. - `dash: Option<(f32, f32)> = None`: Dash and gap lengths of the outline. - `opacity: f32 = 1.0`: 0 transparent to 1 opaque. - `enter: Option = None`: How it appears; `None` shows it from the start. - `exit: Option = None`: How it leaves at the end of its container; `None` stays. - `emphasis: Option = None`: An emphasis animation (`Indicate`, `Wiggle`, ..) played while it is shown. - `fn shape(&self) -> Shape`: The path and paint as a `Shape`. - `fn tip(&self) -> (f32, f32)`: The point of the tip. ## ArcPolygon A closed shape of arcs between consecutive `points`, each turning by `angle` (Manim `ArcPolygon`); a `radius` replaces the angle as on `ArcBetweenPoints`. Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/shapes.md - `points: Vec<(f32, f32)> = vec![(0.0, -100.0), (100.0, 100.0), (-100.0, 100.0)]`: Corner points `(x, y)` in pixels of the canvas; arcs join them in order and back to the first. - `angle: f32 = std::f32::consts::FRAC_PI_4`: Turn in radians of each arc between consecutive points. - `radius: Option = None`: `Some` replaces `angle` with the shorter arc of this radius in pixels on each side; `None` uses `angle`. - `fill: Option = Paint::outline(theme).fill`: `None` leaves the inside empty. - `stroke: Option = Paint::outline(theme).stroke`: `None` draws no outline. - `stroke_width: f32 = Paint::outline(theme).stroke_width`: Outline width in pixels. - `dash: Option<(f32, f32)> = None`: Dash and gap lengths of the outline. - `opacity: f32 = 1.0`: 0 transparent to 1 opaque. - `enter: Option = None`: How it appears; `None` shows it from the start. - `exit: Option = None`: How it leaves at the end of its container; `None` stays. - `emphasis: Option = None`: An emphasis animation (`Indicate`, `Wiggle`, ..) played while it is shown. - `fn shape(&self) -> Shape`: The path and paint as a `Shape`. ## ArcPolygonFromArcs A closed shape of the given arcs (Manim `ArcPolygonFromArcs`): each one after the other, joined by straight lines where one does not end where the next starts. Page: https://fframes-kit.pages.dev/docs/layout-and-shapes/shapes.md - `arcs: Vec = Vec::new()`: The arcs, drawn in order; a straight line joins one that ends away from where the next starts. - `fill: Option = Paint::outline(theme).fill`: `None` leaves the inside empty. - `stroke: Option = Paint::outline(theme).stroke`: `None` draws no outline. - `stroke_width: f32 = Paint::outline(theme).stroke_width`: Outline width in pixels. - `dash: Option<(f32, f32)> = None`: Dash and gap lengths of the outline. - `opacity: f32 = 1.0`: 0 transparent to 1 opaque. - `enter: Option = None`: How it appears; `None` shows it from the start. - `exit: Option = None`: How it leaves at the end of its container; `None` stays. - `emphasis: Option = None`: An emphasis animation (`Indicate`, `Wiggle`, ..) played while it is shown. - `fn shape(&self) -> Shape`: The path and paint as a `Shape`. ## Area The region between `f` and `bounded` (the x-axis when `None`) from `x_range.0` to `x_range.1` (Manim `get_area(graph, x_range, bounded_graph)`). Page: https://fframes-kit.pages.dev/docs/math/riemann-sum-and-area-under.md - `f: Func = |x| x`: The upper function of the region, in data units; a plain `fn`. - `bounded: Option = None`: The function that bounds the region below; `None` bounds it with the x-axis. - `x_range: (f64, f64) = (0.0, 1.0)`: The first and last `x` the region covers, in data units. - `axes: AxesMap = AxesMap::default()`: The mapping of the axes the region sits on (`axes.map(ui)`). - `samples: usize = 128`: Number of straight pieces the region's edges are sampled with. - `fill: Option = paint.fill`: `None` leaves the inside empty. - `stroke: Option = paint.stroke`: `None` draws no outline. - `stroke_width: f32 = paint.stroke_width`: Outline width in pixels. - `dash: Option<(f32, f32)> = None`: Dash and gap lengths of the outline. - `opacity: f32 = 1.0`: 0 transparent to 1 opaque. - `enter: Option = None`: How it appears; `None` shows it from the start. - `exit: Option = None`: How it leaves at the end of its container; `None` stays. - `emphasis: Option = None`: An emphasis animation (`Indicate`, `Wiggle`, ..) played while it is shown. - `fn shape(&self) -> Shape`: The path and paint as a `Shape`. ## AreaUnder The area under a graph revealed from left to right over `run_time` seconds after `delay` (Manim's `get_area` with a growing `x_range`), with the integral of the part shown so far written after the text of `value`. Build `area` with `Axes::area`; `key` tells the clip paths of two areas in one frame apart. Page: https://fframes-kit.pages.dev/docs/math/riemann-sum-and-area-under.md · feature `math` - `area: Area = Area::themed(theme)`: The region to reveal, built with `Axes::area`: the graph, its axes and the `x_range` it covers. - `delay: f32 = 0.0`: Seconds after the container's start before the area starts to grow. - `run_time: f32 = 1.5`: Seconds the area takes to grow across its `x_range`. - `rate_func: RateFunc = RateFunc::default()`: Easing of the growth over its run time. - `value: Option