gecol-core 0.1.0

A perception-aware accent color extractor and dynamic theme generator.
Documentation

gecol-core

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 = Config::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: Vec<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