Index: third_party/WebKit/Source/devtools/front_end/common/Color.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/common/Color.js b/third_party/WebKit/Source/devtools/front_end/common/Color.js |
index ebfadbdba4812b0db84d3d1bf905241bfb961c08..ec4080c0e105f5ef1f80706f8360f6ff767709a2 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/common/Color.js |
+++ b/third_party/WebKit/Source/devtools/front_end/common/Color.js |
@@ -26,495 +26,233 @@ |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
- |
/** |
- * @param {!Array.<number>} rgba |
- * @param {!WebInspector.Color.Format} format |
- * @param {string=} originalText |
- * @constructor |
+ * @unrestricted |
*/ |
-WebInspector.Color = function(rgba, format, originalText) |
-{ |
+WebInspector.Color = class { |
+ /** |
+ * @param {!Array.<number>} rgba |
+ * @param {!WebInspector.Color.Format} format |
+ * @param {string=} originalText |
+ */ |
+ constructor(rgba, format, originalText) { |
this._rgba = rgba; |
this._originalText = originalText || null; |
this._originalTextIsValid = !!this._originalText; |
this._format = format; |
- if (typeof this._rgba[3] === "undefined") |
- this._rgba[3] = 1; |
+ if (typeof this._rgba[3] === 'undefined') |
+ this._rgba[3] = 1; |
for (var i = 0; i < 4; ++i) { |
- if (this._rgba[i] < 0) { |
- this._rgba[i] = 0; |
- this._originalTextIsValid = false; |
- } |
- if (this._rgba[i] > 1) { |
- this._rgba[i] = 1; |
- this._originalTextIsValid = false; |
- } |
+ if (this._rgba[i] < 0) { |
+ this._rgba[i] = 0; |
+ this._originalTextIsValid = false; |
+ } |
+ if (this._rgba[i] > 1) { |
+ this._rgba[i] = 1; |
+ this._originalTextIsValid = false; |
+ } |
} |
-}; |
- |
-/** @type {!RegExp} */ |
-WebInspector.Color.Regex = /((?:rgb|hsl)a?\([^)]+\)|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3}|\b[a-zA-Z]+\b(?!-))/g; |
- |
-/** |
- * @enum {string} |
- */ |
-WebInspector.Color.Format = { |
- Original: "original", |
- Nickname: "nickname", |
- HEX: "hex", |
- ShortHEX: "shorthex", |
- RGB: "rgb", |
- RGBA: "rgba", |
- HSL: "hsl", |
- HSLA: "hsla" |
-}; |
+ } |
-/** |
- * @param {string} text |
- * @return {?WebInspector.Color} |
- */ |
-WebInspector.Color.parse = function(text) |
-{ |
+ /** |
+ * @param {string} text |
+ * @return {?WebInspector.Color} |
+ */ |
+ static parse(text) { |
// Simple - #hex, rgb(), nickname, hsl() |
- var value = text.toLowerCase().replace(/\s+/g, ""); |
- var simple = /^(?:#([0-9a-f]{3}|[0-9a-f]{6})|rgb\(((?:-?\d+%?,){2}-?\d+%?)\)|(\w+)|hsl\((-?\d+\.?\d*(?:,-?\d+\.?\d*%){2})\))$/i; |
+ var value = text.toLowerCase().replace(/\s+/g, ''); |
+ var simple = |
+ /^(?:#([0-9a-f]{3}|[0-9a-f]{6})|rgb\(((?:-?\d+%?,){2}-?\d+%?)\)|(\w+)|hsl\((-?\d+\.?\d*(?:,-?\d+\.?\d*%){2})\))$/i; |
var match = value.match(simple); |
if (match) { |
- if (match[1]) { // hex |
- var hex = match[1].toLowerCase(); |
- var format; |
- if (hex.length === 3) { |
- format = WebInspector.Color.Format.ShortHEX; |
- hex = hex.charAt(0) + hex.charAt(0) + hex.charAt(1) + hex.charAt(1) + hex.charAt(2) + hex.charAt(2); |
- } else |
- format = WebInspector.Color.Format.HEX; |
- var r = parseInt(hex.substring(0,2), 16); |
- var g = parseInt(hex.substring(2,4), 16); |
- var b = parseInt(hex.substring(4,6), 16); |
- return new WebInspector.Color([r / 255, g / 255, b / 255, 1], format, text); |
- } |
- |
- if (match[2]) { // rgb |
- var rgbString = match[2].split(/\s*,\s*/); |
- var rgba = [ WebInspector.Color._parseRgbNumeric(rgbString[0]), |
- WebInspector.Color._parseRgbNumeric(rgbString[1]), |
- WebInspector.Color._parseRgbNumeric(rgbString[2]), 1 ]; |
- return new WebInspector.Color(rgba, WebInspector.Color.Format.RGB, text); |
+ if (match[1]) { // hex |
+ var hex = match[1].toLowerCase(); |
+ var format; |
+ if (hex.length === 3) { |
+ format = WebInspector.Color.Format.ShortHEX; |
+ hex = hex.charAt(0) + hex.charAt(0) + hex.charAt(1) + hex.charAt(1) + hex.charAt(2) + hex.charAt(2); |
+ } else |
+ format = WebInspector.Color.Format.HEX; |
+ var r = parseInt(hex.substring(0, 2), 16); |
+ var g = parseInt(hex.substring(2, 4), 16); |
+ var b = parseInt(hex.substring(4, 6), 16); |
+ return new WebInspector.Color([r / 255, g / 255, b / 255, 1], format, text); |
+ } |
+ |
+ if (match[2]) { // rgb |
+ var rgbString = match[2].split(/\s*,\s*/); |
+ var rgba = [ |
+ WebInspector.Color._parseRgbNumeric(rgbString[0]), WebInspector.Color._parseRgbNumeric(rgbString[1]), |
+ WebInspector.Color._parseRgbNumeric(rgbString[2]), 1 |
+ ]; |
+ return new WebInspector.Color(rgba, WebInspector.Color.Format.RGB, text); |
+ } |
+ |
+ if (match[3]) { // nickname |
+ var nickname = match[3].toLowerCase(); |
+ if (nickname in WebInspector.Color.Nicknames) { |
+ var rgba = WebInspector.Color.Nicknames[nickname]; |
+ var color = WebInspector.Color.fromRGBA(rgba); |
+ color._format = WebInspector.Color.Format.Nickname; |
+ color._originalText = text; |
+ return color; |
} |
- |
- if (match[3]) { // nickname |
- var nickname = match[3].toLowerCase(); |
- if (nickname in WebInspector.Color.Nicknames) { |
- var rgba = WebInspector.Color.Nicknames[nickname]; |
- var color = WebInspector.Color.fromRGBA(rgba); |
- color._format = WebInspector.Color.Format.Nickname; |
- color._originalText = text; |
- return color; |
- } |
- return null; |
- } |
- |
- if (match[4]) { // hsl |
- var hslString = match[4].replace(/%/g, "").split(/\s*,\s*/); |
- var hsla = [ WebInspector.Color._parseHueNumeric(hslString[0]), |
- WebInspector.Color._parseSatLightNumeric(hslString[1]), |
- WebInspector.Color._parseSatLightNumeric(hslString[2]), 1 ]; |
- var rgba = []; |
- WebInspector.Color.hsl2rgb(hsla, rgba); |
- return new WebInspector.Color(rgba, WebInspector.Color.Format.HSL, text); |
- } |
- |
return null; |
+ } |
+ |
+ if (match[4]) { // hsl |
+ var hslString = match[4].replace(/%/g, '').split(/\s*,\s*/); |
+ var hsla = [ |
+ WebInspector.Color._parseHueNumeric(hslString[0]), WebInspector.Color._parseSatLightNumeric(hslString[1]), |
+ WebInspector.Color._parseSatLightNumeric(hslString[2]), 1 |
+ ]; |
+ var rgba = []; |
+ WebInspector.Color.hsl2rgb(hsla, rgba); |
+ return new WebInspector.Color(rgba, WebInspector.Color.Format.HSL, text); |
+ } |
+ |
+ return null; |
} |
// Advanced - rgba(), hsla() |
- var advanced = /^(?:rgba\(((?:-?\d+%?,){3}-?(?:\d+|\d*\.\d+))\)|hsla\((-?(?:\d+|\d*\.\d+)(?:,-?(?:\d+|\d*\.\d+)*%){2},-?(?:\d+|\d*\.\d+))\))$/; |
+ var advanced = |
+ /^(?:rgba\(((?:-?\d+%?,){3}-?(?:\d+|\d*\.\d+))\)|hsla\((-?(?:\d+|\d*\.\d+)(?:,-?(?:\d+|\d*\.\d+)*%){2},-?(?:\d+|\d*\.\d+))\))$/; |
match = value.match(advanced); |
if (match) { |
- if (match[1]) { // rgba |
- var rgbaString = match[1].split(/\s*,\s*/); |
- var rgba = [ WebInspector.Color._parseRgbNumeric(rgbaString[0]), |
- WebInspector.Color._parseRgbNumeric(rgbaString[1]), |
- WebInspector.Color._parseRgbNumeric(rgbaString[2]), |
- WebInspector.Color._parseAlphaNumeric(rgbaString[3]) ]; |
- return new WebInspector.Color(rgba, WebInspector.Color.Format.RGBA, text); |
- } |
- |
- if (match[2]) { // hsla |
- var hslaString = match[2].replace(/%/g, "").split(/\s*,\s*/); |
- var hsla = [ WebInspector.Color._parseHueNumeric(hslaString[0]), |
- WebInspector.Color._parseSatLightNumeric(hslaString[1]), |
- WebInspector.Color._parseSatLightNumeric(hslaString[2]), |
- WebInspector.Color._parseAlphaNumeric(hslaString[3]) ]; |
- var rgba = []; |
- WebInspector.Color.hsl2rgb(hsla, rgba); |
- return new WebInspector.Color(rgba, WebInspector.Color.Format.HSLA, text); |
- } |
+ if (match[1]) { // rgba |
+ var rgbaString = match[1].split(/\s*,\s*/); |
+ var rgba = [ |
+ WebInspector.Color._parseRgbNumeric(rgbaString[0]), WebInspector.Color._parseRgbNumeric(rgbaString[1]), |
+ WebInspector.Color._parseRgbNumeric(rgbaString[2]), WebInspector.Color._parseAlphaNumeric(rgbaString[3]) |
+ ]; |
+ return new WebInspector.Color(rgba, WebInspector.Color.Format.RGBA, text); |
+ } |
+ |
+ if (match[2]) { // hsla |
+ var hslaString = match[2].replace(/%/g, '').split(/\s*,\s*/); |
+ var hsla = [ |
+ WebInspector.Color._parseHueNumeric(hslaString[0]), WebInspector.Color._parseSatLightNumeric(hslaString[1]), |
+ WebInspector.Color._parseSatLightNumeric(hslaString[2]), WebInspector.Color._parseAlphaNumeric(hslaString[3]) |
+ ]; |
+ var rgba = []; |
+ WebInspector.Color.hsl2rgb(hsla, rgba); |
+ return new WebInspector.Color(rgba, WebInspector.Color.Format.HSLA, text); |
+ } |
} |
return null; |
-}; |
- |
-/** |
- * @param {!Array.<number>} rgba |
- * @return {!WebInspector.Color} |
- */ |
-WebInspector.Color.fromRGBA = function(rgba) |
-{ |
- return new WebInspector.Color([rgba[0] / 255, rgba[1] / 255, rgba[2] / 255, rgba[3]], WebInspector.Color.Format.RGBA); |
-}; |
- |
-/** |
- * @param {!Array.<number>} hsva |
- * @return {!WebInspector.Color} |
- */ |
-WebInspector.Color.fromHSVA = function(hsva) |
-{ |
+ } |
+ |
+ /** |
+ * @param {!Array.<number>} rgba |
+ * @return {!WebInspector.Color} |
+ */ |
+ static fromRGBA(rgba) { |
+ return new WebInspector.Color( |
+ [rgba[0] / 255, rgba[1] / 255, rgba[2] / 255, rgba[3]], WebInspector.Color.Format.RGBA); |
+ } |
+ |
+ /** |
+ * @param {!Array.<number>} hsva |
+ * @return {!WebInspector.Color} |
+ */ |
+ static fromHSVA(hsva) { |
var rgba = []; |
WebInspector.Color.hsva2rgba(hsva, rgba); |
return new WebInspector.Color(rgba, WebInspector.Color.Format.HSLA); |
-}; |
- |
-WebInspector.Color.prototype = { |
- /** |
- * @return {!WebInspector.Color.Format} |
- */ |
- format: function() |
- { |
- return this._format; |
- }, |
- |
- /** |
- * @return {!Array.<number>} HSLA with components within [0..1] |
- */ |
- hsla: function() |
- { |
- if (this._hsla) |
- return this._hsla; |
- var r = this._rgba[0]; |
- var g = this._rgba[1]; |
- var b = this._rgba[2]; |
- var max = Math.max(r, g, b); |
- var min = Math.min(r, g, b); |
- var diff = max - min; |
- var add = max + min; |
- |
- if (min === max) |
- var h = 0; |
- else if (r === max) |
- var h = ((1 / 6 * (g - b) / diff) + 1) % 1; |
- else if (g === max) |
- var h = (1 / 6 * (b - r) / diff) + 1 / 3; |
- else |
- var h = (1 / 6 * (r - g) / diff) + 2 / 3; |
- |
- var l = 0.5 * add; |
- |
- if (l === 0) |
- var s = 0; |
- else if (l === 1) |
- var s = 0; |
- else if (l <= 0.5) |
- var s = diff / add; |
- else |
- var s = diff / (2 - add); |
- |
- this._hsla = [h, s, l, this._rgba[3]]; |
- return this._hsla; |
- }, |
- |
- /** |
- * @return {!Array.<number>} |
- */ |
- canonicalHSLA: function() |
- { |
- var hsla = this.hsla(); |
- return [Math.round(hsla[0] * 360), Math.round(hsla[1] * 100), Math.round(hsla[2] * 100), hsla[3]]; |
- }, |
- |
- /** |
- * @return {!Array.<number>} HSVA with components within [0..1] |
- */ |
- hsva: function() |
- { |
- var hsla = this.hsla(); |
- var h = hsla[0]; |
- var s = hsla[1]; |
- var l = hsla[2]; |
+ } |
- s *= l < 0.5 ? l : 1 - l; |
- return [h, s !== 0 ? 2 * s / (l + s) : 0, (l + s), hsla[3]]; |
- }, |
- |
- /** |
- * @return {boolean} |
- */ |
- hasAlpha: function() |
- { |
- return this._rgba[3] !== 1; |
- }, |
- |
- /** |
- * @return {boolean} |
- */ |
- canBeShortHex: function() |
- { |
- if (this.hasAlpha()) |
- return false; |
- for (var i = 0; i < 3; ++i) { |
- var c = Math.round(this._rgba[i] * 255); |
- if (c % 17) |
- return false; |
- } |
- return true; |
- }, |
- |
- /** |
- * @return {?string} |
- */ |
- asString: function(format) |
- { |
- if (format === this._format && this._originalTextIsValid) |
- return this._originalText; |
- |
- if (!format) |
- format = this._format; |
- |
- /** |
- * @param {number} value |
- * @return {number} |
- */ |
- function toRgbValue(value) |
- { |
- return Math.round(value * 255); |
- } |
- |
- /** |
- * @param {number} value |
- * @return {string} |
- */ |
- function toHexValue(value) |
- { |
- var hex = Math.round(value * 255).toString(16); |
- return hex.length === 1 ? "0" + hex : hex; |
- } |
- |
- /** |
- * @param {number} value |
- * @return {string} |
- */ |
- function toShortHexValue(value) |
- { |
- return (Math.round(value * 255) / 17).toString(16); |
- } |
- |
- switch (format) { |
- case WebInspector.Color.Format.Original: |
- return this._originalText; |
- case WebInspector.Color.Format.RGB: |
- if (this.hasAlpha()) |
- return null; |
- return String.sprintf("rgb(%d, %d, %d)", toRgbValue(this._rgba[0]), toRgbValue(this._rgba[1]), toRgbValue(this._rgba[2])); |
- case WebInspector.Color.Format.RGBA: |
- return String.sprintf("rgba(%d, %d, %d, %f)", toRgbValue(this._rgba[0]), toRgbValue(this._rgba[1]), toRgbValue(this._rgba[2]), this._rgba[3]); |
- case WebInspector.Color.Format.HSL: |
- if (this.hasAlpha()) |
- return null; |
- var hsl = this.hsla(); |
- return String.sprintf("hsl(%d, %d%, %d%)", Math.round(hsl[0] * 360), Math.round(hsl[1] * 100), Math.round(hsl[2] * 100)); |
- case WebInspector.Color.Format.HSLA: |
- var hsla = this.hsla(); |
- return String.sprintf("hsla(%d, %d%, %d%, %f)", Math.round(hsla[0] * 360), Math.round(hsla[1] * 100), Math.round(hsla[2] * 100), hsla[3]); |
- case WebInspector.Color.Format.HEX: |
- if (this.hasAlpha()) |
- return null; |
- return String.sprintf("#%s%s%s", toHexValue(this._rgba[0]), toHexValue(this._rgba[1]), toHexValue(this._rgba[2])).toLowerCase(); |
- case WebInspector.Color.Format.ShortHEX: |
- if (!this.canBeShortHex()) |
- return null; |
- return String.sprintf("#%s%s%s", toShortHexValue(this._rgba[0]), toShortHexValue(this._rgba[1]), toShortHexValue(this._rgba[2])).toLowerCase(); |
- case WebInspector.Color.Format.Nickname: |
- return this.nickname(); |
- } |
- |
- return this._originalText; |
- }, |
- |
- |
- /** |
- * @return {!Array<number>} |
- */ |
- rgba: function() |
- { |
- return this._rgba.slice(); |
- }, |
- |
- /** |
- * @return {!Array.<number>} |
- */ |
- canonicalRGBA: function() |
- { |
- var rgba = new Array(4); |
- for (var i = 0; i < 3; ++i) |
- rgba[i] = Math.round(this._rgba[i] * 255); |
- rgba[3] = this._rgba[3]; |
- return rgba; |
- }, |
- |
- /** |
- * @return {?string} nickname |
- */ |
- nickname: function() |
- { |
- if (!WebInspector.Color._rgbaToNickname) { |
- WebInspector.Color._rgbaToNickname = {}; |
- for (var nickname in WebInspector.Color.Nicknames) { |
- var rgba = WebInspector.Color.Nicknames[nickname]; |
- if (rgba.length !== 4) |
- rgba = rgba.concat(1); |
- WebInspector.Color._rgbaToNickname[rgba] = nickname; |
- } |
- } |
- |
- return WebInspector.Color._rgbaToNickname[this.canonicalRGBA()] || null; |
- }, |
- |
- /** |
- * @return {!{r: number, g: number, b: number, a: (number|undefined)}} |
- */ |
- toProtocolRGBA: function() |
- { |
- var rgba = this.canonicalRGBA(); |
- var result = { r: rgba[0], g: rgba[1], b: rgba[2] }; |
- if (rgba[3] !== 1) |
- result.a = rgba[3]; |
- return result; |
- }, |
- |
- /** |
- * @return {!WebInspector.Color} |
- */ |
- invert: function() |
- { |
- var rgba = []; |
- rgba[0] = 1 - this._rgba[0]; |
- rgba[1] = 1 - this._rgba[1]; |
- rgba[2] = 1 - this._rgba[2]; |
- rgba[3] = this._rgba[3]; |
- return new WebInspector.Color(rgba, WebInspector.Color.Format.RGBA); |
- }, |
- |
- /** |
- * @param {number} alpha |
- * @return {!WebInspector.Color} |
- */ |
- setAlpha: function(alpha) |
- { |
- var rgba = this._rgba.slice(); |
- rgba[3] = alpha; |
- return new WebInspector.Color(rgba, WebInspector.Color.Format.RGBA); |
- } |
-}; |
- |
-/** |
- * @param {string} value |
- * return {number} |
- */ |
-WebInspector.Color._parseRgbNumeric = function(value) |
-{ |
+ /** |
+ * @param {string} value |
+ * return {number} |
+ */ |
+ static _parseRgbNumeric(value) { |
var parsed = parseInt(value, 10); |
- if (value.indexOf("%") !== -1) |
- parsed /= 100; |
+ if (value.indexOf('%') !== -1) |
+ parsed /= 100; |
else |
- parsed /= 255; |
+ parsed /= 255; |
return parsed; |
-}; |
+ } |
-/** |
- * @param {string} value |
- * return {number} |
- */ |
-WebInspector.Color._parseHueNumeric = function(value) |
-{ |
+ /** |
+ * @param {string} value |
+ * return {number} |
+ */ |
+ static _parseHueNumeric(value) { |
return isNaN(value) ? 0 : (parseFloat(value) / 360) % 1; |
-}; |
+ } |
-/** |
- * @param {string} value |
- * return {number} |
- */ |
-WebInspector.Color._parseSatLightNumeric = function(value) |
-{ |
+ /** |
+ * @param {string} value |
+ * return {number} |
+ */ |
+ static _parseSatLightNumeric(value) { |
return Math.min(1, parseFloat(value) / 100); |
-}; |
+ } |
-/** |
- * @param {string} value |
- * return {number} |
- */ |
-WebInspector.Color._parseAlphaNumeric = function(value) |
-{ |
+ /** |
+ * @param {string} value |
+ * return {number} |
+ */ |
+ static _parseAlphaNumeric(value) { |
return isNaN(value) ? 0 : parseFloat(value); |
-}; |
+ } |
-/** |
- * @param {!Array.<number>} hsva |
- * @param {!Array.<number>} out_hsla |
- */ |
-WebInspector.Color._hsva2hsla = function(hsva, out_hsla) |
-{ |
+ /** |
+ * @param {!Array.<number>} hsva |
+ * @param {!Array.<number>} out_hsla |
+ */ |
+ static _hsva2hsla(hsva, out_hsla) { |
var h = hsva[0]; |
var s = hsva[1]; |
var v = hsva[2]; |
var t = (2 - s) * v; |
if (v === 0 || s === 0) |
- s = 0; |
+ s = 0; |
else |
- s *= v / (t < 1 ? t : 2 - t); |
+ s *= v / (t < 1 ? t : 2 - t); |
out_hsla[0] = h; |
out_hsla[1] = s; |
out_hsla[2] = t / 2; |
out_hsla[3] = hsva[3]; |
-}; |
+ } |
-/** |
- * @param {!Array.<number>} hsl |
- * @param {!Array.<number>} out_rgb |
- */ |
-WebInspector.Color.hsl2rgb = function(hsl, out_rgb) |
-{ |
+ /** |
+ * @param {!Array.<number>} hsl |
+ * @param {!Array.<number>} out_rgb |
+ */ |
+ static hsl2rgb(hsl, out_rgb) { |
var h = hsl[0]; |
var s = hsl[1]; |
var l = hsl[2]; |
- function hue2rgb(p, q, h) |
- { |
- if (h < 0) |
- h += 1; |
- else if (h > 1) |
- h -= 1; |
- |
- if ((h * 6) < 1) |
- return p + (q - p) * h * 6; |
- else if ((h * 2) < 1) |
- return q; |
- else if ((h * 3) < 2) |
- return p + (q - p) * ((2 / 3) - h) * 6; |
- else |
- return p; |
+ function hue2rgb(p, q, h) { |
+ if (h < 0) |
+ h += 1; |
+ else if (h > 1) |
+ h -= 1; |
+ |
+ if ((h * 6) < 1) |
+ return p + (q - p) * h * 6; |
+ else if ((h * 2) < 1) |
+ return q; |
+ else if ((h * 3) < 2) |
+ return p + (q - p) * ((2 / 3) - h) * 6; |
+ else |
+ return p; |
} |
if (s < 0) |
- s = 0; |
+ s = 0; |
if (l <= 0.5) |
- var q = l * (1 + s); |
+ var q = l * (1 + s); |
else |
- var q = l + s - (l * s); |
+ var q = l + s - (l * s); |
var p = 2 * l - q; |
@@ -526,33 +264,27 @@ WebInspector.Color.hsl2rgb = function(hsl, out_rgb) |
out_rgb[1] = hue2rgb(p, q, tg); |
out_rgb[2] = hue2rgb(p, q, tb); |
out_rgb[3] = hsl[3]; |
-}; |
+ } |
-/** |
- * @param {!Array<number>} hsva |
- * @param {!Array<number>} out_rgba |
- */ |
-WebInspector.Color.hsva2rgba = function(hsva, out_rgba) |
-{ |
+ /** |
+ * @param {!Array<number>} hsva |
+ * @param {!Array<number>} out_rgba |
+ */ |
+ static hsva2rgba(hsva, out_rgba) { |
WebInspector.Color._hsva2hsla(hsva, WebInspector.Color.hsva2rgba._tmpHSLA); |
WebInspector.Color.hsl2rgb(WebInspector.Color.hsva2rgba._tmpHSLA, out_rgba); |
for (var i = 0; i < WebInspector.Color.hsva2rgba._tmpHSLA.length; i++) |
- WebInspector.Color.hsva2rgba._tmpHSLA[i] = 0; |
-}; |
- |
-/** @type {!Array<number>} */ |
-WebInspector.Color.hsva2rgba._tmpHSLA = [0, 0, 0, 0]; |
- |
- |
-/** |
- * Calculate the luminance of this color using the WCAG algorithm. |
- * See http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef |
- * @param {!Array<number>} rgba |
- * @return {number} |
- */ |
-WebInspector.Color.luminance = function(rgba) |
-{ |
+ WebInspector.Color.hsva2rgba._tmpHSLA[i] = 0; |
+ } |
+ |
+ /** |
+ * Calculate the luminance of this color using the WCAG algorithm. |
+ * See http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef |
+ * @param {!Array<number>} rgba |
+ * @return {number} |
+ */ |
+ static luminance(rgba) { |
var rSRGB = rgba[0]; |
var gSRGB = rgba[1]; |
var bSRGB = rgba[2]; |
@@ -562,264 +294,517 @@ WebInspector.Color.luminance = function(rgba) |
var b = bSRGB <= 0.03928 ? bSRGB / 12.92 : Math.pow(((bSRGB + 0.055) / 1.055), 2.4); |
return 0.2126 * r + 0.7152 * g + 0.0722 * b; |
-}; |
- |
-/** |
- * Combine the two given color according to alpha blending. |
- * @param {!Array<number>} fgRGBA |
- * @param {!Array<number>} bgRGBA |
- * @param {!Array<number>} out_blended |
- */ |
-WebInspector.Color.blendColors = function(fgRGBA, bgRGBA, out_blended) |
-{ |
+ } |
+ |
+ /** |
+ * Combine the two given color according to alpha blending. |
+ * @param {!Array<number>} fgRGBA |
+ * @param {!Array<number>} bgRGBA |
+ * @param {!Array<number>} out_blended |
+ */ |
+ static blendColors(fgRGBA, bgRGBA, out_blended) { |
var alpha = fgRGBA[3]; |
out_blended[0] = ((1 - alpha) * bgRGBA[0]) + (alpha * fgRGBA[0]); |
out_blended[1] = ((1 - alpha) * bgRGBA[1]) + (alpha * fgRGBA[1]); |
out_blended[2] = ((1 - alpha) * bgRGBA[2]) + (alpha * fgRGBA[2]); |
out_blended[3] = alpha + (bgRGBA[3] * (1 - alpha)); |
-}; |
- |
-/** |
- * Calculate the contrast ratio between a foreground and a background color. |
- * Returns the ratio to 1, for example for two two colors with a contrast ratio of 21:1, this function will return 21. |
- * See http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef |
- * @param {!Array<number>} fgRGBA |
- * @param {!Array<number>} bgRGBA |
- * @return {number} |
- */ |
-WebInspector.Color.calculateContrastRatio = function(fgRGBA, bgRGBA) |
-{ |
+ } |
+ |
+ /** |
+ * Calculate the contrast ratio between a foreground and a background color. |
+ * Returns the ratio to 1, for example for two two colors with a contrast ratio of 21:1, this function will return 21. |
+ * See http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef |
+ * @param {!Array<number>} fgRGBA |
+ * @param {!Array<number>} bgRGBA |
+ * @return {number} |
+ */ |
+ static calculateContrastRatio(fgRGBA, bgRGBA) { |
WebInspector.Color.blendColors(fgRGBA, bgRGBA, WebInspector.Color.calculateContrastRatio._blendedFg); |
var fgLuminance = WebInspector.Color.luminance(WebInspector.Color.calculateContrastRatio._blendedFg); |
var bgLuminance = WebInspector.Color.luminance(bgRGBA); |
- var contrastRatio = (Math.max(fgLuminance, bgLuminance) + 0.05) / |
- (Math.min(fgLuminance, bgLuminance) + 0.05); |
+ var contrastRatio = (Math.max(fgLuminance, bgLuminance) + 0.05) / (Math.min(fgLuminance, bgLuminance) + 0.05); |
for (var i = 0; i < WebInspector.Color.calculateContrastRatio._blendedFg.length; i++) |
- WebInspector.Color.calculateContrastRatio._blendedFg[i] = 0; |
+ WebInspector.Color.calculateContrastRatio._blendedFg[i] = 0; |
return contrastRatio; |
-}; |
- |
-WebInspector.Color.calculateContrastRatio._blendedFg = [0, 0, 0, 0]; |
- |
-/** |
- * Compute a desired luminance given a given luminance and a desired contrast |
- * ratio. |
- * @param {number} luminance The given luminance. |
- * @param {number} contrast The desired contrast ratio. |
- * @param {boolean} lighter Whether the desired luminance is lighter or darker |
- * than the given luminance. If no luminance can be found which meets this |
- * requirement, a luminance which meets the inverse requirement will be |
- * returned. |
- * @return {number} The desired luminance. |
- */ |
-WebInspector.Color.desiredLuminance = function(luminance, contrast, lighter) |
-{ |
- function computeLuminance() |
- { |
- if (lighter) |
- return (luminance + 0.05) * contrast - 0.05; |
- else |
- return (luminance + 0.05) / contrast - 0.05; |
+ } |
+ |
+ /** |
+ * Compute a desired luminance given a given luminance and a desired contrast |
+ * ratio. |
+ * @param {number} luminance The given luminance. |
+ * @param {number} contrast The desired contrast ratio. |
+ * @param {boolean} lighter Whether the desired luminance is lighter or darker |
+ * than the given luminance. If no luminance can be found which meets this |
+ * requirement, a luminance which meets the inverse requirement will be |
+ * returned. |
+ * @return {number} The desired luminance. |
+ */ |
+ static desiredLuminance(luminance, contrast, lighter) { |
+ function computeLuminance() { |
+ if (lighter) |
+ return (luminance + 0.05) * contrast - 0.05; |
+ else |
+ return (luminance + 0.05) / contrast - 0.05; |
} |
var desiredLuminance = computeLuminance(); |
if (desiredLuminance < 0 || desiredLuminance > 1) { |
- lighter = !lighter; |
- desiredLuminance = computeLuminance(); |
+ lighter = !lighter; |
+ desiredLuminance = computeLuminance(); |
} |
return desiredLuminance; |
-}; |
- |
+ } |
-WebInspector.Color.Nicknames = { |
- "aliceblue": [240,248,255], |
- "antiquewhite": [250,235,215], |
- "aqua": [0,255,255], |
- "aquamarine": [127,255,212], |
- "azure": [240,255,255], |
- "beige": [245,245,220], |
- "bisque": [255,228,196], |
- "black": [0,0,0], |
- "blanchedalmond": [255,235,205], |
- "blue": [0,0,255], |
- "blueviolet": [138,43,226], |
- "brown": [165,42,42], |
- "burlywood": [222,184,135], |
- "cadetblue": [95,158,160], |
- "chartreuse": [127,255,0], |
- "chocolate": [210,105,30], |
- "coral": [255,127,80], |
- "cornflowerblue": [100,149,237], |
- "cornsilk": [255,248,220], |
- "crimson": [237,20,61], |
- "cyan": [0,255,255], |
- "darkblue": [0,0,139], |
- "darkcyan": [0,139,139], |
- "darkgoldenrod": [184,134,11], |
- "darkgray": [169,169,169], |
- "darkgrey": [169,169,169], |
- "darkgreen": [0,100,0], |
- "darkkhaki": [189,183,107], |
- "darkmagenta": [139,0,139], |
- "darkolivegreen": [85,107,47], |
- "darkorange": [255,140,0], |
- "darkorchid": [153,50,204], |
- "darkred": [139,0,0], |
- "darksalmon": [233,150,122], |
- "darkseagreen": [143,188,143], |
- "darkslateblue": [72,61,139], |
- "darkslategray": [47,79,79], |
- "darkslategrey": [47,79,79], |
- "darkturquoise": [0,206,209], |
- "darkviolet": [148,0,211], |
- "deeppink": [255,20,147], |
- "deepskyblue": [0,191,255], |
- "dimgray": [105,105,105], |
- "dimgrey": [105,105,105], |
- "dodgerblue": [30,144,255], |
- "firebrick": [178,34,34], |
- "floralwhite": [255,250,240], |
- "forestgreen": [34,139,34], |
- "fuchsia": [255,0,255], |
- "gainsboro": [220,220,220], |
- "ghostwhite": [248,248,255], |
- "gold": [255,215,0], |
- "goldenrod": [218,165,32], |
- "gray": [128,128,128], |
- "grey": [128,128,128], |
- "green": [0,128,0], |
- "greenyellow": [173,255,47], |
- "honeydew": [240,255,240], |
- "hotpink": [255,105,180], |
- "indianred": [205,92,92], |
- "indigo": [75,0,130], |
- "ivory": [255,255,240], |
- "khaki": [240,230,140], |
- "lavender": [230,230,250], |
- "lavenderblush": [255,240,245], |
- "lawngreen": [124,252,0], |
- "lemonchiffon": [255,250,205], |
- "lightblue": [173,216,230], |
- "lightcoral": [240,128,128], |
- "lightcyan": [224,255,255], |
- "lightgoldenrodyellow":[250,250,210], |
- "lightgreen": [144,238,144], |
- "lightgray": [211,211,211], |
- "lightgrey": [211,211,211], |
- "lightpink": [255,182,193], |
- "lightsalmon": [255,160,122], |
- "lightseagreen": [32,178,170], |
- "lightskyblue": [135,206,250], |
- "lightslategray": [119,136,153], |
- "lightslategrey": [119,136,153], |
- "lightsteelblue": [176,196,222], |
- "lightyellow": [255,255,224], |
- "lime": [0,255,0], |
- "limegreen": [50,205,50], |
- "linen": [250,240,230], |
- "magenta": [255,0,255], |
- "maroon": [128,0,0], |
- "mediumaquamarine": [102,205,170], |
- "mediumblue": [0,0,205], |
- "mediumorchid": [186,85,211], |
- "mediumpurple": [147,112,219], |
- "mediumseagreen": [60,179,113], |
- "mediumslateblue": [123,104,238], |
- "mediumspringgreen": [0,250,154], |
- "mediumturquoise": [72,209,204], |
- "mediumvioletred": [199,21,133], |
- "midnightblue": [25,25,112], |
- "mintcream": [245,255,250], |
- "mistyrose": [255,228,225], |
- "moccasin": [255,228,181], |
- "navajowhite": [255,222,173], |
- "navy": [0,0,128], |
- "oldlace": [253,245,230], |
- "olive": [128,128,0], |
- "olivedrab": [107,142,35], |
- "orange": [255,165,0], |
- "orangered": [255,69,0], |
- "orchid": [218,112,214], |
- "palegoldenrod": [238,232,170], |
- "palegreen": [152,251,152], |
- "paleturquoise": [175,238,238], |
- "palevioletred": [219,112,147], |
- "papayawhip": [255,239,213], |
- "peachpuff": [255,218,185], |
- "peru": [205,133,63], |
- "pink": [255,192,203], |
- "plum": [221,160,221], |
- "powderblue": [176,224,230], |
- "purple": [128,0,128], |
- "rebeccapurple": [102,51,153], |
- "red": [255,0,0], |
- "rosybrown": [188,143,143], |
- "royalblue": [65,105,225], |
- "saddlebrown": [139,69,19], |
- "salmon": [250,128,114], |
- "sandybrown": [244,164,96], |
- "seagreen": [46,139,87], |
- "seashell": [255,245,238], |
- "sienna": [160,82,45], |
- "silver": [192,192,192], |
- "skyblue": [135,206,235], |
- "slateblue": [106,90,205], |
- "slategray": [112,128,144], |
- "slategrey": [112,128,144], |
- "snow": [255,250,250], |
- "springgreen": [0,255,127], |
- "steelblue": [70,130,180], |
- "tan": [210,180,140], |
- "teal": [0,128,128], |
- "thistle": [216,191,216], |
- "tomato": [255,99,71], |
- "turquoise": [64,224,208], |
- "violet": [238,130,238], |
- "wheat": [245,222,179], |
- "white": [255,255,255], |
- "whitesmoke": [245,245,245], |
- "yellow": [255,255,0], |
- "yellowgreen": [154,205,50], |
- "transparent": [0, 0, 0, 0], |
-}; |
- |
-WebInspector.Color.PageHighlight = { |
- Content: WebInspector.Color.fromRGBA([111, 168, 220, .66]), |
- ContentLight: WebInspector.Color.fromRGBA([111, 168, 220, .5]), |
- ContentOutline: WebInspector.Color.fromRGBA([9, 83, 148]), |
- Padding: WebInspector.Color.fromRGBA([147, 196, 125, .55]), |
- PaddingLight: WebInspector.Color.fromRGBA([147, 196, 125, .4]), |
- Border: WebInspector.Color.fromRGBA([255, 229, 153, .66]), |
- BorderLight: WebInspector.Color.fromRGBA([255, 229, 153, .5]), |
- Margin: WebInspector.Color.fromRGBA([246, 178, 107, .66]), |
- MarginLight: WebInspector.Color.fromRGBA([246, 178, 107, .5]), |
- EventTarget: WebInspector.Color.fromRGBA([255, 196, 196, .66]), |
- Shape: WebInspector.Color.fromRGBA([96, 82, 177, 0.8]), |
- ShapeMargin: WebInspector.Color.fromRGBA([96, 82, 127, .6]) |
-}; |
- |
-/** |
- * @param {!WebInspector.Color} color |
- * @return {!WebInspector.Color.Format} |
- */ |
-WebInspector.Color.detectColorFormat = function(color) |
-{ |
+ /** |
+ * @param {!WebInspector.Color} color |
+ * @return {!WebInspector.Color.Format} |
+ */ |
+ static detectColorFormat(color) { |
const cf = WebInspector.Color.Format; |
var format; |
- var formatSetting = WebInspector.moduleSetting("colorFormat").get(); |
+ var formatSetting = WebInspector.moduleSetting('colorFormat').get(); |
if (formatSetting === cf.Original) |
- format = cf.Original; |
+ format = cf.Original; |
else if (formatSetting === cf.RGB) |
- format = (color.hasAlpha() ? cf.RGBA : cf.RGB); |
+ format = (color.hasAlpha() ? cf.RGBA : cf.RGB); |
else if (formatSetting === cf.HSL) |
- format = (color.hasAlpha() ? cf.HSLA : cf.HSL); |
+ format = (color.hasAlpha() ? cf.HSLA : cf.HSL); |
else if (!color.hasAlpha()) |
- format = (color.canBeShortHex() ? cf.ShortHEX : cf.HEX); |
+ format = (color.canBeShortHex() ? cf.ShortHEX : cf.HEX); |
else |
- format = cf.RGBA; |
+ format = cf.RGBA; |
return format; |
+ } |
+ |
+ /** |
+ * @return {!WebInspector.Color.Format} |
+ */ |
+ format() { |
+ return this._format; |
+ } |
+ |
+ /** |
+ * @return {!Array.<number>} HSLA with components within [0..1] |
+ */ |
+ hsla() { |
+ if (this._hsla) |
+ return this._hsla; |
+ var r = this._rgba[0]; |
+ var g = this._rgba[1]; |
+ var b = this._rgba[2]; |
+ var max = Math.max(r, g, b); |
+ var min = Math.min(r, g, b); |
+ var diff = max - min; |
+ var add = max + min; |
+ |
+ if (min === max) |
+ var h = 0; |
+ else if (r === max) |
+ var h = ((1 / 6 * (g - b) / diff) + 1) % 1; |
+ else if (g === max) |
+ var h = (1 / 6 * (b - r) / diff) + 1 / 3; |
+ else |
+ var h = (1 / 6 * (r - g) / diff) + 2 / 3; |
+ |
+ var l = 0.5 * add; |
+ |
+ if (l === 0) |
+ var s = 0; |
+ else if (l === 1) |
+ var s = 0; |
+ else if (l <= 0.5) |
+ var s = diff / add; |
+ else |
+ var s = diff / (2 - add); |
+ |
+ this._hsla = [h, s, l, this._rgba[3]]; |
+ return this._hsla; |
+ } |
+ |
+ /** |
+ * @return {!Array.<number>} |
+ */ |
+ canonicalHSLA() { |
+ var hsla = this.hsla(); |
+ return [Math.round(hsla[0] * 360), Math.round(hsla[1] * 100), Math.round(hsla[2] * 100), hsla[3]]; |
+ } |
+ |
+ /** |
+ * @return {!Array.<number>} HSVA with components within [0..1] |
+ */ |
+ hsva() { |
+ var hsla = this.hsla(); |
+ var h = hsla[0]; |
+ var s = hsla[1]; |
+ var l = hsla[2]; |
+ |
+ s *= l < 0.5 ? l : 1 - l; |
+ return [h, s !== 0 ? 2 * s / (l + s) : 0, (l + s), hsla[3]]; |
+ } |
+ |
+ /** |
+ * @return {boolean} |
+ */ |
+ hasAlpha() { |
+ return this._rgba[3] !== 1; |
+ } |
+ |
+ /** |
+ * @return {boolean} |
+ */ |
+ canBeShortHex() { |
+ if (this.hasAlpha()) |
+ return false; |
+ for (var i = 0; i < 3; ++i) { |
+ var c = Math.round(this._rgba[i] * 255); |
+ if (c % 17) |
+ return false; |
+ } |
+ return true; |
+ } |
+ |
+ /** |
+ * @return {?string} |
+ */ |
+ asString(format) { |
+ if (format === this._format && this._originalTextIsValid) |
+ return this._originalText; |
+ |
+ if (!format) |
+ format = this._format; |
+ |
+ /** |
+ * @param {number} value |
+ * @return {number} |
+ */ |
+ function toRgbValue(value) { |
+ return Math.round(value * 255); |
+ } |
+ |
+ /** |
+ * @param {number} value |
+ * @return {string} |
+ */ |
+ function toHexValue(value) { |
+ var hex = Math.round(value * 255).toString(16); |
+ return hex.length === 1 ? '0' + hex : hex; |
+ } |
+ |
+ /** |
+ * @param {number} value |
+ * @return {string} |
+ */ |
+ function toShortHexValue(value) { |
+ return (Math.round(value * 255) / 17).toString(16); |
+ } |
+ |
+ switch (format) { |
+ case WebInspector.Color.Format.Original: |
+ return this._originalText; |
+ case WebInspector.Color.Format.RGB: |
+ if (this.hasAlpha()) |
+ return null; |
+ return String.sprintf( |
+ 'rgb(%d, %d, %d)', toRgbValue(this._rgba[0]), toRgbValue(this._rgba[1]), toRgbValue(this._rgba[2])); |
+ case WebInspector.Color.Format.RGBA: |
+ return String.sprintf( |
+ 'rgba(%d, %d, %d, %f)', toRgbValue(this._rgba[0]), toRgbValue(this._rgba[1]), toRgbValue(this._rgba[2]), |
+ this._rgba[3]); |
+ case WebInspector.Color.Format.HSL: |
+ if (this.hasAlpha()) |
+ return null; |
+ var hsl = this.hsla(); |
+ return String.sprintf( |
+ 'hsl(%d, %d%, %d%)', Math.round(hsl[0] * 360), Math.round(hsl[1] * 100), Math.round(hsl[2] * 100)); |
+ case WebInspector.Color.Format.HSLA: |
+ var hsla = this.hsla(); |
+ return String.sprintf( |
+ 'hsla(%d, %d%, %d%, %f)', Math.round(hsla[0] * 360), Math.round(hsla[1] * 100), Math.round(hsla[2] * 100), |
+ hsla[3]); |
+ case WebInspector.Color.Format.HEX: |
+ if (this.hasAlpha()) |
+ return null; |
+ return String |
+ .sprintf('#%s%s%s', toHexValue(this._rgba[0]), toHexValue(this._rgba[1]), toHexValue(this._rgba[2])) |
+ .toLowerCase(); |
+ case WebInspector.Color.Format.ShortHEX: |
+ if (!this.canBeShortHex()) |
+ return null; |
+ return String |
+ .sprintf( |
+ '#%s%s%s', toShortHexValue(this._rgba[0]), toShortHexValue(this._rgba[1]), |
+ toShortHexValue(this._rgba[2])) |
+ .toLowerCase(); |
+ case WebInspector.Color.Format.Nickname: |
+ return this.nickname(); |
+ } |
+ |
+ return this._originalText; |
+ } |
+ |
+ /** |
+ * @return {!Array<number>} |
+ */ |
+ rgba() { |
+ return this._rgba.slice(); |
+ } |
+ |
+ /** |
+ * @return {!Array.<number>} |
+ */ |
+ canonicalRGBA() { |
+ var rgba = new Array(4); |
+ for (var i = 0; i < 3; ++i) |
+ rgba[i] = Math.round(this._rgba[i] * 255); |
+ rgba[3] = this._rgba[3]; |
+ return rgba; |
+ } |
+ |
+ /** |
+ * @return {?string} nickname |
+ */ |
+ nickname() { |
+ if (!WebInspector.Color._rgbaToNickname) { |
+ WebInspector.Color._rgbaToNickname = {}; |
+ for (var nickname in WebInspector.Color.Nicknames) { |
+ var rgba = WebInspector.Color.Nicknames[nickname]; |
+ if (rgba.length !== 4) |
+ rgba = rgba.concat(1); |
+ WebInspector.Color._rgbaToNickname[rgba] = nickname; |
+ } |
+ } |
+ |
+ return WebInspector.Color._rgbaToNickname[this.canonicalRGBA()] || null; |
+ } |
+ |
+ /** |
+ * @return {!{r: number, g: number, b: number, a: (number|undefined)}} |
+ */ |
+ toProtocolRGBA() { |
+ var rgba = this.canonicalRGBA(); |
+ var result = {r: rgba[0], g: rgba[1], b: rgba[2]}; |
+ if (rgba[3] !== 1) |
+ result.a = rgba[3]; |
+ return result; |
+ } |
+ |
+ /** |
+ * @return {!WebInspector.Color} |
+ */ |
+ invert() { |
+ var rgba = []; |
+ rgba[0] = 1 - this._rgba[0]; |
+ rgba[1] = 1 - this._rgba[1]; |
+ rgba[2] = 1 - this._rgba[2]; |
+ rgba[3] = this._rgba[3]; |
+ return new WebInspector.Color(rgba, WebInspector.Color.Format.RGBA); |
+ } |
+ |
+ /** |
+ * @param {number} alpha |
+ * @return {!WebInspector.Color} |
+ */ |
+ setAlpha(alpha) { |
+ var rgba = this._rgba.slice(); |
+ rgba[3] = alpha; |
+ return new WebInspector.Color(rgba, WebInspector.Color.Format.RGBA); |
+ } |
}; |
+ |
+/** @type {!RegExp} */ |
+WebInspector.Color.Regex = /((?:rgb|hsl)a?\([^)]+\)|#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3}|\b[a-zA-Z]+\b(?!-))/g; |
+ |
+/** |
+ * @enum {string} |
+ */ |
+WebInspector.Color.Format = { |
+ Original: 'original', |
+ Nickname: 'nickname', |
+ HEX: 'hex', |
+ ShortHEX: 'shorthex', |
+ RGB: 'rgb', |
+ RGBA: 'rgba', |
+ HSL: 'hsl', |
+ HSLA: 'hsla' |
+}; |
+ |
+ |
+/** @type {!Array<number>} */ |
+WebInspector.Color.hsva2rgba._tmpHSLA = [0, 0, 0, 0]; |
+ |
+ |
+WebInspector.Color.calculateContrastRatio._blendedFg = [0, 0, 0, 0]; |
+ |
+ |
+WebInspector.Color.Nicknames = { |
+ 'aliceblue': [240, 248, 255], |
+ 'antiquewhite': [250, 235, 215], |
+ 'aqua': [0, 255, 255], |
+ 'aquamarine': [127, 255, 212], |
+ 'azure': [240, 255, 255], |
+ 'beige': [245, 245, 220], |
+ 'bisque': [255, 228, 196], |
+ 'black': [0, 0, 0], |
+ 'blanchedalmond': [255, 235, 205], |
+ 'blue': [0, 0, 255], |
+ 'blueviolet': [138, 43, 226], |
+ 'brown': [165, 42, 42], |
+ 'burlywood': [222, 184, 135], |
+ 'cadetblue': [95, 158, 160], |
+ 'chartreuse': [127, 255, 0], |
+ 'chocolate': [210, 105, 30], |
+ 'coral': [255, 127, 80], |
+ 'cornflowerblue': [100, 149, 237], |
+ 'cornsilk': [255, 248, 220], |
+ 'crimson': [237, 20, 61], |
+ 'cyan': [0, 255, 255], |
+ 'darkblue': [0, 0, 139], |
+ 'darkcyan': [0, 139, 139], |
+ 'darkgoldenrod': [184, 134, 11], |
+ 'darkgray': [169, 169, 169], |
+ 'darkgrey': [169, 169, 169], |
+ 'darkgreen': [0, 100, 0], |
+ 'darkkhaki': [189, 183, 107], |
+ 'darkmagenta': [139, 0, 139], |
+ 'darkolivegreen': [85, 107, 47], |
+ 'darkorange': [255, 140, 0], |
+ 'darkorchid': [153, 50, 204], |
+ 'darkred': [139, 0, 0], |
+ 'darksalmon': [233, 150, 122], |
+ 'darkseagreen': [143, 188, 143], |
+ 'darkslateblue': [72, 61, 139], |
+ 'darkslategray': [47, 79, 79], |
+ 'darkslategrey': [47, 79, 79], |
+ 'darkturquoise': [0, 206, 209], |
+ 'darkviolet': [148, 0, 211], |
+ 'deeppink': [255, 20, 147], |
+ 'deepskyblue': [0, 191, 255], |
+ 'dimgray': [105, 105, 105], |
+ 'dimgrey': [105, 105, 105], |
+ 'dodgerblue': [30, 144, 255], |
+ 'firebrick': [178, 34, 34], |
+ 'floralwhite': [255, 250, 240], |
+ 'forestgreen': [34, 139, 34], |
+ 'fuchsia': [255, 0, 255], |
+ 'gainsboro': [220, 220, 220], |
+ 'ghostwhite': [248, 248, 255], |
+ 'gold': [255, 215, 0], |
+ 'goldenrod': [218, 165, 32], |
+ 'gray': [128, 128, 128], |
+ 'grey': [128, 128, 128], |
+ 'green': [0, 128, 0], |
+ 'greenyellow': [173, 255, 47], |
+ 'honeydew': [240, 255, 240], |
+ 'hotpink': [255, 105, 180], |
+ 'indianred': [205, 92, 92], |
+ 'indigo': [75, 0, 130], |
+ 'ivory': [255, 255, 240], |
+ 'khaki': [240, 230, 140], |
+ 'lavender': [230, 230, 250], |
+ 'lavenderblush': [255, 240, 245], |
+ 'lawngreen': [124, 252, 0], |
+ 'lemonchiffon': [255, 250, 205], |
+ 'lightblue': [173, 216, 230], |
+ 'lightcoral': [240, 128, 128], |
+ 'lightcyan': [224, 255, 255], |
+ 'lightgoldenrodyellow': [250, 250, 210], |
+ 'lightgreen': [144, 238, 144], |
+ 'lightgray': [211, 211, 211], |
+ 'lightgrey': [211, 211, 211], |
+ 'lightpink': [255, 182, 193], |
+ 'lightsalmon': [255, 160, 122], |
+ 'lightseagreen': [32, 178, 170], |
+ 'lightskyblue': [135, 206, 250], |
+ 'lightslategray': [119, 136, 153], |
+ 'lightslategrey': [119, 136, 153], |
+ 'lightsteelblue': [176, 196, 222], |
+ 'lightyellow': [255, 255, 224], |
+ 'lime': [0, 255, 0], |
+ 'limegreen': [50, 205, 50], |
+ 'linen': [250, 240, 230], |
+ 'magenta': [255, 0, 255], |
+ 'maroon': [128, 0, 0], |
+ 'mediumaquamarine': [102, 205, 170], |
+ 'mediumblue': [0, 0, 205], |
+ 'mediumorchid': [186, 85, 211], |
+ 'mediumpurple': [147, 112, 219], |
+ 'mediumseagreen': [60, 179, 113], |
+ 'mediumslateblue': [123, 104, 238], |
+ 'mediumspringgreen': [0, 250, 154], |
+ 'mediumturquoise': [72, 209, 204], |
+ 'mediumvioletred': [199, 21, 133], |
+ 'midnightblue': [25, 25, 112], |
+ 'mintcream': [245, 255, 250], |
+ 'mistyrose': [255, 228, 225], |
+ 'moccasin': [255, 228, 181], |
+ 'navajowhite': [255, 222, 173], |
+ 'navy': [0, 0, 128], |
+ 'oldlace': [253, 245, 230], |
+ 'olive': [128, 128, 0], |
+ 'olivedrab': [107, 142, 35], |
+ 'orange': [255, 165, 0], |
+ 'orangered': [255, 69, 0], |
+ 'orchid': [218, 112, 214], |
+ 'palegoldenrod': [238, 232, 170], |
+ 'palegreen': [152, 251, 152], |
+ 'paleturquoise': [175, 238, 238], |
+ 'palevioletred': [219, 112, 147], |
+ 'papayawhip': [255, 239, 213], |
+ 'peachpuff': [255, 218, 185], |
+ 'peru': [205, 133, 63], |
+ 'pink': [255, 192, 203], |
+ 'plum': [221, 160, 221], |
+ 'powderblue': [176, 224, 230], |
+ 'purple': [128, 0, 128], |
+ 'rebeccapurple': [102, 51, 153], |
+ 'red': [255, 0, 0], |
+ 'rosybrown': [188, 143, 143], |
+ 'royalblue': [65, 105, 225], |
+ 'saddlebrown': [139, 69, 19], |
+ 'salmon': [250, 128, 114], |
+ 'sandybrown': [244, 164, 96], |
+ 'seagreen': [46, 139, 87], |
+ 'seashell': [255, 245, 238], |
+ 'sienna': [160, 82, 45], |
+ 'silver': [192, 192, 192], |
+ 'skyblue': [135, 206, 235], |
+ 'slateblue': [106, 90, 205], |
+ 'slategray': [112, 128, 144], |
+ 'slategrey': [112, 128, 144], |
+ 'snow': [255, 250, 250], |
+ 'springgreen': [0, 255, 127], |
+ 'steelblue': [70, 130, 180], |
+ 'tan': [210, 180, 140], |
+ 'teal': [0, 128, 128], |
+ 'thistle': [216, 191, 216], |
+ 'tomato': [255, 99, 71], |
+ 'turquoise': [64, 224, 208], |
+ 'violet': [238, 130, 238], |
+ 'wheat': [245, 222, 179], |
+ 'white': [255, 255, 255], |
+ 'whitesmoke': [245, 245, 245], |
+ 'yellow': [255, 255, 0], |
+ 'yellowgreen': [154, 205, 50], |
+ 'transparent': [0, 0, 0, 0], |
+}; |
+ |
+WebInspector.Color.PageHighlight = { |
+ Content: WebInspector.Color.fromRGBA([111, 168, 220, .66]), |
+ ContentLight: WebInspector.Color.fromRGBA([111, 168, 220, .5]), |
+ ContentOutline: WebInspector.Color.fromRGBA([9, 83, 148]), |
+ Padding: WebInspector.Color.fromRGBA([147, 196, 125, .55]), |
+ PaddingLight: WebInspector.Color.fromRGBA([147, 196, 125, .4]), |
+ Border: WebInspector.Color.fromRGBA([255, 229, 153, .66]), |
+ BorderLight: WebInspector.Color.fromRGBA([255, 229, 153, .5]), |
+ Margin: WebInspector.Color.fromRGBA([246, 178, 107, .66]), |
+ MarginLight: WebInspector.Color.fromRGBA([246, 178, 107, .5]), |
+ EventTarget: WebInspector.Color.fromRGBA([255, 196, 196, .66]), |
+ Shape: WebInspector.Color.fromRGBA([96, 82, 177, 0.8]), |
+ ShapeMargin: WebInspector.Color.fromRGBA([96, 82, 127, .6]) |
+}; |
+ |
+ |