37 lines
978 B
Rust
37 lines
978 B
Rust
impl Animateable for AnimatedCircularText<'_> {
|
|
fn draw(&mut self, mut canvas: &mut Canvas, timeline: &Timeline<'_>) {
|
|
self.prepare(&mut canvas, &self.animation_data);
|
|
|
|
self.sort_keyframes();
|
|
|
|
self.paint.set_anti_alias(true);
|
|
|
|
let default_text_typeface = &Typeface::default();
|
|
|
|
let default_text_font = &Font::from_typeface(default_text_typeface, 190.0);
|
|
|
|
let text_font: &Font = match self.font {
|
|
Some(font) => font,
|
|
None => default_text_font,
|
|
};
|
|
|
|
let radius: f32 = 0.35 * timeline.size.0.min(timeline.size.1) as f32;
|
|
|
|
let mut path = Path::new();
|
|
|
|
path.add_circle(
|
|
(timeline.size.0 / 2, timeline.size.1 / 2),
|
|
radius,
|
|
PathDirection::CW,
|
|
);
|
|
|
|
let text_width = text_font.measure_str(self.text, Some(&self.paint));
|
|
|
|
canvas.draw
|
|
}
|
|
|
|
fn sort_keyframes(&mut self) {
|
|
self.origin.sort_keyframes();
|
|
}
|
|
}
|