mirror of
https://github.com/esphome/esphome.git
synced 2025-10-27 05:03:48 +00:00
RGBWW/CCT Lights: Fix gamma_correct when using constant_brightness (#1043)
This commit is contained in:
@@ -702,39 +702,24 @@ LightOutput *LightState::get_output() const { return this->output_; }
|
||||
void LightState::set_gamma_correct(float gamma_correct) { this->gamma_correct_ = gamma_correct; }
|
||||
void LightState::current_values_as_binary(bool *binary) { this->current_values.as_binary(binary); }
|
||||
void LightState::current_values_as_brightness(float *brightness) {
|
||||
this->current_values.as_brightness(brightness);
|
||||
*brightness = gamma_correct(*brightness, this->gamma_correct_);
|
||||
this->current_values.as_brightness(brightness, this->gamma_correct_);
|
||||
}
|
||||
void LightState::current_values_as_rgb(float *red, float *green, float *blue) {
|
||||
this->current_values.as_rgb(red, green, blue);
|
||||
*red = gamma_correct(*red, this->gamma_correct_);
|
||||
*green = gamma_correct(*green, this->gamma_correct_);
|
||||
*blue = gamma_correct(*blue, this->gamma_correct_);
|
||||
this->current_values.as_rgb(red, green, blue, this->gamma_correct_);
|
||||
}
|
||||
void LightState::current_values_as_rgbw(float *red, float *green, float *blue, float *white) {
|
||||
this->current_values.as_rgbw(red, green, blue, white);
|
||||
*red = gamma_correct(*red, this->gamma_correct_);
|
||||
*green = gamma_correct(*green, this->gamma_correct_);
|
||||
*blue = gamma_correct(*blue, this->gamma_correct_);
|
||||
*white = gamma_correct(*white, this->gamma_correct_);
|
||||
this->current_values.as_rgbw(red, green, blue, white, this->gamma_correct_);
|
||||
}
|
||||
void LightState::current_values_as_rgbww(float *red, float *green, float *blue, float *cold_white, float *warm_white,
|
||||
bool constant_brightness) {
|
||||
auto traits = this->get_traits();
|
||||
this->current_values.as_rgbww(traits.get_min_mireds(), traits.get_max_mireds(), red, green, blue, cold_white,
|
||||
warm_white, constant_brightness);
|
||||
*red = gamma_correct(*red, this->gamma_correct_);
|
||||
*green = gamma_correct(*green, this->gamma_correct_);
|
||||
*blue = gamma_correct(*blue, this->gamma_correct_);
|
||||
*cold_white = gamma_correct(*cold_white, this->gamma_correct_);
|
||||
*warm_white = gamma_correct(*warm_white, this->gamma_correct_);
|
||||
warm_white, this->gamma_correct_, constant_brightness);
|
||||
}
|
||||
void LightState::current_values_as_cwww(float *cold_white, float *warm_white, bool constant_brightness) {
|
||||
auto traits = this->get_traits();
|
||||
this->current_values.as_cwww(traits.get_min_mireds(), traits.get_max_mireds(), cold_white, warm_white,
|
||||
constant_brightness);
|
||||
*cold_white = gamma_correct(*cold_white, this->gamma_correct_);
|
||||
*warm_white = gamma_correct(*warm_white, this->gamma_correct_);
|
||||
this->gamma_correct_, constant_brightness);
|
||||
}
|
||||
void LightState::add_new_remote_values_callback(std::function<void()> &&send_callback) {
|
||||
this->remote_values_callback_.add(std::move(send_callback));
|
||||
|
||||
Reference in New Issue
Block a user