pub enum Shape {
Noop,
Vec(Vec<Shape>),
Circle(CircleShape),
LineSegment {
points: [Pos2; 2],
stroke: Stroke,
},
Path(PathShape),
Rect(RectShape),
Text(TextShape),
Mesh(Mesh),
QuadraticBezier(QuadraticBezierShape),
CubicBezier(CubicBezierShape),
Callback(PaintCallback),
}
Expand description
A paint primitive such as a circle or a piece of text. Coordinates are all screen space points (not physical pixels).
You should generally recreate your Shape
s each frame,
but storing them should also be fine with one exception:
Shape::Text
depends on the current pixels_per_point
(dpi scale)
and so must be recreated every time pixels_per_point
changes.
Variants
Noop
Paint nothing. This can be useful as a placeholder.
Vec(Vec<Shape>)
Recursively nest more shapes - sometimes a convenience to be able to do. For performance reasons it is better to avoid it.
Circle(CircleShape)
Circle with optional outline and fill.
LineSegment
A line between two points.
Path(PathShape)
A series of lines between points. The path can have a stroke and/or fill (if closed).
Rect(RectShape)
Rectangle with optional outline and fill.
Text(TextShape)
Text.
This needs to be recreated if pixels_per_point
(dpi scale) changes.
Mesh(Mesh)
A general triangle mesh.
Can be used to display images.
QuadraticBezier(QuadraticBezierShape)
A quadratic Bézier Curve.
CubicBezier(CubicBezierShape)
A cubic Bézier Curve.
Callback(PaintCallback)
Backend-specific painting.
Implementations
sourceimpl Shape
impl Shape
sourcepub fn line_segment(points: [Pos2; 2], stroke: impl Into<Stroke>) -> Self
pub fn line_segment(points: [Pos2; 2], stroke: impl Into<Stroke>) -> Self
A line between two points.
More efficient than calling Self::line
.
sourcepub fn hline(x: RangeInclusive<f32>, y: f32, stroke: impl Into<Stroke>) -> Self
pub fn hline(x: RangeInclusive<f32>, y: f32, stroke: impl Into<Stroke>) -> Self
A horizontal line.
sourcepub fn vline(x: f32, y: RangeInclusive<f32>, stroke: impl Into<Stroke>) -> Self
pub fn vline(x: f32, y: RangeInclusive<f32>, stroke: impl Into<Stroke>) -> Self
A vertical line.
sourcepub fn line(points: Vec<Pos2>, stroke: impl Into<Stroke>) -> Self
pub fn line(points: Vec<Pos2>, stroke: impl Into<Stroke>) -> Self
A line through many points.
Use Self::line_segment
instead if your line only connects two points.
sourcepub fn closed_line(points: Vec<Pos2>, stroke: impl Into<Stroke>) -> Self
pub fn closed_line(points: Vec<Pos2>, stroke: impl Into<Stroke>) -> Self
A line that closes back to the start point again.
sourcepub fn dotted_line(
path: &[Pos2],
color: impl Into<Color32>,
spacing: f32,
radius: f32
) -> Vec<Self>
pub fn dotted_line(
path: &[Pos2],
color: impl Into<Color32>,
spacing: f32,
radius: f32
) -> Vec<Self>
Turn a line into equally spaced dots.
sourcepub fn dashed_line(
path: &[Pos2],
stroke: impl Into<Stroke>,
dash_length: f32,
gap_length: f32
) -> Vec<Self>
pub fn dashed_line(
path: &[Pos2],
stroke: impl Into<Stroke>,
dash_length: f32,
gap_length: f32
) -> Vec<Self>
Turn a line into dashes.
sourcepub fn dashed_line_many(
points: &[Pos2],
stroke: impl Into<Stroke>,
dash_length: f32,
gap_length: f32,
shapes: &mut Vec<Shape>
)
pub fn dashed_line_many(
points: &[Pos2],
stroke: impl Into<Stroke>,
dash_length: f32,
gap_length: f32,
shapes: &mut Vec<Shape>
)
Turn a line into dashes. If you need to create many dashed lines use this instead of
Self::dashed_line
sourcepub fn convex_polygon(
points: Vec<Pos2>,
fill: impl Into<Color32>,
stroke: impl Into<Stroke>
) -> Self
pub fn convex_polygon(
points: Vec<Pos2>,
fill: impl Into<Color32>,
stroke: impl Into<Stroke>
) -> Self
A convex polygon with a fill and optional stroke.
The most performant winding order is clockwise.
pub fn circle_filled(
center: Pos2,
radius: f32,
fill_color: impl Into<Color32>
) -> Self
pub fn circle_stroke(center: Pos2, radius: f32, stroke: impl Into<Stroke>) -> Self
pub fn rect_filled(
rect: Rect,
rounding: impl Into<Rounding>,
fill_color: impl Into<Color32>
) -> Self
pub fn rect_stroke(
rect: Rect,
rounding: impl Into<Rounding>,
stroke: impl Into<Stroke>
) -> Self
pub fn text(
fonts: &Fonts,
pos: Pos2,
anchor: Align2,
text: impl ToString,
font_id: FontId,
color: Color32
) -> Self
pub fn galley(pos: Pos2, galley: Arc<Galley>) -> Self
sourcepub fn galley_with_color(
pos: Pos2,
galley: Arc<Galley>,
text_color: Color32
) -> Self
pub fn galley_with_color(
pos: Pos2,
galley: Arc<Galley>,
text_color: Color32
) -> Self
The text color in the Galley
will be replaced with the given color.
pub fn mesh(mesh: Mesh) -> Self
pub fn image(texture_id: TextureId, rect: Rect, uv: Rect, tint: Color32) -> Self
sourcepub fn visual_bounding_rect(&self) -> Rect
pub fn visual_bounding_rect(&self) -> Rect
The visual bounding rectangle (includes stroke widths)
Trait Implementations
sourceimpl From<CircleShape> for Shape
impl From<CircleShape> for Shape
sourcefn from(shape: CircleShape) -> Self
fn from(shape: CircleShape) -> Self
Converts to this type from the input type.
sourceimpl From<CubicBezierShape> for Shape
impl From<CubicBezierShape> for Shape
sourcefn from(shape: CubicBezierShape) -> Self
fn from(shape: CubicBezierShape) -> Self
Converts to this type from the input type.
sourceimpl From<PaintCallback> for Shape
impl From<PaintCallback> for Shape
sourcefn from(shape: PaintCallback) -> Self
fn from(shape: PaintCallback) -> Self
Converts to this type from the input type.
sourceimpl From<QuadraticBezierShape> for Shape
impl From<QuadraticBezierShape> for Shape
sourcefn from(shape: QuadraticBezierShape) -> Self
fn from(shape: QuadraticBezierShape) -> Self
Converts to this type from the input type.
sourceimpl PartialEq<Shape> for Shape
impl PartialEq<Shape> for Shape
impl StructuralPartialEq for Shape
Auto Trait Implementations
impl !RefUnwindSafe for Shape
impl Send for Shape
impl Sync for Shape
impl Unpin for Shape
impl !UnwindSafe for Shape
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more