[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/primary-code-test/Java/master/Misc/ColorContrastRatio.java [Back]  [Original]

package Misc;

import java.awt.Color;

/**
 * @brief A Java implementation of the offcial W3 documented procedure to calculate contrast ratio
 *     between colors on the web. This is used to calculate the readability of a foreground color on
 *     top of a background color.
 * @since 2020-10-15
 * @see [Color Contrast Ratio](https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-procedure)
 * @author [Seth Falco](https://github.com/SethFalco)
 */
public class ColorContrastRatio {

  /**
   * @brief Calculates the contrast ratio between two given colors.
   * @param a Any color, used to get the red, green, and blue values.
   * @param b Another color, which will be compared against the first color.
   * @return The contrast ratio between the two colors.
   */
  public double getContrastRatio(Color a, Color b) {
    final double aColorLuminance = getRelativeLuminance(a);
    final double bColorLuminance = getRelativeLuminance(b);

    if (aColorLuminance > bColorLuminance)
      return (aColorLuminance + 0.05) / (bColorLuminance + 0.05);

    return (bColorLuminance + 0.05) / (aColorLuminance + 0.05);
  }

  /**
   * @brief Calculates the relative luminance of a given color.
   * @param color Any color, used to get the red, green, and blue values.
   * @return The relative luminance of the color.
   * @see [More info on relative
   *     luminance.](https://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef)
   */
  public double getRelativeLuminance(Color color) {
    final double red = getColor(color.getRed());
    final double green = getColor(color.getGreen());
    final double blue = getColor(color.getBlue());

    return 0.2126 * red + 0.7152 * green + 0.0722 * blue;
  }

  /**
   * @brief Calculates the final value for a color to be used in the relative luminance formula as
   *     described in step 1.
   * @param color8Bit 8-bit representation of a color component value.
   * @return Value for the provided color component to be used in the relative luminance formula.
   */
  public double getColor(int color8Bit) {
    final double sRgb = getColorSRgb(color8Bit);
    return (sRgb 

Web Proxy Viewer  |  New URL  |  Original Page