summaryrefslogtreecommitdiffstats
path: root/graphics/src/widget/canvas/stroke.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-03-01 21:34:26 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-03-01 21:34:26 +0100
commit5fd5d1cdf8e5354788dc40729c4565ef377d3bba (patch)
tree0921efc7dc13a3050e03482147a791f85515f1f2 /graphics/src/widget/canvas/stroke.rs
parent3f6e28fa9b1b8d911f765c9efb5249a9e0c942d5 (diff)
downloadiced-5fd5d1cdf8e5354788dc40729c4565ef377d3bba.tar.gz
iced-5fd5d1cdf8e5354788dc40729c4565ef377d3bba.tar.bz2
iced-5fd5d1cdf8e5354788dc40729c4565ef377d3bba.zip
Implement `Canvas` support for `iced_tiny_skia`
Diffstat (limited to 'graphics/src/widget/canvas/stroke.rs')
-rw-r--r--graphics/src/widget/canvas/stroke.rs126
1 files changed, 0 insertions, 126 deletions
diff --git a/graphics/src/widget/canvas/stroke.rs b/graphics/src/widget/canvas/stroke.rs
deleted file mode 100644
index 4c19251d..00000000
--- a/graphics/src/widget/canvas/stroke.rs
+++ /dev/null
@@ -1,126 +0,0 @@
-//! Create lines from a [crate::widget::canvas::Path] and assigns them various attributes/styles.
-pub use crate::widget::canvas::Style;
-
-use iced_native::Color;
-
-/// The style of a stroke.
-#[derive(Debug, Clone)]
-pub struct Stroke<'a> {
- /// The color or gradient of the stroke.
- ///
- /// By default, it is set to a [`Style::Solid`] with [`Color::BLACK`].
- pub style: Style,
- /// The distance between the two edges of the stroke.
- pub width: f32,
- /// The shape to be used at the end of open subpaths when they are stroked.
- pub line_cap: LineCap,
- /// The shape to be used at the corners of paths or basic shapes when they
- /// are stroked.
- pub line_join: LineJoin,
- /// The dash pattern used when stroking the line.
- pub line_dash: LineDash<'a>,
-}
-
-impl<'a> Stroke<'a> {
- /// Sets the color of the [`Stroke`].
- pub fn with_color(self, color: Color) -> Self {
- Stroke {
- style: Style::Solid(color),
- ..self
- }
- }
-
- /// Sets the width of the [`Stroke`].
- pub fn with_width(self, width: f32) -> Self {
- Stroke { width, ..self }
- }
-
- /// Sets the [`LineCap`] of the [`Stroke`].
- pub fn with_line_cap(self, line_cap: LineCap) -> Self {
- Stroke { line_cap, ..self }
- }
-
- /// Sets the [`LineJoin`] of the [`Stroke`].
- pub fn with_line_join(self, line_join: LineJoin) -> Self {
- Stroke { line_join, ..self }
- }
-}
-
-impl<'a> Default for Stroke<'a> {
- fn default() -> Self {
- Stroke {
- style: Style::Solid(Color::BLACK),
- width: 1.0,
- line_cap: LineCap::default(),
- line_join: LineJoin::default(),
- line_dash: LineDash::default(),
- }
- }
-}
-
-/// The shape used at the end of open subpaths when they are stroked.
-#[derive(Debug, Clone, Copy)]
-pub enum LineCap {
- /// The stroke for each sub-path does not extend beyond its two endpoints.
- Butt,
- /// At the end of each sub-path, the shape representing the stroke will be
- /// extended by a square.
- Square,
- /// At the end of each sub-path, the shape representing the stroke will be
- /// extended by a semicircle.
- Round,
-}
-
-impl Default for LineCap {
- fn default() -> LineCap {
- LineCap::Butt
- }
-}
-
-impl From<LineCap> for lyon::tessellation::LineCap {
- fn from(line_cap: LineCap) -> lyon::tessellation::LineCap {
- match line_cap {
- LineCap::Butt => lyon::tessellation::LineCap::Butt,
- LineCap::Square => lyon::tessellation::LineCap::Square,
- LineCap::Round => lyon::tessellation::LineCap::Round,
- }
- }
-}
-
-/// The shape used at the corners of paths or basic shapes when they are
-/// stroked.
-#[derive(Debug, Clone, Copy)]
-pub enum LineJoin {
- /// A sharp corner.
- Miter,
- /// A round corner.
- Round,
- /// A bevelled corner.
- Bevel,
-}
-
-impl Default for LineJoin {
- fn default() -> LineJoin {
- LineJoin::Miter
- }
-}
-
-impl From<LineJoin> for lyon::tessellation::LineJoin {
- fn from(line_join: LineJoin) -> lyon::tessellation::LineJoin {
- match line_join {
- LineJoin::Miter => lyon::tessellation::LineJoin::Miter,
- LineJoin::Round => lyon::tessellation::LineJoin::Round,
- LineJoin::Bevel => lyon::tessellation::LineJoin::Bevel,
- }
- }
-}
-
-/// The dash pattern used when stroking the line.
-#[derive(Debug, Clone, Copy, Default)]
-pub struct LineDash<'a> {
- /// The alternating lengths of lines and gaps which describe the pattern.
- pub segments: &'a [f32],
-
- /// The offset of [`LineDash::segments`] to start the pattern.
- pub offset: usize,
-}