#rgb #color #rgb-led #led

no-std cichlid

编程可寻址LED的颜色数学库

6个版本

0.2.1 2019年9月7日
0.2.0 2019年4月27日
0.1.3 2019年4月16日

嵌入式开发中排名657

MIT许可证

120KB
2.5K SLoC

Cichlid

cichlid crate cichlid docs

一个简单的Rust库,用于管理RGB着色。也支持no-std环境。

目前这个库主要面向嵌入式系统使用,但也包含了一些更通用的有用API。

  • 快速u8u16数学 — Cichlid包含缩放、调暗和调亮单字节和双字节值的函数。还实现了基本三角函数(正弦、余弦)。

  • HSV和RGB支持 — 通过HSVColorRGB结构提供对每个颜色的完全控制。还实现了从HSVColorRGB的多种转换方式。

  • 轴向(两点)颜色渐变 — 创建任意两个颜色之间的平滑过渡,可以设置任意数量的步骤。

  • 功耗估算 — 使用实现PowerEstimator特征的struct进行功耗估算。

这个库还处于初级阶段,因此可能缺乏文档和严格的测试。

示例

通用颜色操作

use cichlid::{HSV, ColorRGB};

let red = ColorRGB::Red;
let blue = ColorRGB::Blue;
let mut purple = red + blue;
assert_eq!(purple, ColorRGB::new(255, 0, 255));

purple.scale(128); // Scale by half
assert_eq!(purple, ColorRGB::new(128, 0, 128));

purple *= 2;  // Multiple all components by two
assert_eq!(purple, red + blue);

使用HSV(色调、饱和度、亮度)并将其转换为ColorRGB

use cichlid::{HSV, ColorRGB};

let red_hsv = HSV::new(0, 255, 255);
let red_rgb = ColorRGB::from(red_hsv);
assert_eq!(red_rgb, ColorRGB::Red);

创建渐变非常简单,只需导入trait并调用方法

use cichlid::{HSV, ColorRGB, GradientDirection, prelude::*};
let mut colors = [ColorRGB::Black; 100];

let start = HSV::new(0, 255, 255);
let end = HSV::new(100, 255, 180);
colors.gradient_fill(start, end, GradientDirection::Longest);

贡献

欢迎所有形式的贡献!打开PR来贡献一些改进。查看问题标签页以了解需要帮助的内容。

许可证

Cichlid根据MIT许可证分发。有关详细信息,请参阅LICENSE-MIT。打开pull请求被视为接受这些许可条款。

无运行时依赖项