apcach-rs 0.1.0

Rust color calculator for composing colors with consistent APCA or WCAG contrast
Documentation
# apcach-rs

Rust port of [apcach](https://github.com/antiflasher/apcach),
a color calculator for composing colors with consistent APCA or WCAG contrast.

The crate works in OKLCH and can target both `sRGB` and `Display-P3` output.

## Install

Add the crate to `Cargo.toml`:

```toml
[dependencies]
apcach-rs = "0.1"
```

In Rust code, import it as `apcach_rs`.

## Example

```rust
use apcach_rs::{apcach, to_css, Chroma, ColorSpace, CssFormat};

fn main() -> Result<(), apcach_rs::Error> {
    let color = apcach(70.0, Chroma::Fixed(0.15), 150.0, 100.0, ColorSpace::Srgb)?;

    assert_eq!(to_css(color, CssFormat::Hex)?.len(), 7);
    Ok(())
}
```

## Compose Colors

White background shorthand:

```rust
use apcach_rs::{apcach, Chroma, ColorSpace};

let color = apcach(60.0, Chroma::Fixed(0.2), 145.0, 100.0, ColorSpace::Srgb)?;
```

Foreground on a custom background:

```rust
use apcach_rs::{apcach, cr_to_bg, Chroma, Color, ColorSpace, ContrastModel, SearchDirection};

let color = apcach(
    cr_to_bg(
        Color::srgb(0.91, 0.91, 0.91),
        60.0,
        ContrastModel::Apca,
        SearchDirection::Auto,
    ),
    Chroma::Fixed(0.2),
    145.0,
    100.0,
    ColorSpace::Srgb,
)?;
```

Maximum chroma search:

```rust
use apcach_rs::{apcach, cr_to_bg_white, max_chroma, ColorSpace, ContrastModel, SearchDirection};

let color = apcach(
    cr_to_bg_white(70.0, ContrastModel::Apca, SearchDirection::Auto),
    max_chroma(),
    200.0,
    100.0,
    ColorSpace::Srgb,
)?;
```

## Convert To CSS

```rust
use apcach_rs::{apcach, to_css, Chroma, ColorSpace, CssFormat};

let color = apcach(70.0, Chroma::Fixed(0.15), 150.0, 100.0, ColorSpace::Srgb)?;

let oklch = to_css(color, CssFormat::Oklch)?;
let hex = to_css(color, CssFormat::Hex)?;
let rgb = to_css(color, CssFormat::Rgb)?;
let p3 = to_css(color, CssFormat::P3)?;
```

Supported CSS output formats:

- `CssFormat::Oklch`
- `CssFormat::Rgb`
- `CssFormat::Hex`
- `CssFormat::P3`
- `CssFormat::FigmaP3`

## API Overview

Core composition and conversion:

- `apcach`
- `calc_contrast`
- `to_css`

Contrast configuration helpers:

- `cr_to_bg`
- `cr_to_bg_white`
- `cr_to_bg_black`
- `cr_to_fg`
- `cr_to_fg_white`
- `cr_to_fg_black`

Color adjustment helpers:

- `set_contrast`
- `map_contrast`
- `set_chroma`
- `map_chroma`
- `set_hue`
- `map_hue`

Chroma helpers:

- `max_chroma`
- `max_chroma_capped`

Key public types:

- `ApcachColor`
- `Chroma`
- `Color`
- `ColorSpace`
- `ContrastConfig`
- `ContrastInput`
- `ContrastModel`
- `CssFormat`
- `Error`
- `SearchDirection`


## License

MIT