angular-material-npfixed
Version:
The Angular Material project is an implementation of Material Design in Angular.js. This project provides a set of reusable, well-tested, and accessible Material Design UI components. Angular Material is supported internally at Google by the Angular.js, M
74 lines (66 loc) • 1.77 kB
JavaScript
/**
* @ngdoc module
* @name material.core.colorUtil
* @description
* Color Util
*/
angular
.module('material.core')
.factory('$mdColorUtil', ColorUtilFactory);
function ColorUtilFactory() {
/**
* Converts hex value to RGBA string
* @param color {string}
* @returns {string}
*/
function hexToRgba (color) {
var hex = color[ 0 ] === '#' ? color.substr(1) : color,
dig = hex.length / 3,
red = hex.substr(0, dig),
green = hex.substr(dig, dig),
blue = hex.substr(dig * 2);
if (dig === 1) {
red += red;
green += green;
blue += blue;
}
return 'rgba(' + parseInt(red, 16) + ',' + parseInt(green, 16) + ',' + parseInt(blue, 16) + ',0.1)';
}
/**
* Converts rgba value to hex string
* @param color {string}
* @returns {string}
*/
function rgbaToHex(color) {
color = color.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i);
var hex = (color && color.length === 4) ? "#" +
("0" + parseInt(color[1],10).toString(16)).slice(-2) +
("0" + parseInt(color[2],10).toString(16)).slice(-2) +
("0" + parseInt(color[3],10).toString(16)).slice(-2) : '';
return hex.toUpperCase();
}
/**
* Converts an RGB color to RGBA
* @param color {string}
* @returns {string}
*/
function rgbToRgba (color) {
return color.replace(')', ', 0.1)').replace('(', 'a(');
}
/**
* Converts an RGBA color to RGB
* @param color {string}
* @returns {string}
*/
function rgbaToRgb (color) {
return color
? color.replace('rgba', 'rgb').replace(/,[^\),]+\)/, ')')
: 'rgb(0,0,0)';
}
return {
rgbaToHex: rgbaToHex,
hexToRgba: hexToRgba,
rgbToRgba: rgbToRgba,
rgbaToRgb: rgbaToRgb
};
}