Crates.io | polymorpher |
lib.rs | polymorpher |
version | 0.1.4 |
created_at | 2025-07-03 09:51:34.305204+00 |
updated_at | 2025-07-05 07:56:32.845058+00 |
description | Library for creating and morphing potentially rounded polygons |
homepage | https://github.com/Aiving/polymorpher |
repository | https://github.com/Aiving/polymorpher.git |
max_upload_size | |
id | 1736083 |
size | 165,537 |
A library for creating and morphing potentially rounded polygons. Based on the Kotlin implementation of Shape Morph from M3 Expressive.
kurbo
: implements PathBuilder
for kurbo::BezPath
.skia
: implements PathBuilder
for skia_safe::PathBuilder
and skia_safe::Path
.tiny-skia
: implements PathBuilder
for tiny_skia::PathBuilder
.lyon
: implements PathBuilder
for everything that implements lyon
's PathBuilder
.lyon
use lyon::path::Path;
use crate::{
CornerRounding, RoundedPoint,
RoundedPolygon, geometry::Point
};
let path = RoundedPolygon::from_points(
&[
RoundedPoint::new(
Point::new(0.499, 1.023),
CornerRounding::smoothed(0.241, 0.778)
),
RoundedPoint::new(
Point::new(-0.005, 0.792),
CornerRounding::new(0.208)
),
RoundedPoint::new(
Point::new(0.073, 0.258),
CornerRounding::new(0.228)
),
RoundedPoint::new(
Point::new(0.433, -0.000),
CornerRounding::new(0.491)
),
],
1,
true,
)
.normalized()
.transformed(|point| point * 128.0)
.as_path::<Path>(false, true);
// Render it however you want!
The Minimum Supported Rust Version is currently 1.85.1.
Licensed under the Apache License, Version 2.0 to be compatible with the AOSP. This project may not be copied, modified, or distributed except according to those terms.