graphics-shapes

Crates.iographics-shapes
lib.rsgraphics-shapes
version0.4.4
sourcesrc
created_at2022-09-10 08:42:40.602083
updated_at2024-09-30 08:22:04.510623
descriptionShapes for graphics
homepage
repositoryhttps://github.com/emmabritton/graphics_shapes
max_upload_size
id662413
size147,696
Emma Britton (emmabritton)

documentation

README

Crates.io Documentation

Shapes for Graphics

Contains code to make and alter various shapes.

Primarily designed to be used with Buffer Graphics and Pixels graphics lib

Usage

Add this line to Cargo.toml

graphics-shapes = "0.4.4"
# or with both features (serde is enabled by default)
graphics-shapes = {version = "0.4.4", features = ["mint"] }

Examples

let rect = Rect::new((10,10),(20,20));
assert!(rect.contains(coord!(15,15)));
let triangle = Triangle::new((34,5),(12,30),(9,10));
let rotated = triangle.rotate(45);

let start = coord!(20,130);
let dist = start.distance((30,130));

Shapes

  • Line
  • Rect
  • Triangle
  • Circle
  • Ellipse
  • Polygon

Shared methods

  • contains (Coord | Shape) - Returns true if param is entirely inside
  • intersects (Shape) - Returns true if param is partially inside/touching
  • outline_pixels - Returns a list of points that can be used to draw a stroke version
  • filled_pixels - Returns a list of points that can be used to draw a filled version
  • rotate, scale, transform - Copy and change the shape

Per shape methods

All the shapes have methods to create similar sized shapes of different types, e.g. Circle::to_outer_rect(), Rect::to_triangles()

Working with multiple shapes

Each Shape is a separate struct so to store them without putting them in a Box you can use ShapeBox which implements Shape and so is fully compatible with other Shapes and their methods.

Assertions

This library uses debug assertions for some methods.

Features

Default features: "serde"

Serde

serde adds serde::{Serialize, Deserialize} to Coord, Line, Rect, Circle, Triangle, Ellipse, Polygon

Mint

mint adds a From impl for Point2<isize> to Coord

Known issues

  • Ellipses don't plot correctly when rotated
Commit count: 73

cargo fmt