Here you can find the source of rgba(double r, double g, double b, double a)
static double rgba(double r, double g, double b, double a)
//package com.java2s; /**// w ww .jav a2 s .c o m * MIT License (MIT) * * Copyright (c) 2014 Volker Berlin * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * UT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * * @author Volker Berlin * @license: The MIT license <http://opensource.org/licenses/MIT> */ public class Main { static double rgba(double r, double g, double b, double a) { return Double.longBitsToDouble(Math.round(a * 0xFFFF) << 48 | (colorLargeDigit(r) << 32) | (colorLargeDigit(g) << 16) | colorLargeDigit(b)); } static double rgba(int r, int g, int b, double a) { return Double.longBitsToDouble(Math.round(a * 0xFFFF) << 48 | (colorLargeDigit(r) << 32) | (colorLargeDigit(g) << 16) | colorLargeDigit(b)); } private static long colorLargeDigit(double value) { value *= 0x100; if (value >= 0xFFFF) { return 0xFFFF; } else if (value <= 0) { return 0; } else { return Math.round(value); } } }