mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	preen
This commit is contained in:
		| @@ -446,51 +446,35 @@ std::set<ColorMode> LightCall::get_suitable_color_modes_() { | |||||||
|   bool has_rgb = (this->has_color_brightness() && this->color_brightness_ > 0.0f) || |   bool has_rgb = (this->has_color_brightness() && this->color_brightness_ > 0.0f) || | ||||||
|                  (this->has_red() || this->has_green() || this->has_blue()); |                  (this->has_red() || this->has_green() || this->has_blue()); | ||||||
|  |  | ||||||
|   // Static sets that are only constructed once |  | ||||||
|   static const std::set<ColorMode> MODES_WHITE_ONLY = {ColorMode::WHITE, ColorMode::RGB_WHITE, |  | ||||||
|                                                        ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::COLD_WARM_WHITE, |  | ||||||
|                                                        ColorMode::RGB_COLD_WARM_WHITE}; |  | ||||||
|   static const std::set<ColorMode> MODES_CT_ONLY = {ColorMode::COLOR_TEMPERATURE, ColorMode::RGB_COLOR_TEMPERATURE, |  | ||||||
|                                                     ColorMode::COLD_WARM_WHITE, ColorMode::RGB_COLD_WARM_WHITE}; |  | ||||||
|   static const std::set<ColorMode> MODES_WHITE_CT = {ColorMode::COLD_WARM_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, |  | ||||||
|                                                      ColorMode::RGB_COLD_WARM_WHITE}; |  | ||||||
|   static const std::set<ColorMode> MODES_CWWW_ONLY = {ColorMode::COLD_WARM_WHITE, ColorMode::RGB_COLD_WARM_WHITE}; |  | ||||||
|   static const std::set<ColorMode> MODES_NONE = { |  | ||||||
|       ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE, ColorMode::RGB, |  | ||||||
|       ColorMode::WHITE,     ColorMode::COLOR_TEMPERATURE,     ColorMode::COLD_WARM_WHITE}; |  | ||||||
|   static const std::set<ColorMode> MODES_RGB_WHITE = {ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, |  | ||||||
|                                                       ColorMode::RGB_COLD_WARM_WHITE}; |  | ||||||
|   static const std::set<ColorMode> MODES_RGB_CT = {ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE}; |  | ||||||
|   static const std::set<ColorMode> MODES_RGB_CWWW = {ColorMode::RGB_COLD_WARM_WHITE}; |  | ||||||
|   static const std::set<ColorMode> MODES_RGB_ONLY = {ColorMode::RGB, ColorMode::RGB_WHITE, |  | ||||||
|                                                      ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE}; |  | ||||||
|  |  | ||||||
| // Build key from flags: [rgb][cwww][ct][white] | // Build key from flags: [rgb][cwww][ct][white] | ||||||
| #define KEY(white, ct, cwww, rgb) ((white) << 0 | (ct) << 1 | (cwww) << 2 | (rgb) << 3) | #define KEY(white, ct, cwww, rgb) ((white) << 0 | (ct) << 1 | (cwww) << 2 | (rgb) << 3) | ||||||
|  |  | ||||||
|   uint8_t key = KEY(has_white, has_ct, has_cwww, has_rgb); |   uint8_t key = KEY(has_white, has_ct, has_cwww, has_rgb); | ||||||
|  |  | ||||||
|   switch (key) { |   switch (key) { | ||||||
|     case KEY(true, false, false, false): |     case KEY(true, false, false, false):  // white only | ||||||
|       return MODES_WHITE_ONLY; |       return {ColorMode::WHITE, ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::COLD_WARM_WHITE, | ||||||
|     case KEY(false, true, false, false): |               ColorMode::RGB_COLD_WARM_WHITE}; | ||||||
|       return MODES_CT_ONLY; |     case KEY(false, true, false, false):  // ct only | ||||||
|     case KEY(true, true, false, false): |       return {ColorMode::COLOR_TEMPERATURE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::COLD_WARM_WHITE, | ||||||
|       return MODES_WHITE_CT; |               ColorMode::RGB_COLD_WARM_WHITE}; | ||||||
|     case KEY(false, false, true, false): |     case KEY(true, true, false, false):  // white + ct | ||||||
|       return MODES_CWWW_ONLY; |       return {ColorMode::COLD_WARM_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE}; | ||||||
|     case KEY(false, false, false, false): |     case KEY(false, false, true, false):  // cwww only | ||||||
|       return MODES_NONE; |       return {ColorMode::COLD_WARM_WHITE, ColorMode::RGB_COLD_WARM_WHITE}; | ||||||
|     case KEY(true, false, false, true): |     case KEY(false, false, false, false):  // none | ||||||
|       return MODES_RGB_WHITE; |       return {ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE, ColorMode::RGB, | ||||||
|     case KEY(false, true, false, true): |               ColorMode::WHITE,     ColorMode::COLOR_TEMPERATURE,     ColorMode::COLD_WARM_WHITE}; | ||||||
|       return MODES_RGB_CT; |     case KEY(true, false, false, true):  // rgb + white | ||||||
|     case KEY(true, true, false, true): |       return {ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE}; | ||||||
|       return MODES_RGB_CT; |     case KEY(false, true, false, true):  // rgb + ct | ||||||
|     case KEY(false, false, true, true): |       return {ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE}; | ||||||
|       return MODES_RGB_CWWW; |     case KEY(true, true, false, true):  // rgb + white + ct | ||||||
|     case KEY(false, false, false, true): |       return {ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE}; | ||||||
|       return MODES_RGB_ONLY; |     case KEY(false, false, true, true):  // rgb + cwww | ||||||
|  |       return {ColorMode::RGB_COLD_WARM_WHITE}; | ||||||
|  |     case KEY(false, false, false, true):  // rgb only | ||||||
|  |       return {ColorMode::RGB, ColorMode::RGB_WHITE, ColorMode::RGB_COLOR_TEMPERATURE, ColorMode::RGB_COLD_WARM_WHITE}; | ||||||
|     default: |     default: | ||||||
|       return {};  // conflicting flags |       return {};  // conflicting flags | ||||||
|   } |   } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user