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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/elements/Spectrum.js

Issue 1986053004: Devtools Color: Basic support for #RRGGBBAA and #RGBA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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) 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 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
83 inputValue.addEventListener("keydown", this._inputChanged.bind(this), fa lse); 83 inputValue.addEventListener("keydown", this._inputChanged.bind(this), fa lse);
84 inputValue.addEventListener("input", this._inputChanged.bind(this), fals e); 84 inputValue.addEventListener("input", this._inputChanged.bind(this), fals e);
85 inputValue.addEventListener("mousewheel", this._inputChanged.bind(this), false); 85 inputValue.addEventListener("mousewheel", this._inputChanged.bind(this), false);
86 } 86 }
87 87
88 this._textLabels = this._displayContainer.createChild("div", "spectrum-text- label"); 88 this._textLabels = this._displayContainer.createChild("div", "spectrum-text- label");
89 89
90 // HEX display. 90 // HEX display.
91 this._hexContainer = this.contentElement.createChild("div", "spectrum-text s pectrum-text-hex source-code"); 91 this._hexContainer = this.contentElement.createChild("div", "spectrum-text s pectrum-text-hex source-code");
92 this._hexValue = this._hexContainer.createChild("input", "spectrum-text-valu e"); 92 this._hexValue = this._hexContainer.createChild("input", "spectrum-text-valu e");
93 this._hexValue.maxLength = 7; 93 this._hexValue.maxLength = 9;
94 this._hexValue.addEventListener("keydown", this._inputChanged.bind(this), fa lse); 94 this._hexValue.addEventListener("keydown", this._inputChanged.bind(this), fa lse);
95 this._hexValue.addEventListener("input", this._inputChanged.bind(this), fals e); 95 this._hexValue.addEventListener("input", this._inputChanged.bind(this), fals e);
96 this._hexValue.addEventListener("mousewheel", this._inputChanged.bind(this), false); 96 this._hexValue.addEventListener("mousewheel", this._inputChanged.bind(this), false);
97 97
98 var label = this._hexContainer.createChild("div", "spectrum-text-label"); 98 var label = this._hexContainer.createChild("div", "spectrum-text-label");
99 label.textContent = "HEX"; 99 label.textContent = "HEX";
100 100
101 WebInspector.installDragHandle(this._hueElement, dragStart.bind(this, positi onHue.bind(this)), positionHue.bind(this), null, "default"); 101 WebInspector.installDragHandle(this._hueElement, dragStart.bind(this, positi onHue.bind(this)), positionHue.bind(this), null, "default");
102 WebInspector.installDragHandle(this._alphaElement, dragStart.bind(this, posi tionAlpha.bind(this)), positionAlpha.bind(this), null, "default"); 102 WebInspector.installDragHandle(this._alphaElement, dragStart.bind(this, posi tionAlpha.bind(this)), positionAlpha.bind(this), null, "default");
103 WebInspector.installDragHandle(this._colorElement, dragStart.bind(this, posi tionColor.bind(this)), positionColor.bind(this), null, "default"); 103 WebInspector.installDragHandle(this._colorElement, dragStart.bind(this, posi tionColor.bind(this)), positionColor.bind(this), null, "default");
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 /** 158 /**
159 * @param {!Event} event 159 * @param {!Event} event
160 * @this {WebInspector.Spectrum} 160 * @this {WebInspector.Spectrum}
161 */ 161 */
162 function positionAlpha(event) 162 function positionAlpha(event)
163 { 163 {
164 var newAlpha = Math.round((event.x - this._hueAlphaLeft) / this._hueAlph aWidth * 100) / 100; 164 var newAlpha = Math.round((event.x - this._hueAlphaLeft) / this._hueAlph aWidth * 100) / 100;
165 var hsva = this._hsv.slice(); 165 var hsva = this._hsv.slice();
166 hsva[3] = Number.constrain(newAlpha, 0, 1); 166 hsva[3] = Number.constrain(newAlpha, 0, 1);
167 var colorFormat = undefined; 167 var colorFormat = undefined;
168 if (hsva[3] !== 1 && (this._colorFormat === WebInspector.Color.Format.Sh ortHEX || this._colorFormat === WebInspector.Color.Format.HEX || this._colorForm at === WebInspector.Color.Format.Nickname)) 168 if (hsva[3] !== 1 && this._colorFormat === WebInspector.Color.Format.Nic kname)
169 colorFormat = WebInspector.Color.Format.RGB; 169 colorFormat = WebInspector.Color.Format.HEX;
170 this._innerSetColor(hsva, "", colorFormat, WebInspector.Spectrum._Change Source.Other); 170 this._innerSetColor(hsva, "", colorFormat, WebInspector.Spectrum._Change Source.Other);
171 } 171 }
172 172
173 /** 173 /**
174 * @param {!Event} event 174 * @param {!Event} event
175 * @this {WebInspector.Spectrum} 175 * @this {WebInspector.Spectrum}
176 */ 176 */
177 function positionColor(event) 177 function positionColor(event)
178 { 178 {
179 var hsva = this._hsv.slice(); 179 var hsva = this._hsv.slice();
(...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after
577 * @param {string|undefined} colorFormat 577 * @param {string|undefined} colorFormat
578 * @param {string} changeSource 578 * @param {string} changeSource
579 */ 579 */
580 _innerSetColor: function(hsva, colorString, colorFormat, changeSource) 580 _innerSetColor: function(hsva, colorString, colorFormat, changeSource)
581 { 581 {
582 if (hsva !== undefined) 582 if (hsva !== undefined)
583 this._hsv = hsva; 583 this._hsv = hsva;
584 if (colorString !== undefined) 584 if (colorString !== undefined)
585 this._colorString = colorString; 585 this._colorString = colorString;
586 if (colorFormat !== undefined) { 586 if (colorFormat !== undefined) {
587 console.assert(colorFormat !== WebInspector.Color.Format.Original, " Spectrum's color format cannot be Original"); 587 var cf = WebInspector.Color.Format;
588 if (colorFormat === WebInspector.Color.Format.RGBA) 588 console.assert(colorFormat !== cf.Original, "Spectrum's color format cannot be Original");
589 colorFormat = WebInspector.Color.Format.RGB; 589 if (colorFormat === cf.RGBA)
590 else if (colorFormat === WebInspector.Color.Format.HSLA) 590 colorFormat = cf.RGB;
591 colorFormat = WebInspector.Color.Format.HSL; 591 else if (colorFormat === cf.HSLA)
592 colorFormat = cf.HSL;
593 else if (colorFormat === cf.HEXA)
594 colorFormat = cf.HEX;
595 else if (colorFormat === cf.ShortHEXA)
596 colorFormat = cf.ShortHEX;
592 this._colorFormat = colorFormat; 597 this._colorFormat = colorFormat;
593 } 598 }
594 599
595 this._updateHelperLocations(); 600 this._updateHelperLocations();
596 this._updateUI(); 601 this._updateUI();
597 602
598 if (changeSource !== WebInspector.Spectrum._ChangeSource.Input) 603 if (changeSource !== WebInspector.Spectrum._ChangeSource.Input)
599 this._updateInput(); 604 this._updateInput();
600 if (changeSource !== WebInspector.Spectrum._ChangeSource.Model) 605 if (changeSource !== WebInspector.Spectrum._ChangeSource.Model)
601 this.dispatchEventToListeners(WebInspector.Spectrum.Events.ColorChan ged, this.colorString()); 606 this.dispatchEventToListeners(WebInspector.Spectrum.Events.ColorChan ged, this.colorString());
(...skipping 22 matching lines...) Expand all
624 colorString: function() 629 colorString: function()
625 { 630 {
626 if (this._colorString) 631 if (this._colorString)
627 return this._colorString; 632 return this._colorString;
628 var cf = WebInspector.Color.Format; 633 var cf = WebInspector.Color.Format;
629 var color = this._color(); 634 var color = this._color();
630 var colorString = color.asString(this._colorFormat); 635 var colorString = color.asString(this._colorFormat);
631 if (colorString) 636 if (colorString)
632 return colorString; 637 return colorString;
633 638
634 if (this._colorFormat === cf.Nickname || this._colorFormat === cf.ShortH EX) { 639 if (this._colorFormat === cf.Nickname) {
635 colorString = color.asString(cf.HEX); 640 colorString = color.asString(cf.HEX);
636 if (colorString) 641 if (colorString)
637 return colorString; 642 return colorString;
638 } 643 }
639 644
640 console.assert(color.hasAlpha()); 645 if (this._colorFormat === cf.ShortHEX)
641 return this._colorFormat === cf.HSL ? /** @type {string} */(color.asStri ng(cf.HSLA)) : /** @type {string} */(color.asString(cf.RGBA)); 646 return /** @type {string} */(color.asString(color.detectHEXFormat()) );
647 if (this._colorFormat === cf.HEX)
648 return /** @type {string} */(color.asString(color.hasAlpha() ? cf.HE XA : cf.HEX));
dgozman 2016/05/20 00:55:15 If I'm not missing something, this could return nu
samli 2016/05/20 01:58:02 Done.
649 else if (this._colorFormat === cf.HSL)
650 return /** @type {string} */(color.asString(cf.HSLA));
651 else
652 return /** @type {string} */(color.asString(cf.RGBA));
642 }, 653 },
643 654
644 _updateHelperLocations: function() 655 _updateHelperLocations: function()
645 { 656 {
646 var h = this._hsv[0]; 657 var h = this._hsv[0];
647 var s = this._hsv[1]; 658 var s = this._hsv[1];
648 var v = this._hsv[2]; 659 var v = this._hsv[2];
649 var alpha = this._hsv[3]; 660 var alpha = this._hsv[3];
650 661
651 // Where to show the little circle that displays your current selected c olor. 662 // Where to show the little circle that displays your current selected c olor.
(...skipping 13 matching lines...) Expand all
665 var alphaSlideX = alpha * this._hueAlphaWidth - this.slideHelperWidth; 676 var alphaSlideX = alpha * this._hueAlphaWidth - this.slideHelperWidth;
666 this._alphaSlider.style.left = alphaSlideX + "px"; 677 this._alphaSlider.style.left = alphaSlideX + "px";
667 }, 678 },
668 679
669 _updateInput: function() 680 _updateInput: function()
670 { 681 {
671 var cf = WebInspector.Color.Format; 682 var cf = WebInspector.Color.Format;
672 if (this._colorFormat === cf.HEX || this._colorFormat === cf.ShortHEX || this._colorFormat === cf.Nickname) { 683 if (this._colorFormat === cf.HEX || this._colorFormat === cf.ShortHEX || this._colorFormat === cf.Nickname) {
673 this._hexContainer.hidden = false; 684 this._hexContainer.hidden = false;
674 this._displayContainer.hidden = true; 685 this._displayContainer.hidden = true;
675 if (this._colorFormat === cf.ShortHEX && this._color().canBeShortHex ()) 686 if (this._colorFormat === cf.ShortHEX)
676 this._hexValue.value = this._color().asString(cf.ShortHEX); 687 this._hexValue.value = this._color().asString(this._color().dete ctHEXFormat());
677 else 688 else
678 this._hexValue.value = this._color().asString(cf.HEX); 689 // Don't use short HEX if original was not in that format.
690 this._hexValue.value = this._color().asString(this._color().hasA lpha() ? cf.HEXA : cf.HEX);
679 } else { 691 } else {
680 // RGBA, HSLA display. 692 // RGBA, HSLA display.
681 this._hexContainer.hidden = true; 693 this._hexContainer.hidden = true;
682 this._displayContainer.hidden = false; 694 this._displayContainer.hidden = false;
683 var isRgb = this._colorFormat === cf.RGB; 695 var isRgb = this._colorFormat === cf.RGB;
684 this._textLabels.textContent = isRgb ? "RGBA" : "HSLA"; 696 this._textLabels.textContent = isRgb ? "RGBA" : "HSLA";
685 var colorValues = isRgb ? this._color().canonicalRGBA() : this._colo r().canonicalHSLA(); 697 var colorValues = isRgb ? this._color().canonicalRGBA() : this._colo r().canonicalHSLA();
686 for (var i = 0; i < 3; ++i) { 698 for (var i = 0; i < 3; ++i) {
687 this._textValues[i].value = colorValues[i]; 699 this._textValues[i].value = colorValues[i];
688 if (!isRgb && (i === 1 || i === 2)) 700 if (!isRgb && (i === 1 || i === 2))
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 var noAlpha = WebInspector.Color.fromHSVA(this._hsv.slice(0,3).concat(1) ); 807 var noAlpha = WebInspector.Color.fromHSVA(this._hsv.slice(0,3).concat(1) );
796 this._alphaElementBackground.style.backgroundImage = String.sprintf("lin ear-gradient(to right, rgba(0,0,0,0), %s)", noAlpha.asString(WebInspector.Color. Format.RGB)); 808 this._alphaElementBackground.style.backgroundImage = String.sprintf("lin ear-gradient(to right, rgba(0,0,0,0), %s)", noAlpha.asString(WebInspector.Color. Format.RGB));
797 }, 809 },
798 810
799 _formatViewSwitch: function() 811 _formatViewSwitch: function()
800 { 812 {
801 var cf = WebInspector.Color.Format; 813 var cf = WebInspector.Color.Format;
802 var format = cf.RGB; 814 var format = cf.RGB;
803 if (this._colorFormat === cf.RGB) 815 if (this._colorFormat === cf.RGB)
804 format = cf.HSL; 816 format = cf.HSL;
805 else if (this._colorFormat === cf.HSL && !this._color().hasAlpha()) 817 else if (this._colorFormat === cf.HSL)
806 format = this._originalFormat === cf.ShortHEX ? cf.ShortHEX : cf.HEX ; 818 format = this._originalFormat === cf.ShortHEX ? cf.ShortHEX : cf.HEX ;
807 this._innerSetColor(undefined, "", format, WebInspector.Spectrum._Change Source.Other); 819 this._innerSetColor(undefined, "", format, WebInspector.Spectrum._Change Source.Other);
808 }, 820 },
809 821
810 /** 822 /**
811 * @param {!Event} event 823 * @param {!Event} event
812 */ 824 */
813 _inputChanged: function(event) 825 _inputChanged: function(event)
814 { 826 {
815 /** 827 /**
(...skipping 26 matching lines...) Expand all
842 var format = this._colorFormat === cf.RGB ? "rgba" : "hsla"; 854 var format = this._colorFormat === cf.RGB ? "rgba" : "hsla";
843 var values = this._textValues.map(elementValue).join(","); 855 var values = this._textValues.map(elementValue).join(",");
844 colorString = String.sprintf("%s(%s)", format, values); 856 colorString = String.sprintf("%s(%s)", format, values);
845 } 857 }
846 858
847 var color = WebInspector.Color.parse(colorString); 859 var color = WebInspector.Color.parse(colorString);
848 if (!color) 860 if (!color)
849 return; 861 return;
850 var hsv = color.hsva(); 862 var hsv = color.hsva();
851 if (this._colorFormat === cf.HEX || this._colorFormat === cf.ShortHEX) 863 if (this._colorFormat === cf.HEX || this._colorFormat === cf.ShortHEX)
852 this._colorFormat = color.canBeShortHex() ? cf.ShortHEX : cf.HEX; 864 this._colorFormat = color.detectHEXFormat();
853 this._innerSetColor(hsv, colorString, undefined, WebInspector.Spectrum._ ChangeSource.Input); 865 this._innerSetColor(hsv, colorString, undefined, WebInspector.Spectrum._ ChangeSource.Input);
854 }, 866 },
855 867
856 wasShown: function() 868 wasShown: function()
857 { 869 {
858 this._hueAlphaWidth = this._hueElement.offsetWidth; 870 this._hueAlphaWidth = this._hueElement.offsetWidth;
859 this.slideHelperWidth = this._hueSlider.offsetWidth / 2; 871 this.slideHelperWidth = this._hueSlider.offsetWidth / 2;
860 this.dragWidth = this._colorElement.offsetWidth; 872 this.dragWidth = this._colorElement.offsetWidth;
861 this.dragHeight = this._colorElement.offsetHeight; 873 this.dragHeight = this._colorElement.offsetHeight;
862 this._colorDragElementHeight = this._colorDragElement.offsetHeight / 2; 874 this._colorDragElementHeight = this._colorDragElement.offsetHeight / 2;
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
1020 "#FFEB3B": ["#FFFDE7", "#FFF9C4", "#FFF59D", "#FFF176", "#FFEE58", "#FFEB3B" , "#FDD835", "#FBC02D", "#F9A825", "#F57F17"], 1032 "#FFEB3B": ["#FFFDE7", "#FFF9C4", "#FFF59D", "#FFF176", "#FFEE58", "#FFEB3B" , "#FDD835", "#FBC02D", "#F9A825", "#F57F17"],
1021 "#FFC107": ["#FFF8E1", "#FFECB3", "#FFE082", "#FFD54F", "#FFCA28", "#FFC107" , "#FFB300", "#FFA000", "#FF8F00", "#FF6F00"], 1033 "#FFC107": ["#FFF8E1", "#FFECB3", "#FFE082", "#FFD54F", "#FFCA28", "#FFC107" , "#FFB300", "#FFA000", "#FF8F00", "#FF6F00"],
1022 "#FF9800": ["#FFF3E0", "#FFE0B2", "#FFCC80", "#FFB74D", "#FFA726", "#FF9800" , "#FB8C00", "#F57C00", "#EF6C00", "#E65100"], 1034 "#FF9800": ["#FFF3E0", "#FFE0B2", "#FFCC80", "#FFB74D", "#FFA726", "#FF9800" , "#FB8C00", "#F57C00", "#EF6C00", "#E65100"],
1023 "#FF5722": ["#FBE9E7", "#FFCCBC", "#FFAB91", "#FF8A65", "#FF7043", "#FF5722" , "#F4511E", "#E64A19", "#D84315", "#BF360C"], 1035 "#FF5722": ["#FBE9E7", "#FFCCBC", "#FFAB91", "#FF8A65", "#FF7043", "#FF5722" , "#F4511E", "#E64A19", "#D84315", "#BF360C"],
1024 "#795548": ["#EFEBE9", "#D7CCC8", "#BCAAA4", "#A1887F", "#8D6E63", "#795548" , "#6D4C41", "#5D4037", "#4E342E", "#3E2723"], 1036 "#795548": ["#EFEBE9", "#D7CCC8", "#BCAAA4", "#A1887F", "#8D6E63", "#795548" , "#6D4C41", "#5D4037", "#4E342E", "#3E2723"],
1025 "#9E9E9E": ["#FAFAFA", "#F5F5F5", "#EEEEEE", "#E0E0E0", "#BDBDBD", "#9E9E9E" , "#757575", "#616161", "#424242", "#212121"], 1037 "#9E9E9E": ["#FAFAFA", "#F5F5F5", "#EEEEEE", "#E0E0E0", "#BDBDBD", "#9E9E9E" , "#757575", "#616161", "#424242", "#212121"],
1026 "#607D8B": ["#ECEFF1", "#CFD8DC", "#B0BEC5", "#90A4AE", "#78909C", "#607D8B" , "#546E7A", "#455A64", "#37474F", "#263238"] 1038 "#607D8B": ["#ECEFF1", "#CFD8DC", "#B0BEC5", "#90A4AE", "#78909C", "#607D8B" , "#546E7A", "#455A64", "#37474F", "#263238"]
1027 }; 1039 };
1028 1040
1029 WebInspector.Spectrum.MaterialPalette = { title: "Material", mutable: false, mat chUserFormat: true, colors: Object.keys(WebInspector.Spectrum.MaterialPaletteSha des) }; 1041 WebInspector.Spectrum.MaterialPalette = { title: "Material", mutable: false, mat chUserFormat: true, colors: Object.keys(WebInspector.Spectrum.MaterialPaletteSha des) };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698