summaryrefslogtreecommitdiffstats
path: root/graphics
diff options
context:
space:
mode:
authorLibravatar kxie <kxie@ualberta.ca>2023-08-15 17:05:46 +0800
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-01-31 19:21:10 +0100
commitc077e107f2eea618ea644652707254a402527de3 (patch)
treedff9d70f26d834c2cc4f4b886bc81bc3d84a8e4d /graphics
parent8ed3490280a4dd8a1d4e3cd421b1785725f65865 (diff)
downloadiced-c077e107f2eea618ea644652707254a402527de3.tar.gz
iced-c077e107f2eea618ea644652707254a402527de3.tar.bz2
iced-c077e107f2eea618ea644652707254a402527de3.zip
Use `Radians` in arc and ellipse types
Diffstat (limited to 'graphics')
-rw-r--r--graphics/src/geometry/path/arc.rs22
-rw-r--r--graphics/src/geometry/path/builder.rs14
2 files changed, 19 insertions, 17 deletions
diff --git a/graphics/src/geometry/path/arc.rs b/graphics/src/geometry/path/arc.rs
index dd4fcf33..2600497f 100644
--- a/graphics/src/geometry/path/arc.rs
+++ b/graphics/src/geometry/path/arc.rs
@@ -1,5 +1,5 @@
//! Build and draw curves.
-use iced_core::{Point, Vector};
+use iced_core::{Point, Radians, Vector};
/// A segment of a differentiable curve.
#[derive(Debug, Clone, Copy)]
@@ -8,10 +8,10 @@ pub struct Arc {
pub center: Point,
/// The radius of the arc.
pub radius: f32,
- /// The start of the segment's angle in radians, clockwise rotation from positive x-axis.
- pub start_angle: f32,
- /// The end of the segment's angle in radians, clockwise rotation from positive x-axis.
- pub end_angle: f32,
+ /// The start of the segment's angle, clockwise rotation from positive x-axis.
+ pub start_angle: Radians,
+ /// The end of the segment's angle, clockwise rotation from positive x-axis.
+ pub end_angle: Radians,
}
/// An elliptical [`Arc`].
@@ -22,11 +22,11 @@ pub struct Elliptical {
/// The radii of the arc's ellipse. The horizontal and vertical half-dimensions of the ellipse will match the x and y values of the radii vector.
pub radii: Vector,
/// The clockwise rotation of the arc's ellipse.
- pub rotation: f32,
- /// The start of the segment's angle in radians, clockwise rotation from positive x-axis.
- pub start_angle: f32,
- /// The end of the segment's angle in radians, clockwise rotation from positive x-axis.
- pub end_angle: f32,
+ pub rotation: Radians,
+ /// The start of the segment's angle, clockwise rotation from positive x-axis.
+ pub start_angle: Radians,
+ /// The end of the segment's angle, clockwise rotation from positive x-axis.
+ pub end_angle: Radians,
}
impl From<Arc> for Elliptical {
@@ -34,7 +34,7 @@ impl From<Arc> for Elliptical {
Elliptical {
center: arc.center,
radii: Vector::new(arc.radius, arc.radius),
- rotation: 0.0,
+ rotation: Radians(0.0),
start_angle: arc.start_angle,
end_angle: arc.end_angle,
}
diff --git a/graphics/src/geometry/path/builder.rs b/graphics/src/geometry/path/builder.rs
index b0959fbf..1ccd83f2 100644
--- a/graphics/src/geometry/path/builder.rs
+++ b/graphics/src/geometry/path/builder.rs
@@ -1,6 +1,6 @@
use crate::geometry::path::{arc, Arc, Path};
-use iced_core::{Point, Size};
+use iced_core::{Point, Radians, Size};
use lyon_path::builder::{self, SvgPathBuilder};
use lyon_path::geom;
@@ -106,9 +106,11 @@ impl Builder {
let arc = geom::Arc {
center: math::Point::new(arc.center.x, arc.center.y),
radii: math::Vector::new(arc.radii.x, arc.radii.y),
- x_rotation: math::Angle::radians(arc.rotation),
- start_angle: math::Angle::radians(arc.start_angle),
- sweep_angle: math::Angle::radians(arc.end_angle - arc.start_angle),
+ x_rotation: math::Angle::radians(arc.rotation.0),
+ start_angle: math::Angle::radians(arc.start_angle.0),
+ sweep_angle: math::Angle::radians(
+ (arc.end_angle - arc.start_angle).0,
+ ),
};
let _ = self.raw.move_to(arc.sample(0.0));
@@ -165,8 +167,8 @@ impl Builder {
self.arc(Arc {
center,
radius,
- start_angle: 0.0,
- end_angle: 2.0 * std::f32::consts::PI,
+ start_angle: Radians(0.0),
+ end_angle: Radians(2.0 * std::f32::consts::PI),
});
}