Add the `ellipse` method to canvas paths
This commit is contained in:
parent
9756aa89f9
commit
95f3337c6f
|
@ -25,6 +25,7 @@ use pathfinder_renderer::scene::{PathObject, Scene};
|
||||||
use pathfinder_text::{SceneExt, TextRenderMode};
|
use pathfinder_text::{SceneExt, TextRenderMode};
|
||||||
use skribo::{FontCollection, FontFamily, Layout, TextStyle};
|
use skribo::{FontCollection, FontFamily, Layout, TextStyle};
|
||||||
use std::default::Default;
|
use std::default::Default;
|
||||||
|
use std::f32::consts::PI;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
@ -325,6 +326,24 @@ impl Path2D {
|
||||||
self.current_contour.close();
|
self.current_contour.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn ellipse(&mut self,
|
||||||
|
center: Point2DF,
|
||||||
|
axes: Point2DF,
|
||||||
|
rotation: f32,
|
||||||
|
start_angle: f32,
|
||||||
|
end_angle: f32) {
|
||||||
|
self.flush_current_contour();
|
||||||
|
|
||||||
|
let mut transform = Transform2DF::from_rotation(rotation);
|
||||||
|
transform = transform.post_mul(&Transform2DF::from_scale(axes));
|
||||||
|
transform = transform.post_mul(&Transform2DF::from_translation(center));
|
||||||
|
self.current_contour.push_arc(&transform, start_angle, end_angle);
|
||||||
|
|
||||||
|
if end_angle - start_angle >= 2.0 * PI {
|
||||||
|
self.current_contour.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fn into_outline(mut self) -> Outline {
|
fn into_outline(mut self) -> Outline {
|
||||||
self.flush_current_contour();
|
self.flush_current_contour();
|
||||||
self.outline
|
self.outline
|
||||||
|
|
|
@ -152,7 +152,7 @@ impl MoireRenderer {
|
||||||
for index in 0..CIRCLE_COUNT {
|
for index in 0..CIRCLE_COUNT {
|
||||||
let radius = (index + 1) as f32 * CIRCLE_SPACING * self.device_pixel_ratio;
|
let radius = (index + 1) as f32 * CIRCLE_SPACING * self.device_pixel_ratio;
|
||||||
let mut path = Path2D::new();
|
let mut path = Path2D::new();
|
||||||
path.arc(center, radius, 0.0, PI * 2.0);
|
path.ellipse(center, Point2DF::splat(radius), 0.0, 0.0, PI * 2.0);
|
||||||
canvas.stroke_path(path);
|
canvas.stroke_path(path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue