LED API
概述
Matrix OS 中的 LED 系统非常强大,支持不同图层、自定时更新和交叉渐变动画。
对于某些 LED API,你可以指定图层 ID。如果不指定图层 ID,API 将使用 255,表示最顶层。
在对图层进行更改后,只有通过使用 Update() 才能生效并渲染到设备上。
但是,你可以通过写入图层 0(即活动缓冲区)来立即使更改生效。你的更改将立即渲染到设备上。(除非你通过 PauseUpdate(true) 暂停更新)
这对于灯光秀等实时渲染很有用,但可能会导致闪烁和撕裂。而且,除非你先将图层 0 复制到另一个图层,否则在创建新图层时无法保持效果。
此 API 的头文件是 os/MatrixOS.h 的一部分,实现位于 os/system/LED.cpp。
MatrixOS::LED::NextBrightness
void NextBrightness();
将 LED 切换到下一个预定义 的亮度级别。
MatrixOS::LED::SetBrightness
void SetBrightness(uint8_t brightness);
设置 LED 的亮度级别。
参数:
brightness(uint8_t):亮度级别(0-255)。
MatrixOS::LED::SetBrightnessMultiplier
void SetBrightnessMultiplier(string partition_name, float multiplier);
对特定分区的亮度应用乘数。
参数:
partition_name:LED 分区的名称。multiplier(float):亮度的乘数值 。
MatrixOS::LED::SetColor (按位置)
void SetColor(Point xy, Color color, uint8_t layer = 255);
设置指定位置 LED 的颜色。
参数:
MatrixOS::LED::SetColor (按 ID)
void SetColor(uint16_t ID, Color color, uint8_t layer = 255);
通过 LED 的 ID 设置其颜色。
参数:
ID(uint16_t):LED 的 ID。color(Color):要设置的颜色。layer(uint8_t,可选):应用颜色的图层。默认值为255。
MatrixOS::LED::Fill
void Fill(Color color, uint8_t layer = 255);
用指定颜色填充所有 LED。
参数:
color(Color):要填充的颜色。layer(uint8_t,可选):应用颜色的图层。默认值为255- 顶层。
MatrixOS::LED::FillPartition
void FillPartition(string partition, Color color, uint8_t layer = 255);
用指定颜色填充特定分区。如果分区不存在,将不执行任何操作。
每个设备具有不同的分区,更多信息请参考设备文档。对于魔矩,它有 2 个分区:Gain 和 Underglow。
参数:
partition:要填充的分区名称。color(Color):要填充的颜色。layer(uint8_t,可选):应用颜色的图层。默认值为255- 顶层。
MatrixOS::LED::Update
void Update(uint8_t layer = 255);
用指定图层更新显示。
参数:
layer(uint8_t,可选):要更新的图层。默认值为255- 顶层。
MatrixOS::LED::CurrentLayer
int8_t CurrentLayer();
返回当前活动图层。
返回值:
int8_t:当前图层的 ID。
MatrixOS::LED::CreateLayer
int8_t CreateLayer(uint16_t crossfade = crossfade_duration);
创建一个新图层,可选择使用交叉渐变效果。
参数:
crossfade(uint16_t,可选):交叉渐变的持续时间(毫秒)。默认值为crossfade_duration。
返回值:
int8_t:新创建图层的 ID,如果无法创建图层则返回 -1。
MatrixOS::LED::CopyLayer
void CopyLayer(uint8_t dest, uint8_t src);
将内容从一个图层复制到另一个图层。
参数:
dest(uint8_t):目标图层 ID。src(uint8_t):源图层 ID。
MatrixOS::LED::DestroyLayer
bool DestroyLayer(uint16_t crossfade = crossfade_duration);
销毁图层,可选择使用交叉渐变效果。
参数:
crossfade(uint16_t,可选):交叉渐变的持续时间(毫秒)。默认值为crossfade_duration。
返回值:
bool:如果图层成功销毁则返回true,否则返回false。
MatrixOS::LED::Fade
void Fade(uint16_t crossfade = crossfade_duration, [`Color`](./Types/Color/)* source_buffer = nullptr);
在特定持续时间内对 LED 进行渐变。你还可以指定要渐变的缓冲区。
参数:
crossfade(uint16_t,可选):交叉渐变的持续时间(毫秒)。默认值为crossfade_duration。source_buffer(Color*,可选):要渐变到的颜色缓冲区。默认值为nullptr,表示当前帧缓冲区。
MatrixOS::LED::PauseUpdate
void PauseUpdate(bool pause);
暂停或恢复对 LED 的自动定时缓冲区更新。
(注意:这是指从活动缓冲区到设备的更新。不是从图层缓冲区到活动缓冲区。你始终需要 Update() 来将更改从图层缓冲区应用到活动缓冲区)
参数:
pause(bool):true表示暂停自动更新,false表示恢复。
Comments