Skip to content
This repository has been archived by the owner on May 7, 2021. It is now read-only.
/ ikon Public archive

A robust, flexible Rust framework for creating encoders and decoders for various icon formats. 🦀

License

Notifications You must be signed in to change notification settings

GarkGarcia/ikon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ikon

Crate API Minimum rustc version Downloads License

A robust, flexible framework for creating encoders and decoders for various icon formats.

Overview

Ikon is intended to be used as a framework for developers interested in creating encoders and decoders for various icon formats such as .ico files and favicon schemes. It does not come with any encoders or decoders out of the box.

Instead, it simply automates much of the hard work of encoding, decoding and resampling different image formats, as well as provides powerfull abstractions, allowing developers to concentrate on the more relevant problems.

Icon families are represented as maps between icons and images.The type of the icons of an icon is what determines how it can be indexed.

Icons

Each icon format is associated with a particular type of icon. The type of the icons of an icon family is what determines how it can be indexed. Each icon can only be associated with a single image.

Resampling

Raster graphics are scaled using resampling filters, which are represented by functions that take a source image and a size and return a re-scaled image.

This allows the users of ikon and any of it's dependant crates to provide their custom resampling filters. Common resampling filters are provided in the resample module. The resample module also exposes the resample::apply function, which applies a resampling filter to an image and checks if the outputted result matches the dimensions specified by the filter's arguments.

Supported Image Formats

Ikon uses image for raster graphics manipulations and resvg with the raqote backend for svg rasterization.

Note that some file formats supported by image were explicitly left out of ikon because they were considered irrelevant to the library's domain.

Format Supported?
png All supported color types
jpeg Baseline and progressive
gif Yes
bmp Yes
webp Lossy(Luma channel only)
svg Static SVG Full 1.1

Build Requirements

Ikon relies on harfbuzz_rs, wich means CMake is required to be installed for it build.

License

Licensed under MIT license( LICENSE-MIT or http://opensource.org/licenses/MIT).

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be licensed as above, without any additional terms or conditions.

Feel free to help out! Contributions are welcomed 😃

About

A robust, flexible Rust framework for creating encoders and decoders for various icon formats. 🦀

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages