aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/cc/polyfrost/oneconfig/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/utils')
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/utils/color/ColorPalette.java140
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/utils/color/ColorUtils.java (renamed from src/main/java/cc/polyfrost/oneconfig/utils/ColorUtils.java)82
2 files changed, 145 insertions, 77 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/utils/color/ColorPalette.java b/src/main/java/cc/polyfrost/oneconfig/utils/color/ColorPalette.java
new file mode 100644
index 0000000..c2a1fec
--- /dev/null
+++ b/src/main/java/cc/polyfrost/oneconfig/utils/color/ColorPalette.java
@@ -0,0 +1,140 @@
+package cc.polyfrost.oneconfig.utils.color;
+
+
+import cc.polyfrost.oneconfig.config.OneConfigConfig;
+import cc.polyfrost.oneconfig.config.core.OneColor;
+
+import java.awt.*;
+
+import static cc.polyfrost.oneconfig.config.OneConfigConfig.*;
+
+public class ColorPalette {
+ /**
+ * Always returns transparent.
+ */
+ public static final ColorPalette TRANSPARENT = new ColorPalette(OneConfigConfig.TRANSPARENT, OneConfigConfig.TRANSPARENT, OneConfigConfig.TRANSPARENT);
+ /**
+ * <h1>Primary Color Scheme</h1> Normal: Primary 600,<br> Hover: Primary 700,<br> Clicked: Primary 700 (80%)
+ */
+ public static final ColorPalette PRIMARY = new ColorPalette(PRIMARY_600, PRIMARY_700, PRIMARY_700_80);
+ /**
+ * <h1>Secondary Color Scheme</h1> Normal: Gray 500,<br> Hover: Gray 400,<br> Clicked: Gray 400 (80%)
+ */
+ public static final ColorPalette SECONDARY = new ColorPalette(OneConfigConfig.GRAY_500, OneConfigConfig.GRAY_400, OneConfigConfig.GRAY_400_80);
+ /**
+ * <h1>Secondary (Transparent) Color Scheme</h1> Normal: Transparent,<br> Hover: Gray rgba(229, 229, 229, 77),<br> Clicked: Gray rgba(229, 229, 229, 51)
+ */
+ public static final ColorPalette SECONDARY_TRANSPARENT = new ColorPalette(OneConfigConfig.TRANSPARENT, new Color(229, 229, 229, 77).getRGB(), new Color(229, 229, 229, 51).getRGB());
+ /**
+ * <h1>Tertiary Color Scheme</h1> Normal: Transparent (Text=White 90%),<br> Hover: Transparent (Text=White 100%),<br> Clicked: Transparent (Text=White 80%)
+ * <h2>NOTICE this returns the text colors as it is always transparent.</h2>
+ */
+ public static final ColorPalette TERTIARY = new ColorPalette(WHITE_90, WHITE, WHITE_80);
+ /**
+ * <h1>Primary Destructive Color Scheme</h1> Normal: Error 700,<br> Hover: Error 600,<br> Clicked: Error 600 (80%)
+ */
+ public static final ColorPalette PRIMARY_DESTRUCTIVE = new ColorPalette(ERROR_700, ERROR_600, ERROR_600_80);
+ /**
+ * <h1>Secondary Destructive Color Scheme</h1> Normal: Gray 500,<br> Hover: Error 800,<br> Clicked: Error 800 (80%)
+ */
+ public static final ColorPalette SECONDARY_DESTRUCTIVE = new ColorPalette(OneConfigConfig.GRAY_500, ERROR_800, ERROR_800_80);
+ /**
+ * <h1>Tertiary Destructive Color Scheme</h1> Normal: Transparent (Text=White 90%),<br> Hover: Transparent (Text=Error 300),<br> Clicked: Transparent (Text=Error 300 80%)
+ * <h2>NOTICE this returns the text colors as it is always transparent.</h2>
+ */
+ public static final ColorPalette TERTIARY_DESTRUCTIVE = new ColorPalette(WHITE_90, ERROR_300, ERROR_300_80);
+
+
+
+
+ private final int colorNormal;
+ private final int colorHovered;
+ private final int colorPressed;
+ private final float[] colorNormalf;
+ private final float[] colorHoveredf;
+ private final float[] colorPressedf;
+
+ /** <h1>Create a new ColorPalette.</h1>
+ * This color palette is used with animations, and the elements like BasicButton, BasicElement, and more.
+ * <br> This method takes integers in ARGB format, like many other classes, such as {@link OneColor} and {@link Color}.
+ * @param colorNormal the color of the element when it is not hovered or pressed.
+ * @param colorHovered the color of the element when it is hovered.
+ * @param colorPressed the color of the element when it is pressed.
+ */
+ public ColorPalette(int colorNormal, int colorHovered, int colorPressed) {
+ this.colorNormal = colorNormal;
+ this.colorHovered = colorHovered;
+ this.colorPressed = colorPressed;
+ this.colorNormalf = new float[]{ColorUtils.getRed(colorNormal) / 255f, ColorUtils.getGreen(colorNormal) / 255f, ColorUtils.getBlue(colorNormal) / 255f, ColorUtils.getAlpha(colorNormal) / 255f};
+ this.colorHoveredf = new float[]{ColorUtils.getRed(colorHovered) / 255f, ColorUtils.getGreen(colorHovered) / 255f, ColorUtils.getBlue(colorHovered) / 255f, ColorUtils.getAlpha(colorHovered) / 255f};
+ this.colorPressedf = new float[]{ColorUtils.getRed(colorPressed) / 255f, ColorUtils.getGreen(colorPressed) / 255f, ColorUtils.getBlue(colorPressed) / 255f, ColorUtils.getAlpha(colorPressed) / 255f};
+ }
+ /** <h1>Create a new ColorPalette.</h1>
+ * This color palette is used with animations, and the elements like BasicButton, BasicElement, and more.
+ * <br> This method takes {@link OneColor} in ARGB format.
+ * @param colorNormal the color of the element when it is not hovered or pressed.
+ * @param colorHovered the color of the element when it is hovered.
+ * @param colorPressed the color of the element when it is pressed.
+ */
+ public ColorPalette(OneColor colorNormal, OneColor colorHovered, OneColor colorPressed) {
+ this(colorNormal.getRGB(), colorHovered.getRGB(), colorPressed.getRGB());
+ }
+
+ /** <h1>Create a new ColorPalette.</h1>
+ * This color palette is used with animations, and the elements like BasicButton, BasicElement, and more.
+ * <br> This method takes {@link Color} in ARGB format.
+ * @param colorNormal the color of the element when it is not hovered or pressed.
+ * @param colorHovered the color of the element when it is hovered.
+ * @param colorPressed the color of the element when it is pressed.
+ */
+ public ColorPalette(Color colorNormal, Color colorHovered, Color colorPressed) {
+ this(colorNormal.getRGB(), colorHovered.getRGB(), colorPressed.getRGB());
+ }
+
+ /** <h1>Create a new ColorPalette.</h1>
+ * This color palette is used with animations, and the elements like BasicButton, BasicElement, and more.
+ * <br> This method takes float arrays of the color between 0f and 1f, in [R, G, B, A] format.
+ * @param colorNormal the color of the element when it is not hovered or pressed.
+ * @param colorHovered the color of the element when it is hovered.
+ * @param colorPressed the color of the element when it is pressed.
+ */
+ public ColorPalette(float[] colorNormal, float[] colorHovered, float[] colorPressed) {
+ this.colorNormalf = colorNormal;
+ this.colorHoveredf = colorHovered;
+ this.colorPressedf = colorPressed;
+ this.colorNormal = ColorUtils.getColor(colorNormal[0], colorNormal[1], colorNormal[2], colorNormal[3]);
+ this.colorHovered = ColorUtils.getColor(colorHovered[0], colorHovered[1], colorHovered[2], colorHovered[3]);
+ this.colorPressed = ColorUtils.getColor(colorPressed[0], colorPressed[1], colorPressed[2], colorPressed[3]);
+ }
+
+ /** Return the color of the element when it is not hovered or pressed in ARGB format. */
+ public int getNormalColor() {
+ return colorNormal;
+ }
+
+ /** Return the color of the element when it is hovered in ARGB format. */
+ public int getHoveredColor() {
+ return colorHovered;
+ }
+
+ /** Return the color of the element when it is pressed in ARGB format. */
+ public int getPressedColor() {
+ return colorPressed;
+ }
+
+ /** Return the color of the element when it is not hovered or pressed in a float array (r,g,b,a). */
+ public float[] getNormalColorf() {
+ return colorNormalf;
+ }
+
+ /** Return the color of the element when it is hovered in a float array (r,g,b,a). */
+ public float[] getHoveredColorf() {
+ return colorHoveredf;
+ }
+
+ /** Return the color of the element when it is pressed in a float array (r,g,b,a). */
+ public float[] getPressedColorf() {
+ return colorPressedf;
+ }
+
+}
diff --git a/src/main/java/cc/polyfrost/oneconfig/utils/ColorUtils.java b/src/main/java/cc/polyfrost/oneconfig/utils/color/ColorUtils.java
index 127b200..a419766 100644
--- a/src/main/java/cc/polyfrost/oneconfig/utils/ColorUtils.java
+++ b/src/main/java/cc/polyfrost/oneconfig/utils/color/ColorUtils.java
@@ -1,91 +1,19 @@
-package cc.polyfrost.oneconfig.utils;
+package cc.polyfrost.oneconfig.utils.color;
-import cc.polyfrost.oneconfig.config.OneConfigConfig;
-
-import java.awt.*;
+import cc.polyfrost.oneconfig.utils.MathUtils;
/**
* A class to help with color manipulation.
*/
public final class ColorUtils {
- /**
- * Always returns transparent.
- */
- public static final int TRANSPARENT = -10;
- /**
- * <h1>Primary Color Scheme</h1> Normal: Primary 600,<br> Hover: Primary 700,<br> Clicked: Primary 700 (80%)
- */
- public static final int PRIMARY = 1;
- /**
- * <h1>Secondary Color Scheme</h1> Normal: Gray 500,<br> Hover: Gray 400,<br> Clicked: Gray 400 (80%)
- */
- public static final int SECONDARY = 2;
- /**
- * <h1>Secondary (Transparent) Color Scheme</h1> Normal: Transparent,<br> Hover: Gray rgba(229, 229, 229, 77),<br> Clicked: Gray rgba(229, 229, 229, 51)
- */
- public static final int SECONDARY_TRANSPARENT = 0;
- /**
- * <h1>Tertiary Color Scheme</h1> Normal: Transparent (Text=White 90%),<br> Hover: Transparent (Text=White 100%),<br> Clicked: Transparent (Text=White 80%)
- * <h2>NOTICE this returns the text colors as it is always transparent.</h2>
- */
- public static final int TERTIARY = 3;
- /**
- * <h1>Primary Destructive Color Scheme</h1> Normal: Error 700,<br> Hover: Error 600,<br> Clicked: Error 600 (80%)
- */
- public static final int PRIMARY_DESTRUCTIVE = -1;
- /**
- * <h1>Secondary Destructive Color Scheme</h1> Normal: Gray 500,<br> Hover: Error 800,<br> Clicked: Error 800 (80%)
- */
- public static final int SECONDARY_DESTRUCTIVE = -2;
- /**
- * <h1>Tertiary Destructive Color Scheme</h1> Normal: Transparent (Text=White 90%),<br> Hover: Transparent (Text=Error 300),<br> Clicked: Transparent (Text=Error 300 80%)
- * <h2>NOTICE this returns the text colors as it is always transparent.</h2>
- */
- public static final int TERTIARY_DESTRUCTIVE = -3;
-
- public static int getColor(int currentColor, int colorPalette, boolean hover, boolean click) {
+ public static int getColor(int currentColor, ColorPalette colorPalette, boolean hover, boolean click) {
float[] color = splitColor(currentColor);
- if (colorPalette == TRANSPARENT) {
- return OneConfigConfig.TRANSPARENT;
- }
if (click) {
- switch (colorPalette) {
- case PRIMARY_DESTRUCTIVE:
- return OneConfigConfig.ERROR_600_80;
- case SECONDARY_DESTRUCTIVE:
- return OneConfigConfig.ERROR_800_80;
- case TERTIARY_DESTRUCTIVE:
- return OneConfigConfig.ERROR_300_80;
- case TERTIARY:
- return OneConfigConfig.WHITE_80;
- default:
- case SECONDARY:
- return OneConfigConfig.GRAY_400_80;
- case SECONDARY_TRANSPARENT:
- return new Color(0.9f, 0.9f, 0.9f, 0.2f).getRGB();
- case PRIMARY:
- return OneConfigConfig.PRIMARY_700_80;
- }
+ return colorPalette.getPressedColor();
}
- switch (colorPalette) {
- case SECONDARY_TRANSPARENT: // Formally -2
- return getColorComponents(color, new float[]{0f, 0f, 0f, 0f}, new float[]{0.9f, 0.9f, 0.9f, 0.3f}, hover, 50f);
- case PRIMARY: // Formally 1
- return getColorComponents(color, splitColor(OneConfigConfig.PRIMARY_700), splitColor(OneConfigConfig.PRIMARY_600), hover, 20f);
- default:
- case SECONDARY: // Formally 0
- return getColorComponents(color, splitColor(OneConfigConfig.GRAY_500), splitColor(OneConfigConfig.GRAY_400), hover, 20f);
- case TERTIARY:
- return getColorComponents(color, splitColor(OneConfigConfig.WHITE_90), splitColor(OneConfigConfig.WHITE), hover, 20f);
- case PRIMARY_DESTRUCTIVE:
- return getColorComponents(color, splitColor(OneConfigConfig.ERROR_700), splitColor(OneConfigConfig.ERROR_600), hover, 20f);
- case SECONDARY_DESTRUCTIVE:
- return getColorComponents(color, splitColor(OneConfigConfig.ERROR_800), splitColor(OneConfigConfig.GRAY_500), !hover, 20f);
- case TERTIARY_DESTRUCTIVE:
- return getColorComponents(color, splitColor(OneConfigConfig.WHITE_90), splitColor(OneConfigConfig.ERROR_300), hover, 20f);
- }
+ return getColorComponents(color, colorPalette.getNormalColorf(), colorPalette.getHoveredColorf(), hover, 20f);
}
/**