uf

📅 2023-06-13T19:22:50.063Z
👁️ 166 katselukertaa
🔓 Julkinen


package org.sudokit.grass.utils;

import org.sudokit.grass.Client;

import java.awt.*;

public class ColorUtils {
    private Color baseColor;
    private Color[] colors;

    public ColorUtils(Color baseColor) {
        this.baseColor = baseColor;
        this.colors = generateTones(this.baseColor, 3);
    }

    public Color backgroundColor() {
//        return baseColor.darker();
        return new Color(baseColor.getRed(), baseColor.getGreen(), baseColor.getBlue(), 255/4).darker();
    }

    public Color foregroundColor() {
        return baseColor.brighter();
    }

    public Color textColor() {
        int red = 255 - baseColor.getRed();
        int green = 255 - baseColor.getGreen();
        int blue = 255 - baseColor.getBlue();
        return new Color(red, green, blue);
    }

    private Color[] generateTones(Color baseColor, int numberOfTones) {
        Color[] tones = new Color[numberOfTones];
        float[] baseHSB = Color.RGBtoHSB(baseColor.getRed(), baseColor.getGreen(), baseColor.getBlue(), null);

        float baseBrightness = baseHSB[2];
        float brightnessStep = baseBrightness / numberOfTones;

        for (int i = 0; i < numberOfTones; i++) {
            float brightness = baseBrightness - (i * brightnessStep);
            tones[i] = Color.getHSBColor(baseHSB[0], baseHSB[1], brightness);
        }

        return tones;
    }

    public Color hoveredColor() {
        return textColor().darker().darker().darker().darker();
    }

    public Color enabledColor() {
        Client.INSTANCE.logger.info("Enable color {}", this.colors[0].getRGB());
        return this.colors[0];
    }

    public Color disabledColor() {
        Client.INSTANCE.logger.info("Changed color {}", this.colors[0].getRGB());
        return this.colors[1];
    }

    public Color changedColor() {
        Client.INSTANCE.logger.info("Changed color {}", this.colors[0].getRGB());
        return this.colors[2];
    }

    public Color getBaseColor() {
        return baseColor;
    }
}