aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/polyfrost/oneconfig/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/io/polyfrost/oneconfig/utils')
-rw-r--r--src/main/java/io/polyfrost/oneconfig/utils/ColorUtils.java58
-rw-r--r--src/main/java/io/polyfrost/oneconfig/utils/MathUtils.java4
2 files changed, 61 insertions, 1 deletions
diff --git a/src/main/java/io/polyfrost/oneconfig/utils/ColorUtils.java b/src/main/java/io/polyfrost/oneconfig/utils/ColorUtils.java
new file mode 100644
index 0000000..f45f9a5
--- /dev/null
+++ b/src/main/java/io/polyfrost/oneconfig/utils/ColorUtils.java
@@ -0,0 +1,58 @@
+package io.polyfrost.oneconfig.utils;
+
+import io.polyfrost.oneconfig.config.OneConfigConfig;
+
+import java.awt.*;
+
+public class ColorUtils {
+
+ public static int getColor(int currentColor, int colorPalette, boolean hover, boolean click) {
+ float[] color = splitColor(currentColor);
+ if(click) {
+ switch (colorPalette) {
+ case -1:
+ return OneConfigConfig.GRAY_500_80;
+ default:
+ case 0:
+ return OneConfigConfig.GRAY_400_80;
+ }
+ }
+
+ switch (colorPalette) {
+ case -1:
+ return getColorComponents(color, splitColor(OneConfigConfig.TRANSPARENT), splitColor(OneConfigConfig.GRAY_500), hover);
+ default:
+ case 0:
+ return getColorComponents(color, splitColor(OneConfigConfig.GRAY_500), splitColor(OneConfigConfig.GRAY_400), hover); // OK hopefully this works
+
+ }
+
+ }
+
+ private static float[] splitColor(int color) {
+ Color c = new Color(color, true);
+ return new float[] {c.getRed() / 255f, c.getGreen() / 255f, c.getBlue() / 255f, c.getAlpha() / 255f};
+ }
+
+ private static int getColorComponents(float[] currentColor, float[] initColor, float[] finalColor, boolean hover) {
+ currentColor[0] = smooth(currentColor[0], initColor[0], finalColor[0], hover);
+ currentColor[1] = smooth(currentColor[1], initColor[1], finalColor[1], hover);
+ currentColor[2] = smooth(currentColor[2], initColor[2], finalColor[2], hover);
+ currentColor[3] = smooth(currentColor[3], initColor[3], finalColor[3], hover);
+
+ return new Color(currentColor[0], currentColor[1], currentColor[2], currentColor[3]).getRGB();
+
+ }
+
+ private static float smooth(float current, float min, float max, boolean moveToFinal) {
+ current = MathUtils.easeOut(current, moveToFinal ? 1f : 0f);
+ if(current <= min) {
+ current = min;
+ }
+
+ if(current >= max) {
+ current = max;
+ }
+ return current;
+ }
+}
diff --git a/src/main/java/io/polyfrost/oneconfig/utils/MathUtils.java b/src/main/java/io/polyfrost/oneconfig/utils/MathUtils.java
index e2e5184..7d64170 100644
--- a/src/main/java/io/polyfrost/oneconfig/utils/MathUtils.java
+++ b/src/main/java/io/polyfrost/oneconfig/utils/MathUtils.java
@@ -7,9 +7,11 @@ public class MathUtils {
public static float easeOut(float current, float goal) {
if (Math.floor(Math.abs(goal - current) / (float) 0.01) > 0) {
- return current + (goal - current) / (float) 20.0;
+ return current + (goal - current) / (float) 100.0; // this number here controls the speed uh oh
} else {
return goal;
}
}
+
+
}