OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2011 Brian Grinstead All rights reserved. | 2 * Copyright (C) 2011 Brian Grinstead All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
234 * @param {boolean} animate | 234 * @param {boolean} animate |
235 * @param {!Event=} event | 235 * @param {!Event=} event |
236 */ | 236 */ |
237 _showPalette: function(palette, animate, event) | 237 _showPalette: function(palette, animate, event) |
238 { | 238 { |
239 this._paletteContainer.removeChildren(); | 239 this._paletteContainer.removeChildren(); |
240 for (var i = 0; i < palette.colors.length; i++) { | 240 for (var i = 0; i < palette.colors.length; i++) { |
241 var animationDelay = animate ? i * 100 / palette.colors.length : 0; | 241 var animationDelay = animate ? i * 100 / palette.colors.length : 0; |
242 var colorElement = this._createPaletteColor(palette.colors[i], anima tionDelay); | 242 var colorElement = this._createPaletteColor(palette.colors[i], anima tionDelay); |
243 colorElement.addEventListener("click", this._paletteColorSelected.bi nd(this, palette.colors[i])); | 243 colorElement.addEventListener("click", this._paletteColorSelected.bi nd(this, palette.colors[i])); |
244 colorElement.addEventListener("mouseover", this._liveApplyStart.bind (this, palette.colors[i])); | |
245 colorElement.addEventListener("mouseout", this._liveApplyEnd.bind(th is)); | |
246 if (palette.mutable) | 244 if (palette.mutable) |
247 colorElement.addEventListener("contextmenu", this._showPaletteCo lorContextMenu.bind(this, i)); | 245 colorElement.addEventListener("contextmenu", this._showPaletteCo lorContextMenu.bind(this, i)); |
248 this._paletteContainer.appendChild(colorElement); | 246 this._paletteContainer.appendChild(colorElement); |
249 } | 247 } |
250 | 248 |
251 var numItems = palette.colors.length; | 249 var numItems = palette.colors.length; |
252 if (palette.mutable) | 250 if (palette.mutable) |
253 numItems++; | 251 numItems++; |
254 var rowsNeeded = Math.max(1, Math.ceil(numItems / 8)); | 252 var rowsNeeded = Math.max(1, Math.ceil(numItems / 8)); |
255 for (var i = 0; palette.mutable && i < rowsNeeded * 8 - numItems; i++) | 253 for (var i = 0; palette.mutable && i < rowsNeeded * 8 - numItems; i++) |
256 this._paletteContainer.createChild("div", "spectrum-palette-color em pty-color"); | 254 this._paletteContainer.createChild("div", "spectrum-palette-color em pty-color"); |
257 if (palette.mutable) | 255 if (palette.mutable) |
258 this._paletteContainer.appendChild(this._addColorToolbar.element); | 256 this._paletteContainer.appendChild(this._addColorToolbar.element); |
259 | 257 |
260 this._togglePalettePanel(false); | 258 this._togglePalettePanel(false); |
261 var paletteColorHeight = 12; | 259 var paletteColorHeight = 12; |
262 var paletteMargin = 12; | 260 var paletteMargin = 12; |
263 this.element.style.height = (this._paletteContainer.offsetTop + paletteM argin + (paletteColorHeight + paletteMargin) * rowsNeeded) + "px"; | 261 this.element.style.height = (this._paletteContainer.offsetTop + paletteM argin + (paletteColorHeight + paletteMargin) * rowsNeeded) + "px"; |
264 this.dispatchEventToListeners(WebInspector.Spectrum.Events.SizeChanged); | 262 this.dispatchEventToListeners(WebInspector.Spectrum.Events.SizeChanged); |
265 }, | 263 }, |
266 | 264 |
267 /** | 265 /** |
268 * @param {string} colorText | |
269 */ | |
270 _liveApplyStart: function(colorText) | |
271 { | |
272 this._underlyingHSV = this._hsv; | |
273 this._underlyingFormat = this._colorFormat; | |
274 this._underlyingColorString = this._colorString; | |
275 var color = WebInspector.Color.parse(colorText); | |
276 if (!color) | |
277 return; | |
278 this._innerSetColor(color.hsva(), colorText, color.format(), WebInspecto r.Spectrum._ChangeSource.Other); | |
279 }, | |
280 | |
281 _liveApplyEnd: function() | |
282 { | |
283 if (!this._underlyingHSV) | |
284 return; | |
285 this._innerSetColor(this._underlyingHSV, this._underlyingColorString, th is._underlyingFormat, WebInspector.Spectrum._ChangeSource.Other); | |
286 delete this._underlyingHSV; | |
287 delete this._underlyingFormat; | |
288 delete this._underlyingColorString; | |
289 }, | |
290 | |
291 /** | |
292 * @param {!WebInspector.Spectrum.Palette} generatedPalette | 266 * @param {!WebInspector.Spectrum.Palette} generatedPalette |
293 */ | 267 */ |
294 _generatedPaletteLoaded: function(generatedPalette) | 268 _generatedPaletteLoaded: function(generatedPalette) |
295 { | 269 { |
296 if (generatedPalette.colors.length) | 270 if (generatedPalette.colors.length) |
297 this._palettes.set(generatedPalette.title, generatedPalette); | 271 this._palettes.set(generatedPalette.title, generatedPalette); |
298 this._palettes.set(WebInspector.Spectrum.MaterialPalette.title, WebInspe ctor.Spectrum.MaterialPalette); | 272 this._palettes.set(WebInspector.Spectrum.MaterialPalette.title, WebInspe ctor.Spectrum.MaterialPalette); |
299 /** @type {!WebInspector.Spectrum.Palette} */ | 273 /** @type {!WebInspector.Spectrum.Palette} */ |
300 var defaultCustomPalette = { title: "Custom", colors: [], mutable: true }; | 274 var defaultCustomPalette = { title: "Custom", colors: [], mutable: true }; |
301 this._customPaletteSetting = WebInspector.settings.createSetting("custom ColorPalette", defaultCustomPalette); | 275 this._customPaletteSetting = WebInspector.settings.createSetting("custom ColorPalette", defaultCustomPalette); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
336 }, | 310 }, |
337 | 311 |
338 /** | 312 /** |
339 * @param {string} colorText | 313 * @param {string} colorText |
340 */ | 314 */ |
341 _paletteColorSelected: function(colorText) | 315 _paletteColorSelected: function(colorText) |
342 { | 316 { |
343 var color = WebInspector.Color.parse(colorText); | 317 var color = WebInspector.Color.parse(colorText); |
344 if (!color) | 318 if (!color) |
345 return; | 319 return; |
346 this._innerSetColor(color.hsva(), colorText, color.format(), WebInspecto r.Spectrum._ChangeSource.Other); | 320 this._innerSetColor(color.hsva(), colorText, undefined, WebInspector.Spe ctrum._ChangeSource.Other); |
347 delete this._underlyingHSV; | |
348 }, | 321 }, |
349 | 322 |
350 _addColorToCustomPalette: function() | 323 _addColorToCustomPalette: function() |
351 { | 324 { |
352 var palette = this._customPaletteSetting.get(); | 325 var palette = this._customPaletteSetting.get(); |
353 palette.colors.push(this.colorString()); | 326 palette.colors.push(this.colorString()); |
354 this._customPaletteSetting.set(palette); | 327 this._customPaletteSetting.set(palette); |
355 this._showPalette(this._customPaletteSetting.get(), false); | 328 this._showPalette(this._customPaletteSetting.get(), false); |
356 }, | 329 }, |
357 | 330 |
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
754 | 727 |
755 _finish: function() | 728 _finish: function() |
756 { | 729 { |
757 /** | 730 /** |
758 * @param {string} a | 731 * @param {string} a |
759 * @param {string} b | 732 * @param {string} b |
760 * @return {number} | 733 * @return {number} |
761 */ | 734 */ |
762 function hueComparator(a, b) | 735 function hueComparator(a, b) |
763 { | 736 { |
764 return paletteColors.get(b).hsva()[0] - paletteColors.get(a).hsva()[ 0]; | 737 var hsva = paletteColors.get(a).hsva(); |
738 var hsvb = paletteColors.get(b).hsva(); | |
739 | |
740 // First trim the shades of gray | |
741 if (hsvb[1] < 0.12 && hsva[1] < 0.12) | |
742 return hsvb[2]*hsvb[3] - hsva[2]*hsva[3]; | |
743 if (hsvb[1] < 0.12) | |
744 return -1; | |
745 if (hsva[1] < 0.12) | |
746 return 1; | |
747 | |
748 // Equal hue -> sort by sat | |
749 if (hsvb[0] === hsva[0]) | |
750 return hsvb[1]*hsvb[3] - hsva[1]*hsva[3]; | |
dgozman
2015/08/19 20:27:44
nit: spaces around *
| |
751 | |
752 return (hsvb[0] + 0.94) % 1 - (hsva[0] + 0.94) % 1; | |
765 } | 753 } |
766 | 754 |
767 var colors = this._frequencyMap.keysArray(); | 755 var colors = this._frequencyMap.keysArray(); |
768 colors = colors.sort(this._frequencyComparator.bind(this)); | 756 colors = colors.sort(this._frequencyComparator.bind(this)); |
769 /** @type {!Map.<string, !WebInspector.Color>} */ | 757 /** @type {!Map.<string, !WebInspector.Color>} */ |
770 var paletteColors = new Map(); | 758 var paletteColors = new Map(); |
771 var colorsPerRow = 24; | 759 var colorsPerRow = 24; |
772 while (paletteColors.size < colorsPerRow && colors.length) { | 760 while (paletteColors.size < colorsPerRow && colors.length) { |
773 var colorText = colors.shift(); | 761 var colorText = colors.shift(); |
774 var color = WebInspector.Color.parse(colorText); | 762 var color = WebInspector.Color.parse(colorText); |
(...skipping 11 matching lines...) Expand all Loading... | |
786 * @this {WebInspector.Spectrum.PaletteGenerator} | 774 * @this {WebInspector.Spectrum.PaletteGenerator} |
787 */ | 775 */ |
788 _processStylesheet: function(stylesheet, resolve) | 776 _processStylesheet: function(stylesheet, resolve) |
789 { | 777 { |
790 /** | 778 /** |
791 * @param {?string} text | 779 * @param {?string} text |
792 * @this {WebInspector.Spectrum.PaletteGenerator} | 780 * @this {WebInspector.Spectrum.PaletteGenerator} |
793 */ | 781 */ |
794 function parseContent(text) | 782 function parseContent(text) |
795 { | 783 { |
796 var regexResult = text.match(/((?:rgb|hsl)a?\([^)]+\)|#[0-9a-fA-F]{6 }|#[0-9a-fA-F]{3})/g) || []; | 784 text = text.toLowerCase(); |
785 var regexResult = text.match(/((?:rgb|hsl)a?\([^)]+\)|#[0-9a-f]{6}|# [0-9a-f]{3})/g) || []; | |
797 for (var c of regexResult) { | 786 for (var c of regexResult) { |
798 var frequency = this._frequencyMap.get(c) || 0; | 787 var frequency = this._frequencyMap.get(c) || 0; |
799 this._frequencyMap.set(c, ++frequency); | 788 this._frequencyMap.set(c, ++frequency); |
800 } | 789 } |
801 resolve(null); | 790 resolve(null); |
802 } | 791 } |
803 | 792 |
804 stylesheet.requestContent(parseContent.bind(this)); | 793 stylesheet.requestContent(parseContent.bind(this)); |
805 } | 794 } |
806 } | 795 } |
(...skipping 12 matching lines...) Expand all Loading... | |
819 "#8BC34A", | 808 "#8BC34A", |
820 "#CDDC39", | 809 "#CDDC39", |
821 "#FFEB3B", | 810 "#FFEB3B", |
822 "#FFC107", | 811 "#FFC107", |
823 "#FF9800", | 812 "#FF9800", |
824 "#FF5722", | 813 "#FF5722", |
825 "#795548", | 814 "#795548", |
826 "#9E9E9E", | 815 "#9E9E9E", |
827 "#607D8B" | 816 "#607D8B" |
828 ]}; | 817 ]}; |
OLD | NEW |