Skip to main content

RoundedRect

Struct RoundedRect 

Source
pub struct RoundedRect { /* private fields */ }
Expand description

Rounded rectangle vertex source.

Generates vertices for a rectangle where each corner can have its own elliptical radius. The corners are emitted as arcs (bottom-left, bottom-right, top-right, top-left) connected by line segments, forming a closed polygon.

Port of C++ agg::rounded_rect.

Implementations§

Source§

impl RoundedRect

Source

pub fn new(x1: f64, y1: f64, x2: f64, y2: f64, r: f64) -> Self

Create a new rounded rectangle with uniform corner radius.

Source

pub fn default_new() -> Self

Create a default (zero-sized) rounded rectangle.

Source

pub fn rect(&mut self, x1: f64, y1: f64, x2: f64, y2: f64)

Set the rectangle coordinates.

Source

pub fn radius(&mut self, r: f64)

Set uniform corner radius.

Source

pub fn radius_xy(&mut self, rx: f64, ry: f64)

Set corner radii with separate x/y values (uniform across corners).

Source

pub fn radius_bottom_top( &mut self, rx_bottom: f64, ry_bottom: f64, rx_top: f64, ry_top: f64, )

Set corner radii for bottom and top edges.

Source

pub fn radius_all( &mut self, rx1: f64, ry1: f64, rx2: f64, ry2: f64, rx3: f64, ry3: f64, rx4: f64, ry4: f64, )

Set each corner radius individually.

Corners are numbered 1-4 starting from bottom-left going clockwise: 1 = bottom-left, 2 = bottom-right, 3 = top-right, 4 = top-left.

Source

pub fn normalize_radius(&mut self)

Normalize radii so they don’t exceed rectangle dimensions.

If the sum of adjacent corner radii exceeds the corresponding dimension, all radii are uniformly scaled down.

Source

pub fn set_approximation_scale(&mut self, s: f64)

Set the approximation scale for arc generation.

Source

pub fn approximation_scale(&self) -> f64

Get the current approximation scale.

Trait Implementations§

Source§

impl VertexSource for RoundedRect

Source§

fn rewind(&mut self, _path_id: u32)

Reset the vertex source to the beginning of the given path. path_id selects which sub-path to iterate (0 for the first/only path).
Source§

fn vertex(&mut self, x: &mut f64, y: &mut f64) -> u32

Return the next vertex. Writes coordinates to x and y, returns a path command. Returns PATH_CMD_STOP when iteration is complete.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.