| // Copyright 2022 The piet-gpu authors. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // https://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| // Also licensed under MIT license, at your choice. |
| |
| use core::borrow::Borrow; |
| |
| /// Describes the winding rule that determines the interior portion of a path. |
| #[derive(Copy, Clone, PartialEq, Eq, Debug)] |
| pub enum Fill { |
| NonZero, |
| EvenOdd, |
| } |
| |
| /// Defines the connection between two segments of a stroke. |
| #[derive(Copy, Clone, PartialEq, Eq, Debug)] |
| pub enum Join { |
| /// A straight line connecting the segments. |
| Bevel, |
| /// The segments are extended to their natural intersection point. |
| Miter, |
| /// An arc between the segments. |
| Round, |
| } |
| |
| /// Defines the shape to be drawn at the ends of a stroke. |
| #[derive(Copy, Clone, PartialEq, Eq, Debug)] |
| pub enum Cap { |
| /// Flat cap. |
| Butt, |
| /// Square cap with dimensions equal to half the stroke width. |
| Square, |
| /// Rounded cap with radius equal to half the stroke width. |
| Round, |
| } |
| |
| /// Describes the visual style of a stroke. |
| #[derive(Copy, Clone, Debug)] |
| pub struct Stroke<D> |
| where |
| D: Borrow<[f32]>, |
| { |
| /// Width of the stroke. |
| pub width: f32, |
| /// Style for connecting segments of the stroke. |
| pub join: Join, |
| /// Limit for miter joins. |
| pub miter_limit: f32, |
| /// Style for capping the beginning of an open subpath. |
| pub start_cap: Cap, |
| /// Style for capping the end of an open subpath. |
| pub end_cap: Cap, |
| /// Lengths of dashes in alternating on/off order. |
| pub dash_pattern: D, |
| /// Offset of the first dash. |
| pub dash_offset: f32, |
| /// True if the stroke width should be affected by the scale of a |
| /// transform. |
| pub scale: bool, |
| } |