diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebInspectorUI/UserInterface/Color.js | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebInspectorUI/UserInterface/Color.js')
-rw-r--r-- | Source/WebInspectorUI/UserInterface/Color.js | 665 |
1 files changed, 0 insertions, 665 deletions
diff --git a/Source/WebInspectorUI/UserInterface/Color.js b/Source/WebInspectorUI/UserInterface/Color.js deleted file mode 100644 index edf5cd092..000000000 --- a/Source/WebInspectorUI/UserInterface/Color.js +++ /dev/null @@ -1,665 +0,0 @@ -/* - * Copyright (C) 2009, 2013 Apple Inc. All rights reserved. - * Copyright (C) 2009 Joseph Pecoraro - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of - * its contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -WebInspector.Color = function(format, components) -{ - this.format = format; - if (format === WebInspector.Color.Format.HSL || format === WebInspector.Color.Format.HSLA) - this._hsla = components; - else - this._rgba = components; - - this.valid = !components.some(function(component) { - return isNaN(component); - }); -} - -WebInspector.Color.Format = { - Original: "color-format-original", - Nickname: "color-format-nickname", - HEX: "color-format-hex", - ShortHEX: "color-format-short-hex", - RGB: "color-format-rgb", - RGBA: "color-format-rgba", - HSL: "color-format-hsl", - HSLA: "color-format-hsla" -}; - -WebInspector.Color.fromString = function(colorString) -{ - var value = colorString.toLowerCase().replace(/%|\s+/g, ""); - const transparentNicknames = ["transparent", "rgba(0,0,0,0)", "hsla(0,0,0,0)"]; - if (transparentNicknames.contains(value)) { - var color = new WebInspector.Color(WebInspector.Color.Format.Nickname, [0, 0, 0, 0]); - color.nickname = "transparent"; - color.original = colorString; - return color; - } - - // Simple - #hex, rgb(), nickname, hsl() - var simple = /^(?:#([0-9a-f]{3,6})|rgb\(([^)]+)\)|(\w+)|hsl\(([^)]+)\))$/i; - var match = colorString.match(simple); - if (match) { - if (match[1]) { // hex - var hex = match[1].toUpperCase(); - if (hex.length === 3) { - return new WebInspector.Color(WebInspector.Color.Format.ShortHEX, [ - parseInt(hex.charAt(0) + hex.charAt(0), 16) * 255, - parseInt(hex.charAt(1) + hex.charAt(1), 16) * 255, - parseInt(hex.charAt(2) + hex.charAt(2), 16) * 255, - 1 - ]); - } else { - return new WebInspector.Color(WebInspector.Color.Format.HEX, [ - parseInt(hex.substring(0, 2), 16) * 255, - parseInt(hex.substring(2, 4), 16) * 255, - parseInt(hex.substring(4, 6), 16) * 255, - 1 - ]); - } - } else if (match[2]) { // rgb - var rgb = match[2].split(/\s*,\s*/); - return new WebInspector.Color(WebInspector.Color.Format.RGB, [ - parseInt(rgb[0]), - parseInt(rgb[1]), - parseInt(rgb[2]), - 1 - ]); - } else if (match[3]) { // nickname - var nickname = match[3].toLowerCase(); - if (WebInspector.Color.Nicknames.hasOwnProperty(nickname)) { - var color = new WebInspector.Color(WebInspector.Color.Format.Nickname, WebInspector.Color.Nicknames[nickname].concat(1)); - color.nickname = nickname; - color.original = colorString; - return color; - } else - return null; - } else if (match[4]) { // hsl - var hsl = match[4].replace(/%/g, "").split(/\s*,\s*/); - return new WebInspector.Color(WebInspector.Color.Format.HSL, [ - parseInt(hsl[0]), - parseInt(hsl[1]), - parseInt(hsl[2]), - 1 - ]); - } - } - - // Advanced - rgba(), hsla() - var advanced = /^(?:rgba\(([^)]+)\)|hsla\(([^)]+)\))$/; - match = colorString.match(advanced); - if (match) { - if (match[1]) { // rgba - var rgba = match[1].split(/\s*,\s*/); - return new WebInspector.Color(WebInspector.Color.Format.RGBA, [ - parseInt(rgba[0]), - parseInt(rgba[1]), - parseInt(rgba[2]), - Number.constrain(parseFloat(rgba[3]), 0, 1) - ]); - } else if (match[2]) { // hsla - var hsla = match[2].replace(/%/g, "").split(/\s*,\s*/); - return new WebInspector.Color(WebInspector.Color.Format.HSLA, [ - parseInt(hsla[0]), - parseInt(hsla[1]), - parseInt(hsla[2]), - Number.constrain(parseFloat(hsla[3]), 0, 1) - ]); - } - } - - return null; -} - -WebInspector.Color.prototype = { - nextFormat: function(format) - { - format = format || this.format; - - switch (format) { - case WebInspector.Color.Format.Original: - return this.simple ? WebInspector.Color.Format.RGB : WebInspector.Color.Format.RGBA; - - case WebInspector.Color.Format.RGB: - case WebInspector.Color.Format.RGBA: - return this.simple ? WebInspector.Color.Format.HSL : WebInspector.Color.Format.HSLA; - - case WebInspector.Color.Format.HSL: - case WebInspector.Color.Format.HSLA: - if (this.nickname) - return WebInspector.Color.Format.Nickname; - if (this.simple) - return this._canBeSerializedAsShortHEX() ? WebInspector.Color.Format.ShortHEX : WebInspector.Color.Format.HEX; - else - return WebInspector.Color.Format.Original; - - case WebInspector.Color.Format.ShortHEX: - return WebInspector.Color.Format.HEX; - - case WebInspector.Color.Format.HEX: - return WebInspector.Color.Format.Original; - - case WebInspector.Color.Format.Nickname: - if (this.simple) - return this._canBeSerializedAsShortHEX() ? WebInspector.Color.Format.ShortHEX : WebInspector.Color.Format.HEX; - else - return WebInspector.Color.Format.Original; - - default: - console.error("Unknown color format."); - return null; - } - }, - - get alpha() - { - return this._rgba ? this._rgba[3] : this._hsla[3]; - }, - - get simple() - { - return this.alpha === 1; - }, - - get rgb() - { - var rgb = this.rgba.slice(); - rgb.pop(); - return rgb; - }, - - get hsl() - { - var hsl = this.hsla.slice(); - hsl.pop(); - return hsl; - }, - - get rgba() - { - if (!this._rgba) - this._rgba = this._hslaToRGBA(this._hsla); - return this._rgba; - }, - - get hsla() - { - if (!this._hsla) - this._hsla = this._rgbaToHSLA(this.rgba); - return this._hsla; - }, - - copy: function() - { - switch (this.format) { - case WebInspector.Color.Format.RGB: - case WebInspector.Color.Format.HEX: - case WebInspector.Color.Format.ShortHEX: - case WebInspector.Color.Format.Nickname: - case WebInspector.Color.Format.RGBA: - return new WebInspector.Color(this.format, this.rgba); - case WebInspector.Color.Format.HSL: - case WebInspector.Color.Format.HSLA: - return new WebInspector.Color(this.format, this.hsla); - } - }, - - toString: function(format) - { - if (!format) - format = this.format; - - switch (format) { - case WebInspector.Color.Format.Original: - return this._toOriginalString(); - case WebInspector.Color.Format.RGB: - return this._toRGBString(); - case WebInspector.Color.Format.RGBA: - return this._toRGBAString(); - case WebInspector.Color.Format.HSL: - return this._toHSLString(); - case WebInspector.Color.Format.HSLA: - return this._toHSLAString(); - case WebInspector.Color.Format.HEX: - return this._toHEXString(); - case WebInspector.Color.Format.ShortHEX: - return this._toShortHEXString(); - case WebInspector.Color.Format.Nickname: - return this._toNicknameString(); - } - - throw "invalid color format"; - }, - - _toOriginalString: function() - { - return this.original || this._toNicknameString(); - }, - - _toNicknameString: function() - { - if (this.nickname) - return this.nickname; - - var rgba = this.rgba; - if (!this.simple) { - if (rgba[0] === 0 && rgba[1] === 0 && rgba[2] === 0 && rgba[3] === 0) - return "transparent"; - return this._toRGBAString(); - } - - var nicknames = WebInspector.Color.Nicknames; - for (var nickname in nicknames) { - if (!nicknames.hasOwnProperty(nickname)) - continue; - - var nicknameRGB = nicknames[nickname]; - if (nicknameRGB[0] === rgba[0] && nicknameRGB[1] === rgba[1] && nicknameRGB[2] === rgba[2]) - return nickname; - } - - return this._toRGBString(); - }, - - _toShortHEXString: function() - { - if (!this.simple) - return this._toRGBAString(); - - var rgba = this.rgba; - var r = this._componentToHexValue(rgba[0]); - var g = this._componentToHexValue(rgba[1]); - var b = this._componentToHexValue(rgba[2]); - - if (r[0] === r[1] && g[0] === g[1] && b[0] === b[1]) - return "#" + r[0] + g[0] + b[0]; - else - return "#" + r + g + b; - }, - - _toHEXString: function() - { - if (!this.simple) - return this._toRGBAString(); - - var rgba = this.rgba; - var r = this._componentToHexValue(rgba[0]); - var g = this._componentToHexValue(rgba[1]); - var b = this._componentToHexValue(rgba[2]); - - return "#" + r + g + b; - }, - - _toRGBString: function() - { - if (!this.simple) - return this._toRGBAString(); - - var rgba = this.rgba; - return "rgb(" + [rgba[0], rgba[1], rgba[2]].join(", ") + ")"; - }, - - _toRGBAString: function() - { - return "rgba(" + this.rgba.join(", ") + ")"; - }, - - _toHSLString: function() - { - if (!this.simple) - return this._toHSLAString(); - - var hsla = this.hsla; - return "hsl(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%)"; - }, - - _toHSLAString: function() - { - var hsla = this.hsla; - return "hsla(" + hsla[0] + ", " + hsla[1] + "%, " + hsla[2] + "%, " + hsla[3] + ")"; - }, - - _canBeSerializedAsShortHEX: function() - { - var rgba = this.rgba; - - var r = this._componentToHexValue(rgba[0]); - if (r[0] !== r[1]) - return false; - - var g = this._componentToHexValue(rgba[1]); - if (g[0] !== g[1]) - return false; - - var b = this._componentToHexValue(rgba[2]); - if (b[0] !== b[1]) - return false; - - return true; - }, - - _componentToNumber: function(value) - { - return Number.constrain(value, 0, 255); - }, - - _componentToHexValue: function(value) - { - var hex = this._componentToNumber(value).toString(16); - if (hex.length === 1) - hex = "0" + hex; - return hex; - }, - - _rgbToHSL: function(rgb) - { - var r = this._componentToNumber(rgb[0]) / 255; - var g = this._componentToNumber(rgb[1]) / 255; - var b = this._componentToNumber(rgb[2]) / 255; - 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 = ((60 * (g - b) / diff) + 360) % 360; - else if (g === max) - var h = (60 * (b - r) / diff) + 120; - else - var h = (60 * (r - g) / diff) + 240; - - var l = 0.5 * add; - - if (l === 0) - var s = 0; - else if (l === 1) - var s = 1; - else if (l <= 0.5) - var s = diff / add; - else - var s = diff / (2 - add); - - h = Math.round(h); - s = Math.round(s * 100); - l = Math.round(l * 100); - - return [h, s, l]; - }, - - _hslToRGB: function(hsl) - { - var h = parseFloat(hsl[0]) / 360; - var s = parseFloat(hsl[1]) / 100; - var l = parseFloat(hsl[2]) / 100; - - h *= 6; - var sArray = [ - l += s *= l < .5 ? l : 1 - l, - l - h % 1 * s * 2, - l -= s *= 2, - l, - l + h % 1 * s, - l + s - ]; - return [ - Math.round(sArray[ ~~h % 6 ] * 255), - Math.round(sArray[ (h|16) % 6 ] * 255), - Math.round(sArray[ (h|8) % 6 ] * 255) - ]; - }, - - _rgbaToHSLA: function(rgba) - { - var hsl = this._rgbToHSL(rgba); - hsl.push(rgba[3]); - return hsl; - }, - - _hslaToRGBA: function(hsla) - { - var rgba = this._hslToRGB(hsla); - rgba.push(hsla[3]); - return rgba; - } -} - -WebInspector.Color.Nicknames = { - "aliceblue": [240, 248, 255], - "antiquewhite": [250, 235, 215], - "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, 164, 61], - "cyan": [0, 255, 255], - "darkblue": [0, 0, 139], - "darkcyan": [0, 139, 139], - "darkgoldenrod": [184, 134, 11], - "darkgray": [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], - "darkturquoise": [0, 206, 209], - "darkviolet": [148, 0, 211], - "deeppink": [255, 20, 147], - "deepskyblue": [0, 191, 255], - "dimgray": [105, 105, 105], - "dodgerblue": [30, 144, 255], - "firebrick": [178, 34, 34], - "floralwhite": [255, 250, 240], - "forestgreen": [34, 139, 34], - "gainsboro": [220, 220, 220], - "ghostwhite": [248, 248, 255], - "gold": [255, 215, 0], - "goldenrod": [218, 165, 32], - "gray": [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], - "lightgrey": [211, 211, 211], - "lightpink": [255, 182, 193], - "lightsalmon": [255, 160, 122], - "lightseagreen": [32, 178, 170], - "lightskyblue": [135, 206, 250], - "lightslategray": [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], - "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], - "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] -}; - -WebInspector.Color.rgb2hsv = function(r, g, b) -{ - r /= 255; - g /= 255; - b /= 255; - - var min = Math.min(Math.min(r, g), b); - var max = Math.max(Math.max(r, g), b); - var delta = max - min; - - var v = max; - var s, h; - - if (max === min) - h = 0; - else if (max === r) - h = (60 * ((g - b) / delta)) % 360; - else if (max === g) - h = 60 * ((b - r) / delta) + 120; - else if (max === b) - h = 60 * ((r - g) / delta) + 240; - - if (h < 0) - h += 360; - - // Saturation - if (max === 0) - s = 0; - else - s = 1 - (min/max); - - return [h, s, v]; -} - -WebInspector.Color.hsv2rgb = function(h, s, v) -{ - if (s === 0) - return [v, v, v]; - - h /= 60; - var i = Math.floor(h); - var data = [ - v * (1 - s), - v * (1 - s * (h - i)), - v * (1 - s * (1 - (h - i))) - ]; - var rgb; - - switch (i) { - case 0: - rgb = [v, data[2], data[0]]; - break; - case 1: - rgb = [data[1], v, data[0]]; - break; - case 2: - rgb = [data[0], v, data[2]]; - break; - case 3: - rgb = [data[0], data[1], v]; - break; - case 4: - rgb = [data[2], data[0], v]; - break; - default: - rgb = [v, data[0], data[1]]; - break; - } - - return rgb; -} |