-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMasterColorPicker_desktop.html
2152 lines (2019 loc) · 144 KB
/
MasterColorPicker_desktop.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta name='author' content='Joe Golembieski, SoftMoon-WebWare'>
<meta name='copyright' content='Copyright © 2013,2014,2015,2019,2020,2021,2022,2023,2024 Joe Golembieski, SoftMoon-WebWare'>
<title>MasterColorPicker desktop from SoftMoon WebWare</title>
<link rel="icon" type="image/x-icon" href="images/SoftMoonWebWare.gif">
<link rel='stylesheet' id='MasterColorPicker_stylesheet' type='text/css' media="screen, projection" href='color-pickers/SoftMoon-WebWare/MasterColorPicker2.css'>
<style type='text/css' id='MasterColorPicker_desktop_stylesheet'>
body, section, div {
margin: 0;
padding: 0; }
body {
color: white;
background: #808080;
position: absolute; /* This keeps the very small body sized to the full window. We need this for the panel-drag 'mouseover' which is on the body. */
width: 100%;
height: 100%; }
/* this overrides the default action of popping up and down as the input gains/looses focus */
#MasterColorPicker .pickerPanel,
#MasterColorPicker .selectedPicker {
display: block; }
body > input {
display: block;
width: 24em;
font-size: 1.618em;
color: black;
background-color: white; }
p img {
display: block; }
/******* These are a duplicate of rules found in the linked stylesheet *******/
/* The thumb’s color of the Hue range is controlled with JavaScript.
* Since its color can not be directly scripted through the DOM, this stylesheet must be dynamically altered.
* Therefore, if you change the following CSS-descriptors, you must accordingly change the MasterColorPicker.js file.
* Also, the MasterColorPicker-desktop version (called with the file:// protocol in the URL)
* must have a duplicate of these rules that need to be directly included in the HTML-head itself,
* since JavaScript is not allowed to read any locally linked (including CSS) files
* that the end-user does not hand-select.
* For the above reason, this <style> tag MUST have the proper ID so MasterColorPicker can find it.
/*******/
#MasterColorPicker_Lab tr.hue input[type="range"]::-webkit-slider-thumb {
background-color: white; }
#MasterColorPicker_Lab tr.hue input[type="range"]::-ms-thumb {
background-color: white; }
#MasterColorPicker_Lab tr.hue input[type="range"]::-moz-range-thumb {
background-color: white; }
#MasterColorPicker_Lab fieldset input[type="range"]::-moz-range-thumb {
background-color: var(--back-text); }
#MasterColorPicker_Lab fieldset input[type="range"]::-ms-thumb {
background-color: var(--back-text); }
#MasterColorPicker_Lab fieldset input[type="range"]::-webkit-slider-thumb {
background-color: var(--back-text); }
/*******/
</style>
<script>
const SoftMoon=Object.defineProperties({}, {
WebWare: {value: {}, enumerable: true},
loaded_palettes: {value: [], enumeralble: true}});
</script>
<script type='text/javascript' src='JS_toolbucket/+++JS/+++.js' defer></script><!-- !! ESSENTIAL !! -->
<script type='text/javascript' src='JS_toolbucket/+++JS/+++Math.js' defer></script><!-- !! ESSENTIAL !! -->
<script type='text/javascript' src='JS_toolbucket/SoftMoon-WebWare/+++input_type.js' defer></script><!-- supports RainbowMaestro & ColorSpaceLab -->
<script type='text/javascript' src='JS_toolbucket/SoftMoon-WebWare/UniDOM-2022.js' defer></script><!-- !! ESSENTIAL !! -->
<!-- script type='text/javascript' src='JS_toolbucket/SoftMoon-WebWare/HTTP.js' defer></script><!-- ESSENTIAL for server version to auto-load/save palette files; NOT for file:// use -->
<script type='text/javascript' src='JS_toolbucket/Björn_Ottosson.OK_color_space_models.js' defer></script><!-- !! ESSENTIAL !! -->
<script type='text/javascript' src='JS_toolbucket/Alexei_Boronine.HSLᵤᵥ_color_space_model.js' defer></script><!-- !! ESSENTIAL !! -->
<script type='text/javascript' src='JS_toolbucket/SoftMoon-WebWare/RGB_Calc.js' defer></script><!-- !! ESSENTIAL !! -->
<script type="text/javascript" src="JS_toolbucket/SoftMoon-WebWare/Rigden-colorblind_websafe-table_interpolator.js" defer></script><!-- supports RainbowMaestro & MyPalette & Color-Space Lab -->
<script type="text/javascript" src="JS_toolbucket/skratchdot.Wickline-colorblind_converter.js" defer></script><!-- supports RainbowMaestro & MyPalette & Color-Space Lab -->
<script type='text/javascript' src='JS_toolbucket/SoftMoon-WebWare/Picker.js' defer></script><!-- !! ESSENTIAL !! -->
<script type='text/javascript' src='JS_toolbucket/SoftMoon-WebWare/FormFieldGenie.js' defer></script><!-- supports MyPalette & Color-Mixers & Gradientor -->
<script type="text/javascript" src="color-pickers/SoftMoon-WebWare/MasterColorPicker2.js" defer></script>
<!-- These load the palette files for a file:// based usage
You can use them (or a similar file of your own palette colors) for http:// based usage also.
But it is recommended that they then be converted to .json format
( see the file: color_palettes/converting_palette_formats.odt )
and autoloaded directly by MasterColorPicker at startup;
then these script tags should be removed
-->
<script type="text/javascript" src="color_palettes/desktop_palettes/CSS4.palette.js" defer></script>
<script type="text/javascript" src="color_palettes/desktop_palettes/Pantonic.palette.js" defer></script>
<script type="text/javascript" src="color_palettes/desktop_palettes/ANSI.palette.js" defer></script>
<script type="text/javascript" src="color_palettes/desktop_palettes/OpenOffice.palette.js" defer></script>
<script type="text/javascript" src="color_palettes/desktop_palettes/MaterialDesign2014.palette.js" defer></script>
<script type="text/javascript" src="color_palettes/desktop_palettes/CorelD2005.palette.js" defer></script>
<script type="text/javascript" src="color_palettes/desktop_palettes/X11.palette.js" defer></script>
<script type="text/javascript" src="color_palettes/desktop_palettes/Crayola.palette.js" defer></script>
<script type="text/javascript" src="color_palettes/desktop_palettes/Brewer.palette.js" defer></script>
<script type="text/javascript" src="color_palettes/desktop_palettes/universal.palette.js" defer></script>
<script type="text/javascript">
window.addEventListener('mastercolorpicker_ready', function() {
//options below may be changed to your preference. See the end of the MasterColorPicker2.js file for more…
MasterColorPicker.showColorAs='background';
MasterColorPicker.enablePanelDrag=true;
MasterColorPicker.enableStickyPanels=false;
MasterColorPicker.masterTarget=MasterColorPicker.registeredTargets[0];
MasterColorPicker.registeredTargets[0].focus();
} );
</script>
</head>
<body>
<input type='MasterColorPicker' id='color-picker_input'>
<p>created by:
<img src='images/SoftMoonWebWare.gif' alt='SoftMoon WebWare'>
</p>
<!-- ------------ cut here to use the MasterColorPicker HTML (below) in your own page -------------- -->
<script>
window.addEventListener('mastercolorpicker_database_ready', function() {
SoftMoon.WebWare.initPaletteTables(/* path, whenLoaded, whenDone */); //see files: MasterColorPicker2.js → RGB_Calc.js
} );
</script>
<section id='MasterColorPicker' charset='UTF-8' role='dialog' aria-labeledby='MasterColorPicker_header'>
<meta charset='UTF-8'><!-- ¡ the ENTIRE PAGE must be encoded in UTF-8 ! This will have NO EFFECT; it is a reminder. -->
<!-- MasterColorPicker 2 Copyright © 2012, 2013, 2018, 2019, 2020, 2021, 2022, 2023, 2024 Joe Golembieski, SoftMoon-WebWare
release 2.6.11 November 18, 2024
Note that these color charts and palettes will work without an enclosing <form>,
but to retain the settings this file may be included inside an existing web <form></form>
-->
<div id='MasterColorPicker_options' class='pickerPanel' role='tabpanel'>
<header><h1 id='MasterColorPicker_header'>MasterColorPicker™</h1> by <address>SoftMoon-WebWare</address></header>
<label for='MasterColorPicker_palette_select'>palette:
<select id='MasterColorPicker_palette_select' name='MasterColorPicker_palette_select' backtabToTarget='true'>
<option selected>RainbowMaestro</option>
<option>Spectral</option>
<option>BeezEye</option>
<option>Simple²</option>
<option>YinYang NíHóng</option>
<option value='MasterColorPicker_EyeDropper'>EyeDropper</option>
</select></label>
<div><h3>Options▼</h3>
<div>
<fieldset disabled lock-disabled-state style='display:none;' id='Color_Picker_options' class='pickerOptions'><legend>RainbowMaestro mode:</legend>
<p class='underConstruction'><span>Under Construction:</span> no functionality</p>
<fieldset id='MasterColorPicker_showLocator'>
<label>¿<input type='checkbox' name='MasterColorPicker_showLocator' value='true' checked>show locator?</label>
<fieldset id='MasterColorPicker_locatorStyle'>
<label><input type='radio' name='MasterColorPicker_locatorStyle' value='X'><strong>×</strong> marks the spot</label>
<label><input type='radio' name='MasterColorPicker_locatorStyle' value='O'><strong><big>○</big></strong> marks the spot</label>
<label><input type='radio' name='MasterColorPicker_locatorStyle' value='o' checked><strong>○</strong> marks the spot</label>
</fieldset>
<fieldset id='MasterColorPicker_locatorColor'>
<label><input type='radio' name='MasterColorPicker_locatorColor' value='b/w'>black/white</label>
<label><input type='radio' name='MasterColorPicker_locatorColor' value='spinning'>spinning rainbow</label>
<label><input type='radio' name='MasterColorPicker_locatorColor' value='transforming' checked>transforming rainbow</label>
</fieldset>
</fieldset>
<label id='MasterColorPicker_interlink'>¿<input
type='checkbox' name='MasterColorPicker_doInterlink' value='true'>interlink?
<p>Choosing a color points to the same color in all interlinked palettes.</p></label>
<label id='MasterColorPicker_applyToAll'>¿<input type='checkbox' name='MasterColorPicker_applyToAll' value='true' checked>apply to all?</label>
</fieldset>
<fieldset class='pickerOptions'>
<label>output: <select id='MasterColorPicker_outputMode' name='MasterColorPicker_outputMode'>
<option title='hexadecimal Red, Green, Blue' selected>hex</option>
<option title='Red, Green, Blue'>RGB</option>
<option title='the color-picker’s native format'>native</option>
<option title='Hue, Saturation, Lightness'>HSL</option>
<option title='Hue, Saturation, Brightness; (a.k.a. HSV)'>HSB</option>
<option title='Hue, Saturation, Value; (a.k.a. HSB)'>HSV</option>
<option title='Hue, White, Black'>HWB</option>
<option title='Hue, Chroma∝, Gray'>HCG</option>
<option title='Cyan, Magenta, Yellow, Black'>CMYK</option>
<option title='Lightness, a-axis, b-axis'>Lab</option>
<option title='Lightness, Chroma, Hue'>LCh</option>
<option title='Lightness, u-axis, v-axis'>Luv</option>
<option title='Lightness, Chromaᵤᵥ, Hueᵤᵥ'>LChᵤᵥ</option>
<option title='Hueᵤᵥ, Saturation, Lightness'>HSLᵤᵥ</option>
<option title='OK: Lightness, a-axis, b-axis'>OKLab</option>
<option title='OK: Lightness, Chroma, Hue'>OKLCh</option>
<option title='OK: Hue, Saturation, Lightness'>OKHSL</option>
<option title='OK: Hue, Saturation, Value'>OKHSV</option>
<option title='OK: Hue, White, Black'>OKHWB</option>
<option title='OK: Hue, Chroma∝, Gray'>OKHCG</option>
<option title='Lightness-Jz, az-axis, bz-axis'>Jᶻaᶻbᶻ</option>
<option title='Lightness-Jz, Chroma-z, hue-z'>JᶻCᶻhᶻ</option>
<option title='Intensity, Tritanopia-axis, Protanopia-axis'>ICᵀCᴾ</option>
<option title='Intensity, Chroma-tp, hue-tp'>IChᵀᴾ</option>
<option title='X, Y, Z'>XYZ</option>
</select></label>
<label>¿<input type='checkbox' id='MasterColorPicker_useHexSymbol' name='MasterColorPicker_useHexSymbol' value='true' checked
onchange='MasterColorPicker.useHexSymbol=this.checked;'>use # Hex symbol?</label>
<button type='button' name='MasterColorPicker_outputFormatter_open' keep-focus='no'
role='combobox' aria-haspopup='dialog' aria-controls='MasterColorPicker_output_formatter' aria-expanded='false'
aria-labeledby='MasterColorPicker_output_formatter_header'>open the Output Formatter</button>
<popbox class='disabled' id='MasterColorPicker_output_formatter'>
<h4>Choose the color-<abbr title='specification'>spec</abbr> output format:</h4>
<button type='button' name='MasterColorPicker_outputFormatter_close'>☒</button>
<p>To control the text-output format of the color specification,
use the properly selected keywords from the tables shown below.
Type these keywords into the “format” input-box;
the contents of this “format” input-box is not strict and may contain anything.
The keywords are recognized in order from start to end (left→right);
keywords closer to the beginning override keywords closer to the end.
Different color-space models may react in different ways to these keywords,
depending on the historical “age” of the model as supported by <abbr>CSS</abbr>.
MasterColorPicker (and hence the software it supports) may not recognize all these output formats;
or worse, may interpret non-<abbr>RGB</abbr> color-space model values as <abbr>RGB</abbr> values
if you use <code>commas</code>, <code>cvs</code>, <code>plain</code>, or <code>tabbed</code>
as the output format (not the sub-format);
but maybe you are filling in a table full of data, etc.,
and you just want <abbr title='specifications'>specs</abbr> copied to the clipboard.</p>
<label>format: <input type='text' size='28' name='MasterColorPicker_outputFormat' value="wrapped" disabled></label>
<table><caption>output formatting style:</caption>
<tbody>
<tr><th>keyword</th><th>examples</th></tr>
<tr><td class='clickable'>color<footmark>♣</footmark></td> <th scope='row'>color(<var>sRGB</var> <var>r</var> <var>g</var> <var>b</var> <var>α</var>)</th></tr>
<tr><td class='clickable'><abbr>css</abbr><footmark>◊</footmark></td> <th rowspan='5' scope='row'>RGBA(<var>r</var>, <var>g</var>, <var>b</var>, <var>α</var>)<footmark>☼</footmark></th></tr>
<tr><td class='clickable'><abbr>css5</abbr><footmark>◊</footmark></td></tr>
<tr><td class='clickable'><abbr>html</abbr><footmark>◊</footmark></td></tr>
<tr><td class='clickable'>wrap</td></tr>
<tr><td class='clickable'>function</td></tr>
<tr><td class='clickable'>prefix</td> <th scope='row'>RGBA: <var>r</var>, <var>g</var>, <var>b</var>, <var>α</var><footmark>☼</footmark></th></tr>
<tr><td class='clickable'>commas<footmark>❇</footmark></td> <th rowspan='2' scope='row'><var>r</var>, <var>g</var>, <var>b</var>, <var>α</var></th></tr>
<tr><td class='clickable'><abbr title='comma-separated values'>csv</abbr><footmark>❇</footmark></td></tr>
<tr><td class='clickable'>plain<footmark>❇</footmark></td> <th scope='row'><var>r</var> <var>g</var> <var>b</var> <var>α</var></th></tr>
<tr><td class='clickable'>tabbed</td> <th scope='row'><var>r</var><kbd><span>Tab</span></kbd><var>g</var><kbd><span>Tab</span></kbd><var>b</var><kbd><span>Tab</span></kbd><var>α</var></th></tr>
</tbody>
<tfoot>
<tr><td colspan='2'>All formats may not include the alpha value if it is undefined.</td></tr>
<tr><td colspan='2'>♣ The <abbr>CSS</abbr> “color” function format only works for color-models that <abbr>CSS</abbr> supports.</td></tr>
<tr><td colspan='2'>◊ <abbr>css</abbr> & <abbr>html</abbr> formatting styles
prevent (most of) the numeric output format from being a factor (see the next table),
and prevent hue-angle units from being “symbols”
— they convert to the “textual” equivalent
except for <code>%</code> which is not a true <abbr>CSS</abbr> unit for hue-angles,
but word on the street is that all browsers support it.
Also, for the “newer” color models by default, and when using <abbr>CSS5</abbr>,
the output is de-standardized to suit the weird non-standard spec format,
and commas <code>,</code> are removed, and the alpha separator <code>/</code> is used,
and…(read on)…</td></tr>
<tr><td colspan='2'>☼ The “A” in “<abbr>RGBA</abbr>” and other “old-school” color-models
will not be included if the alpha value is undefined.
Also for some “newer” color-models, the “A” will always be dropped when the output style is
<abbr>css</abbr> ‖ <abbr>html</abbr>; the other “newer” color-models always drop their “A”.
When the output style is <abbr>css5</abbr>, the “A” will always be dropped for all color-models.</td></tr>
<tr><td colspan='2'>❇ Besides being an output format in-and-of themselves,
these specifiers control whether commas are used or not at all, regardless of the overall format.
Many newer color space model formats do not use commas at all (by <abbr>CSS</abbr> standards),
whereas older color models do.
Note <abbr>CSS5</abbr> standards do not require any commas,
and by specifying <abbr>CSS5</abbr> as the output format, no commas will be used.</td></tr>
</tfoot>
</table>
<table><caption>Numeric values output format:</caption>
<tr><td class='clickable'>byte</td>
<th scope='row'>For the <abbr>sRGB</abbr> color-space only, values are shown as integer-bytes (0–255).</th></tr>
<tr><td class='clickable'>percent</td>
<th scope='row'>Values are shown as percents (0%–100%)</th></tr>
<tr><td class='clickable'>factor</td>
<th scope='row'>Values are shown as factors (0.0–1.0)
(not for <abbr>css</abbr> ‖ <abbr>html</abbr> formatting styles, except for hue & alpha values)</th></tr>
<tr><td class='clickable'>numeric</td>
<th scope='row'>For <code>-axis</code> and <code>Chroma</code> (<strong>¡not</strong> <code>Chroma∝</code><strong>!</strong>) values,
this overrides “percent” & “factor” if they are found later in the formatting string.</th></tr>
<tr><td class='clickable'>alpha</td>
<th scope='row'>Always show an alpha value; <code>100%</code> if not specifically defined.</th></tr>
<tr><td class='clickable'>precision:</td>
<th scope='row'>For some color-space models,
you may define the number of significant digits that are shown
for some of the models’ values.
(Note that precision below the default will result in some colors not converting back properly.)
JavaScript™ limits the maximum precision internally.
For example:<br><code>precision: 10</code></th></tr>
</table>
</popbox>
<label id='MasterColorPicker_keepPrecision'>¿<input type='checkbox' name='MasterColorPicker_keepPrecision' value='true' checked
onchange='MasterColorPicker.keepPrecision=this.checked;'>keep precision?
<p>Hex/RGB values are calculated from the native format, and others are calculated from the RGB values.
RGB values may be rounded off to integers in the process yielding differences that are especially noticeable in Hue values.
(More minor round off errors will always be possible due to floating-point mathematics used by computers.)
Note RGB values will always be shown as integers, and are always used internally by the computer’s hardware
as integers, so by <strong>not</strong> keeping precision, resulting conversions from the RGB values reflect
the “actual RGB values used” by the computer to display the color selected.</p></label>
<!-- label>¿<input type='checkbox' name='MasterColorPicker_selectInputboxText' value='true'>select choice in inputboxes?</label -->
<label>¿<input type='checkbox' name='MasterColorPicker_copyColorToClipboard' value='true'
onchange='MasterColorPicker.copyToClipboard=this.checked;'>copy selected color to system clipboard?</label>
</fieldset>
<fieldset class='pickerOptions' role='tablist' aria-multiselectable="true" aria-orientation="vertical">
<label>¿<input type='checkbox' name='MasterColorPicker_showHelp' id='MasterColorPicker_showHelp'
role='tab' aria-controls='MasterColorPicker_Help' aria-labeledby='MasterColorPicker_Help_header'
onchange='UniDOM.toggleTab(this, this.checked);'
checked>show ☺ Help ☺? <kbd><span>F1</span></kbd></label>
<label>¿<input type='checkbox' name='MasterColorPicker_showMyPalette' id='MasterColorPicker_showMyPalette'
role='tab' aria-controls='MasterColorPicker_MyPalette' aria-labeledby='MasterColorPicker_MyPalette_header'
onchange='UniDOM.toggleTab(this, this.checked);'
checked>show/use MyPalette? <kbd><span>F2</span></kbd></label>
<label>¿<input type='checkbox' name='MasterColorPicker_showLab' id='MasterColorPicker_showLab'
role='tab' aria-controls='MasterColorPicker_Lab' aria-labeledby='MasterColorPicker_Lab_header'
onchange='UniDOM.toggleTab(this, this.checked);'
checked>show/use Color-Space Lab? <kbd><span>F3</span></kbd></label>
<label>¿<input type='checkbox' name='MasterColorPicker_showMixer' id='MasterColorPicker_showMixer' value='true'
role='tab' aria-controls='MasterColorPicker_Mixer' aria-labeledby='MasterColorPicker_Mixer_header'
onchange='UniDOM.toggleTab(this, this.checked);'
checked>show/use Color-Mixer?</label>
<label>¿<input type='checkbox' name='MasterColorPicker_showGradientor' id='MasterColorPicker_showGradientor' value='true'
role='tab' aria-controls='MasterColorPicker_Gradientor' aria-labeledby='MasterColorPicker_Gradientor_header'
onchange='UniDOM.toggleTab(this, this.checked);'
checked>show Gradientor?</label>
<label>¿<input type='checkbox' name='MasterColorPicker_showThesaurus' id='MasterColorPicker_showThesaurus' value='true'
role='tab' aria-controls='MasterColorPicker_Thesaurus' aria-labeledby='MasterColorPicker_Thesaurus_header'
onchange='UniDOM.toggleTab(this, this.checked);'
checked>show color Thesaurus? <kbd><span>F7</span></kbd></label>
<p id='MasterColorPicker_returnPanelsOn3'>Drag panels by their handles.
Triple-click on panel handles (or this message) to return the panel(s) to home position.
Right-click or Shift-click to: pin a panel to the page when it is pinned to the window,
or pin it to the window when it is pinned to the page.
</p>
</fieldset>
<button type='button' name='MasterColorPicker_PaletteMngr_open' keep-focus='no'
role='combobox' aria-haspopup='dialog' aria-controls='MasterColorPicker_PaletteMngr' aria-expanded='false'
aria-labeledby='MasterColorPicker_PaletteMngr_header'>open the Palette Manager</button>
<fieldset>
<p>Hue angle unit values may be forced at any time when entered with a trailing unit;
for example a “degrees” ° symbol or by using the three letters “deg”.</p>
<label>Hue Angle Unit:
<select name='MasterColorPicker_hue_angle_unit'>
<optgroup label='degrees (360)'>
<option selected>deg</option>
<option>°</option>
</optgroup>
<optgroup label='radians (2π ≈6.2831853)'>
<option>rad</option>
<option>ᴿ</option>
<option>ᶜ</option>
</optgroup>
<optgroup label='gradians (400)'>
<option>grad</option>
<option>ᵍ</option>
</optgroup>
<optgroup label='percent of a turn (100)'>
<option>%</option>
</optgroup>
<optgroup label='turn (1)'>
<option>turn</option>
<option>●</option>
</optgroup>
</select></label>
</fieldset>
<fieldset>
<label>Color-blind filter provider:
<select name='MasterColorPicker_colorblind_provider'>
</select></label>
<p>Color-blind simulations are approximate, and may vary between individuals and monitors</p>
</fieldset>
<label>¿<input type='checkbox' name='MasterColorPicker_preserveSettings' tabTo='MasterColorPicker_mainPanel'>preserve settings for next use?</label>
</div></div>
</div><!-- close MasterColorPicker_options -->
<div id='MasterColorPicker_PaletteManager' class='pickerPanel expanding disabled' role='tabpanel'>
<h2>MasterColorPicker<footmark>™</footmark> <span>Palette Manager</span></h2>
<fieldset class='controls'>
<button type='button' name='MasterColorPicker_PaletteMngr_close' backtabToTarget>☒</button>
<!-- button type='button' name='MasterColorPicker_PaletteMngr_close'>close</button -->
<!-- label>¿<input type='checkbox' name='MasterColorPicker_PaletteMngr_recycle'>force recycle-bin?<span
class='note'>If a “trash” folder already exists, it will be used.</span></label -->
<input type='filename' size='62' name='MasterColorPicker_PaletteMngr_renamer' keep-focus='false'>
<button type='button' name='MasterColorPicker_PaletteMngr_deleteCurrentPalette'>Delete the current MasterColorPicker<footmark>™</footmark> Palette Table</button>
<fieldset><legend>Options▼</legend>
<label><input type='radio' name='MasterColorPicker_PaletteMngr_saveFileAs' value='.json' checked>Save files locally as type <filepath>.json</filepath></label>
<label><input type='radio' name='MasterColorPicker_PaletteMngr_saveFileAs' value='.js'>Save files locally as type <filepath>.js</filepath></label>
</fieldset>
</fieldset>
<div class='dialog'></div>
<!-- JavaScript depends on these fieldset.classNames being static: do not change or add -->
<fieldset port class='hardloaded disabled'><legend tabindex='0' tabTo='this.parentNode.nextElementSibling.firstElementChild'>Hard-loaded</legend>
<fieldset store class='autoload_palettes'><legend>Auto-load: </legend>
<label><input type='checkbox' name='MasterColorPicker_PaletteMngr_selectAll'>select all</label>
<button type='button' name='MasterColorPicker_PaletteMngr_save'>save selected</button>
<ul></ul>
</fieldset>
</fieldset>
<fieldset port class='userloaded'><legend tabindex='0' tabTo='SoftMoon.WebWare.PaletteManager.tabToNextPort(this)'>User-loaded</legend>
<label>Choose a palette file to load as a MasterColorPicker<footmark>™</footmark> Palette Table:
<input type='file' accept='.palette.json,.palette.js'></label>
<fieldset store class='palettes'><legend>Current user: </legend>
<label><input type='checkbox' name='MasterColorPicker_PaletteMngr_selectAll'>select all</label>
<ul></ul>
</fieldset>
</fieldset>
<fieldset port class='browser'><legend tabindex='0' tabTo='SoftMoon.WebWare.PaletteManager.tabToNextPort(this)'>Browser DataBase</legend>
<button type='button' name='MasterColorPicker_PaletteMngr_refresh'>refresh</button>
<button type='button' name='MasterColorPicker_PaletteMngr_load'>load selected</button>
<button type='button' name='MasterColorPicker_PaletteMngr_delete'>delete selected</button>
<button type='button' name='MasterColorPicker_PaletteMngr_save'>save selected</button>
<fieldset store class='autoload_palettes'><legend>Auto-load: </legend>
<label><input type='checkbox' name='MasterColorPicker_PaletteMngr_selectAll'>select all</label>
<button type='button' name='MasterColorPicker_PaletteMngr_addSelected'>add selected</button>
<ul></ul>
</fieldset>
<fieldset store class='palettes'><legend>All users: </legend>
<label><input type='checkbox' name='MasterColorPicker_PaletteMngr_selectAll'>select all</label>
<button type='button' name='MasterColorPicker_PaletteMngr_addSelected'>add selected</button>
<ul></ul>
</fieldset>
</fieldset>
<fieldset port class='server disabled' disabled><legend tabindex='0' tabTo='SoftMoon.WebWare.PaletteManager.tabToNextPort(this)'>Server Based: <filepath></filepath></legend>
<button type='button' name='MasterColorPicker_PaletteMngr_refresh'>refresh</button>
<button type='button' name='MasterColorPicker_PaletteMngr_load'>load selected</button>
<button type='button' name='MasterColorPicker_PaletteMngr_delete'>delete selected</button>
<button type='button' name='MasterColorPicker_PaletteMngr_save'>save selected</button>
<fieldset store class='autoload_palettes'><legend>Auto-load: </legend>
<label><input type='checkbox' name='MasterColorPicker_PaletteMngr_selectAll'>select all</label>
<button type='button' name='MasterColorPicker_PaletteMngr_addSelected'>add selected</button>
<ul></ul>
</fieldset>
<fieldset store class='palettes'><legend>All users: </legend>
<label><input type='checkbox' name='MasterColorPicker_PaletteMngr_selectAll'>select all</label>
<button type='button' name='MasterColorPicker_PaletteMngr_addSelected'>add selected</button>
<ul></ul>
</fieldset>
</fieldset>
</div>
<div id='MasterColorPicker_MyPalette' class='pickerPanel expanding' role='tabpanel'>
<h2 id='MasterColorPicker_MyPalette_header'>MasterColorPicker<footmark>™</footmark> <span title="press F2 for shortcut">MyPalette</span></h2>
<p>(choose colors using any color-picker or type directly)</p>
<fieldset>
<label>Auto-add to MyPalette: <select name='MasterColorPicker_addToMyPalette' backtabToTarget='true'>
<option selected>double-click</option>
<option>shift-click</option>
<option>all selected</option>
<option>single-click</option>
<option>never</option>
</select></label>
<fieldset class='options'><legend>▼ Options</legend>
<label>¿<input type='checkbox' name='MasterColorPicker_MyPalette_showColorblind'>show color-blind simulations?
<note>Note simulations are approximate and may vary between individuals and monitors.</note></label>
<label>¿<input type='checkbox' name='MasterColorPicker_MyPalette_autoSelect' checked>automatically select newly created Sub-Palettes for “auto add colors”?</label>
<label>¿<input type='checkbox' name='MasterColorPicker_MyPalette_autoUncheck1' checked>automatically un-check items upon “add selected” & “paste all”?</label>
<label>¿<input type='checkbox' name='MasterColorPicker_MyPalette_autoUncheck2' checked>automatically un-check items upon “copy selected”?</label>
<label>¿<input type='checkbox' name='MasterColorPicker_MyPalette_autoClearClip'>automatically clear “clip” from clipboard when “pasting”?</label>
<label>¿<input type='checkbox' name='MasterColorPicker_MyPalette_keepEditorsSticky' checked>keep editing buttons visible when scrolling?</label>
</fieldset>
<button type='button' name='MasterColorPicker_MyPalette_port'
role='combobox' aria-haspopup='dialog' aria-controls='MasterColorPicker_MyPalette_porter' aria-expanded='false' aria-pressed='false'
>import/export palette</button>
</fieldset>
<fieldset id='MasterColorPicker_MyPalette_porter' class='portDialog' disabled role='dialog'>
<fieldset class='portMode'>
<label><input type='radio' name='MasterColorPicker_MyPalette_portMode' value='import'>Import a palette to “MyPalette”</label>
<label><input type='radio' name='MasterColorPicker_MyPalette_portMode' value='export'>Export this “MyPalette”</label>
</fieldset>
<output class='portLog' role='log' aria-label='file porter notices'></output>
<fieldset class='port'><legend><span class='import'>import from:</span><span class='export'>save to:</span></legend>
<script type='text/javascript'> if (/^https?\:$/.test(window.location.protocol)) document.writeln(
"<label><input type='radio' name='MasterColorPicker_MyPalette_port' value='server'>" +
(window.location.hostname==='localhost' ? "your local server (“localhost”)" : (window.location.host+" —(i.e. “the cloud”)")) + "</label>" );
</script>
<fieldset>
<label><input type='radio' name='MasterColorPicker_MyPalette_port' value='local'>this computer’s local file system</label>
<label class='import local' disabled><input type='file' name='MasterColorPicker_MyPalette_import' accept='.palette.json,.palette.js' disabled>← drag files here</label>
</fieldset>
<label><input type='radio' name='MasterColorPicker_MyPalette_port' value='browser'>this browser’s private storage
<note class='warn'><strong>¡Note</strong> the browser may delete it at any time!</note></label>
<label><input type='radio' name='MasterColorPicker_MyPalette_port' value='current'>a current MasterColorPicker™ Palette Table
<note class='warn'><strong>¡Note</strong> this is temporary, and will be lost when this browser window closes!</note></label>
<button type='button' name='MasterColorPicker_MyPalette_porter'><span class='export'>save</span><span class='import'>load<span class='server'> index</span></span></button>
</fieldset>
<fieldset class='paletteMerge import' disabled><legend>import merge mode</legend>
<label><input type='radio' name='MasterColorPicker_MyPalette_import_merge_mode' value='add'>add new <note>Add colors & subpalettes to this palette; ignore duplicate names.</note></label>
<label><input type='radio' name='MasterColorPicker_MyPalette_import_merge_mode' value='merge'>merge new <note>Add colors to this palette; merge subpalettes, ignore duplicate color names.</note></label>
<label><input type='radio' name='MasterColorPicker_MyPalette_import_merge_mode' value='merge-over'>merge & replace with new <note>Add colors to this palette; merge subpalettes, replace colors with duplicate names.</note></label>
<label><input type='radio' name='MasterColorPicker_MyPalette_import_merge_mode' value='over'>replace with new <note>Add colors & subpalettes to this palette; replace those with duplicate names.</note></label>
<label><input type='radio' name='MasterColorPicker_MyPalette_import_merge_mode' value='replace'>all new <note>Clear existing palette, and load new palette.</note></label>
</fieldset>
<fieldset class='paletteMeta export' disabled>
<label>Palette filename: <input type='filename' name='MasterColorPicker_MyPalette_filename'></label>
<fieldset><legend>palette headers:</legend>
<textarea name='MasterColorPicker_MyPalette_headers[0]' rows='1' cols='50' value=""></textarea>
</fieldset>
<fieldset><legend>palette footers:</legend>
<textarea name='MasterColorPicker_MyPalette_footers[0]' rows='1' cols='50' value=""></textarea>
</fieldset>
<label>Alternative Color Names:
<select class='alternative' name='MasterColorPicker_MyPalette_alternative'>
<option selected='true'>—none—</option>
<option>lowercase</option>
<option>UPPERCASE</option>
</select><note referto='MasterColorPicker_helpFor_MyPalette_alternatives'> see <strong>☺Help☺</strong> </note></label>
<label>¿Duplicate Color Names?
<select class='duplicate' name='MasterColorPicker_MyPalette_duplicate'>
<option value='forbid'>¡ Forbid !</optoin>
<option value='append' selected>Append name with an index #</option>
<option value='ignore'>Ignore and overwrite</option>
</select></label>
<label class='browser server' disabled>¿<input type='checkbox' name='MasterColorPicker_MyPalette_replace_file' disabled> replace existing file?</label>
<label class='browser server' disabled>¿<input type='checkbox' name='MasterColorPicker_MyPalette_autoload' disabled> auto-load this palette when MasterColorPicker starts?</label>
<fieldset class='filetype local server'><legend>save as type:</legend>
<label class='local'><input type='radio' name='MasterColorPicker_MyPalette_filetype' disabled value="js"> .js (for MasterColorPicker™—desktop auto-load use<note referto='MasterColorPicker_helpFor_MyPalette_autoload'> see <strong>☺Help☺</strong> </note>)</label>
<label><input type='radio' name='MasterColorPicker_MyPalette_filetype' disabled value="json"> .json (for MasterColorPicker™—server or other use)</label>
<label><input type='radio' name='MasterColorPicker_MyPalette_filetype' disabled value="css"> .css (Cascading Style Sheet
<select name='MasterColorPicker_MyPalette_CSSautoType'>
<option value="" selected>palette</option>
<option value="--">variables</option>
<option value="#">ids</option>
<option value=".">classes</option>
</select>)<note referto='MasterColorPicker_helpFor_MyPalette_CSS-files'> see <strong>☺Help☺</strong> </note></label>
<label><input type='radio' name='MasterColorPicker_MyPalette_filetype' disabled value="gpl"> .gpl (GIMP Palette format)</label>
</fieldset>
</fieldset>
</fieldset>
<fieldset class='editors'>
<button type='button' name='MasterColorPicker_MyPalette_makeSub'>create sub-palette</button>
<button type='button' name='MasterColorPicker_MyPalette_copy'>copy selected</button>
<button type='button' name='MasterColorPicker_MyPalette_cut'>cut selected</button>
<button type='button' name='MasterColorPicker_MyPalette_delete'>delete selected</button>
<button type='button' name='MasterColorPicker_MyPalette_clearClips'>clear clipboard</button>
</fieldset>
<table>
<thead>
<tr>
<th></th>
<th class='colorblind'>↓<span>protan</span></th>
<th class='colorblind'>↓<span>deutan</span></th>
<th class='colorblind'>↓<span>tritan</span></th>
<th><label for='MasterColorPicker_MyPalette[0][0][definition]'>↓ ↓ color definition ↓ ↓</label></th>
<th></th>
<th><label for='MasterColorPicker_MyPalette[0][0][name]'>↓ ↓ color name ↓ ↓</label></th></tr>
</thead>
<tbody class='MyPaletteBody'>
<tr>
<th colspan='7'>
<label class='subPalette'>parent Palette: <select name='MasterColorPicker_MyPalette[0][parent]'><option>«MyPalette root»</option></select></label>
<label><span class='subPalette'>Sub-</span>Palette Name: <input type='text' name='MasterColorPicker_MyPalette[0][Name]'></label>
<label><input type='radio' name='MasterColorPicker_MyPalette_addToHere'>Auto-add new Colors to this palette</label>
<label><input type='checkbox' name='MasterColorPicker_MyPalette_selectAll'>select all</label>
<label class='subPalette'><input type='checkbox' name='MasterColorPicker_MyPalette_selectThis'>select this</label>
<button type='button' name='MasterColorPicker_MyPalette_addSelected'>add selected</button>
<button type='button' name='MasterColorPicker_MyPalette_pasteAll'>paste all</button>
</th></tr>
<tr class='MyColor'>
<td toggleBorder='no'><input type='checkbox' name='MasterColorPicker_MyPalette[0][0][selected]'></td>
<td class='colorblind' colorblind='protan' toggleBorder='no'></td>
<td class='colorblind' colorblind='deutan' toggleBorder='no'></td>
<td class='colorblind' colorblind='tritan' toggleBorder='no'></td>
<td><input type='text' name='MasterColorPicker_MyPalette[0][0][definition]'
interfaceTarget='true' swatch="this.closest('.MyColor').firstElementChild" value='' placeholder='color definition'></td>
<td class='dragHandle' title='drag from here or right-click for menu'>↕</td>
<td><input type='text' name='MasterColorPicker_MyPalette[0][0][name]' tabToTarget='true' value='' placeholder='color name'></td></tr>
</tbody>
</table>
<menu class='MyPalette_ColorGenieMenu'>
<!-- The JavaScript is greatly dependent on the structure and text-content in this section.
See the FormFieldGenie.js file and instructions for more info.
You may safely modify the content of the ‹span› tag -->
<li class='insert' tabindex="-1" controls='MyPalette_ColorGenieMenu_insertA MyPalette_ColorGenieMenu_insertB'>insert:
<span class='new' id='MyPalette_ColorGenieMenu_insertA' tabindex="-1">new color</span>
<ul class='clips' id='MyPalette_ColorGenieMenu_insertB'>
<li standard tabindex="-1">all clips</li>
</ul>
</li>
<li class='copy' tabindex="-1" controls='MyPalette_ColorGenieMenu_copy'>copy to:<ul class='clips' id='MyPalette_ColorGenieMenu_copy'>
<li standard tabindex="-1">new clip</li></ul></li>
<li class='cut' tabindex="-1" controls='MyPalette_ColorGenieMenu_cut'>cut to:<ul class='clips' id='MyPalette_ColorGenieMenu_cut'>
<li standard tabindex="-1">new clip</li></ul></li>
<li class='paste' tabindex="-1" controls='MyPalette_ColorGenieMenu_paste'>paste from:<ul class='clips' id='MyPalette_ColorGenieMenu_paste'>
</ul></li>
<li class='delete' title='triple-click' tabindex="-1">delete</li>
<li title='triple-click' tabindex="-1">clear clipboard</li>
</menu>
</div><!-- close MyPalette -->
<div id='MasterColorPicker_Mixer' class='pickerPanel filter' role='tabpanel'>
<h2 id='MasterColorPicker_Mixer_header'>MasterColorPicker<footmark>™</footmark> <span>Color-Mixer</span></h2>
<fieldset role='tablist' aria-label='mixer mode'
onchange='UniDOM.swapOut$Class(this.parentNode, ["filter", "blender"], event.target.value); UniDOM.toggleTab(event.target, true);'>
<label><input type='radio' name='MasterColorPicker_mixerMode' value='filter' checked
role='tab' aria-controls='MasterColorPicker_Filter' aria-selected='true'>Color-picker Filter</label>
<label><input type='radio' name='MasterColorPicker_mixerMode' value='blender'
role='tab' aria-controls='MasterColorPicker_Blender' aria-selected='false'>Alpha-Blender</label>
</fieldset>
<div id='MasterColorPicker_Filter'>
<h3>Color-picker Filter</h3>
<p>The colors selected within this tool will mix with future colors selected from the color-picker palettes.</p>
<p>(choose color(s) using any color-picker or type directly)</p>
<fieldset>
<label><span>¿Average all filter-colors and apply the result, or apply each filter-color individually and progressively?</span>
<select name='MasterColorPicker_Filter_average' backtabToTarget='true'><option selected>average</option><option>progressive</option></select></label>
<label><span>¿Add/subtract the filters’ average to the picked color, or grade the picked color to the filters’ average?</span>
<select name='MasterColorPicker_Filter_applyToAverage'><option selected>add to</option><option>grade to</option><option>sub from</option></select></label>
</fieldset>
<table>
<thead>
<tr><th><label for='MasterColorPicker_Filter_color[0]'>color:</label></th>
<th><label for='MasterColorPicker_Filter_factor[0]'>rate:<span> factor (0.0-1.0) or percent (0%-100%)</span></label></th>
<th><label for='MasterColorPicker_Filter_apply[0]'>apply:<span> ¿Add/subtract each filter to the picked color, or grade the picked color to each filter?</span></label></th>
</tr>
</thead>
<tbody>
<tr class='filterColor'>
<td><input type='text' name='MasterColorPicker_Filter_color[0]' value='' placeholder='color'
interfaceTarget='true' swatch='this.nextSibling'><span class='swatch'></span></td>
<td><input type='text' name='MasterColorPicker_Filter_factor[0]' title='factor (0.0-1.0) or percent (0%-100%)' value='50%'
tabTo='s=this.parentNode.parentNode.lastElementChild.firstChild, (s.disabled && s.getAttribute("tabToTarget")==="true") ? MasterColorPicker.dataTarget : ""'></td>
<td><select name='MasterColorPicker_Filter_apply[0]' tabToTarget='true'><option selected>add to</option><option>grade to</option><option>sub from</option></select></td>
</tr>
</tbody>
</table>
</div><!-- close MasterColorPicker_Filter -->
<div id='MasterColorPicker_Blender'>
<h3>Alpha-Blender <span class='help'>☺</span></h3>
<p class='help'>Use this tool to experiment with partially-transparent colors to see how they blend with other colors or over a given image.
Choose swatch colors using any color picker or type directly; double-click a swatch to edit it.
Then drag the swatches into the “playground” area below.
Click on a swatch to bring it to the top of the stack.
You may also drag the swatch off this panel to experiment, where it will remain until you drag it back on.</p>
<label>background image:<input type='file' accept='image/*' name='MasterColorPicker_alpha-blender-background'></label>
<!-- ¡NO whitespace in the following fieldset! -->
<fieldset title='CTRL-click or triple-click to return all swatches here'><textarea title='double-click to edit'
type='colorPicker' interfaceTarget='true' swatch='this' placeholder='color with alpha'
spellcheck="false" tabToTarget='true'></textarea></fieldset>
<playground></playground>
</div><!-- close MasterColorPicker_Blender -->
</div><!-- close MasterColorPicker_Mixer -->
<div id='MasterColorPicker_Lab' class='pickerPanel' role='tabpanel'>
<h2 id='MasterColorPicker_Lab_header'>MasterColorPicker<footmark>™</footmark> <span title="press F3 for shortcut">Color-Space Lab</span></h2>
<table class='primaries'><caption><abbr title='standard Red Green Blue'>sRGB</abbr> (8-bits/channel)</caption>
<tr><th>primary</th><th>byte value</th><th>#hex</th><th>percent%</th><td></td></tr>
<tr class='red'><th><label for='MasterColorPicker_Rgb_byte' style="color:red">Red:</label></th>
<td><input type='numeric' name='MasterColorPicker_Rgb_byte' min='0' max='255' value='0' backtabToTarget='true'></td>
<td><input type='numeric' name='MasterColorPicker_Rgb_hex' class='hex' base='16' maxlength='2' size='2' value='00'></td>
<td><input type='numeric' name='MasterColorPicker_Rgb_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_Rgb_range' min='0' max='255' value='0' style="color:red" tabindex='-1'></td>
</tr>
<tr class='green'><th><label for='MasterColorPicker_rGb_byte' style="color:green">Green:</label></th>
<td><input type='numeric' name='MasterColorPicker_rGb_byte' min='0' max='255' value='0'></td>
<td><input type='numeric' name='MasterColorPicker_rGb_hex' class='hex' base='16' maxlength='2' size='2' value='00'></td>
<td><input type='numeric' name='MasterColorPicker_rGb_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_rGb_range' min='0' max='255' value='0' style="color:lime" tabindex='-1'></td>
</tr>
<tr class='blue'><th><label for='MasterColorPicker_rgB_byte' style="color:blue">Blue:</label></th>
<td><input type='numeric' name='MasterColorPicker_rgB_byte' min='0' max='255' value='0'></td>
<td><input type='numeric' name='MasterColorPicker_rgB_hex' class='hex' base='16' maxlength='2' size='2' value='00'></td>
<td><input type='numeric' name='MasterColorPicker_rgB_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_rgB_range' min='0' max='255' style="color:blue" tabindex='-1' value='0'></td>
</tr>
</table>
<table><caption>
<label>¡make it <abbr title='Ottosson Krafted Colours'>OK</abbr><input type='checkbox' name='MasterColorPicker_Lab_OK'>!</label>
<abbr ok>HSL</abbr> <abbr ok>HSB</abbr>/<abbr ok>HSV</abbr> <abbr ok>HCG</abbr> <abbr ok>HWB</abbr></caption>
<tr><th></th><th id='MasterColorPicker_Lab_hueUnitText'>degrees°</th><th>percent%</th><td></td></tr>
<tr class='hue'>
<th><label for='MasterColorPicker_Hue_degrees' ok>Hue:</label></th>
<td><input type='numeric' name='MasterColorPicker_Hue_degrees' step='any' value='0'></td>
<td><input type='numeric' name='MasterColorPicker_Hue_percent' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_Hue_range' min='0' max='360' value='0' tabindex='-1'></td>
</tr>
<tr class='even'>
<th><label for='MasterColorPicker_hSl_percent' ok>Saturation:</label></th>
<td></td>
<td><input type='numeric' name='MasterColorPicker_hSl_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_hSl_range' min='0' max='100' value='0' tabindex='-1'></td>
</tr>
<tr>
<th><label for='MasterColorPicker_hsL_percent' ok>Lightness:</label></th>
<td></td>
<td><input type='numeric' name='MasterColorPicker_hsL_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_hsL_range' min='0' max='100' value='0' tabindex='-1'></td>
</tr>
<tr class='even'>
<th><label for='MasterColorPicker_hSv_percent' ok>Saturation:</label></th>
<td></td>
<td><input type='numeric' name='MasterColorPicker_hSv_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_hSv_range' min='0' max='100' value='0' tabindex='-1'></td>
</tr>
<tr>
<th><label for='MasterColorPicker_hsV_percent' title='a.k.a. Value' ok>Brightness:</label></th>
<td></td>
<td><input type='numeric' name='MasterColorPicker_hsV_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_hsV_range' min='0' max='100' value='0' tabindex='-1'></td>
</tr>
<tr class='even'>
<th><label for='MasterColorPicker_hCg_percent' ok>Chroma∝:</label></th>
<td></td>
<td><input type='numeric' name='MasterColorPicker_hCg_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_hCg_range' min='0' max='100' value='0' tabindex='-1'></td>
</tr>
<tr>
<th><label for='MasterColorPicker_hcG_percent' ok>Gray:</label></th>
<td></td>
<td><input type='numeric' name='MasterColorPicker_hcG_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_hcG_range' min='0' max='100' value='0' tabindex='-1'></td>
</tr>
<tr class='even'>
<th><label for='MasterColorPicker_hWb_percent' ok>Whiteness:</label></th>
<td></td>
<td><input type='numeric' name='MasterColorPicker_hWb_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_hWb_range' min='0' max='100' value='0' tabindex='-1'></td>
</tr>
<tr>
<th><label for='MasterColorPicker_hwB_percent' ok>Blackness:</label></th>
<td></td>
<td><input type='numeric' name='MasterColorPicker_hwB_percent' min='0' max='100' step='any' value='100'></td>
<td><input type='range' name='MasterColorPicker_hwB_range' min='0' max='100' value='100' tabindex='-1'></td>
</tr>
</table>
<table class='primaries'><caption><abbr>CMYK</abbr></caption>
<tr><th>primary</th><th>percent%</th><td></td></tr>
<tr class='cyan'>
<th><label for='MasterColorPicker_Cmyk_percent' style="color:darkCyan">Cyan:</label></th>
<td><input type='numeric' name='MasterColorPicker_Cmyk_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_Cmyk_range' min='0' max='100' value='0' style="color:cyan" tabindex='-1'></td>
</tr>
<tr class='magenta'>
<th><label for='MasterColorPicker_cMyk_percent' style="color:darkMagenta">Magenta:</label></th>
<td><input type='numeric' name='MasterColorPicker_cMyk_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_cMyk_range' min='0' max='100' value='0' style="color:magenta" tabindex='-1'></td>
</tr>
<tr class='yellow'>
<th><label for='MasterColorPicker_cmYk_percent' style="color:goldenrod">Yellow:</label></th>
<td><input type='numeric' name='MasterColorPicker_cmYk_percent' min='0' max='100' step='any' value='0'></td>
<td><input type='range' name='MasterColorPicker_cmYk_range' min='0' max='100' value='0' style="color:yellow" tabindex='-1'></td>
</tr>
<tr class='black'>
<th><label for='MasterColorPicker_cmyK_percent' style="color:black">Black:</label></th>
<td><input type='numeric' name='MasterColorPicker_cmyK_percent' min='0' max='100' step='any' value='100'></td>
<td><input type='range' name='MasterColorPicker_cmyK_range' min='0' max='100' value='100' style="color:black" tabindex='-1'></td>
</tr>
</table>
<div><indicator>average perceived relative Luminance: <span></span></indicator><indicator id='MasterColorPicker_LabContrast' class='disabled'>contrast ratio: <span></span></indicator></div>
<fieldset>
<legend><label for='MasterColorPicker_opacity_range'>Alpha (opacity)</label></legend>
<label title='Opacity is applied when applicable to colors chosen from a color picker.'>¿<input type='checkbox' name='MasterColorPicker_applyOpacity'>apply?</label>
<label><input type='numeric' name='MasterColorPicker_opacity_percent' min='0' max='100' step='any' value='100'>%</label>
<input type='range' name='MasterColorPicker_opacity_range' min='0' max='100' value='100' style="color:black" tabindex='-1'>
</fieldset>
<contrastSwatch></contrastSwatch>
<button type='button' keep-focus='no'><h5>Click to Choose</h5>
<swatch></swatch>
<table>
<caption>colorblind</caption>
<td title='protan'></td>
<td title='deutan'></td>
<td title='tritan'></td>
</table>
</button>
<aside>Options▼
<fieldset class='options'>
<label>¿<input type='checkbox' name='MasterColorPicker_updateLabOnMouseMove' checked>update on Mouse move?</label>
<label>¿<input type='checkbox' name='MasterColorPicker_updateLabOnKeystroke' checked>update on Keystroke?</label>
<fieldset>
<label>¿<input type='radio' name='MasterColorPicker_alphaApplicationMode' value='convert' checked>convert named colors to RGB to apply alpha?</label>
<label>¿<input type='radio' name='MasterColorPicker_alphaApplicationMode' value='avoid'>do not apply alpha value to named colors?</label>
<label>¿<input type='radio' name='MasterColorPicker_alphaApplicationMode' value='apply'>apply alpha value to color name?</label>
</fieldset>
<fieldset>
<label>¿<input type='checkbox' name='MasterColorPicker_showContrastInLab' tabToTarget='true'>show contrast ratio?</label>
<label class='depends disabled'>background color:<input type='text' interfaceTarget='true' tabToTarget='true'
name='MasterColorPicker_LabContrastColor' value="white" disabled></label>
</fieldset>
</fieldset>
</aside>
</div><!-- close MasterColorPicker_Lab -->
<div id='MasterColorPicker_Gradientor' class='pickerPanel linear' role='tabpanel'>
<h2 id='MasterColorPicker_Gradientor_header'>MasterColorPicker<footmark>™</footmark> <span>Gradientor</span></h2>
<fieldset role='tablist'><legend>mix format:</legend>
<label><input type='radio' name='MasterColorPicker_Gradientor_format' value='linear' checked backtabToTarget
role='tab' aria-controls='MasterColorPicker_Gradientor_linear-colors' aria-selected='true'>
multistop linear</label>
<label><input type='radio' name='MasterColorPicker_Gradientor_format' value='triadic'
role='tab' aria-controls='MasterColorPicker_Gradientor_triadic-colors' aria-selected='false'>
triadic</label>
</fieldset>
<label>Grade through color-space:<select name='MasterColorPicker_Gradientor_colorSpace'>
<option>RGB</option>
<option>HSL</option>
<option>HCG</option>
<option value='HSB'>HSB/HSV</option>
<option>OKHSL</option>
<option>OKHSV</option>
<option>OKHCG</option>
<option>CMYK</option>
<option>Lab</option>
<option>LCh</option>
<option>Luv</option>
<option>LChᵤᵥ</option>
<option>HSLᵤᵥ</option>
<option>OKLab</option>
<option>OKLCh</option>
<option>Jᶻaᶻbᶻ</option>
<option>JᶻCᶻhᶻ</option>
<option>ICᵀCᴾ</option>
<option>IChᵀᴾ</option>
</select></label>
<fieldset id='MasterColorPicker_Gradientor_linear-colors'><legend>Enter gradient <em>colors</em> and <em>offsets</em> below</legend>
<p>You may use <code>pixels</code> or percents <code>%</code> or a mix as units for the offsets.
If you use <code>pixels</code>, your last color’s offset must be in pixels.
See <span referto='MasterColorPicker_helpFor_Gradientor'>☺Help☺</span> for more info.</p>
<p>(choose colors using any color-picker or type directly)</p>
<fieldset><swatch></swatch>
<input type='text' name='MasterColorPicker_Gradientor_color[1]' placeholder='color'
interfaceTarget='true' swatch='this.previousElementSibling' value="">
<input type='numeric' min='0' units='%, pixels, px' auto-append-unit allow-plus-sign default-value="" placeholder='offset' name='MasterColorPicker_Gradientor_offset[1]'>
</fieldset>
<fieldset><swatch></swatch>
<input type='text' name='MasterColorPicker_Gradientor_color[2]' placeholder='color'
interfaceTarget='true' swatch='this.previousElementSibling' value="">
<input type='numeric' min='0' units='%, pixels, px' auto-append-unit allow-plus-sign default-value="" placeholder='offset' name='MasterColorPicker_Gradientor_offset[2]'>
</fieldset>
</fieldset>
<fieldset id='MasterColorPicker_Gradientor_triadic-colors'><legend>(choose colors using any color-picker or type directly)</legend>
<label><swatch></swatch>
<input type='text' name='MasterColorPicker_Gradientor_colorT1'
interfaceTarget='true' swatch='this.previousElementSibling' value=""></label>
<label><swatch></swatch>
<input type='text' name='MasterColorPicker_Gradientor_colorT2'
interfaceTarget='true' swatch='this.previousElementSibling' value=""></label>
<label><swatch></swatch>
<input type='text' name='MasterColorPicker_Gradientor_colorT3'
interfaceTarget='true' swatch='this.previousElementSibling' value=""></label>
</fieldset>
<label title='3 — 256'>steps: <input type='numeric-slider' name='MasterColorPicker_Gradientor_steps' min='3' max='256' step='1' value='16' tabToTarget></label>
<indicator> <swatch></swatch></indicator>
<div><canvas width='256' height='38'></canvas></div><!-- the width here also factors the height for triadic displays -->
</div><!-- close MasterColorPicker_Gradientor -->
<div id='MasterColorPicker_Thesaurus' class='pickerPanel' role='tabpanel'>
<h2 id='MasterColorPicker_Thesaurus_header'>MasterColorPicker<footmark>™</footmark> <span title="press F7 for shortcut">Thesaurus</span></h2>
<p>This tool can help you identify the names of the closest colors in the chosen Palettes.</p>
<fieldset><legend>Choose color using any color-picker,
press <kbd><span>CTRL</span>+<span>F7</span></kbd> from another color-input with a valid color,
or type directly.</legend>
<label>color:
<input type='text' name='MasterColorPicker_Thesaurus_color'
interfaceTarget='true' swatch='this.nextSibling' value='' backtabToTarget='true'><span class='swatch'></span></label>
</fieldset>
<button type='button' class='refresh' aria-controls='MasterColorPicker_Thesaurus_palette-list'>refresh palette list</button>
<button type='button' class='match' aria-controls='MasterColorPicker_Thesaurus_output' id='MasterColorPicker_Thesaurus_matcher'>match color</button>
<fieldset id='MasterColorPicker_Thesaurus_palette-list' class='palette-list'
aria-label='palette list' aria-atomic='true' aria-live='polite'><legend>Search these named-color Palettes:</legend>
</fieldset>
<output for='MasterColorPicker_Thesaurus_matcher' id='MasterColorPicker_Thesaurus_output' aria-role="" aria-live='polite' aria-atomic='true'></output>
</div><!-- close MasterColorPicker_Thesaurus -->
<div id='MasterColorPicker_Help' class='pickerPanel help' role='tabpanel'>
<h2 id='MasterColorPicker_Help_header'>MasterColorPicker<footmark>™</footmark><span title="press F1 for shortcut">☺Help☺</span></h2>
<div class='scrollbox'>
<nav>
<h6>Contents:</h6>
<button type='button' section='defining-colors' backtabToTarget>§ defining colors</button>
<button type='button' section='Alpha'>§ using “Alpha” opacity (transparency)</button>
<button type='button' section='examples'>§ example color definitions</button>
<button type='button' section='Luminance/Contrast'>§ Luminance & Contrast</button>
<button type='button' section='conversions'>§ conversions, <abbr>CMYK</abbr>, Chroma, Chroma∝, Hue, & gray-scale tones</button>
<button type='button' section='keyboard'>§ keyboard shortcuts</button>
<button type='button' section='MyPalette'>§ using MyPalette</button>
<div>
<button type='button' section='MyPalette_alternatives'>§ alternative color names</button>
<button type='button' section='MyPalette_DB'>§ saving/exporting your palette files</button>
<button type='button' section='MyPalette_browserDB'>§ using the browser’s private storage database</button>
<button type='button' section='MyPalette_serverDB'>§ saving files to a server</button>
<button type='button' section='MyPalette_local-file'>§ saving files to your personal filesystem</button>
<button type='button' section='MyPalette_autoload'>§ auto-loading your palettes when MasterColorPicker<footmark>™</footmark> starts</button>
<button type='button' section='MyPalette_CSS-files'>§ exporting to a CSS file</button>
</div>
<button type='button' section='PltMngr'>§ using the Palette Manager</button>
<button type='button' section='Gradientor' tabToTarget>§ using the Gradientor</button>
</nav>
<h4 id='MasterColorPicker_helpFor_defining-colors'>Colors with MasterColorPicker</h4>
<p>MasterColorPicker uses a color-specification based loosely on the CSS4 specs.
It will always output colors according to those specs, with a few exceptions that can be activated using “options”:</p>
<ul>
<li>It can define colors using some color-spaces that CSS does not recognize.</li>
<li>It can define “hue angles” using units and/or symbols that CSS does not recognize.</li>
<li>It can output more “named colors” than the basic CSS list of colors.</li>
<li>It can add non-standard Alpha (opacity) values to “named” colors.</li>
</ul>
<h4>Valid values for color inputs are similar to “loose” CSS specifications and include:</h4>
<ul>
<li><abbr title='Red, Green, Blue'>RGB</abbr> values in 6-digit hexadecimal (<abbr>hex</abbr>) with or without the leading <kbd>#</kbd> symbol.</li>
<li><abbr title='Red, Green, Blue'>RGB</abbr> values as:
<ul>
<li>integer byte values (<kbd>0—255</kbd>)</li>
<li>percent ratios (<kbd>0%—100%</kbd> – be sure to use the percent <kbd>%</kbd> symbol)</li>
</ul>
<p>Each value may be separated by spaces/commas.
You may mix byte and percent values in the same spec.
You may wrap() or prefix: the values with <kbd>rgb( )</kbd> or <kbd>rgb:</kbd> but that is not necessary.</p></li>
<li>various different color-space models including these below:
(items marked with <range>✢</range> adapt to the <abbr title='Red, Green, Blue'>RGB</abbr> color-space profile you are using)
(items marked with <range>✓</range> are limited to the <abbr title='standard Red, Green, Blue'>sRGB</abbr> color-space)
(items marked with <range>❇</range> can take you beyond the <abbr title='Red, Green, Blue'>RGB</abbr> color-space profile you are using)
<ul class='range'>
<li><range>✣</range><abbr title='Cyan, Magenta, Yellow, Black'>CMYK</abbr></li>
<li><range>✣</range><abbr title='Cyan, Magenta, Yellow'>CMY</abbr></li>
<li><range>✣</range><abbr title='Hue, Saturation, Value / Brightness'>HSV / HSB</abbr></li>
<li><range>✣</range><abbr title='Hue, Saturation, Lightness'>HSL</abbr></li>
<li><range>✣</range><abbr title='Hue, Whiteness, Blackness'>HWB</abbr></li>
<li><range>✣</range><abbr title='Hue, Chroma∝, Gray'>HCG</abbr> (<strong>¡Not</strong> the Munsell color system!)</li>
<li><range>✣</range><pseudo>Hue</pseudo> ← define only a “classic” hue-angle-value and see the full-color (fully chromatic) tone of the hue.</li>
<li><range>✓</range><abbr title='Hueᵤᵥ, Saturation, Lightness'>HSLᵤᵥ</abbr> (use the <kbd><span>Alt</span></kbd> key for subscript ᵤᵥ or use <aka>HSLuv</aka>)</li>
<li><range>✓</range><abbr title='OK: Hue, Saturation, Value (Brightness)'>OKHSV</abbr></li>
<li><range>✓</range><abbr title='OK: Hue, Saturation, Lightness'>OKHSL</abbr></li>
<li><range>✓</range><abbr title='OK: Hue, White, Black'>OKHWB</abbr></li>
<li><range>✓</range><abbr title='OK: Hue, Chroma∝, Gray'>OKHCG</abbr></li>
<li><range>❇</range><abbr title='Lightness, a-axis, b-axis'>Lab</abbr> <aka>(<abbr title='International Commission on Illumination'>CIE</abbr> <abbr>L*a*b*</abbr> color space)</aka>
→ <code>(L,a,b,α) ‖ (<var>illuminant</var>, L,a,b,α)</code>
← <code>0 ≤ L ≤ (100‖100%),
<nobr>(-170‖-136%) ≤ (a,b) ≤ (170‖136%)</nobr></code> ← where <code>100%=125</code> is the <abbr title='Cascading Style Sheet'>CSS</abbr> standard.
The alpha (opacity) <code>α</code> value is optional as always;
and the optional <var>illuminant</var> may be <code>D50</code> (the default — as used by <abbr>CSS</abbr>) or <code>D65</code></li>
<li><range>❇</range><abbr title='Lightness, Chroma, Hue'>LCh</abbr> <aka>(<abbr title='International Commission on Illumination'>CIE</abbr> <abbr>LCh</abbr> color space)</aka>
→ <code>(L,C,h,α) ‖ (<var>illuminant</var>, L,C,h,α)</code>
← <code><nobr>0 ≤ L ≤ (100‖100%),</nobr>
<nobr>0 ≤ C ≤ (230‖154%)</nobr></code> ← where <code>100%=150</code> is the <abbr title='Cascading Style Sheet'>CSS</abbr> standard.
The alpha (opacity) <code>α</code> value is optional as always;
and the optional <var>illuminant</var> may be <code>D50</code> (the default — as used by <abbr>CSS</abbr>) or <code>D65</code></li>
<li><range>❇</range><abbr title='Lightness, u-axis, v-axis'>Luv</abbr> <aka>(<abbr title='International Commission on Illumination'>CIE</abbr> <abbr>L*u*v*</abbr> color space)</aka>
← <code>0 ≤ L ≤ (1.0‖100%),
<nobr>(-215‖-100%) ≤ (u,v) ≤ (215‖100%)</nobr></code>
<p>Color space models based on <abbr>Luv</abbr> have the “ᵤᵥ” or “uv” suffix and are referred to herein as “<abbr title="Luv-ly">♥ly</abbr>”.</p></li>
<li><range>❇</range><abbr title='Lightness, Chromaᵤᵥ, Hueᵤᵥ'>LChᵤᵥ</abbr> <aka>(<abbr title='International Commission on Illumination'>CIE</abbr> <abbr>LChᵤᵥ</abbr> color space)</aka>
(use the <kbd><span>Alt</span></kbd> key for subscript ᵤᵥ or use <aka>LChuv</aka>)
← <code>0 ≤ L ≤ (1.0‖100%),
<nobr>0 ≤ C ≤ (304‖100%)</nobr></code></li>
<li><range>❇</range><abbr title='OK: Lightness, a-axis, b-axis'>OKLab</abbr> ← <code>0 ≤ L ≤ (1.0‖100%),
<nobr>(-0.4‖-100%) ≤ (a,b) ≤ (0.4‖100%)</nobr></code>
<p>All the “<abbr ok>OK</abbr>” color spaces are based on <abbr>OKLab</abbr></p></li>
<li><range>❇</range><abbr title='OK: Lightness, Chroma, Hue'>OKLCh</abbr> ← <code>0 ≤ L ≤ (1.0‖100%),
<nobr>0 ≤ C ≤ (0.5‖125%)</nobr></code> ← where <code>100%=0.4</code> is the <abbr title='Cascading Style Sheet'>CSS</abbr> standard</li>
<li><range>❇</range><abbr title='Lightness, az-axis, bz-axis'>Jᶻaᶻbᶻ</abbr>
(use the <kbd><span>Alt</span></kbd> key for modifier ᶻ or use <aka>Jzazbz</aka>)
← <code><nobr>0 ≤ Jᶻ ≤ (1.0‖100%),</nobr>
<nobr>(-0.5‖-50%) ≤ (aᶻ,bᶻ) ≤ (0.5‖50%)</nobr></code></li>
<li><range>❇</range><abbr title='Lightness, Chroma, Hue'>JᶻCᶻhᶻ</abbr>
(use the <kbd><span>Alt</span></kbd> key for modifier ᶻ or use <aka>JzCzhz</aka>)
← <code><nobr>0 ≤ Jᶻ ≤ (1.0‖100%),</nobr>
<nobr>0 ≤ Cᶻ ≤ (≈0.7071‖70.71%)</nobr></code> ← √(0.5²+0.5²)</li>
<li><range>❇</range><abbr title='Intensity, Tritanopia-axis, Protanopia-axis'>ICᵀCᴾ</abbr>
(use the <kbd><span>Alt</span></kbd> key for modifiers ᵀ & ᴾ or use <aka>ICtCp</aka>)
← <code><nobr>0 ≤ I ≤ (1.0‖100%),</nobr>
<nobr>(-0.5‖-50%) ≤ (Cᵀ,Cᴾ) ≤ (0.5‖50%)</nobr></code></li>
<li><range>❇</range><abbr title='Intensity, Chroma, Hue'>IChᵀᴾ</abbr>
(use the <kbd><span>Alt</span></kbd> key for modifiers ᵀ & ᴾ or use <aka>IChtp</aka>)
← <code><nobr>0 ≤ I ≤ (1.0‖100%),</nobr>
<nobr>0 ≤ Cᵀᴾ ≤ (≈0.7071‖70.71%)</nobr></code> ← √(0.5²+0.5²)</li>
<li><range>❇</range><abbr>XYZ</abbr> <aka>(<abbr title='International Commission on Illumination'>CIE</abbr> <abbr>XYZ</abbr> color space)</aka>
→ <code>(X,Y,Z,α) ‖ (<var>illuminant</var>, X,Y,Z,α) ‖ (<var>color-profile</var>, X,Y,Z,α) ‖ (<var>color-profile</var>, <var>illuminant</var>, X,Y,Z,α)</code>
<p>I am not sure of the exact limits of the input values, but I <em>think maybe</em> generally
<code>0 ≤ X ≤ 0.950489, 0 ≤ Y ≤ 1, 0 ≤ Z ≤ 1.0883</code> seems to be fair for the <abbr>D65</abbr> illuminant…?</p>
<p>The “<var>illuminant</var>” and/or “<var>color-profile</var>” is optional as shown; so is the alpha (opacity) value (α) as it always is.
Currently, only <code>"sRGB"</code> is valid for “<var>color-profile</var>”.
There are currently 7 different legal values for “<var>illuminant</var>”
(these values are case <strong>sensitive</strong> and don’t miss the underscores _ ).
<code>"D65"</code> is the default illuminant as this is the same as used for
the <abbr title='standard Red-Green-Blue'>sRGB</abbr> color-space.</p>