pub struct Shape {
pub kind: ShapeKind,
pub x: Vec<f64>,
pub y: Vec<f64>,
pub color: Color32,
pub fill: bool,
pub line_style: LineStyle,
pub line_width: f32,
pub gap_color: Option<Color32>,
pub is_overlay: bool,
}Expand description
A shape drawn over the data area (silx BackendBase.addShape).
fill is honored for ShapeKind::Polygon / ShapeKind::Rectangle.
Concave polygons fill correctly: the widget chrome fills the polygon’s
ear-clipping triangulation (triangulate_simple_polygon) as a mesh rather
than using egui’s convex-only Shape::convex_polygon, matching silx’s
matplotlib / pygfx backends. The outline (and all line kinds) honor
line_style / line_width, with gap_color filling dash gaps (silx
gapcolor).
Fields§
§kind: ShapeKindWhat geometry this shape draws.
x: Vec<f64>Data X coordinates of the shape’s points (see ShapeKind for which
array each kind reads).
y: Vec<f64>Data Y coordinates of the shape’s points.
color: Color32Outline and fill color (silx color).
fill: boolFill the interior (silx fill); honored for Polygon / Rectangle.
line_style: LineStyleOutline stroke style (silx linestyle).
line_width: f32Outline width in logical points (silx linewidth).
gap_color: Option<Color32>Second color filling dash gaps in the outline (silx gapcolor); None
leaves the gaps empty.
is_overlay: boolWhether the shape draws in the overlay layer (silx
_OverlayItem.isOverlay / setOverlay, shape.py:54-73).
Honored by the renderer’s two-pass split: true draws in the overlay
layer on top of the chrome (like an ROI), false in the base data layer
under the overlay items (ROIs, markers, crosshair). Defaults to true
(the port’s historical behavior); silx’s _OverlayItem defaults to
False, but siplot’s shape constructors are used as on-top annotations,
so the default is kept and callers opt into the data layer via
Shape::with_overlay.
Implementations§
Source§impl Shape
impl Shape
Sourcepub fn polygon(x: Vec<f64>, y: Vec<f64>) -> Self
pub fn polygon(x: Vec<f64>, y: Vec<f64>) -> Self
A closed polygon through (x[i], y[i]). Panics if x and y differ in
length.
Sourcepub fn rectangle(x0: f64, y0: f64, x1: f64, y1: f64) -> Self
pub fn rectangle(x0: f64, y0: f64, x1: f64, y1: f64) -> Self
An axis-aligned rectangle between corners (x0, y0) and (x1, y1).
Sourcepub fn polyline(x: Vec<f64>, y: Vec<f64>) -> Self
pub fn polyline(x: Vec<f64>, y: Vec<f64>) -> Self
An open polyline through (x[i], y[i]). Panics if x and y differ in
length.
Sourcepub fn hlines(y: Vec<f64>) -> Self
pub fn hlines(y: Vec<f64>) -> Self
One full-width horizontal line at each y value (silx 'hline').
Sourcepub fn vlines(x: Vec<f64>) -> Self
pub fn vlines(x: Vec<f64>) -> Self
One full-height vertical line at each x value (silx 'vline').
Sourcepub fn with_color(self, color: Color32) -> Self
pub fn with_color(self, color: Color32) -> Self
Set the outline / fill color.
Sourcepub fn with_line_style(self, style: LineStyle) -> Self
pub fn with_line_style(self, style: LineStyle) -> Self
Set the outline stroke style.
Sourcepub fn with_line_width(self, width: f32) -> Self
pub fn with_line_width(self, width: f32) -> Self
Set the outline width.
Sourcepub fn with_gap_color(self, color: Color32) -> Self
pub fn with_gap_color(self, color: Color32) -> Self
Set the dash-gap fill color (silx gapcolor).
Sourcepub fn with_overlay(self, overlay: bool) -> Self
pub fn with_overlay(self, overlay: bool) -> Self
Set whether the shape draws in the overlay layer (true) or the base
data layer (false) — silx _OverlayItem.setOverlay.
Sourcepub fn screen_points(&self, t: &Transform) -> Vec<Pos2>
pub fn screen_points(&self, t: &Transform) -> Vec<Pos2>
Screen-space vertices for the area-shaped kinds: the four corners of a
ShapeKind::Rectangle, or each (x[i], y[i]) of a
ShapeKind::Polygon / ShapeKind::Polyline. Empty for the line kinds,
whose lines span the data area and are placed at draw time.
Trait Implementations§
impl StructuralPartialEq for Shape
Auto Trait Implementations§
impl Freeze for Shape
impl RefUnwindSafe for Shape
impl Send for Shape
impl Sync for Shape
impl Unpin for Shape
impl UnsafeUnpin for Shape
impl UnwindSafe for Shape
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.