|
NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
|
RGB颜色模型的实现 更多...
类 | |
| class | color |
| RGB颜色类 更多... | |
函数 | |
| constexpr color | operator* (const double scalar, const color &color) noexcept |
| 标量乘以颜色 | |
| constexpr color | operator* (const int scalar, const color &color) noexcept |
| 整数标量乘以颜色 | |
RGB颜色模型的实现
本实现严格遵循以下颜色表示与合成相关标准规范:
CSS 颜色标准:
合成与混合标准:
色彩空间标准:
ANSI 终端颜色标准:
XTerm 256 色规范:
图形文件格式标准:
根据 CSS Color Module Level 4 §4.2,RGB 颜色由以下分量组成:
| 分量 | 范围 | 数据类型 | 说明 |
|---|---|---|---|
| R (红) | 0-255 | int | 红色通道强度 |
| G (绿) | 0-255 | int | 绿色通道强度 |
| B (蓝) | 0-255 | int | 蓝色通道强度 |
| A (透) | 0-255 | int | Alpha 通道(0=全透明,255=不透明) |
根据 CSS Color Module Level 4 §5.2,支持以下十六进制格式:
| 格式 | 示例 | 说明 |
|---|---|---|
| #RRGGBB | #FF0000 | 不透明红色(Alpha=255) |
| #RRGGBBAA | #FF000080 | 半透明红色(Alpha=128) |
根据 W3C Compositing and Blending Level 1 §4,Alpha 合成遵循以下规则:
| 操作 | 公式 |
|---|---|
| 合成 Alpha | α_result = α_src + α_dst × (1 - α_src) |
| 合成 RGB | C_result = (C_src × α_src + C_dst × α_dst × (1 - α_src)) / α_result |
本实现的 blend() 方法遵循上述规范,在直通 Alpha (straight alpha) 空间进行合成。
根据 ITU-R BT.709-6 和 sRGB 标准,人眼感知灰度采用以下加权平均:
| 通道 | 权重 | 说明 |
|---|---|---|
| 红色 | 0.299 | 人眼对红色敏感度 |
| 绿色 | 0.587 | 人眼对绿色最敏感 |
| 蓝色 | 0.114 | 人眼对蓝色最不敏感 |
根据 XTerm 256-Color 规范,调色板结构如下:
| 索引范围 | 数量 | 说明 |
|---|---|---|
| 0-15 | 16 | 系统标准色(0-7 标准,8-15 高亮) |
| 16-231 | 216 | 6×6×6 RGB 立方体(R,G,B ∈ {0,95,135,175,215,255}) |
| 232-255 | 24 | 灰度渐变(从 #080808 到 #EEEEEE) |
6×6×6 颜色立方体的索引公式:index = 16 + 36×R_idx + 6×G_idx + B_idx
根据 ECMA-48 §8.3.117,基本 ANSI 颜色代码:
| 颜色 | 前景码 | 背景码 | RGB 近似 |
|---|---|---|---|
| 黑色 | 30 | 40 | #000000 |
| 红色 | 31 | 41 | #CD0000 |
| 绿色 | 32 | 42 | #00CD00 |
| 黄色 | 33 | 43 | #CDCD00 |
| 蓝色 | 34 | 44 | #0000EE |
| 品红 | 35 | 45 | #CD00CD |
| 青色 | 36 | 46 | #00CDCD |
| 白色 | 37 | 47 | #E5E5E5 |
| 特性 | 规范参数 |
|---|---|
| 分量范围 | 0-255(8 位每通道) |
| Alpha 类型 | 直通 Alpha(non-premultiplied) |
| 混合模式 | Normal(source-over) |
| 插值空间 | 直通 Alpha 空间 |
| 灰度权重 | BT.709 / sRGB(0.299, 0.587, 0.114) |
| 预乘转换 | 支持(to_premultiplied / from_premultiplied) |
本类提供以下预定义颜色常量:
| 常量名 | RGB 值 | 说明 |
|---|---|---|
| black() | 0, 0, 0, 255 | 黑色 |
| white() | 255, 255, 255, 255 | 白色 |
| gray() | 128, 128, 128, 255 | 灰色 |
| red() | 255, 0, 0, 255 | 红色 |
| green() | 0, 255, 0, 255 | 绿色 |
| blue() | 0, 0, 255, 255 | 蓝色 |
| yellow() | 255, 255, 0, 255 | 黄色 |
| magenta() | 255, 0, 255, 255 | 品红 |
| cyan() | 0, 255, 255, 255 | 青色 |
| transparent() | 0, 0, 0, 0 | 完全透明 |