Skip to content

gpui-tesserae/figma_squircle_rust

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Figma Squircle Rust

Figma-flavored squircles for everyone

Disclaimer

This library is not an official product from the Figma team and does not guarantee to produce the same results as you would get in Figma.

This is a rust fork of phamfoo/figma-squircle - Big thanks to the original creator.

What is this?

Figma has a great feature called corner smoothing, allowing you to create rounded shapes with a seamless continuous curve (squircles).

This library helps you bring those squircles to your apps.

Installation

figma_squircle = "0.1.0"

Usage

use figma_squircle::{get_svg_path, FigmaSquircleParams};

fn main() {
    let svg_path = get_svg_path(
        FigmaSquircleParams::default()
            .width(200.)
            .height(200.)
            .corner_radius(24.) // Defaults to 0.
            .corner_smoothing(0.8) // `corner_smoothing` goes from 0 to 1.
    );

    let svg_path = get_svg_path(
        FigmaSquircleParams::default()
            .width(200.)
            .height(200.)
            .corner_radius(24.)
            .corner_smoothing(0.8) // Defaults to 1.
            // You can also adjust the radius of each corner individually.
            .top_left_corner_radius(48.)
    );

    let svg_path = get_svg_path(
        FigmaSquircleParams::default()
            // You can also set both the width and height at once.
            .size(200.)
    );
}

Preserve Smoothing

The larger the corner radius, the less space we have left to make a smooth transition from the straight line to the rounded corner. As a result, you might have noticed that the smoothing effect appears to be less pronounced as the radius gets bigger.

Try enabling preserve_smoothing if you're not happy with the generated shape.

let svg_path = get_svg_path(
    FigmaSquircleParams::default()
        .width(200.)
        .height(200.)
        .corner_radius(24.)
        .corner_smoothing(0.8)
        .preserve_smoothing(true) // Defaults to false.
);

There's also a Figma plugin that utilizes this option.

Thanks

About

No description, website, or topics provided.

Resources

License

MIT, MIT licenses found

Licenses found

MIT
LICENSE
MIT
ORIGINAL_LICENSE

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages