Trait Shape

Source
pub trait Shape: AnyToAny {
Show 23 methods // Required methods fn from_points(points: &[Coord]) -> Self where Self: Sized; fn rebuild(&self, points: &[Coord]) -> Self where Self: Sized; fn contains(&self, point: Coord) -> bool; fn points(&self) -> Vec<Coord>; fn center(&self) -> Coord; fn outline_pixels(&self) -> Vec<Coord>; fn filled_pixels(&self) -> Vec<Coord>; fn to_shape_box(&self) -> ShapeBox; // Provided methods fn translate_by(&self, delta: Coord) -> Self where Self: Sized { ... } fn move_to(&self, point: Coord) -> Self where Self: Sized { ... } fn move_center_to(&self, point: Coord) -> Self where Self: Sized { ... } fn rotate(&self, degrees: isize) -> Self where Self: Sized { ... } fn rotate_around(&self, degrees: isize, point: Coord) -> Self where Self: Sized { ... } fn left(&self) -> isize { ... } fn right(&self) -> isize { ... } fn top(&self) -> isize { ... } fn bottom(&self) -> isize { ... } fn top_left(&self) -> Coord { ... } fn top_right(&self) -> Coord { ... } fn bottom_left(&self) -> Coord { ... } fn bottom_right(&self) -> Coord { ... } fn scale(&self, factor: f32) -> Self where Self: Sized { ... } fn scale_around(&self, factor: f32, point: Coord) -> Self where Self: Sized { ... }
}

Required Methods§

Source

fn from_points(points: &[Coord]) -> Self
where Self: Sized,

create this shape from a list of points (corners of a shape or tips of a line)

Source

fn rebuild(&self, points: &[Coord]) -> Self
where Self: Sized,

Used internally

Source

fn contains(&self, point: Coord) -> bool

Returns true if the shape contains point

Source

fn points(&self) -> Vec<Coord>

Points(corners/ends) the shape is made of

Source

fn center(&self) -> Coord

Center of shape

Source

fn outline_pixels(&self) -> Vec<Coord>

The coords for drawing the shape outline, the points may be in any order This should be cached rather than called per frame

Source

fn filled_pixels(&self) -> Vec<Coord>

The coords for drawing the filled shape, the points may be in any order This should be cached rather than called per frame

Source

fn to_shape_box(&self) -> ShapeBox

Convert to ShapeBox, used to store shapes with type (for bulk drawing, etc)

Provided Methods§

Source

fn translate_by(&self, delta: Coord) -> Self
where Self: Sized,

change every point by +delta

Source

fn move_to(&self, point: Coord) -> Self
where Self: Sized,

moves the shapes first point to point (and changes every other point to match their original distance and angle)

As this moves self.points()[0] the result might be unexpected if the shape was created right to left and/or bottom to top

Source

fn move_center_to(&self, point: Coord) -> Self
where Self: Sized,

Moves the shapes center to point (and changes every other point to match their original distance and angle)

As this moves relative to self.points()[0] the result might be unexpected if the shape was created right to left and/or bottom to top

Source

fn rotate(&self, degrees: isize) -> Self
where Self: Sized,

Rotate shape around it’s center

Source

fn rotate_around(&self, degrees: isize, point: Coord) -> Self
where Self: Sized,

Rotate shape around a point

Source

fn left(&self) -> isize

x of the left most point

Source

fn right(&self) -> isize

x of the right most point

Source

fn top(&self) -> isize

y of the top most point

Source

fn bottom(&self) -> isize

y of the bottom most point

Source

fn top_left(&self) -> Coord

Source

fn top_right(&self) -> Coord

Source

fn bottom_left(&self) -> Coord

Source

fn bottom_right(&self) -> Coord

Source

fn scale(&self, factor: f32) -> Self
where Self: Sized,

Scale the shape by factor (around the center, so the change will be uniform)

Source

fn scale_around(&self, factor: f32, point: Coord) -> Self
where Self: Sized,

Scale the shape by factor around point

Implementors§