Expand description
A perception-aware accent color extractor and dynamic theme generator.
§Table of Contents
§How to get it
This crate is available on crates.io.
§With cargo
cargo add gecol-core§Example
§Full pipeline
You can extract a color, generate a theme and build a template using only a few lines of code:
use gecol_core::prelude::*;
let config = ExtractionConfig::default();
// 1. Extract the color from the given image
if let Some(color) = Extractor::extract_cached("/path/img.jpg", &config, None)? {
// 2. Generate theme based on that color
let theme = Theme::dark(color);
// 3. Build the configuration file
let template = Template::new("config.toml.template", "config.toml");
template.build(&theme)?;
// Or when having multiple templates (more efficient)
let templates: HashMap<String, Template> = get_templates();
build_templates(&templates, theme)?;
}§Template syntax
In the templates, you have access to a rich object-oriented color API:
background = "{{ background }}"
transparent_bg = "{{ background.hexa(0.8) }}"
hover_color = "{{ background.lighten(0.1) }}"
border = rgba({{ primary.rgb }}aa)§Configuration
The ExtractionConfig struct allows
fine-tuning of the extraction algorithm, such as saliency bonus, warmth
bias and so on. You can read more about all the fine-tuning options in the
ExtractionConfig documentation.
§Links
- Author: Martan03
- GitHub repository: gecol
- Package: crates.io
- Documentation: docs.rs
- Author website: martan03.github.io
Modules§
Structs§
- Cache
- Allows caching extraction results.
Enums§
- Error
- Gecol error wrapper around all the possible errors.