0.1.0-beta.16 |
|
---|---|
0.1.0-beta.15 |
|
0.1.0-beta.12 |
|
0.1.0-beta.11 |
|
0.1.0-beta.2 |
|
#26 in #icon
34 downloads per month
Used in 3 crates
36KB
521 lines
Ikon
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 😃
Dependencies
~14MB
~260K SLoC