Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(679)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/common/Color.js

Issue 2186773002: Revert of Devtools Color: Basic support for #RRGGBBAA and #RGBA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Manual revert Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Apple Inc. All rights reserved. 2 * Copyright (C) 2009 Apple Inc. All rights reserved.
3 * Copyright (C) 2009 Joseph Pecoraro 3 * Copyright (C) 2009 Joseph Pecoraro
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 } 55 }
56 56
57 /** 57 /**
58 * @enum {string} 58 * @enum {string}
59 */ 59 */
60 WebInspector.Color.Format = { 60 WebInspector.Color.Format = {
61 Original: "original", 61 Original: "original",
62 Nickname: "nickname", 62 Nickname: "nickname",
63 HEX: "hex", 63 HEX: "hex",
64 ShortHEX: "shorthex", 64 ShortHEX: "shorthex",
65 HEXA: "hexa",
66 ShortHEXA: "shorthexa",
67 RGB: "rgb", 65 RGB: "rgb",
68 RGBA: "rgba", 66 RGBA: "rgba",
69 HSL: "hsl", 67 HSL: "hsl",
70 HSLA: "hsla" 68 HSLA: "hsla"
71 } 69 }
72 70
73 /** 71 /**
74 * @param {string} text 72 * @param {string} text
75 * @return {?WebInspector.Color} 73 * @return {?WebInspector.Color}
76 */ 74 */
77 WebInspector.Color.parse = function(text) 75 WebInspector.Color.parse = function(text)
78 { 76 {
79 // Simple - #hex, rgb(), nickname, hsl() 77 // Simple - #hex, rgb(), nickname, hsl()
80 var value = text.toLowerCase().replace(/\s+/g, ""); 78 var value = text.toLowerCase().replace(/\s+/g, "");
81 var simple = /^(?:#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|rgb\(((?:-?\d+%?, ){2}-?\d+%?)\)|(\w+)|hsl\((-?\d+\.?\d*(?:,-?\d+\.?\d*%){2})\))$/i; 79 var simple = /^(?:#([0-9a-f]{3}|[0-9a-f]{6})|rgb\(((?:-?\d+%?,){2}-?\d+%?)\) |(\w+)|hsl\((-?\d+\.?\d*(?:,-?\d+\.?\d*%){2})\))$/i;
82 var match = value.match(simple); 80 var match = value.match(simple);
83 if (match) { 81 if (match) {
84 if (match[1]) { // hex 82 if (match[1]) { // hex
85 var hex = match[1].toLowerCase(); 83 var hex = match[1].toLowerCase();
86 var format; 84 var format;
87 if (hex.length === 3) { 85 if (hex.length === 3) {
88 format = WebInspector.Color.Format.ShortHEX; 86 format = WebInspector.Color.Format.ShortHEX;
89 hex = hex.charAt(0) + hex.charAt(0) + hex.charAt(1) + hex.charAt (1) + hex.charAt(2) + hex.charAt(2); 87 hex = hex.charAt(0) + hex.charAt(0) + hex.charAt(1) + hex.charAt (1) + hex.charAt(2) + hex.charAt(2);
90 } else if (hex.length === 4) { 88 } else
91 format = WebInspector.Color.Format.ShortHEXA;
92 hex = hex.charAt(0) + hex.charAt(0) + hex.charAt(1) + hex.charAt (1) + hex.charAt(2) + hex.charAt(2) + hex.charAt(3) + hex.charAt(3);
93 } else if (hex.length === 6) {
94 format = WebInspector.Color.Format.HEX; 89 format = WebInspector.Color.Format.HEX;
95 } else {
96 format = WebInspector.Color.Format.HEXA;
97 }
98 var r = parseInt(hex.substring(0,2), 16); 90 var r = parseInt(hex.substring(0,2), 16);
99 var g = parseInt(hex.substring(2,4), 16); 91 var g = parseInt(hex.substring(2,4), 16);
100 var b = parseInt(hex.substring(4,6), 16); 92 var b = parseInt(hex.substring(4,6), 16);
101 var a = hex.length === 8 ? parseInt(hex.substring(6, 8), 16) / 255 : 1; 93 return new WebInspector.Color([r / 255, g / 255, b / 255, 1], format , text);
102 return new WebInspector.Color([r / 255, g / 255, b / 255, a], format , text);
103 } 94 }
104 95
105 if (match[2]) { // rgb 96 if (match[2]) { // rgb
106 var rgbString = match[2].split(/\s*,\s*/); 97 var rgbString = match[2].split(/\s*,\s*/);
107 var rgba = [ WebInspector.Color._parseRgbNumeric(rgbString[0]), 98 var rgba = [ WebInspector.Color._parseRgbNumeric(rgbString[0]),
108 WebInspector.Color._parseRgbNumeric(rgbString[1]), 99 WebInspector.Color._parseRgbNumeric(rgbString[1]),
109 WebInspector.Color._parseRgbNumeric(rgbString[2]), 1 ]; 100 WebInspector.Color._parseRgbNumeric(rgbString[2]), 1 ];
110 return new WebInspector.Color(rgba, WebInspector.Color.Format.RGB, t ext); 101 return new WebInspector.Color(rgba, WebInspector.Color.Format.RGB, t ext);
111 } 102 }
112 103
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 247
257 /** 248 /**
258 * @return {boolean} 249 * @return {boolean}
259 */ 250 */
260 hasAlpha: function() 251 hasAlpha: function()
261 { 252 {
262 return this._rgba[3] !== 1; 253 return this._rgba[3] !== 1;
263 }, 254 },
264 255
265 /** 256 /**
266 * @return {!WebInspector.Color.Format} 257 * @return {boolean}
267 */ 258 */
268 detectHEXFormat: function() 259 canBeShortHex: function()
269 { 260 {
270 var canBeShort = true; 261 if (this.hasAlpha())
271 for (var i = 0; i < 4; ++i) { 262 return false;
263 for (var i = 0; i < 3; ++i) {
272 var c = Math.round(this._rgba[i] * 255); 264 var c = Math.round(this._rgba[i] * 255);
273 if (c % 17) 265 if (c % 17)
274 canBeShort = false; 266 return false;
275 } 267 }
276 var hasAlpha = this.hasAlpha(); 268 return true;
277 var cf = WebInspector.Color.Format;
278 if (canBeShort)
279 return hasAlpha ? cf.ShortHEXA : cf.ShortHEX;
280 return hasAlpha ? cf.HEXA : cf.HEX;
281 }, 269 },
282 270
283 /** 271 /**
284 * @return {?string} 272 * @return {?string}
285 */ 273 */
286 asString: function(format) 274 asString: function(format)
287 { 275 {
288 if (format === this._format && this._originalTextIsValid) 276 if (format === this._format && this._originalTextIsValid)
289 return this._originalText; 277 return this._originalText;
290 278
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 case WebInspector.Color.Format.RGBA: 317 case WebInspector.Color.Format.RGBA:
330 return String.sprintf("rgba(%d, %d, %d, %f)", toRgbValue(this._rgba[ 0]), toRgbValue(this._rgba[1]), toRgbValue(this._rgba[2]), this._rgba[3]); 318 return String.sprintf("rgba(%d, %d, %d, %f)", toRgbValue(this._rgba[ 0]), toRgbValue(this._rgba[1]), toRgbValue(this._rgba[2]), this._rgba[3]);
331 case WebInspector.Color.Format.HSL: 319 case WebInspector.Color.Format.HSL:
332 if (this.hasAlpha()) 320 if (this.hasAlpha())
333 return null; 321 return null;
334 var hsl = this.hsla(); 322 var hsl = this.hsla();
335 return String.sprintf("hsl(%d, %d%, %d%)", Math.round(hsl[0] * 360), Math.round(hsl[1] * 100), Math.round(hsl[2] * 100)); 323 return String.sprintf("hsl(%d, %d%, %d%)", Math.round(hsl[0] * 360), Math.round(hsl[1] * 100), Math.round(hsl[2] * 100));
336 case WebInspector.Color.Format.HSLA: 324 case WebInspector.Color.Format.HSLA:
337 var hsla = this.hsla(); 325 var hsla = this.hsla();
338 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]); 326 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]);
339 case WebInspector.Color.Format.HEXA:
340 return String.sprintf("#%s%s%s%s", toHexValue(this._rgba[0]), toHexV alue(this._rgba[1]), toHexValue(this._rgba[2]), toHexValue(this._rgba[3])).toLow erCase();
341 case WebInspector.Color.Format.HEX: 327 case WebInspector.Color.Format.HEX:
342 if (this.hasAlpha()) 328 if (this.hasAlpha())
343 return null; 329 return null;
344 return String.sprintf("#%s%s%s", toHexValue(this._rgba[0]), toHexVal ue(this._rgba[1]), toHexValue(this._rgba[2])).toLowerCase(); 330 return String.sprintf("#%s%s%s", toHexValue(this._rgba[0]), toHexVal ue(this._rgba[1]), toHexValue(this._rgba[2])).toLowerCase();
345 case WebInspector.Color.Format.ShortHEXA:
346 var hexFormat = this.detectHEXFormat();
347 if (hexFormat !== WebInspector.Color.Format.ShortHEXA && hexFormat ! == WebInspector.Color.Format.ShortHEX)
348 return null;
349 return String.sprintf("#%s%s%s%s", toShortHexValue(this._rgba[0]), t oShortHexValue(this._rgba[1]), toShortHexValue(this._rgba[2]), toShortHexValue(t his._rgba[3])).toLowerCase();
350 case WebInspector.Color.Format.ShortHEX: 331 case WebInspector.Color.Format.ShortHEX:
351 if (this.detectHEXFormat() !== WebInspector.Color.Format.ShortHEX) 332 if (!this.canBeShortHex())
352 return null; 333 return null;
353 return String.sprintf("#%s%s%s", toShortHexValue(this._rgba[0]), toS hortHexValue(this._rgba[1]), toShortHexValue(this._rgba[2])).toLowerCase(); 334 return String.sprintf("#%s%s%s", toShortHexValue(this._rgba[0]), toS hortHexValue(this._rgba[1]), toShortHexValue(this._rgba[2])).toLowerCase();
354 case WebInspector.Color.Format.Nickname: 335 case WebInspector.Color.Format.Nickname:
355 return this.nickname(); 336 return this.nickname();
356 } 337 }
357 338
358 return this._originalText; 339 return this._originalText;
359 }, 340 },
360 341
361 342
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
825 { 806 {
826 const cf = WebInspector.Color.Format; 807 const cf = WebInspector.Color.Format;
827 var format; 808 var format;
828 var formatSetting = WebInspector.moduleSetting("colorFormat").get(); 809 var formatSetting = WebInspector.moduleSetting("colorFormat").get();
829 if (formatSetting === cf.Original) 810 if (formatSetting === cf.Original)
830 format = cf.Original; 811 format = cf.Original;
831 else if (formatSetting === cf.RGB) 812 else if (formatSetting === cf.RGB)
832 format = (color.hasAlpha() ? cf.RGBA : cf.RGB); 813 format = (color.hasAlpha() ? cf.RGBA : cf.RGB);
833 else if (formatSetting === cf.HSL) 814 else if (formatSetting === cf.HSL)
834 format = (color.hasAlpha() ? cf.HSLA : cf.HSL); 815 format = (color.hasAlpha() ? cf.HSLA : cf.HSL);
835 else if (formatSetting === cf.HEX) 816 else if (!color.hasAlpha())
836 format = color.detectHEXFormat(); 817 format = (color.canBeShortHex() ? cf.ShortHEX : cf.HEX);
837 else 818 else
838 format = cf.RGBA; 819 format = cf.RGBA;
839 820
840 return format; 821 return format;
841 } 822 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698