Skip to content

Aiving/polymorpher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Polymorpher

crates.io: polymorpher Documentation Build Status License: Apache 2.0

A library for creating and morphing potentially rounded polygons. Based on the Kotlin implementation of Shape Morph from M3 Expressive.

Features

  • 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.

Example with 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!

MSRV

The Minimum Supported Rust Version is currently 1.85.1.

License

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.

About

Library for creating and morphing potentially rounded polygons

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages