Struct libreda_db::layout::prelude::Path [−][src]
pub struct Path<T> where
T: CoordinateType, {
pub points: PointString<T>,
pub width: T,
pub path_type: PathEndType<T>,
}
Expand description
Path
is essentially a chain of line segments but with a possibly a non-zero width.
It can be thought of the shape resulting by a stroke of a thick pen along the line segments.
Fields
points: PointString<T>
The vertices of the path which define the sequence of line segments.
width: T
Width of the path.
path_type: PathEndType<T>
Type of the path endings.
Implementations
Create new path by taking vertices from a type that implements Into<PointString<T>>
.
pub fn new_extended<I>(i: I, width: T, ext_begin: T, ext_end: T) -> Path<T> where
I: Into<PointString<T>>,
pub fn new_extended<I>(i: I, width: T, ext_begin: T, ext_end: T) -> Path<T> where
I: Into<PointString<T>>,
Create a path with extended beginning and end.
Create a path with rounded beginning and end.
Rotate the path by a multiple of 90 degrees around the origin (0, 0)
.
Get the transformed version of this path by applying tf
.
Compute approximate area occupied by the path. Simply computes length*width.
Examples
use iron_shapes::prelude::*;
let path = Path::new(&[(0, 0), (0, 2)], 1);
assert_eq!(path.area_approx::<f64>(), 2f64);
Convert the path into a polygon. The polygon can be self-intersecting.
Examples
use iron_shapes::prelude::*;
let path = Path::new(&[(0, 0), (10, 0), (10, 20)], 4);
let polygon = path.to_polygon_approx();
assert_eq!(polygon, SimplePolygon::from(&[(0., 2.), (0., -2.), (12., -2.), (12., 20.), (8., 20.), (8., 2.)]));
Trait Implementations
pub fn deserialize<__D>(
__deserializer: __D
) -> Result<Path<T>, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
pub fn deserialize<__D>(
__deserializer: __D
) -> Result<Path<T>, <__D as Deserializer<'de>>::Error> where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
pub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
pub fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
Compute the bounding box of this path. The returned bounding box is not necessarily the smallest bounding box.
TODO: Find a better approximation.
impl<T, Dst> TryCastCoord<T, Dst> for Path<T> where
T: CoordinateType + NumCast,
Dst: CoordinateType + NumCast,
impl<T, Dst> TryCastCoord<T, Dst> for Path<T> where
T: CoordinateType + NumCast,
Dst: CoordinateType + NumCast,
Auto Trait Implementations
impl<T> RefUnwindSafe for Path<T> where
T: RefUnwindSafe,
impl<T> UnwindSafe for Path<T> where
T: UnwindSafe,
Blanket Implementations
Mutably borrows from an owned value. Read more