]> git.basschouten.com Git - openhab-addons.git/blob
cb8aa6fb950b76acb796d63c67c4421ed7a47b2a
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13 package org.openhab.binding.mqtt.homeassistant.internal.component;
14
15 import java.util.List;
16
17 import org.eclipse.jdt.annotation.NonNullByDefault;
18
19 import com.google.gson.annotations.SerializedName;
20
21 /**
22  * The types of color modes a JSONSchemaLight can support.
23  *
24  * @author Cody Cutrer - Initial contribution
25  */
26 @NonNullByDefault
27 public enum LightColorMode {
28     @SerializedName("onoff")
29     COLOR_MODE_ONOFF,
30     @SerializedName("brightness")
31     COLOR_MODE_BRIGHTNESS,
32     @SerializedName("color_temp")
33     COLOR_MODE_COLOR_TEMP,
34     @SerializedName("hs")
35     COLOR_MODE_HS,
36     @SerializedName("xy")
37     COLOR_MODE_XY,
38     @SerializedName("rgb")
39     COLOR_MODE_RGB,
40     @SerializedName("rgbw")
41     COLOR_MODE_RGBW,
42     @SerializedName("rgbww")
43     COLOR_MODE_RGBWW,
44     @SerializedName("white")
45     COLOR_MODE_WHITE;
46
47     public static final List<LightColorMode> WITH_RGB = List.of(COLOR_MODE_RGB, COLOR_MODE_RGBW, COLOR_MODE_RGBWW);
48     public static final List<LightColorMode> WITH_COLOR_CHANNEL = List.of(COLOR_MODE_HS, COLOR_MODE_RGB,
49             COLOR_MODE_RGBW, COLOR_MODE_RGBWW, COLOR_MODE_XY);
50
51     /**
52      * Determines if the list of supported modes includes any that should generate an openHAB Color channel
53      */
54     public static boolean hasColorChannel(List<LightColorMode> supportedColorModes) {
55         return WITH_COLOR_CHANNEL.stream().anyMatch(cm -> supportedColorModes.contains(cm));
56     }
57
58     /**
59      * Determins if the list of supported modes includes any that have RGB components
60      */
61     public static boolean hasRGB(List<LightColorMode> supportedColorModes) {
62         return WITH_RGB.stream().anyMatch(cm -> supportedColorModes.contains(cm));
63     }
64 }