@@ -12,6 +12,7 @@ namespace UnityEditor
12
12
internal class ColorPicker : EditorWindow
13
13
{
14
14
private const string k_HeightPrefKey = "CPickerHeight" ;
15
+ private const string k_ShowDefaultsPrefKey = "CPDefaultsShow" ;
15
16
private const string k_ShowPresetsPrefKey = "CPPresetsShow" ;
16
17
// HDR and LDR have different slider mode pref keys because they have different defaults for the sake of discoverability
17
18
private const string k_SliderModePrefKey = "CPSliderMode" ;
@@ -40,6 +41,8 @@ internal class ColorPicker : EditorWindow
40
41
Texture2D m_ColorBox ;
41
42
static int s_Slider2Dhash = "Slider2D" . GetHashCode ( ) ;
42
43
[ SerializeField ]
44
+ bool m_ShowDefaults = true ;
45
+ [ SerializeField ]
43
46
bool m_ShowPresets = true ;
44
47
45
48
[ SerializeField ]
@@ -482,6 +485,7 @@ static class Styles
482
485
public static readonly GUIContent exposureValue = EditorGUIUtility . TrTextContent ( "Intensity" , "Number of stops to over- or under-expose the color. The intensity calculates each time based on the predefined max color component of 191 (0.749) when Color Picker opens." ) ;
483
486
public static readonly GUIContent hexLabel = EditorGUIUtility . TrTextContent ( "Hexadecimal" ) ;
484
487
public static readonly GUIContent presetsToggle = EditorGUIUtility . TrTextContent ( "Swatches" ) ;
488
+ public static readonly GUIContent defaultsToggle = EditorGUIUtility . TrTextContent ( "Defaults" ) ;
485
489
486
490
public static readonly ScalableGUIContent originalColorSwatchFill =
487
491
new ScalableGUIContent ( string . Empty , "The original color. Click this swatch to reset the color picker to this value." , "ColorPicker-OriginalColor" ) ;
@@ -877,6 +881,218 @@ void DoExposureSwatches()
877
881
GUI . contentColor = contentColor ;
878
882
}
879
883
884
+ // used in TestColorPicker.OpeningColorPicker_InitialisesCorrectDefaultColors
885
+ internal static ( Color , string ) [ ] TESTdefaultColors => instance ? . m_DefaultColors ;
886
+ readonly ( Color , string ) [ ] m_DefaultColors = new ( Color , string ) [ ]
887
+ {
888
+ ( Color . red , nameof ( Color . red ) ) ,
889
+ ( Color . green , nameof ( Color . green ) ) ,
890
+ ( Color . blue , nameof ( Color . blue ) ) ,
891
+ ( Color . yellow , nameof ( Color . yellow ) ) ,
892
+ ( Color . cyan , nameof ( Color . cyan ) ) ,
893
+ ( Color . magenta , nameof ( Color . magenta ) ) ,
894
+ ( Color . gray1 , nameof ( Color . gray1 ) ) ,
895
+ ( Color . gray2 , nameof ( Color . gray2 ) ) ,
896
+ ( Color . gray3 , nameof ( Color . gray3 ) ) ,
897
+ ( Color . gray4 , nameof ( Color . gray4 ) ) ,
898
+ ( Color . gray5 , nameof ( Color . gray5 ) ) ,
899
+ ( Color . gray6 , nameof ( Color . gray6 ) ) ,
900
+ ( Color . gray7 , nameof ( Color . gray7 ) ) ,
901
+ ( Color . gray8 , nameof ( Color . gray8 ) ) ,
902
+ ( Color . gray9 , nameof ( Color . gray9 ) ) ,
903
+ ( Color . white , nameof ( Color . white ) ) ,
904
+ ( Color . whiteSmoke , nameof ( Color . whiteSmoke ) ) ,
905
+ ( Color . gainsboro , nameof ( Color . gainsboro ) ) ,
906
+ ( Color . lightGray , nameof ( Color . lightGray ) ) ,
907
+ ( Color . silver , nameof ( Color . silver ) ) ,
908
+ ( Color . darkGray , nameof ( Color . darkGray ) ) ,
909
+ ( Color . dimGray , nameof ( Color . dimGray ) ) ,
910
+ ( Color . black , nameof ( Color . black ) ) ,
911
+ ( Color . darkRed , nameof ( Color . darkRed ) ) ,
912
+ ( Color . brown , nameof ( Color . brown ) ) ,
913
+ ( Color . firebrick , nameof ( Color . firebrick ) ) ,
914
+ ( Color . crimson , nameof ( Color . crimson ) ) ,
915
+ ( Color . softRed , nameof ( Color . softRed ) ) ,
916
+ ( Color . indianRed , nameof ( Color . indianRed ) ) ,
917
+ ( Color . violetRed , nameof ( Color . violetRed ) ) ,
918
+ ( Color . mediumVioletRed , nameof ( Color . mediumVioletRed ) ) ,
919
+ ( Color . deepPink , nameof ( Color . deepPink ) ) ,
920
+ ( Color . hotPink , nameof ( Color . hotPink ) ) ,
921
+ ( Color . lightPink , nameof ( Color . lightPink ) ) ,
922
+ ( Color . pink , nameof ( Color . pink ) ) ,
923
+ ( Color . paleVioletRed , nameof ( Color . paleVioletRed ) ) ,
924
+ ( Color . maroon , nameof ( Color . maroon ) ) ,
925
+ ( Color . rosyBrown , nameof ( Color . rosyBrown ) ) ,
926
+ ( Color . lightCoral , nameof ( Color . lightCoral ) ) ,
927
+ ( Color . salmon , nameof ( Color . salmon ) ) ,
928
+ ( Color . tomato , nameof ( Color . tomato ) ) ,
929
+ ( Color . darkSalmon , nameof ( Color . darkSalmon ) ) ,
930
+ ( Color . coral , nameof ( Color . coral ) ) ,
931
+ ( Color . orangeRed , nameof ( Color . orangeRed ) ) ,
932
+ ( Color . lightSalmon , nameof ( Color . lightSalmon ) ) ,
933
+ ( Color . sienna , nameof ( Color . sienna ) ) ,
934
+ ( Color . saddleBrown , nameof ( Color . saddleBrown ) ) ,
935
+ ( Color . chocolate , nameof ( Color . chocolate ) ) ,
936
+ ( Color . sandyBrown , nameof ( Color . sandyBrown ) ) ,
937
+ ( Color . peru , nameof ( Color . peru ) ) ,
938
+ ( Color . darkOrange , nameof ( Color . darkOrange ) ) ,
939
+ ( Color . burlywood , nameof ( Color . burlywood ) ) ,
940
+ ( Color . tan , nameof ( Color . tan ) ) ,
941
+ ( Color . moccasin , nameof ( Color . moccasin ) ) ,
942
+ ( Color . peachPuff , nameof ( Color . peachPuff ) ) ,
943
+ ( Color . bisque , nameof ( Color . bisque ) ) ,
944
+ ( Color . navajoWhite , nameof ( Color . navajoWhite ) ) ,
945
+ ( Color . wheat , nameof ( Color . wheat ) ) ,
946
+ ( Color . orange , nameof ( Color . orange ) ) ,
947
+ ( Color . darkGoldenRod , nameof ( Color . darkGoldenRod ) ) ,
948
+ ( Color . goldenRod , nameof ( Color . goldenRod ) ) ,
949
+ ( Color . lightGoldenRod , nameof ( Color . lightGoldenRod ) ) ,
950
+ ( Color . gold , nameof ( Color . gold ) ) ,
951
+ ( Color . softYellow , nameof ( Color . softYellow ) ) ,
952
+ ( Color . lightGoldenRodYellow , nameof ( Color . lightGoldenRodYellow ) ) ,
953
+ ( Color . beige , nameof ( Color . beige ) ) ,
954
+ ( Color . lemonChiffon , nameof ( Color . lemonChiffon ) ) ,
955
+ ( Color . lightYellow , nameof ( Color . lightYellow ) ) ,
956
+ ( Color . yellowNice , nameof ( Color . yellowNice ) ) ,
957
+ ( Color . khaki , nameof ( Color . khaki ) ) ,
958
+ ( Color . paleGoldenRod , nameof ( Color . paleGoldenRod ) ) ,
959
+ ( Color . darkKhaki , nameof ( Color . darkKhaki ) ) ,
960
+ ( Color . olive , nameof ( Color . olive ) ) ,
961
+ ( Color . oliveDrab , nameof ( Color . oliveDrab ) ) ,
962
+ ( Color . yellowGreen , nameof ( Color . yellowGreen ) ) ,
963
+ ( Color . darkOliveGreen , nameof ( Color . darkOliveGreen ) ) ,
964
+ ( Color . softGreen , nameof ( Color . softGreen ) ) ,
965
+ ( Color . greenYellow , nameof ( Color . greenYellow ) ) ,
966
+ ( Color . chartreuse , nameof ( Color . chartreuse ) ) ,
967
+ ( Color . lawnGreen , nameof ( Color . lawnGreen ) ) ,
968
+ ( Color . darkGreen , nameof ( Color . darkGreen ) ) ,
969
+ ( Color . forestGreen , nameof ( Color . forestGreen ) ) ,
970
+ ( Color . limeGreen , nameof ( Color . limeGreen ) ) ,
971
+ ( Color . darkSeaGreen , nameof ( Color . darkSeaGreen ) ) ,
972
+ ( Color . lightGreen , nameof ( Color . lightGreen ) ) ,
973
+ ( Color . paleGreen , nameof ( Color . paleGreen ) ) ,
974
+ ( Color . seaGreen , nameof ( Color . seaGreen ) ) ,
975
+ ( Color . mediumSeaGreen , nameof ( Color . mediumSeaGreen ) ) ,
976
+ ( Color . springGreen , nameof ( Color . springGreen ) ) ,
977
+ ( Color . mediumSpringGreen , nameof ( Color . mediumSpringGreen ) ) ,
978
+ ( Color . aquamarine , nameof ( Color . aquamarine ) ) ,
979
+ ( Color . mediumAquamarine , nameof ( Color . mediumAquamarine ) ) ,
980
+ ( Color . turquoise , nameof ( Color . turquoise ) ) ,
981
+ ( Color . mediumTurquoise , nameof ( Color . mediumTurquoise ) ) ,
982
+ ( Color . lightSeaGreen , nameof ( Color . lightSeaGreen ) ) ,
983
+ ( Color . lightSlateGray , nameof ( Color . lightSlateGray ) ) ,
984
+ ( Color . slateGray , nameof ( Color . slateGray ) ) ,
985
+ ( Color . darkSlateGray , nameof ( Color . darkSlateGray ) ) ,
986
+ ( Color . teal , nameof ( Color . teal ) ) ,
987
+ ( Color . darkCyan , nameof ( Color . darkCyan ) ) ,
988
+ ( Color . lightCyan , nameof ( Color . lightCyan ) ) ,
989
+ ( Color . mintCream , nameof ( Color . mintCream ) ) ,
990
+ ( Color . honeydew , nameof ( Color . honeydew ) ) ,
991
+ ( Color . azure , nameof ( Color . azure ) ) ,
992
+ ( Color . paleTurquoise , nameof ( Color . paleTurquoise ) ) ,
993
+ ( Color . darkTurquoise , nameof ( Color . darkTurquoise ) ) ,
994
+ ( Color . cadetBlue , nameof ( Color . cadetBlue ) ) ,
995
+ ( Color . powderBlue , nameof ( Color . powderBlue ) ) ,
996
+ ( Color . softBlue , nameof ( Color . softBlue ) ) ,
997
+ ( Color . lightBlue , nameof ( Color . lightBlue ) ) ,
998
+ ( Color . deepSkyBlue , nameof ( Color . deepSkyBlue ) ) ,
999
+ ( Color . skyBlue , nameof ( Color . skyBlue ) ) ,
1000
+ ( Color . lightSkyBlue , nameof ( Color . lightSkyBlue ) ) ,
1001
+ ( Color . steelBlue , nameof ( Color . steelBlue ) ) ,
1002
+ ( Color . dodgerBlue , nameof ( Color . dodgerBlue ) ) ,
1003
+ ( Color . lightSteelBlue , nameof ( Color . lightSteelBlue ) ) ,
1004
+ ( Color . ghostWhite , nameof ( Color . ghostWhite ) ) ,
1005
+ ( Color . aliceBlue , nameof ( Color . aliceBlue ) ) ,
1006
+ ( Color . lavender , nameof ( Color . lavender ) ) ,
1007
+ ( Color . cornflowerBlue , nameof ( Color . cornflowerBlue ) ) ,
1008
+ ( Color . royalBlue , nameof ( Color . royalBlue ) ) ,
1009
+ ( Color . navyBlue , nameof ( Color . navyBlue ) ) ,
1010
+ ( Color . midnightBlue , nameof ( Color . midnightBlue ) ) ,
1011
+ ( Color . darkBlue , nameof ( Color . darkBlue ) ) ,
1012
+ ( Color . mediumBlue , nameof ( Color . mediumBlue ) ) ,
1013
+ ( Color . slateBlue , nameof ( Color . slateBlue ) ) ,
1014
+ ( Color . lightSlateBlue , nameof ( Color . lightSlateBlue ) ) ,
1015
+ ( Color . mediumSlateBlue , nameof ( Color . mediumSlateBlue ) ) ,
1016
+ ( Color . darkSlateBlue , nameof ( Color . darkSlateBlue ) ) ,
1017
+ ( Color . mediumPurple , nameof ( Color . mediumPurple ) ) ,
1018
+ ( Color . rebeccaPurple , nameof ( Color . rebeccaPurple ) ) ,
1019
+ ( Color . blueViolet , nameof ( Color . blueViolet ) ) ,
1020
+ ( Color . indigo , nameof ( Color . indigo ) ) ,
1021
+ ( Color . purple , nameof ( Color . purple ) ) ,
1022
+ ( Color . darkOrchid , nameof ( Color . darkOrchid ) ) ,
1023
+ ( Color . darkViolet , nameof ( Color . darkViolet ) ) ,
1024
+ ( Color . mediumOrchid , nameof ( Color . mediumOrchid ) ) ,
1025
+ ( Color . darkMagenta , nameof ( Color . darkMagenta ) ) ,
1026
+ ( Color . violet , nameof ( Color . violet ) ) ,
1027
+ ( Color . plum , nameof ( Color . plum ) ) ,
1028
+ ( Color . thistle , nameof ( Color . thistle ) ) ,
1029
+ ( Color . orchid , nameof ( Color . orchid ) ) ,
1030
+ ( Color . lavenderBlush , nameof ( Color . lavenderBlush ) ) ,
1031
+ ( Color . seashell , nameof ( Color . seashell ) ) ,
1032
+ ( Color . blanchedAlmond , nameof ( Color . blanchedAlmond ) ) ,
1033
+ ( Color . papayaWhip , nameof ( Color . papayaWhip ) ) ,
1034
+ ( Color . cornsilk , nameof ( Color . cornsilk ) ) ,
1035
+ ( Color . ivory , nameof ( Color . ivory ) ) ,
1036
+ ( Color . linen , nameof ( Color . linen ) ) ,
1037
+ ( Color . floralWhite , nameof ( Color . floralWhite ) ) ,
1038
+ ( Color . antiqueWhite , nameof ( Color . antiqueWhite ) ) ,
1039
+ ( Color . oldLace , nameof ( Color . oldLace ) ) ,
1040
+ ( Color . mistyRose , nameof ( Color . mistyRose ) ) ,
1041
+ ( Color . snow , nameof ( Color . snow ) ) ,
1042
+ } ;
1043
+
1044
+ Texture2D m_SwatchTex ;
1045
+ void DoDefaultsGUI ( )
1046
+ {
1047
+ if ( m_SwatchTex == null ) m_SwatchTex = ColorPresetLibrary . CreateColorSwatchWithBorder ( 14 , 14 , false ) ;
1048
+
1049
+ m_ShowDefaults = EditorGUILayout . Foldout ( m_ShowDefaults , Styles . defaultsToggle , true ) ;
1050
+
1051
+ if ( m_ShowDefaults )
1052
+ {
1053
+ using ( new EditorGUILayout . VerticalScope ( ) )
1054
+ {
1055
+ EditorGUILayout . BeginHorizontal ( ) ;
1056
+ for ( int i = 0 ; i < m_DefaultColors . Length ; ++ i )
1057
+ {
1058
+ var ( color , name ) = m_DefaultColors [ i ] ;
1059
+ if ( i != 0 && i % 15 == 0 )
1060
+ {
1061
+ GUILayout . FlexibleSpace ( ) ;
1062
+ EditorGUILayout . EndHorizontal ( ) ;
1063
+ EditorGUILayout . BeginHorizontal ( ) ;
1064
+ }
1065
+
1066
+ using ( new GUI . ColorScope ( color ) )
1067
+ {
1068
+ string tooltip ;
1069
+ if ( m_SliderMode == SliderMode . HSV )
1070
+ {
1071
+ Color . RGBToHSV ( color , out var h , out var s , out var v ) ;
1072
+ tooltip = $ "{ name } HSVA({ Mathf . RoundToInt ( h * 360 ) } , { Mathf . RoundToInt ( s * 100 ) } , { Mathf . RoundToInt ( v * 100 ) } , { Mathf . RoundToInt ( color . a * 100 ) } )";
1073
+ }
1074
+ else if ( m_SliderMode == SliderMode . RGB )
1075
+ {
1076
+ tooltip = $ "{ name } { ( Color32 ) color } "; ;
1077
+ }
1078
+ else
1079
+ tooltip = $ "{ name } { color } ";
1080
+
1081
+ var clicked = GUILayout . Button (
1082
+ new GUIContent ( m_SwatchTex , tooltip ) ,
1083
+ GUIStyle . none ,
1084
+ new GUILayoutOption ( GUILayoutOption . Type . fixedWidth , 14f ) ) ;
1085
+
1086
+ if ( clicked )
1087
+ SetColor ( color ) ;
1088
+ }
1089
+ }
1090
+ GUILayout . FlexibleSpace ( ) ;
1091
+ EditorGUILayout . EndHorizontal ( ) ;
1092
+ }
1093
+ }
1094
+ }
1095
+
880
1096
void DoPresetsGUI ( )
881
1097
{
882
1098
var foldoutRect = GUILayoutUtility . GetRect ( Styles . presetsToggle , EditorStyles . foldout ) ;
@@ -953,6 +1169,8 @@ void OnGUI()
953
1169
GUILayout . Space ( Styles . extraVerticalSpacing ) ;
954
1170
}
955
1171
1172
+ DoDefaultsGUI ( ) ;
1173
+
956
1174
DoPresetsGUI ( ) ;
957
1175
958
1176
// Call last to ensure we only use the copy paste events if no
@@ -1177,11 +1395,13 @@ void OnEnable()
1177
1395
1178
1396
m_SliderMode = ( SliderMode ) EditorPrefs . GetInt ( k_SliderModePrefKey , ( int ) SliderMode . RGB ) ;
1179
1397
m_ShowPresets = EditorPrefs . GetInt ( k_ShowPresetsPrefKey , 1 ) != 0 ;
1398
+ m_ShowDefaults = EditorPrefs . GetInt ( k_ShowDefaultsPrefKey , 1 ) != 0 ;
1180
1399
}
1181
1400
1182
1401
void OnDisable ( )
1183
1402
{
1184
1403
EditorPrefs . SetInt ( m_HDR ? k_SliderModeHDRPrefKey : k_SliderModePrefKey , ( int ) m_SliderMode ) ;
1404
+ EditorPrefs . SetInt ( k_ShowDefaultsPrefKey , m_ShowDefaults ? 1 : 0 ) ;
1185
1405
EditorPrefs . SetInt ( k_ShowPresetsPrefKey , m_ShowPresets ? 1 : 0 ) ;
1186
1406
EditorPrefs . SetInt ( k_HeightPrefKey , ( int ) position . height ) ;
1187
1407
}
@@ -1208,6 +1428,8 @@ public void OnDestroy()
1208
1428
DestroyImmediate ( m_ValTexture ) ;
1209
1429
if ( m_AlphaTexture )
1210
1430
DestroyImmediate ( m_AlphaTexture ) ;
1431
+ if ( m_SwatchTex )
1432
+ DestroyImmediate ( m_SwatchTex ) ;
1211
1433
s_Instance = null ;
1212
1434
1213
1435
if ( m_ColorLibraryEditorState != null )
0 commit comments