/**
 * @file rgb_power.h
 * @brief RGB 恒功率修正算法（算法二）
 *
 * 算法来源：Excel 公式移植
 * 功能：对 RGB 三路 PWM 输入做恒功率归一化，防止混色时总功率超限
 */

#ifndef RGB_POWER_H
#define RGB_POWER_H

#include <stdint.h>

/**
 * @brief RGB 恒功率修正
 *
 * 输入：R, G, B (0-255, PWM 占空比)
 * 输出：RT, GT, BT (0-255, 恒功率修正后)
 *
 * Excel 算法步骤：
 *   1. A = max(R, G, B)
 *   2. P = A / 255.0
 *   3. B1 = (R + G + B) - 255 * P
 *   4. C_sum = (R + G + B) / (255 * P)
 *   5. D = B1 / C_sum
 *   6. RT = round(R - R/(255*P) * D)
 *   7. GT = round(G - G/(255*P) * D)
 *   8. BT = round(B - B/(255*P) * D)
 *
 * @param r    输入 R (0-255)
 * @param g    输入 G (0-255)
 * @param b    输入 B (0-255)
 * @param rt   输出 RT 指针
 * @param gt   输出 GT 指针
 * @param bt   输出 BT 指针
 */
void RGB_PowerCorrect(uint8_t r, uint8_t g, uint8_t b,
                      uint8_t *rt, uint8_t *gt, uint8_t *bt);

#endif /* RGB_POWER_H */
