Skip to main content

Crate gecol_core

Crate gecol_core 

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

Modules§

extract
prelude
template
theme

Structs§

Cache
Allows caching extraction results.

Enums§

Error
Gecol error wrapper around all the possible errors.