Test.java

📅 2023-06-13T19:28:11.324Z
👁️ 148 katselukertaa
🔓 Julkinen


import java.awt.Color;

class Driver {
    public static void main(String[] args) {
        final var utils = new ColorUtils(Color.decode("#00ff00"));
        System.err.println(java.util.Arrays.toString(utils.colors));
    }
}

class ColorUtils {
    private Color baseColor;
    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() {
        return this.colors[0];
    }

    public Color disabledColor() {
        return this.colors[1];
    }

    public Color changedColor() {
        return this.colors[2];
    }

    public Color getBaseColor() {
        return baseColor;
    }
}