Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * Copyright Car Connectivity Consortium
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * You may decide to give the Car Connectivity Consortium input, suggestions
 * or feedback of a technical nature which may be implemented on the
 * Car Connectivity Consortium products (Feedback?).
 *
 * You agrees that any such Feedback is given on non-confidential
 * basis and Licensee hereby waives any confidentiality restrictions
 * for such Feedback. In addition, Licensee grants to the Car Connectivity Consortium
 * and its affiliates a worldwide, non-exclusive, perpetual, irrevocable,
 * sub-licensable, royalty-free right and license under Licensees copyrights to copy,
 * reproduce, modify, create derivative works and directly or indirectly
 * distribute, make available and communicate to public the Feedback
 * in or in connection to any CCC products, software and/or services.
 */

import android.graphics.Color;

public class Main {
    public static boolean isContrastRequirementMet(int colorA, int colorB) {
        final double lumA = calculateLuminance(colorA);
        final double lumB = calculateLuminance(colorB);

        return contrastRatio(lumA, lumB) >= 7 || contrastRatio(lumB, lumA) >= 7;
    }

    private static double calculateLuminance(int color) {
        /* variable names as in definition: http://www.w3.org/TR/WCAG20-TECHS/G17.html */
        final double r = Color.red(color) / 255.0;
        final double g = Color.green(color) / 255.0;
        final double b = Color.blue(color) / 255.0;

        final double R = calculateSubPixelLuminance(r);
        final double G = calculateSubPixelLuminance(g);
        final double B = calculateSubPixelLuminance(b);

        final double L = 0.2126 * R + 0.7152 * G + 0.0722 * B;
        return L;
    }

    private static double contrastRatio(double L1, double L2) {
        return (L1 + 0.05) / (L2 + 0.05);
    }

    private static double calculateSubPixelLuminance(double subPixelValue) {
        return subPixelValue < 0.03928 ? subPixelValue / 12.92 : Math.pow((subPixelValue + 0.055) / 1.055, 2.4);
    }
}