diff --git a/assets/color_books/README.md b/assets/color_books/README.md
index d20dbd5f6..5b4198ea6 100644
--- a/assets/color_books/README.md
+++ b/assets/color_books/README.md
@@ -3,11 +3,11 @@
AutoCAD `.acb` colour books built into the Select Color panel. Each file
carries its source and licence in its header comment.
-| File | Book | Licence |
+| File | Book | Source and licence |
|---|---|---|
-| `ral-classic.acb` | RAL CLASSIC, 216 approximate sRGB values | CC BY-SA 4.0, adapted from Wikipedia, "List of RAL colours" |
-| `css-colors.acb` | CSS COLORS, the 148 CSS named colours | Values from the W3C CSS Color Module Level 4 |
+| `ral-classic.acb` | RAL CLASSIC, 216 approximate sRGB values | Adapted from Wikipedia, "List of RAL colours"; CC BY-SA 4.0 |
+| `sikkens-4041.acb` | SIKKENS 4041, 1,624 colours | Open Colour Systems Collection 2.0, © 2015 dtp studio oldenburg (freieFarbe e.V.); CC BY-ND 4.0. Converted from the GIMP palette: same names, values and order, only the file format changed |
-RAL is a registered trademark of RAL gGmbH. The RAL values are approximate
-screen representations, not colour-binding references, and are not
-affiliated with, endorsed by or licensed by RAL gGmbH.
+Values are approximate screen representations, not colour-binding
+references. RAL is a registered trademark of RAL gGmbH and Sikkens of
+AkzoNobel; these files are not affiliated with or endorsed by either.
diff --git a/assets/color_books/css-colors.acb b/assets/color_books/css-colors.acb
deleted file mode 100644
index 0868c4b83..000000000
--- a/assets/color_books/css-colors.acb
+++ /dev/null
@@ -1,202 +0,0 @@
-
-
-
- CSS COLORS
- 1
- 0
-
- mistyrose255228225
- red25500
- salmon250128114
- lightcoral240128128
- indianred2059292
- rosybrown188143143
- firebrick1783434
-
-
- brown1654242
- darkred13900
- maroon12800
- coral25512780
- lightsalmon255160122
- orangered255690
- tomato2559971
-
-
- darksalmon233150122
- sienna1608245
- bisque255228196
- blanchedalmond255235205
- darkorange2551400
- navajowhite255222173
- papayawhip255239213
-
-
- peachpuff255218185
- antiquewhite250235215
- sandybrown24416496
- burlywood222184135
- chocolate21010530
- tan210180140
- peru20513363
-
-
- saddlebrown1396919
- cornsilk255248220
- gold2552150
- moccasin255228181
- orange2551650
- wheat245222179
- goldenrod21816532
-
-
- darkgoldenrod18413411
- lemonchiffon255250205
- lightyellow255255224
- yellow2552550
- lightgoldenrodyellow250250210
- beige245245220
- khaki240230140
-
-
- palegoldenrod238232170
- darkkhaki189183107
- olive1281280
- yellowgreen15420550
- olivedrab10714235
- darkolivegreen8510747
- chartreuse1272550
-
-
- greenyellow17325547
- lawngreen1242520
- lime02550
- palegreen152251152
- lightgreen144238144
- limegreen5020550
- darkseagreen143188143
-
-
- forestgreen3413934
- green01280
- darkgreen01000
- springgreen0255127
- mediumspringgreen0250154
- mediumseagreen60179113
- seagreen4613987
-
-
- aquamarine127255212
- mediumaquamarine102205170
- aqua0255255
- cyan0255255
- lightcyan224255255
- paleturquoise175238238
- powderblue176224230
-
-
- turquoise64224208
- darkturquoise0206209
- mediumturquoise72209204
- lightseagreen32178170
- cadetblue95158160
- darkcyan0139139
- teal0128128
-
-
- darkslategray477979
- darkslategrey477979
- deepskyblue0191255
- skyblue135206235
- lightblue173216230
- dodgerblue30144255
- lightskyblue135206250
-
-
- lightsteelblue176196222
- steelblue70130180
- lightslategray119136153
- lightslategrey119136153
- slategray112128144
- slategrey112128144
- cornflowerblue100149237
-
-
- royalblue65105225
- blue00255
- mediumblue00205
- darkblue00139
- navy00128
- midnightblue2525112
- mediumslateblue123104238
-
-
- mediumpurple147112219
- slateblue10690205
- darkslateblue7261139
- blueviolet13843226
- rebeccapurple10251153
- indigo750130
- darkviolet1480211
-
-
- mediumorchid18685211
- darkorchid15350204
- fuchsia2550255
- magenta2550255
- violet238130238
- plum221160221
- orchid218112214
-
-
- thistle216191216
- darkmagenta1390139
- purple1280128
- mediumvioletred19921133
- deeppink25520147
- hotpink255105180
- lightpink255182193
-
-
- pink255192203
- crimson2202060
- palevioletred219112147
- aliceblue240248255
- azure240255255
- floralwhite255250240
- ghostwhite248248255
-
-
- honeydew240255240
- ivory255255240
- lavenderblush255240245
- mintcream245255250
- seashell255245238
- snow255250250
- white255255255
-
-
- oldlace253245230
- lavender230230250
- linen250240230
- whitesmoke245245245
- gainsboro220220220
- lightgray211211211
- lightgrey211211211
-
-
- silver192192192
- darkgray169169169
- darkgrey169169169
- gray128128128
- grey128128128
- dimgray105105105
- dimgrey105105105
-
-
- black000
-
-
diff --git a/assets/color_books/sikkens-4041.acb b/assets/color_books/sikkens-4041.acb
new file mode 100644
index 000000000..d1aba92aa
--- /dev/null
+++ b/assets/color_books/sikkens-4041.acb
@@ -0,0 +1,2101 @@
+
+
+
+ SIKKENS 4041
+ 1
+ 0
+
+ Sikkens ON.00.90241239236
+ Sikkens ON.00.81221221218
+ Sikkens ON.00.69192191189
+ Sikkens ON.00.60165163162
+ Sikkens ON.00.50135135134
+ Sikkens ON.00.40108107106
+ Sikkens ON.00.31888686
+
+
+ Sikkens ON.00.21686665
+ Sikkens ON.00.86235234230
+ Sikkens ON.00.76207206205
+ Sikkens ON.00.64179177175
+ Sikkens ON.00.55150150148
+ Sikkens ON.00.45125124124
+ Sikkens ON.00.3610099100
+
+
+ Sikkens ON.00.26777676
+ Sikkens ON.00.15575657
+ Sikkens ON.00.83228229224
+ Sikkens ON.00.78214214211
+ Sikkens ON.00.63176174170
+ Sikkens ON.00.58160159160
+ Sikkens ON.00.53146146146
+
+
+ Sikkens ON.00.33949493
+ Sikkens ON.01.26808182
+ Sikkens ON.00.10454443
+ Sikkens AN.02.82231221221
+ Sikkens AN.01.80223216214
+ Sikkens AN.02.80230218217
+ Sikkens AN.02.77222208209
+
+
+ Sikkens AN.02.65184174174
+ Sikkens AN.02.55157148149
+ Sikkens AN.02.3510599100
+ Sikkens AN.02.25827879
+ Sikkens A0.05.85247223224
+ Sikkens A0.05.75221197201
+ Sikkens A0.05.65194173176
+
+
+ Sikkens A0.05.55163143148
+ Sikkens A0.05.45134119122
+ Sikkens A0.05.3511397101
+ Sikkens A0.05.25867476
+ Sikkens A0.05.15665858
+ Sikkens A0.07.77237204212
+ Sikkens A0.10.75245195206
+
+
+ Sikkens A0.10.70227181194
+ Sikkens A0.10.60194155166
+ Sikkens A0.10.50163129139
+ Sikkens A0.10.40133105113
+ Sikkens A0.10.301057886
+ Sikkens A0.10.20826266
+ Sikkens A0.15.65225162177
+
+
+ Sikkens A0.20.60215140162
+ Sikkens A0.20.50190123143
+ Sikkens A0.20.4015495111
+ Sikkens A0.20.301257592
+ Sikkens A0.20.20965768
+ Sikkens A0.20.12724353
+ Sikkens A6.25.05694548
+
+
+ Sikkens A8.20.60218143151
+ Sikkens A6.30.50201104122
+ Sikkens A0.30.50204104138
+ Sikkens A6.35.4018279107
+ Sikkens A0.30.4016883111
+ Sikkens A0.30.301376693
+ Sikkens A0.41.281494384
+
+
+ Sikkens A0.30.201094669
+ Sikkens B3.19.67239158159
+ Sikkens B2.30.60227126132
+ Sikkens B3.37.51222100111
+ Sikkens B2.40.5021793105
+ Sikkens B0.39.401876990
+ Sikkens B0.39.301515674
+
+
+ Sikkens B0.35.251265163
+ Sikkens B0.25.251186472
+ Sikkens B3.31.54228116124
+ Sikkens B6.40.5021795100
+ Sikkens B6.40.401837481
+ Sikkens B6.50.401925874
+ Sikkens B2.40.401856687
+
+
+ Sikkens B3.49.331714767
+ Sikkens B8.50.201243541
+ Sikkens B6.45.151053946
+ Sikkens B3.14.73247183182
+ Sikkens B3.25.60233139144
+ Sikkens B2.30.50210104116
+ Sikkens B2.30.401678594
+
+
+ Sikkens B0.35.351626884
+ Sikkens B2.30.301366877
+ Sikkens B2.24.251176470
+ Sikkens B2.30.201064653
+ Sikkens B5.08.80248204200
+ Sikkens B2.20.70245166168
+ Sikkens B2.20.60215144146
+
+
+ Sikkens B2.20.50193120125
+ Sikkens B2.20.401509599
+ Sikkens B2.20.301186773
+ Sikkens B2.20.20975961
+ Sikkens B1.16.12694547
+ Sikkens B7.06.83251216211
+ Sikkens B6.20.70243170167
+
+
+ Sikkens B6.30.60232131128
+ Sikkens B6.30.50202107110
+ Sikkens B6.35.401698083
+ Sikkens B6.30.401668485
+ Sikkens B6.30.301356870
+ Sikkens B6.28.19995046
+ Sikkens B3.07.78240203202
+
+
+ Sikkens B6.10.70229184180
+ Sikkens B6.15.65219159155
+ Sikkens B6.20.60216143140
+ Sikkens B6.20.50184120116
+ Sikkens B6.20.401489796
+ Sikkens B6.20.301206869
+ Sikkens B7.28.191004750
+
+
+ Sikkens B2.10.80248206205
+ Sikkens B2.10.70221176175
+ Sikkens B2.10.60197156157
+ Sikkens B2.10.50162125126
+ Sikkens B2.10.40134103106
+ Sikkens B2.10.301088384
+ Sikkens B2.10.25946870
+
+
+ Sikkens B2.10.20846263
+ Sikkens B6.05.85249227223
+ Sikkens B2.05.75229202203
+ Sikkens B2.05.70208185184
+ Sikkens B2.05.65199175177
+ Sikkens B2.05.55167150148
+ Sikkens B1.05.45139122122
+
+
+ Sikkens B3.05.40124110109
+ Sikkens B1.05.351139899
+ Sikkens CN.02.88249243236
+ Sikkens CN.03.86248232226
+ Sikkens CN.02.77220208203
+ Sikkens CN.02.67193184181
+ Sikkens CN.02.57162155153
+
+
+ Sikkens CN.02.47136128127
+ Sikkens CN.02.37111105104
+ Sikkens CN.02.27858079
+ Sikkens C0.04.83247224220
+ Sikkens C0.04.78232212208
+ Sikkens C0.05.75220199196
+ Sikkens C0.05.65194173171
+
+
+ Sikkens C0.05.55166146143
+ Sikkens C0.05.45136121119
+ Sikkens C0.05.35116101100
+ Sikkens C0.05.25867573
+ Sikkens C0.07.82250218211
+ Sikkens C0.07.77236205200
+ Sikkens C0.10.70223182176
+
+
+ Sikkens C0.10.60195158153
+ Sikkens C0.10.50161130128
+ Sikkens C0.10.40137108104
+ Sikkens C0.10.301088683
+ Sikkens C0.10.20816564
+ Sikkens C0.10.80248205197
+ Sikkens C0.15.75247187180
+
+
+ Sikkens C0.15.65223165159
+ Sikkens C0.15.55188135131
+ Sikkens C0.20.50185122115
+ Sikkens C0.20.4015210094
+ Sikkens C0.20.301217470
+ Sikkens C0.30.201004845
+ Sikkens C0.08.80249211202
+
+
+ Sikkens C4.20.70238171155
+ Sikkens C4.20.60205146133
+ Sikkens C4.20.50177123113
+ Sikkens C4.30.50193116100
+ Sikkens C0.30.401578976
+ Sikkens C0.30.301327364
+ Sikkens C0.40.201154841
+
+
+ Sikkens C1.10.79249201188
+ Sikkens C0.20.70248173160
+ Sikkens C0.20.60212144137
+ Sikkens C0.25.55201124119
+ Sikkens C0.25.4517110297
+ Sikkens C0.30.401678579
+ Sikkens C0.30.301255955
+
+
+ Sikkens C4.35.15994642
+ Sikkens C0.17.72246173161
+ Sikkens C0.25.65238151143
+ Sikkens C0.30.60235132126
+ Sikkens C0.30.50207115107
+ Sikkens B8.35.451949690
+ Sikkens C0.40.401858482
+
+
+ Sikkens C0.40.301466362
+ Sikkens C0.40.201103937
+ Sikkens C3.20.73255180163
+ Sikkens C0.28.58226132121
+ Sikkens C0.40.5021210090
+ Sikkens C0.50.401905958
+ Sikkens C0.50.301554750
+
+
+ Sikkens C2.60.251413738
+ Sikkens C2.50.251253936
+ Sikkens C0.45.201134040
+ Sikkens C4.30.60228136117
+ Sikkens C4.40.5020710180
+ Sikkens C4.40.401788367
+ Sikkens C4.50.401867057
+
+
+ Sikkens C3.57.311665048
+ Sikkens C4.40.301516150
+ Sikkens C0.60.301683344
+ Sikkens C0.48.201273340
+ Sikkens C2.24.65237145131
+ Sikkens C2.38.5021610792
+ Sikkens C2.53.401956762
+
+
+ Sikkens C4.60.402025649
+ Sikkens C6.65.351764538
+ Sikkens C4.75.301813334
+ Sikkens C4.60.301664338
+ Sikkens C4.50.301515346
+ Sikkens C4.32.60235136117
+ Sikkens C5.43.5824612498
+
+
+ Sikkens C5.43.5423111597
+ Sikkens C4.46.502219880
+ Sikkens C4.50.502218978
+ Sikkens C4.55.401965836
+ Sikkens C4.49.331646958
+ Sikkens C4.55.301494739
+ Sikkens C8.34.63245146112
+
+
+ Sikkens C8.45.5523511683
+ Sikkens C8.50.5021910275
+ Sikkens C6.49.482078761
+ Sikkens C8.50.401848154
+ Sikkens C8.51.391767849
+ Sikkens C8.60.301575643
+ Sikkens C8.50.301436649
+
+
+ Sikkens C7.26.67247166141
+ Sikkens C8.30.60224141112
+ Sikkens C8.40.6023912896
+ Sikkens C8.40.5021110976
+ Sikkens C8.40.401739170
+ Sikkens C8.40.301346546
+ Sikkens C7.34.241156757
+
+
+ Sikkens C8.40.201095848
+ Sikkens C7.22.72249175152
+ Sikkens C8.25.65234156132
+ Sikkens C8.25.55200133111
+ Sikkens C8.30.5019111592
+ Sikkens C8.25.4517111293
+ Sikkens C8.30.401629777
+
+
+ Sikkens C8.30.301317862
+ Sikkens C8.30.201005745
+ Sikkens C8.15.75243191172
+ Sikkens C8.19.74255189165
+ Sikkens C8.20.70244179157
+ Sikkens C8.20.60219150130
+ Sikkens C8.20.4014610185
+
+
+ Sikkens C8.20.301117157
+ Sikkens C8.20.20916155
+ Sikkens C4.05.20746461
+ Sikkens C8.07.82247217208
+ Sikkens C8.10.80253213200
+ Sikkens C8.10.70219185172
+ Sikkens C8.15.65216166152
+
+
+ Sikkens C8.20.50174126109
+ Sikkens C4.20.401449887
+ Sikkens C4.20.301167768
+ Sikkens C6.22.231006557
+ Sikkens CN.01.90250241235
+ Sikkens C8.04.83242226219
+ Sikkens C8.05.75220199191
+
+
+ Sikkens C8.10.60190159149
+ Sikkens C8.15.55184144131
+ Sikkens C8.16.48163122108
+ Sikkens C9.21.311198169
+ Sikkens C8.25.18936458
+ Sikkens C8.03.78222209204
+ Sikkens C4.05.65195177171
+
+
+ Sikkens C8.05.65191173168
+ Sikkens C8.05.55164147142
+ Sikkens C8.10.50158133124
+ Sikkens C8.10.40133108101
+ Sikkens C8.10.30998074
+ Sikkens C8.10.20846963
+ Sikkens D2.03.86249234223
+
+
+ Sikkens D2.05.80244219208
+ Sikkens D2.10.70222184168
+ Sikkens D2.10.60192162147
+ Sikkens D2.10.50155131121
+ Sikkens D2.10.40129108101
+ Sikkens D2.10.301038780
+ Sikkens D2.10.25876962
+
+
+ Sikkens D2.10.80247211196
+ Sikkens D2.15.75243194170
+ Sikkens D2.15.65210166146
+ Sikkens D2.15.55180142126
+ Sikkens D3.18.4314711396
+ Sikkens D2.20.301147863
+ Sikkens D2.15.25906758
+
+
+ Sikkens D2.15.15826460
+ Sikkens D2.15.80246205184
+ Sikkens D2.20.70234178151
+ Sikkens D2.20.60201147121
+ Sikkens D2.20.50173125103
+ Sikkens D2.20.4014310082
+ Sikkens D2.25.301217857
+
+
+ Sikkens D2.30.301257858
+ Sikkens D2.35.251247152
+ Sikkens D2.30.70241160123
+ Sikkens D2.30.60221144106
+ Sikkens D2.35.5521212990
+ Sikkens D2.30.5018111890
+ Sikkens D2.35.4517210574
+
+
+ Sikkens D2.30.401599768
+ Sikkens D2.40.401639163
+ Sikkens D2.40.301357855
+ Sikkens D4.23.71237168131
+ Sikkens D6.35.70244159107
+ Sikkens D2.40.6023613690
+ Sikkens D2.50.5523912269
+
+
+ Sikkens D2.40.5019711276
+ Sikkens D2.50.5020510261
+ Sikkens D2.50.301437143
+ Sikkens D4.30.201016246
+ Sikkens D9.25.74251187142
+ Sikkens D7.41.6022914690
+ Sikkens D6.47.6124214079
+
+
+ Sikkens D6.58.5824412248
+ Sikkens D5.63.5323510836
+ Sikkens D3.71.482299037
+ Sikkens D3.65.432078535
+ Sikkens D1.58.401947941
+ Sikkens D9.40.6825016599
+ Sikkens D6.50.6023813565
+
+
+ Sikkens D8.65.5023010930
+ Sikkens D6.60.5021010337
+ Sikkens D6.50.5020210955
+ Sikkens D6.60.401768835
+ Sikkens D6.50.401679046
+ Sikkens D6.50.301427543
+ Sikkens D8.37.65239160102
+
+
+ Sikkens D6.40.6022814084
+ Sikkens D6.35.5520313592
+ Sikkens D6.40.5019711466
+ Sikkens D6.40.401589151
+ Sikkens D6.40.301277648
+ Sikkens D6.30.301258360
+ Sikkens D6.30.20946348
+
+
+ Sikkens D6.25.70247181141
+ Sikkens D6.30.70245169124
+ Sikkens D6.30.60219145103
+ Sikkens D6.25.65223161125
+ Sikkens D6.30.5017912388
+ Sikkens D6.35.4517211275
+ Sikkens D6.30.401489662
+
+
+ Sikkens D6.25.301178261
+ Sikkens D6.20.80251195162
+ Sikkens D6.20.70228173142
+ Sikkens D6.20.60202153125
+ Sikkens D6.25.55192137108
+ Sikkens D6.20.50173128102
+ Sikkens D6.20.4013810079
+
+
+ Sikkens D6.20.301087759
+ Sikkens D6.20.20866451
+ Sikkens D7.10.82251217198
+ Sikkens D6.10.80245214196
+ Sikkens D6.15.75239197175
+ Sikkens D6.15.65210170147
+ Sikkens D6.15.55175141121
+
+
+ Sikkens D6.10.4012810997
+ Sikkens D6.15.25916956
+ Sikkens D6.10.20837163
+ Sikkens D6.05.65242223212
+ Sikkens D6.07.82242218203
+ Sikkens D6.07.77229204189
+ Sikkens D6.10.70213182164
+
+
+ Sikkens D6.10.60185156139
+ Sikkens D6.10.50155134121
+ Sikkens D6.10.30998374
+ Sikkens E0.05.25797064
+ Sikkens DN.02.82233224218
+ Sikkens D6.04.78229217207
+ Sikkens D6.05.75223205195
+
+
+ Sikkens D6.05.65196180171
+ Sikkens D6.05.55165151144
+ Sikkens D6.05.45138127121
+ Sikkens D6.05.3511210398
+ Sikkens D6.05.25867773
+ Sikkens E0.03.88247236226
+ Sikkens E0.03.84243231221
+
+
+ Sikkens E0.05.75217201188
+ Sikkens E0.10.70215187168
+ Sikkens E0.10.60182158143
+ Sikkens E0.10.50152131116
+ Sikkens E0.05.45136125117
+ Sikkens E0.10.30998778
+ Sikkens E0.10.80243215196
+
+
+ Sikkens E1.14.79247209179
+ Sikkens E0.15.75239197167
+ Sikkens E0.15.65205171146
+ Sikkens E0.15.55175144121
+ Sikkens E0.15.45145119100
+ Sikkens E0.10.4012710995
+ Sikkens E0.15.351179476
+
+
+ Sikkens E0.20.80252202162
+ Sikkens E0.20.70231183145
+ Sikkens E0.25.65220168127
+ Sikkens E0.20.60193152120
+ Sikkens E0.20.50167129103
+ Sikkens E0.25.4516111988
+ Sikkens E0.20.4013510277
+
+
+ Sikkens E0.20.301087654
+ Sikkens E0.25.75250189141
+ Sikkens E0.30.70245179127
+ Sikkens E1.21.69225178139
+ Sikkens E0.30.60207152109
+ Sikkens E0.25.55187141105
+ Sikkens E0.30.5017112182
+
+
+ Sikkens E0.30.4014610165
+ Sikkens E0.25.351289467
+ Sikkens E0-35.65230163108
+ Sikkens E0.40.6021514386
+ Sikkens E0.35.5519813787
+ Sikkens E0.45.5521112964
+ Sikkens E0.50.5019811756
+
+
+ Sikkens E0.40.5018812070
+ Sikkens E0.40.4015910253
+ Sikkens E0.45.301398747
+ Sikkens E0.40.7024816396
+ Sikkens E0.50.6525015065
+ Sikkens E0.50.6023413862
+ Sikkens E0.60.5020311540
+
+
+ Sikkens E0.60.401679334
+ Sikkens E0.50.401629546
+ Sikkens E0.48.301297838
+ Sikkens E0.30.20986848
+ Sikkens E4.50.7025016674
+ Sikkens E4.50.6022214458
+ Sikkens E4.60.6023514132
+
+
+ Sikkens E4.60.5019511730
+ Sikkens E4.50.5018912248
+ Sikkens E4.50.401579738
+ Sikkens E0.40.301227842
+ Sikkens E0.30.301208151
+ Sikkens E5.27.77255201142
+ Sikkens E4.30.75249189126
+
+
+ Sikkens E4.40.7025117798
+ Sikkens E4.40.6021414981
+ Sikkens E4.40.5018612867
+ Sikkens E4.40.4014510053
+ Sikkens E4.40.301198042
+ Sikkens E5.35.251007247
+ Sikkens E6.19.80255213165
+
+
+ Sikkens E4.30.70233176118
+ Sikkens E4.30.60204156107
+ Sikkens E4.30.5016612581
+ Sikkens E1.22.4716713099
+ Sikkens E4.30.4013910263
+ Sikkens E4.30.301148762
+ Sikkens E4.30.20866238
+
+
+ Sikkens E4.20.80252210169
+ Sikkens E4.25.75245188133
+ Sikkens E4.25.65214166122
+ Sikkens E1.26.54193146104
+ Sikkens E4.25.55184142102
+ Sikkens E4.25.351229466
+ Sikkens E4.25.301148660
+
+
+ Sikkens E4.15.25917560
+ Sikkens E4.10.85251225195
+ Sikkens E3.20.77247200159
+ Sikkens E4.20.75243197153
+ Sikkens E4.20.70221183146
+ Sikkens E4.20.60196158127
+ Sikkens E4.20.50167135106
+
+
+ Sikkens E4.20.4013711082
+ Sikkens E4.20.30997553
+ Sikkens E5.08.84248227205
+ Sikkens E4.07.82240220199
+ Sikkens E4.10.80245220193
+ Sikkens E4.15.75233199166
+ Sikkens E4.15.65205171141
+
+
+ Sikkens E4.15.55175147122
+ Sikkens E4.15.4513911694
+ Sikkens E4.15.351179577
+ Sikkens E4.03.80222214207
+ Sikkens E4.05.75216204191
+ Sikkens E4.07.77223206189
+ Sikkens E4.10.70209189171
+
+
+ Sikkens E4.10.60179160142
+ Sikkens E4.10.50153134117
+ Sikkens E4.10.4012010796
+ Sikkens E4.10.30928069
+ Sikkens E4.05.85246231218
+ Sikkens E6.07.84246228210
+ Sikkens E1.09.78234210190
+
+
+ Sikkens E3.09.72214194175
+ Sikkens E0.11.67204179159
+ Sikkens E0.09.53161142127
+ Sikkens E8.10.4012311096
+ Sikkens E8.10.301019078
+ Sikkens EN.02.88246238230
+ Sikkens EN.02.87246238230
+
+
+ Sikkens EN.02.85238232225
+ Sikkens E5.05.77214201185
+ Sikkens E4.05.65186174163
+ Sikkens E4.05.55158148140
+ Sikkens E4.05.3510810094
+ Sikkens E4.05.20736864
+ Sikkens EN.02.90249243236
+
+
+ Sikkens E4.04.83238226213
+ Sikkens E8.05.80231219204
+ Sikkens E8.07.77225210192
+ Sikkens E8.05.70204194183
+ Sikkens E8.03.60172165159
+ Sikkens E4.05.45131122114
+ Sikkens E4.05.25837772
+
+
+ Sikkens E8.10.85251229205
+ Sikkens E8.10.80235218196
+ Sikkens E8.10.75221201176
+ Sikkens E8.10.70211190167
+ Sikkens E8.10.60176160142
+ Sikkens E8.10.50149134118
+ Sikkens E8.15.351109576
+
+
+ Sikkens E8.10.25948577
+ Sikkens E8.15.85251225192
+ Sikkens E8.15.80243214180
+ Sikkens E6.18.76241204163
+ Sikkens E8.15.75223196164
+ Sikkens E8.15.65201176146
+ Sikkens E8.15.55171149123
+
+
+ Sikkens E8.15.4513811998
+ Sikkens E8.20.4013411388
+ Sikkens E8.20.80247211165
+ Sikkens E8.20.75240204155
+ Sikkens E8.20.70217184140
+ Sikkens E8.25.65209170120
+ Sikkens E8.20.60186155119
+
+
+ Sikkens E8.20.50160134104
+ Sikkens E8.25.4514812087
+ Sikkens E8.20.301048665
+ Sikkens E8.25.80255210147
+ Sikkens E8.25.75239195140
+ Sikkens E8.30.70231183118
+ Sikkens E8.35.65217168101
+
+
+ Sikkens E8.30.60196156106
+ Sikkens E8.25.55180146105
+ Sikkens E5.21.49166135101
+ Sikkens E8.30.4013510665
+ Sikkens E8.35.75252190115
+ Sikkens E8.40.7024017694
+ Sikkens E8.40.6021215478
+
+
+ Sikkens E8.35.5519214788
+ Sikkens E8.35.4515711765
+ Sikkens E8.40.4014310452
+ Sikkens E8.25.351189464
+ Sikkens E8.30.301128756
+ Sikkens E9.44.7325218888
+ Sikkens E8.50.7024417663
+
+
+ Sikkens E8.55.7025117050
+ Sikkens E8.60.6022814723
+ Sikkens E8.50.6021415458
+ Sikkens E8.50.5018613149
+ Sikkens E8.40.5017813065
+ Sikkens E8.55.4517911843
+ Sikkens E9.29.79255207135
+
+
+ Sikkens E7.36.76255195113
+ Sikkens F0.40.7023918393
+ Sikkens E8.49.7325518471
+ Sikkens E6.58.6524016139
+ Sikkens E7.72.582211390
+ Sikkens E6.63.5320413024
+ Sikkens E6.63.4718211523
+
+
+ Sikkens F3.40.77254204100
+ Sikkens F2.45.7525519271
+ Sikkens F2.55.7525218739
+ Sikkens F2.50.7023817955
+ Sikkens F2.70.652401670
+ Sikkens F2.60.7023817640
+ Sikkens F2.60.6021115116
+
+
+ Sikkens F2.50.5016912744
+ Sikkens F3.33.80255214125
+ Sikkens F2.35.80254205113
+ Sikkens F2.40.7023318488
+ Sikkens F2.50.6522216853
+ Sikkens F2.50.6020715750
+ Sikkens F2.50.5519114544
+
+
+ Sikkens F2.50.4014610631
+ Sikkens F2.40.301158434
+ Sikkens F5.20.80242218164
+ Sikkens F2.30.80249211140
+ Sikkens F2.35.75243197115
+ Sikkens F2.35.6521116999
+ Sikkens F2.40.6019915780
+
+
+ Sikkens F2.40.5016913361
+ Sikkens F2.40.4013810647
+ Sikkens F2.30.301058651
+ Sikkens F2.25.75232199141
+ Sikkens F2.30.70221185118
+ Sikkens F2.25.65205175121
+ Sikkens F2.30.60194159100
+
+
+ Sikkens F2.25.55180150103
+ Sikkens F2.30.5016513787
+ Sikkens F2.25.4514311879
+ Sikkens F2.30.4013611168
+ Sikkens F2.15.85251223185
+ Sikkens F0.20.80244211167
+ Sikkens F0.24.80254214154
+
+
+ Sikkens F0.25.75240205149
+ Sikkens F0.30.70229186122
+ Sikkens F0.25.70214178128
+ Sikkens F1.22.52161137100
+ Sikkens F2.20.4012810979
+ Sikkens F0.10.85247228203
+ Sikkens F0.17.80242214170
+
+
+ Sikkens F2.15.80239215175
+ Sikkens F2.20.80242212163
+ Sikkens F2.20.70217189145
+ Sikkens F2.20.60187162123
+ Sikkens F2.20.50154133100
+ Sikkens F2.20.30998257
+ Sikkens F2.08.86249233210
+
+
+ Sikkens F2.10.80234216190
+ Sikkens F0.15.75222199166
+ Sikkens F2.15.75229204166
+ Sikkens F2.15.65193173141
+ Sikkens F2.15.55164146118
+ Sikkens F2.15.4513712196
+ Sikkens F2.15.351119878
+
+
+ Sikkens F2.07.88250238219
+ Sikkens F2.06.84239228211
+ Sikkens F2.06.74214206190
+ Sikkens F2.10.70208192170
+ Sikkens F2.10.60176163143
+ Sikkens F2.10.50150138121
+ Sikkens F2.10.4011911095
+
+
+ Sikkens F2.10.30948470
+ Sikkens F2.05.87248239222
+ Sikkens F2.05.85243232216
+ Sikkens F2.03.84235229221
+ Sikkens F2.05.75211203191
+ Sikkens F2.05.65184176165
+ Sikkens F2.05.55160154145
+
+
+ Sikkens F2.05.45129124116
+ Sikkens F2.05.351059890
+ Sikkens FN.02.88241235224
+ Sikkens FN.02.82227221212
+ Sikkens FN.02.77211207199
+ Sikkens FN.02.67179176168
+ Sikkens FN.02.57159155148
+
+
+ Sikkens FN.02.47132129124
+ Sikkens FN.02.3710710499
+ Sikkens FN.02.27848176
+ Sikkens F6.03.87243236225
+ Sikkens F6.03.72203198189
+ Sikkens F6.05.70200191178
+ Sikkens F6.05.60168161149
+
+
+ Sikkens F6.05.50144139128
+ Sikkens F6.05.40117111103
+ Sikkens F6.05.30948981
+ Sikkens F6.03.20686562
+ Sikkens FN.02.85233230222
+ Sikkens F6.05.80227222204
+ Sikkens F6.10.80229215190
+
+
+ Sikkens F6.10.70200186162
+ Sikkens F6.10.60174162139
+ Sikkens F6.10.50151141123
+ Sikkens F6.10.4012011196
+ Sikkens F6.10.30938776
+ Sikkens F2.03.88245239227
+ Sikkens F6.07.77218206187
+
+
+ Sikkens F6.15.75218200164
+ Sikkens F6.15.65190175144
+ Sikkens F6.15.55166152124
+ Sikkens F8.16.48143132105
+ Sikkens F6.15.45139127102
+ Sikkens F6.15.3511310282
+ Sikkens F6.07.82237225203
+
+
+ Sikkens F6.15.80235216175
+ Sikkens F6.20.80238213164
+ Sikkens F6.20.70210190145
+ Sikkens F6.20.60177158116
+ Sikkens F6.20.50151134100
+ Sikkens F6.20.4012611179
+ Sikkens F6.20.30938257
+
+
+ Sikkens F6.05.85242236221
+ Sikkens F6.15.85248228187
+ Sikkens F6.25.80244216148
+ Sikkens F6.25.75231206149
+ Sikkens F6.25.70212189129
+ Sikkens F6.25.65201176119
+ Sikkens F6.30.5015413280
+
+
+ Sikkens F6.30.301048956
+ Sikkens F6.09.86250236209
+ Sikkens F6.20.83249227172
+ Sikkens F6.26.81252219148
+ Sikkens F6.35.75232197112
+ Sikkens F6.30.70222188106
+ Sikkens F6.35.65203174103
+
+
+ Sikkens F6.30.60186162104
+ Sikkens F6.30.4013311677
+ Sikkens F6.25.85252223158
+ Sikkens F6.30.80251214136
+ Sikkens F6.40.80251207103
+ Sikkens F6.40.7022318789
+ Sikkens F6.40.6019416175
+
+
+ Sikkens F6.40.5015612956
+ Sikkens F6.40.4013411156
+ Sikkens F6.40.301028742
+ Sikkens F8.15.80233216173
+ Sikkens F8.20.80235215166
+ Sikkens F8.20.75224208159
+ Sikkens F8.30.70214190120
+
+
+ Sikkens F8.40.70219191100
+ Sikkens F8.40.6019116477
+ Sikkens F8.45.5518315558
+ Sikkens F8.41.4614912862
+ Sikkens F8.25.81239216151
+ Sikkens F8.30.80244214134
+ Sikkens F6.45.7524119574
+
+
+ Sikkens F6.55.7524719854
+ Sikkens F6.50.7022618752
+ Sikkens F6.50.6019016053
+ Sikkens F6.50.5016513141
+ Sikkens F6.50.4013711040
+ Sikkens G0.31.84247222130
+ Sikkens F8.40.80253218105
+
+
+ Sikkens F8.50.8025321068
+ Sikkens F8.60.8025521236
+ Sikkens F6.60.7022718318
+ Sikkens F6.70.702351840
+ Sikkens F6.60.6019815833
+ Sikkens F6.55.5417914435
+ Sikkens G0.35.85246226131
+
+
+ Sikkens G0.40.80241216109
+ Sikkens G0.45.8025122097
+ Sikkens G0.50.8024721972
+ Sikkens G0.55.8024821952
+ Sikkens G0.60.702231902
+ Sikkens G0.55.7021918937
+ Sikkens G0.60.6018715927
+
+
+ Sikkens G3.34.84249231128
+ Sikkens G2.51.8124622474
+ Sikkens G1.57.7924121543
+ Sikkens G0.60.7523220613
+ Sikkens G0.70.762422120
+ Sikkens G0.50.7021718761
+ Sikkens G0.50.6018716147
+
+
+ Sikkens G0.50.5016014042
+ Sikkens G5.27.85246237154
+ Sikkens G4.34.84245234132
+ Sikkens G3.46.8324622885
+ Sikkens G0.35.75225204110
+ Sikkens G0.40.7020518492
+ Sikkens G0.40.6018015975
+
+
+ Sikkens G0.40.5015013661
+ Sikkens G0.40.4012511148
+ Sikkens G0.25.85250229158
+ Sikkens G0.30.80239216134
+ Sikkens G0.25.75225206144
+ Sikkens G0.30.70212190117
+ Sikkens G0.25.65198179120
+
+
+ Sikkens G0.30.60180162100
+ Sikkens G0.30.5015113783
+ Sikkens G0.30.30988952
+ Sikkens G0.15.85249235188
+ Sikkens G0.20.80237219163
+ Sikkens G0.20.70207191140
+ Sikkens G0.20.60180165122
+
+
+ Sikkens G0.20.5014613598
+ Sikkens G0.20.4012411482
+ Sikkens G0.20.30958762
+ Sikkens G0.20.20736750
+ Sikkens GN.02.90246242230
+ Sikkens G0.08.84235224196
+ Sikkens G0.10.80227214186
+
+
+ Sikkens G0.10.75214203174
+ Sikkens G0.15.75217201161
+ Sikkens G0.15.65186174140
+ Sikkens G0.10.50144137117
+ Sikkens G0.10.30928773
+ Sikkens G0.05.88245239219
+ Sikkens G0.08.88248238211
+
+
+ Sikkens G0.09.85242233204
+ Sikkens G1.13.79227216179
+ Sikkens G0.10.70202193166
+ Sikkens G0.10.65187179157
+ Sikkens G0.10.60172163142
+ Sikkens G0.10.4011510994
+ Sikkens GN.01.88246245234
+
+
+ Sikkens G4.04.88245240223
+ Sikkens G0.05.85235229210
+ Sikkens G0.05.75212206190
+ Sikkens G0.05.65182178165
+ Sikkens G0.05.55157152141
+ Sikkens G0.05.45128125116
+ Sikkens G0.05.25747166
+
+
+ Sikkens GN.00.88239239236
+ Sikkens G4.03.88245242231
+ Sikkens G0.03.86235232219
+ Sikkens G0.04.84233228214
+ Sikkens G0.05.80224217202
+ Sikkens G0.05.70197191177
+ Sikkens G4.05.55157154144
+
+
+ Sikkens G0.05.3510310093
+ Sikkens G4.04.84237233217
+ Sikkens G4.08.83234229204
+ Sikkens G4.05.81224220205
+ Sikkens G4.07.80225217197
+ Sikkens G4.05.77214209194
+ Sikkens G4.10.70198190162
+
+
+ Sikkens G4.10.60171166145
+ Sikkens G8.10.4011411396
+ Sikkens G4.08.88247243218
+ Sikkens G4.13.85244235196
+ Sikkens G4.15.85241232185
+ Sikkens G4.10.80227223196
+ Sikkens G4.15.75211204163
+
+
+ Sikkens G4.20.70205198147
+ Sikkens G4.15.65186179146
+ Sikkens G4.20.5014113496
+ Sikkens G8.06.90244241221
+ Sikkens G8.06.85233230209
+ Sikkens G8.10.85239234204
+ Sikkens G8.10.80227224188
+
+
+ Sikkens G8.10.70194192167
+ Sikkens G8.10.60166165140
+ Sikkens G8.10.50141138119
+ Sikkens G8.10.30858369
+ Sikkens G9.13.85237236192
+ Sikkens G8.20.85236231173
+ Sikkens G8.20.80222219162
+
+
+ Sikkens G8.20.70196196146
+ Sikkens G8.20.60170169124
+ Sikkens G8.20.5013913799
+ Sikkens G8.20.4011611683
+ Sikkens G8.20.30908861
+ Sikkens G7.18.87246242182
+ Sikkens G8.20.90242241177
+
+
+ Sikkens G8.30.85238240144
+ Sikkens G8.30.80225227136
+ Sikkens G8.30.70199195117
+ Sikkens G8.30.60171168102
+ Sikkens G8.30.5014414485
+ Sikkens G8.30.30919153
+ Sikkens G5.24.85246237159
+
+
+ Sikkens G5.36.83242232119
+ Sikkens G8.40.80225229111
+ Sikkens G8.40.7019819784
+ Sikkens G8.40.6016516673
+ Sikkens G8.40.5014013962
+ Sikkens G8.30.4011511564
+ Sikkens G8.30.20696838
+
+
+ Sikkens G3.26.85248236164
+ Sikkens G4.30.80234224145
+ Sikkens G4.30.70203190112
+ Sikkens G4.40.7020719390
+ Sikkens G4.40.6017516371
+ Sikkens G4.30.6017616799
+ Sikkens G4.30.5014914083
+
+
+ Sikkens G4.25.3510910567
+ Sikkens G4.40.80232218103
+ Sikkens G4.50.8023021670
+ Sikkens G4.50.7019919158
+ Sikkens G4.60.7020019110
+ Sikkens G4.60.601771640
+ Sikkens G4.50.6017316145
+
+
+ Sikkens G4.40.5014913959
+ Sikkens G4.50.5015014040
+ Sikkens G8.45.8021722173
+ Sikkens G8.50.7018819250
+ Sikkens G7.57.6618519042
+ Sikkens G8.60.6017017021
+ Sikkens G8.50.6016416852
+
+
+ Sikkens G8.50.5014214036
+ Sikkens G8.40.4011711953
+ Sikkens G8.40.30919344
+ Sikkens H1.39.83222236115
+ Sikkens G9.56.7620421950
+ Sikkens G8.60.7018919726
+ Sikkens H2.55.6516418846
+
+
+ Sikkens H2.60.6015117516
+ Sikkens H2.50.6015617149
+ Sikkens H2.50.5013214240
+ Sikkens H2.45.4512013352
+ Sikkens G9.27.84232236151
+ Sikkens G9.35.84230236126
+ Sikkens H2.40.80214224102
+
+
+ Sikkens H2.45.7519721488
+ Sikkens H2.50.7018020061
+ Sikkens H2.40.7018720094
+ Sikkens H2.40.6016216977
+ Sikkens H2.40.5013814769
+ Sikkens H2.15.85234240187
+ Sikkens H2.30.80211223134
+
+
+ Sikkens H3.24,78210220151
+ Sikkens H2.20.70191196142
+ Sikkens H2.30.70187195118
+ Sikkens H2.30.60159170101
+ Sikkens H2.30.5013314084
+ Sikkens H2.35.30889248
+ Sikkens H4.06.85234237216
+
+
+ Sikkens H2.07.87239239213
+ Sikkens H6.06.80220222198
+ Sikkens H3.12.78211216180
+ Sikkens H4.16.70187195153
+ Sikkens H3.18.60162168127
+ Sikkens H2.20.5013714099
+ Sikkens H2.25.30868959
+
+
+ Sikkens H2.08.90245244216
+ Sikkens H2.04.88241241223
+ Sikkens H2.08.80224222200
+ Sikkens H2.10.80221221193
+ Sikkens H2.10.70190192165
+ Sikkens H2.10.60166169144
+ Sikkens H3.10.43120122104
+
+
+ Sikkens H2.12.25787965
+ Sikkens H2.03.90246245229
+ Sikkens HN.02.85233233222
+ Sikkens HN.02.88240239231
+ Sikkens H2.03.82224225214
+ Sikkens H3.04.72197198185
+ Sikkens H2.05.65178178166
+
+
+ Sikkens H2.05.55150149136
+ Sikkens H2.05.45131132123
+ Sikkens J0.04.88239243226
+ Sikkens JN.02.82222226217
+ Sikkens J0.05.75201207188
+ Sikkens J0.05.65176180165
+ Sikkens J0.05.55149152139
+
+
+ Sikkens J0.05.45124126116
+ Sikkens J0.05.3510010294
+ Sikkens J0.05.25767770
+ Sikkens J0.05.85227230211
+ Sikkens J0.07.82221228204
+ Sikkens J0.07.77207214190
+ Sikkens J0.10.70185193167
+
+
+ Sikkens J0.10.60162168147
+ Sikkens J0.10.50134140120
+ Sikkens J0.10.4011011499
+ Sikkens J0.10.30868975
+ Sikkens J0.15.85221238189
+ Sikkens J0.10.80209220189
+ Sikkens J0.15.75197210166
+
+
+ Sikkens J0.15.65170183145
+ Sikkens J0.20.60154170123
+ Sikkens J0.20.50123139100
+ Sikkens J0.20.4010511683
+ Sikkens J0.15.25778365
+ Sikkens J0.20.80203225165
+ Sikkens J0.20.70178196146
+
+
+ Sikkens J0.30.70171197120
+ Sikkens J0.30.60147170105
+ Sikkens J0.30.5012714690
+ Sikkens J0.30.409711769
+ Sikkens J0.20.30818961
+ Sikkens J0.20.20657254
+ Sikkens H9.21.83214235173
+
+
+ Sikkens J0.30.80198224139
+ Sikkens J0.40.7015520198
+ Sikkens J0.40.6013817482
+ Sikkens J0.40.5011014261
+ Sikkens J0.40.409612059
+ Sikkens J0.30.30879962
+ Sikkens J0.30.20627240
+
+
+ Sikkens H7.22.83214235164
+ Sikkens H7.38.79195229113
+ Sikkens J0.48.7015520476
+ Sikkens J0.50.6012717358
+ Sikkens J0.50.5010814749
+ Sikkens J0.60.5010614932
+ Sikkens J0.50.409212041
+
+
+ Sikkens J0.40.30749437
+ Sikkens J1.21.83208235174
+ Sikkens J6.26.76163213141
+ Sikkens J8.41.70135211114
+ Sikkens J6.39.63132189102
+ Sikkens J6.45.5310416074
+ Sikkens J6.51.437913457
+
+
+ Sikkens J7.41.357411156
+ Sikkens J4.44.25558340
+ Sikkens J9.19.80191230177
+ Sikkens K0.28.76164221149
+ Sikkens J8.48.6411419686
+ Sikkens K2.50.608418182
+ Sikkens K2.50.506815368
+
+
+ Sikkens K2.50.406113058
+ Sikkens K2.60.404313547
+ Sikkens K6.50.304510455
+ Sikkens J6.11.83206229193
+ Sikkens K0.26.76168221154
+ Sikkens K2.40.70128208116
+ Sikkens K2.40.60110178100
+
+
+ Sikkens K2.40.508815384
+ Sikkens K2.40.407312467
+ Sikkens K2.40.30579852
+ Sikkens K2.45.20477946
+ Sikkens K0.19.78189227178
+ Sikkens K5.21.77168221172
+ Sikkens K6.34.67123200131
+
+
+ Sikkens K5.44.6492197107
+ Sikkens K7.48.566117796
+ Sikkens K7.58.44814269
+ Sikkens K7.60.30010545
+ Sikkens K4.54.23418744
+ Sikkens K2.10.80203224197
+ Sikkens K2.21.72162208156
+
+
+ Sikkens K2.30.70144205135
+ Sikkens K2.30.60120174114
+ Sikkens K2.30.5010515098
+ Sikkens K2.30.407911975
+ Sikkens K2.30.30669863
+ Sikkens K2.29.20527351
+ Sikkens K0.09.85217239210
+
+
+ Sikkens K2.20.80184228175
+ Sikkens K2.20.70163201155
+ Sikkens K2.20.60137171128
+ Sikkens K2.20.50119147113
+ Sikkens K2.20.4510012698
+ Sikkens K2.20.409211687
+ Sikkens K2.20.30729268
+
+
+ Sikkens K2.09.79199218192
+ Sikkens K2.10.70177196169
+ Sikkens K2.15.65161186154
+ Sikkens K2.10.60154169150
+ Sikkens K2.10.50127141121
+ Sikkens K2.10.4010011295
+ Sikkens K2.10.30809076
+
+
+ Sikkens K2.10.20626758
+ Sikkens KN.02.87236242230
+ Sikkens K2.05.85228237223
+ Sikkens K2.05.75201210196
+ Sikkens K2.05.65167177164
+ Sikkens K2.05.50130136126
+ Sikkens K2.05.43114120111
+
+
+ Sikkens K3.06.34939891
+ Sikkens K2.05.25697466
+ Sikkens LN.02.88232240234
+ Sikkens LN.02.86230239232
+ Sikkens LN.02.77204211202
+ Sikkens LN.02.67180185178
+ Sikkens LN.02.57151155150
+
+
+ Sikkens LN.02.47124127122
+ Sikkens LN.02.379910499
+ Sikkens LN.02.27788177
+ Sikkens L0.03.88216227217
+ Sikkens L0.04.78203216204
+ Sikkens L0.05.75194207194
+ Sikkens L0.05.65169179170
+
+
+ Sikkens L0.05.55143153143
+ Sikkens L0.05.45117125117
+ Sikkens L0.05.359410194
+ Sikkens L0.05.25737973
+ Sikkens L0.05.85219236220
+ Sikkens L0.07.82208230210
+ Sikkens L0.07.77196219198
+
+
+ Sikkens L0.10.70178201180
+ Sikkens L0.10.60144164147
+ Sikkens L0.10.50126144129
+ Sikkens L0.10.4098115101
+ Sikkens L0.10.30799281
+ Sikkens L3.10.82200233210
+ Sikkens L0.15.75171212175
+
+
+ Sikkens L0.15.65147184155
+ Sikkens L0.15.55127157130
+ Sikkens K8.23.4598135101
+ Sikkens L0.20.30689473
+ Sikkens L0.20.20487053
+ Sikkens L0.15.20567058
+ Sikkens L0.10.80192223197
+
+
+ Sikkens L0.20.70150198159
+ Sikkens L0.20.60129171135
+ Sikkens L0.20.50108148115
+ Sikkens L0.20.409111996
+ Sikkens L0.30.30499260
+ Sikkens L0.35.20417251
+ Sikkens L0.20.15446250
+
+
+ Sikkens L3.17.75153211176
+ Sikkens L0.30.60101173123
+ Sikkens L0.30.5086149103
+ Sikkens L0.30.406412180
+ Sikkens L0.40.355511573
+ Sikkens L0.40.30409761
+ Sikkens L0.30.20417148
+
+
+ Sikkens L0.15.15455545
+ Sikkens L0.30.70128209149
+ Sikkens L0.40.6084185117
+ Sikkens L0.50.503815381
+ Sikkens L0.40.506614894
+ Sikkens L0.40.404812073
+ Sikkens L0.50.403113070
+
+
+ Sikkens L0.70.40013157
+ Sikkens L0.50.302811061
+ Sikkens L9.13.79178226199
+ Sikkens L5.21.73146211174
+ Sikkens L4.32.66102200144
+ Sikkens L8.40.6054186130
+ Sikkens L5.47.526162105
+
+
+ Sikkens L5.60.43014179
+ Sikkens L5.63.33011465
+ Sikkens L6.59.2308651
+ Sikkens L8.20.70141204172
+ Sikkens L8.30.70104206159
+ Sikkens L8.30.6098182143
+ Sikkens L8.50.500160103
+
+
+ Sikkens L8.50.40013185
+ Sikkens L8.40.352411783
+ Sikkens L8.40.302310171
+ Sikkens L8.50.30010370
+ Sikkens L8.05.85219237223
+ Sikkens L8.05.75191206196
+ Sikkens L8.10.60146171157
+
+
+ Sikkens L8.19.60116174145
+ Sikkens L8.20.5099146122
+ Sikkens L8.30.5073151113
+ Sikkens L8.30.405812192
+ Sikkens L8.30.30519675
+ Sikkens M5.09.83205236219
+ Sikkens L8.10.80188223202
+
+
+ Sikkens L9.17.79172230201
+ Sikkens M2.20.75138213186
+ Sikkens M2.40.6046186140
+ Sikkens M2.30.6090181146
+ Sikkens M2.40.5018157118
+ Sikkens M2.30.5072151121
+ Sikkens M8.06.85214239228
+
+
+ Sikkens N0.12.78176221207
+ Sikkens N1.21.65119192177
+ Sikkens N1.37.5528168147
+ Sikkens N0.40.500150128
+ Sikkens N0.50.500156130
+ Sikkens N0.50.400129107
+ Sikkens N0.40.30010187
+
+
+ Sikkens M8.11.81192232217
+ Sikkens M8.19.72139211195
+ Sikkens N0.28.7099208183
+ Sikkens N0.30.6085179160
+ Sikkens N0.30.5060152133
+ Sikkens N0.40.400128108
+ Sikkens N0.30.4047119104
+
+
+ Sikkens N0.40.2067866
+ Sikkens N0.10.80188223214
+ Sikkens N0.20.70137200184
+ Sikkens N0.20.60120178162
+ Sikkens N0.20.5095150136
+ Sikkens N0.20.4073120108
+ Sikkens N0.20.30589686
+
+
+ Sikkens N0.20.20417063
+ Sikkens N0.15.10415148
+ Sikkens N0.05.85222236232
+ Sikkens N8.09.81196231227
+ Sikkens N0.10.70165199188
+ Sikkens N0.10.60145174165
+ Sikkens N0.10.50116141133
+
+
+ Sikkens N0.10.4092113107
+ Sikkens N0.10.30739085
+ Sikkens N0.10.20596966
+ Sikkens NN.01.84227229227
+ Sikkens N7.04.73189204201
+ Sikkens N6.08.70171196191
+ Sikkens N1.06.88172189184
+
+
+ Sikkens N0.05.65172184180
+ Sikkens N1.05.55138152148
+ Sikkens N0.05.44114124121
+ Sikkens M8.06.349010197
+ Sikkens PN.02.82218228226
+ Sikkens PN.02.77203212210
+ Sikkens P0.05.75191208204
+
+
+ Sikkens P0.05.65165180178
+ Sikkens P0.03.60160167165
+ Sikkens P0.03.55141148148
+ Sikkens P0.03.359110098
+ Sikkens P0.05.25727877
+ Sikkens P0.05.83211230226
+ Sikkens P0.07.85212234230
+
+
+ Sikkens P0.07.77191217214
+ Sikkens P0.06.74185208205
+ Sikkens P5.08.58144164164
+ Sikkens P0.05.55138153150
+ Sikkens P0.05.45119130128
+ Sikkens P0.10.30719189
+ Sikkens P1.03.79211222220
+
+
+ Sikkens P0.04.78200216214
+ Sikkens P0.10.70163197193
+ Sikkens P1.11.63147178177
+ Sikkens P0.10.60143170167
+ Sikkens P0.10.50118144142
+ Sikkens P0.10.4097117117
+ Sikkens P0.10.20536765
+
+
+ Sikkens P4.10.75178208207
+ Sikkens P1.09.69166194193
+ Sikkens P0.15.65138185181
+ Sikkens P0.15.55116156153
+ Sikkens P0.15.4598129126
+ Sikkens P0.15.3576106104
+ Sikkens P0.20.30579491
+
+
+ Sikkens P0.20.20426968
+ Sikkens P0.10.80189227223
+ Sikkens P0.20.70129203197
+ Sikkens P0.20.60110175170
+ Sikkens P0.20.5094148145
+ Sikkens P0.30.4051127123
+ Sikkens P0.20.4078122120
+
+
+ Sikkens P0.30.30379995
+ Sikkens P0.30.25308583
+ Sikkens P0.15.75161215209
+ Sikkens P0.30.6080181178
+ Sikkens P0.30.5059150145
+ Sikkens P0.40.500155151
+ Sikkens P0.50.400130127
+
+
+ Sikkens P0.40.400126122
+ Sikkens P0.50.30010299
+ Sikkens P0.40.300104102
+ Sikkens P2.11.80187227225
+ Sikkens P2.20.73136210210
+ Sikkens P2.32.6374190190
+ Sikkens P3.35.5336160165
+
+
+ Sikkens P3.40.440136138
+ Sikkens P2.46.330107109
+ Sikkens P4.48.2709396
+ Sikkens Q0.40.2007581
+ Sikkens Q0.30.6087174183
+ Sikkens Q0.30.5060148156
+ Sikkens P9.38.4917149162
+
+
+ Sikkens Q0.40.400124135
+ Sikkens Q0.50.400128141
+ Sikkens Q0.50.300101111
+ Sikkens Q0.40.30099105
+ Sikkens Q0.50.2007582
+ Sikkens P9.14.77170219224
+ Sikkens Q0.20.73143210218
+
+
+ Sikkens Q0.29.6598191203
+ Sikkens Q0.40.5031151162
+ Sikkens Q0.30.4039118126
+ Sikkens Q0.30.304196103
+ Sikkens Q0.30.20277175
+ Sikkens Q1.19.10355153
+ Sikkens Q0.09.81196225229
+
+
+ Sikkens Q0.10.80190223225
+ Sikkens Q0.20.70140199208
+ Sikkens Q0.20.60122174180
+ Sikkens Q0.20.5093144150
+ Sikkens Q0.20.4078117121
+ Sikkens Q0.20.30528892
+ Sikkens Q0.20.20497477
+
+
+ Sikkens Q0.05.84217234235
+ Sikkens Q6.09.81201228234
+ Sikkens Q6.10.80196227233
+ Sikkens Q5.10.76187216222
+ Sikkens Q0.10.70167197200
+ Sikkens Q0.10.60145170173
+ Sikkens Q0.10.50119141144
+
+
+ Sikkens Q0.10.4097117120
+ Sikkens QN.02.88238244243
+ Sikkens QN.02.78215218217
+ Sikkens P9.05.75192209210
+ Sikkens Q0.05.65166182183
+ Sikkens Q0.05.55147156156
+ Sikkens Q5.05.44113123125
+
+
+ Sikkens Q0.10.30759092
+ Sikkens Q0.10.20526262
+ Sikkens R0.05.85219232235
+ Sikkens Q5.06.80203220224
+ Sikkens R0.05.75196211214
+ Sikkens Q9.12.74176209220
+ Sikkens R0.10.60148169176
+
+
+ Sikkens Q9.10.50120139145
+ Sikkens Q9.10.4098114120
+ Sikkens R3.10.30799297
+ Sikkens R0.10.80195220227
+ Sikkens Q7.15.76171216227
+ Sikkens R0.20.70146199217
+ Sikkens R0.20.60123170185
+
+
+ Sikkens R0.20.50106145158
+ Sikkens R0.30.4063121137
+ Sikkens R0.30.304895108
+ Sikkens R0.20.15375762
+ Sikkens R0.13.77182217228
+ Sikkens R1.17.73161206220
+ Sikkens R1.23.72146205225
+
+
+ Sikkens R0.30.60107175196
+ Sikkens R0.30.5076148165
+ Sikkens R0.40.4020122146
+ Sikkens R0.40.30095111
+ Sikkens R0.28.19367080
+ Sikkens R2.20.73156208227
+ Sikkens R2.22.66136189209
+
+
+ Sikkens R2.29.68124197223
+ Sikkens R2.33.5581162189
+ Sikkens R0.40.5038152179
+ Sikkens R0.50.400126154
+ Sikkens R0.50.300101123
+ Sikkens R1.35.23298095
+ Sikkens R4.14.80175214225
+
+
+ Sikkens R5.23.70130190214
+ Sikkens R5.37.5673163197
+ Sikkens R4.42.4743141175
+ Sikkens R5.52.490146191
+ Sikkens R6.56.360112147
+ Sikkens R7.43.262287112
+ Sikkens R9.35.22347797
+
+
+ Sikkens R7.22.69145196221
+ Sikkens R7.31.62112179213
+ Sikkens R6.31.5288152179
+ Sikkens R7.33.4777138166
+ Sikkens R7.44.4133125160
+ Sikkens R8.40.3945116148
+ Sikkens R8.33.3653106130
+
+
+ Sikkens S0.40.2017294
+ Sikkens S0.30.60112172206
+ Sikkens S0.40.6075176218
+ Sikkens S0.50.500150199
+ Sikkens S0.40.5060144185
+ Sikkens S0.50.400123165
+ Sikkens S0.40.4037118153
+
+
+ Sikkens S0.50.30097133
+ Sikkens S0.40.302493123
+ Sikkens S4.26.64131183219
+ Sikkens S1.38.5681163208
+ Sikkens S4.43.4958144194
+ Sikkens S4.43.4647136182
+ Sikkens S3.56.420129186
+
+
+ Sikkens S5.48.4119124173
+ Sikkens S4.50.350104147
+ Sikkens S5.44.301695131
+ Sikkens S1.13.73177202218
+ Sikkens S0.20.70158199222
+ Sikkens S0.20.60131168189
+ Sikkens S0.30.5086145174
+
+
+ Sikkens S0.30.4070119144
+ Sikkens S0.30.304892113
+ Sikkens S1.37.253482108
+ Sikkens S0.30.20347088
+ Sikkens S0.10.80198224235
+ Sikkens S0.15.80191219234
+ Sikkens S0.15.65150181197
+
+
+ Sikkens S0.15.55126154170
+ Sikkens S0.20.50107141161
+ Sikkens S0.20.4084116133
+ Sikkens S0.20.306288101
+ Sikkens S0.20.20517182
+ Sikkens S0.05.85219232238
+ Sikkens S0.11.78187215229
+
+
+ Sikkens S0.10.70180199210
+ Sikkens S0.10.60152168178
+ Sikkens S0.10.50124141150
+ Sikkens S0.10.40102114122
+ Sikkens S0.10.30799096
+ Sikkens S0.10.20566570
+ Sikkens SN.02.85229235237
+
+
+ Sikkens SN.02.82217223223
+ Sikkens SN.02.77206210211
+ Sikkens SN.02.67178185187
+ Sikkens SN.02.57155158160
+ Sikkens SN.02.47126128130
+ Sikkens SN.02.37105107108
+ Sikkens SN.02.27828484
+
+
+ Sikkens S0.04.78205214217
+ Sikkens S0.07.77198215222
+ Sikkens S0.05.75193205210
+ Sikkens S0.05.65167177182
+ Sikkens S0.05.55146152154
+ Sikkens S0.05.45120127131
+ Sikkens S0.05.3596102105
+
+
+ Sikkens S0.05.25727780
+ Sikkens S6.09.77196211226
+ Sikkens S2.10.71175196209
+ Sikkens S3.10.73184205218
+ Sikkens S8.10.65161177192
+ Sikkens S8.12.55135152167
+ Sikkens S8.15.4199118135
+
+
+ Sikkens S8.10.3591101110
+ Sikkens S8.14.17526373
+ Sikkens S2.07.80206221231
+ Sikkens S6.14.75183210231
+ Sikkens S8.12.68170189207
+ Sikkens S6.15.65157182205
+ Sikkens S7.19.60137167194
+
+
+ Sikkens S6.29.4382125157
+ Sikkens S9.32.3562105137
+ Sikkens S8.22.296788109
+ Sikkens S7.17.72171202230
+ Sikkens S6.21.66148186217
+ Sikkens S7.27.61128174211
+ Sikkens S8.34.5499155201
+
+
+ Sikkens S9.35.56107161208
+ Sikkens S9.39.4160120167
+ Sikkens S8.48.28090135
+ Sikkens T2.47.24082130
+ Sikkens S8.16.73177204230
+ Sikkens T0.20.70160191223
+ Sikkens S9.25.65138181222
+
+
+ Sikkens T0.30.60118168212
+ Sikkens T0.40.5072143198
+ Sikkens T0.50.400123184
+ Sikkens T0.50.30095145
+ Sikkens T0.45.203180114
+ Sikkens T0.12.73181201222
+ Sikkens S9.18.69160189218
+
+
+ Sikkens T0.20.60134165194
+ Sikkens T6.39.5296149213
+ Sikkens T0.40.4052118166
+ Sikkens T0.45.3531106153
+ Sikkens T0.40.303791130
+ Sikkens T0.40.202174111
+ Sikkens T0.10.80208220235
+
+
+ Sikkens T2.17.69167194223
+ Sikkens T3.23.65149182223
+ Sikkens T0.30.5095141180
+ Sikkens T0.30.4078118153
+ Sikkens T4.36.274686127
+ Sikkens T0.30.305592121
+ Sikkens T0.30.20386996
+
+
+ Sikkens T3.06.78209217227
+ Sikkens T0.13.64160177198
+ Sikkens T4.18.59139164196
+ Sikkens T3.20.50118142173
+ Sikkens T0.23.48105136166
+ Sikkens T4.27.3677105140
+ Sikkens T4.40.303586128
+
+
+ Sikkens T0.25.255579102
+ Sikkens T3.06.80205215227
+ Sikkens T0.10.70175191208
+ Sikkens T0.10.60147162177
+ Sikkens T3.14.55135152173
+ Sikkens T0.20.50111138163
+ Sikkens T0.20.4092116138
+
+
+ Sikkens T0.20.306589110
+ Sikkens T0.20.20526987
+ Sikkens TN.02.82224226228
+ Sikkens S7.04.85227235243
+ Sikkens S7.05.75196204211
+ Sikkens S8.05.65170177184
+ Sikkens T0.10.50127138152
+
+
+ Sikkens T0.10.40102113124
+ Sikkens T0.10.307989100
+ Sikkens T0.10.20596675
+ Sikkens UN.02.82229228233
+ Sikkens UN.02.85231233238
+ Sikkens UN.02.77211211216
+ Sikkens U0.05.75205209220
+
+
+ Sikkens U0.05.65174177187
+ Sikkens U0.05.55147151160
+ Sikkens U0.05.45122125133
+ Sikkens U0.05.359799106
+ Sikkens U0.04.84229231236
+ Sikkens T7.07.77203210227
+ Sikkens T9.07.67176184197
+
+
+ Sikkens U0.10.60159165183
+ Sikkens U0.10.50128135154
+ Sikkens U0.10.40107112128
+ Sikkens U0.10.308389102
+ Sikkens U0.10.20596373
+ Sikkens T9.07.82219224240
+ Sikkens T8.10.73190201222
+
+
+ Sikkens U0.15.65160176208
+ Sikkens U0.15.55134149176
+ Sikkens U0.20.50123139174
+ Sikkens U0.20.4096112142
+ Sikkens U0.20.307085114
+ Sikkens U0.20.20607092
+ Sikkens U0.10.70181195217
+
+
+ Sikkens U0.20.70170187223
+ Sikkens U0.20.60144165206
+ Sikkens U0.25.60135164209
+ Sikkens U0.30.50111140194
+ Sikkens U0.30.4083111159
+ Sikkens U0.30.306891130
+ Sikkens U0.30.20466498
+
+
+ Sikkens U2.09.75189198220
+ Sikkens U3.14.67171181211
+ Sikkens U2.16.60151163195
+ Sikkens U4.30.52121140201
+ Sikkens U0.40.4069112173
+ Sikkens U0.40.304986137
+ Sikkens U0.40.203673116
+
+
+ Sikkens U0.30.16395582
+ Sikkens U3.07.78196204222
+ Sikkens U3.20.64175191221
+ Sikkens U3.19.64158174218
+ Sikkens U4.25.55132149201
+ Sikkens U4.35.4597121188
+ Sikkens U5.44.356398173
+
+
+ Sikkens U5.19.25445691
+ Sikkens U2.21.09344360
+ Sikkens U7.03.81210212222
+ Sikkens U6.06.73198199216
+ Sikkens U4.10.72193200224
+ Sikkens U6.18.63164171215
+ Sikkens U6.26.46113125175
+
+
+ Sikkens U7.27.3692101149
+ Sikkens U6.25.256776112
+ Sikkens U4.15.10424558
+ Sikkens VN.02.85233232236
+ Sikkens U9.05.75203203217
+ Sikkens V0.15.65177180212
+ Sikkens V0.25.55137144199
+
+
+ Sikkens V0.37.42103113185
+ Sikkens V1.42.307284156
+ Sikkens V0.40.307082148
+ Sikkens V0.47.194462125
+ Sikkens V0.07.80221220236
+ Sikkens V0.10.70187187214
+ Sikkens V0.20.60157159208
+
+
+ Sikkens V0.20.50137141182
+ Sikkens V0.25.45115120169
+ Sikkens V0.30.40104111170
+ Sikkens V0.30.307683132
+ Sikkens U9.30.205864110
+ Sikkens V7.03.81225222228
+ Sikkens V2.08.71195194217
+
+
+ Sikkens V5.14.60167161197
+ Sikkens V4.25.55149142203
+ Sikkens V5.25.45125117172
+ Sikkens V0.25.359697141
+ Sikkens V0.25.257175115
+ Sikkens V3.35.14464797
+ Sikkens V8.04.79216211224
+
+
+ Sikkens V9.08.73205196220
+ Sikkens V9.11.69189176208
+ Sikkens V6.20.55155144192
+ Sikkens V9.17.54147135181
+ Sikkens V8.23.44129117166
+ Sikkens V9.26.39115100156
+ Sikkens V9.26.3310185136
+
+
+ Sikkens W0.05.75210202219
+ Sikkens W0.08.71201191214
+ Sikkens W0.10.70196186214
+ Sikkens W0.20.60172156201
+ Sikkens W0.25.50147128186
+ Sikkens W0.25.40122103160
+ Sikkens W0.30.40120102165
+
+
+ Sikkens W0.30.3010184141
+ Sikkens W1.03.81227220231
+ Sikkens W0.07.77213205225
+ Sikkens W0.15.65183169209
+ Sikkens W0.15.55155142180
+ Sikkens W0.15.45131120153
+ Sikkens W0.20.50147129179
+
+
+ Sikkens W0.20.40119105150
+ Sikkens W0.20.309381116
+ Sikkens WN.02.82230225232
+ Sikkens WN.02.77212207212
+ Sikkens W0.05.70205197211
+ Sikkens W0.10.60173161187
+ Sikkens W0.10.50141136159
+
+
+ Sikkens W0.10.40118109129
+ Sikkens W0.10.309386106
+ Sikkens W0.10.20575370
+ Sikkens W0.03.84231223229
+ Sikkens W0.04.78217212223
+ Sikkens W0.05.65179175187
+ Sikkens W0.05.55154148162
+
+
+ Sikkens W0.05.45129123135
+ Sikkens W0.05.3510499109
+ Sikkens W0.05.25817788
+ Sikkens W0.05.15585562
+ Sikkens XN.01.83234228230
+ Sikkens W6.05.72208196210
+ Sikkens W8.05.63181170185
+
+
+ Sikkens W6.07.53153142160
+ Sikkens W7.07.44130119136
+ Sikkens W7.07.3410696111
+ Sikkens W7.08.24827387
+ Sikkens X0.08.15645566
+ Sikkens XN.01.84234227227
+ Sikkens X0.04.80225213222
+
+
+ Sikkens X0.10.70207186212
+ Sikkens X0.10.60179157184
+ Sikkens X0.10.50150130155
+ Sikkens X0.10.40124106128
+ Sikkens X0.10.309781100
+ Sikkens X0.10.20695977
+ Sikkens ZN.01.83237231230
+
+
+ Sikkens X6.04.76220205217
+ Sikkens X7.07.69204182199
+ Sikkens X7.13.58184150179
+ Sikkens X0.15.50158130167
+ Sikkens X0.20.50158125172
+ Sikkens X0.20.40131101141
+ Sikkens X0.20.3010578112
+
+
+ Sikkens X9.04.79230215224
+ Sikkens X9.06.79236212229
+ Sikkens X9.11.74230195221
+ Sikkens X7.16.66211165205
+ Sikkens X7.18.54179133173
+ Sikkens X9.21.44157106148
+ Sikkens X9.24.3312877118
+
+
+ Sikkens Y0.30.18914889
+ Sikkens YN.01.83236229230
+ Sikkens YN.02.82234222225
+ Sikkens Y1.08.73222194213
+ Sikkens Y0.12.63200163191
+ Sikkens Y0.20.50170122161
+ Sikkens Y0.20.4013995133
+
+
+ Sikkens Y0.20.3010870101
+ Sikkens Y0.20.20915886
+ Sikkens YN.02.77216206209
+ Sikkens Y0.05.72211193200
+ Sikkens Y0.10.70214181205
+ Sikkens Y0.10.60188155179
+ Sikkens Y0.10.50158130152
+
+
+ Sikkens Y0.10.40129105124
+ Sikkens Y0.10.30977893
+ Sikkens Y0.10.20746073
+ Sikkens ZN.01.85238230231
+ Sikkens Z2.06.81239209217
+ Sikkens Z1.10.70222180198
+ Sikkens Z0.10.60188155169
+
+
+ Sikkens Z0.10.50159127142
+ Sikkens Z0.10.40135106118
+ Sikkens Z0.10.301078293
+ Sikkens Z0.05.20726468
+ Sikkens Z8.05.81234207210
+ Sikkens Z1.10.80252207226
+ Sikkens Z1.14.71235178203
+
+
+ Sikkens Z0.20.60211139174
+ Sikkens Z0.20.50176121148
+ Sikkens Z0.20.4014992122
+ Sikkens Z0.20.301207197
+ Sikkens Z0.19.20935878
+ Sikkens Z9.10.77239191200
+ Sikkens Z4.09.76236190205
+
+
+ Sikkens Z6.23.60224128160
+ Sikkens Z5.31.4819597140
+ Sikkens Z3.37.4319181132
+ Sikkens Z9.35.3817574110
+ Sikkens Z2.32.3315269107
+ Sikkens Z0.30.3013365103
+ Sikkens Z8.11.75243194207
+
+
+ Sikkens Z9.16.68235167186
+ Sikkens Z8.18.63226151173
+ Sikkens Z8.23.57215129157
+ Sikkens Z9.32.4920999136
+ Sikkens Z9.30.3515970100
+ Sikkens Z8.23.271216584
+ Sikkens Z3.23.241085477
+
+
diff --git a/src/ui/color_select/book.rs b/src/ui/color_select/book.rs
index 59bbdba88..15fe2df1a 100644
--- a/src/ui/color_select/book.rs
+++ b/src/ui/color_select/book.rs
@@ -62,7 +62,7 @@ impl ColorBook {
pub fn builtin() -> impl Iterator- {
[
include_str!("../../../assets/color_books/ral-classic.acb"),
- include_str!("../../../assets/color_books/css-colors.acb"),
+ include_str!("../../../assets/color_books/sikkens-4041.acb"),
]
.into_iter()
.filter_map(|text| parse(text).ok())
diff --git a/src/ui/color_select/editor.rs b/src/ui/color_select/editor.rs
index ea97384c7..47970c9ab 100644
--- a/src/ui/color_select/editor.rs
+++ b/src/ui/color_select/editor.rs
@@ -1,6 +1,6 @@
-//! The colour editor: HSB or RGB sliders, or a saturation/brightness field
-//! with a hue strip, plus a hex box. Shared by the CAD Select Color panel and
-//! the interface colour picker.
+//! The colour editor: RGB, HSB or CMYK sliders above a saturation/brightness
+//! field with a hue strip, plus a hex box. Shared by the CAD Select Color
+//! panel and the interface colour picker.
use super::math::{self, Hsb};
use super::widgets::ColorArea;
@@ -15,19 +15,17 @@ use iced::{Background, Border, Color, Element, Gradient, Length, Radians, Theme}
const ROW_HEIGHT: f32 = 26.0;
const TRACK: f32 = 18.0;
const STRIP_WIDTH: f32 = 22.0;
-/// Gap between slider rows. Together with `FIELD_HEIGHT` it puts the hex row
-/// at the same height in every mode: 3 × 26 + 2 × 14 + 12 = 108 + 10.
-const ROW_GAP: f32 = 14.0;
-const FIELD_HEIGHT: f32 = 108.0;
-const MODE_WIDTH: f32 = 40.0;
+const ROW_GAP: f32 = 8.0;
+const FIELD_HEIGHT: f32 = 96.0;
+const MODE_WIDTH: f32 = 48.0;
const MODE_HEIGHT: f32 = 24.0;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum EditorMode {
+ Rgb,
#[default]
Hsb,
- Rgb,
- Field,
+ Cmyk,
}
#[derive(Debug, Clone)]
@@ -43,6 +41,8 @@ pub enum EditorMsg {
Red(u8),
Green(u8),
Blue(u8),
+ /// One CMYK channel (0 cyan … 3 black), in percent.
+ Cmyk(usize, f32),
HexInput(String),
HexSubmit,
}
@@ -51,6 +51,8 @@ pub struct ColorEditor {
mode: EditorMode,
/// Kept beside `rgb` so hue and saturation survive grays and black.
hsb: Hsb,
+ /// Kept too, so black keeps its inks and rounding doesn't move them.
+ cmyk: [f32; 4],
rgb: (u8, u8, u8),
hex_draft: Option,
}
@@ -64,6 +66,7 @@ impl ColorEditor {
s: 0.0,
b: 1.0,
},
+ cmyk: [0.0; 4],
rgb,
hex_draft: None,
};
@@ -85,6 +88,7 @@ impl ColorEditor {
s: if next.b == 0.0 { self.hsb.s } else { next.s },
b: next.b,
};
+ self.cmyk = math::rgb_to_cmyk(r, g, b);
self.rgb = (r, g, b);
self.hex_draft = None;
}
@@ -96,9 +100,17 @@ impl ColorEditor {
b: hsb.b.clamp(0.0, 1.0),
};
self.rgb = self.hsb.to_rgb();
+ self.cmyk = math::rgb_to_cmyk(self.rgb.0, self.rgb.1, self.rgb.2);
self.hex_draft = None;
}
+ fn set_cmyk(&mut self, channel: usize, value: f32) {
+ let mut cmyk = self.cmyk;
+ cmyk[channel.min(3)] = value.clamp(0.0, 100.0);
+ self.set_rgb(math::cmyk_to_rgb(cmyk));
+ self.cmyk = cmyk;
+ }
+
/// Apply a message; returns whether the colour changed.
pub fn update(&mut self, msg: EditorMsg) -> bool {
let before = self.rgb;
@@ -118,6 +130,7 @@ impl ColorEditor {
EditorMsg::Red(v) => self.set_rgb((v, g, b)),
EditorMsg::Green(v) => self.set_rgb((r, v, b)),
EditorMsg::Blue(v) => self.set_rgb((r, g, v)),
+ EditorMsg::Cmyk(channel, v) => self.set_cmyk(channel, v),
EditorMsg::HexInput(value) => {
// Six digits are unambiguous, so apply them while typing; the
// short #RGB form waits for Enter.
@@ -138,28 +151,26 @@ impl ColorEditor {
/// `mode_end` sits at the far right of the mode buttons (the pipette);
/// `hex_end` at the far right of the hex row (the nearest index colour).
- /// The field view shows the hex value beside H, S and B and leaves out
- /// `hex_end`; the slider views end on a hex row.
pub fn view<'a>(
&'a self,
mode_end: Option>,
hex_end: Option>,
) -> Element<'a, Message> {
- let view = column![self.mode_row(mode_end)].spacing(12);
- match self.mode {
- EditorMode::Hsb | EditorMode::Rgb => view
- .push(self.slider_rows())
- .push(self.hex_row(hex_end))
- .into(),
- EditorMode::Field => view.push(self.field_view()).into(),
- }
+ column![
+ self.mode_row(mode_end),
+ self.slider_rows(),
+ self.field(),
+ self.hex_row(hex_end),
+ ]
+ .spacing(12)
+ .into()
}
- /// HSB, RGB and the gradient-field button, with `end` at the far right.
+ /// RGB, HSB and CMYK, with `end` at the far right.
fn mode_row<'a>(&self, end: Option>) -> Element<'a, Message> {
- let mode_button = |content: Element<'a, Message>, mode: EditorMode| {
+ let mode_button = |label: &'static str, mode: EditorMode| {
let active = self.mode == mode;
- button(container(content).center(Length::Fill))
+ button(container(text(label).size(13)).center(Length::Fill))
.on_press(msg(EditorMsg::Mode(mode)))
.width(MODE_WIDTH)
.height(MODE_HEIGHT)
@@ -168,35 +179,10 @@ impl ColorEditor {
super::picker::toggle_style(theme, active, status)
})
};
- // The field button is only its gradient, without a frame; it takes
- // colour when its mode is active and stays gray otherwise.
- let field_active = self.mode == EditorMode::Field;
- let field_button = button(Space::new().width(MODE_WIDTH).height(MODE_HEIGHT))
- .on_press(msg(EditorMsg::Mode(EditorMode::Field)))
- .padding(0)
- .style(move |_theme: &Theme, _status| {
- let middle = if field_active {
- Color::from_rgb8(0x3A, 0xA0, 0xFF)
- } else {
- Color::from_rgb8(0x80, 0x80, 0x80)
- };
- let icon = gradient_box(
- 3.0 * std::f32::consts::FRAC_PI_4,
- &[(0.0, Color::WHITE), (0.5, middle), (1.0, Color::BLACK)],
- );
- button::Style {
- background: icon.background,
- border: Border {
- radius: 5.0.into(),
- ..Border::default()
- },
- ..Default::default()
- }
- });
let mut modes = row![
- mode_button(text("HSB").size(13).into(), EditorMode::Hsb),
- mode_button(text("RGB").size(13).into(), EditorMode::Rgb),
- field_button,
+ mode_button("RGB", EditorMode::Rgb),
+ mode_button("HSB", EditorMode::Hsb),
+ mode_button("CMYK", EditorMode::Cmyk),
Space::new().width(Length::Fill),
]
.spacing(6);
@@ -206,12 +192,29 @@ impl ColorEditor {
modes.into()
}
- /// Three gradient sliders: hue, saturation and brightness, or red, green
- /// and blue.
+ /// Gradient sliders: red, green and blue; hue, saturation and
+ /// brightness; or cyan, magenta, yellow and black.
fn slider_rows<'a>(&self) -> Element<'a, Message> {
let Hsb { h, s, b } = self.hsb;
let (r, g, bl) = self.rgb;
- let rows = if self.mode == EditorMode::Rgb {
+ let rows = if self.mode == EditorMode::Cmyk {
+ let ink = |i: usize, letter| {
+ let at = |v| {
+ let mut cmyk = self.cmyk;
+ cmyk[i] = v;
+ rgb_color(math::cmyk_to_rgb(cmyk))
+ };
+ channel(
+ letter,
+ self.cmyk[i],
+ 100.0,
+ Some('%'),
+ vec![(0.0, at(0.0)), (1.0, at(100.0))],
+ move |v| EditorMsg::Cmyk(i, v),
+ )
+ };
+ column![ink(0, "C"), ink(1, "M"), ink(2, "Y"), ink(3, "K")]
+ } else if self.mode == EditorMode::Rgb {
let ends = |lo: (u8, u8, u8), hi: (u8, u8, u8)| {
vec![(0.0, rgb_color(lo)), (1.0, rgb_color(hi))]
};
@@ -266,9 +269,8 @@ impl ColorEditor {
rows.spacing(ROW_GAP).into()
}
- /// The saturation/brightness field with its hue strip, and below it H, S
- /// and B on the left and the hex value on the right.
- fn field_view<'a>(&self) -> Element<'a, Message> {
+ /// The saturation/brightness field with its hue strip.
+ fn field<'a>(&self) -> Element<'a, Message> {
let Hsb { h, s, b } = self.hsb;
let area = ColorArea::new(hsb_color(h, 1.0, 1.0), rgb_color(self.rgb), s, b, |s, b| {
msg(EditorMsg::Field(s, b))
@@ -285,50 +287,17 @@ impl ColorEditor {
.height(FIELD_HEIGHT)
.style(handle_style),
];
- let value =
- |letter: &'static str, v: f32, max: f32, unit: char, f: fn(f32) -> EditorMsg| {
- row![
- text(letter).size(12).font(iced::Font::MONOSPACE),
- number_box(v, max, Some(unit), f),
- ]
- .spacing(4)
- .align_y(iced::Center)
- };
- column![
- row![area, strip].spacing(12),
- row![
- value("H", h, 360.0, '°', EditorMsg::Hue),
- value("S", s * 100.0, 100.0, '%', EditorMsg::Saturation),
- value("B", b * 100.0, 100.0, '%', EditorMsg::Brightness),
- Space::new().width(Length::Fill),
- self.hex_field(),
- ]
- .spacing(10)
- .align_y(iced::Center),
- ]
- // 108 + 10 matches the slider views' 3 × 26 + 2 × 14 + 12.
- .spacing(10)
- .into()
+ row![area, strip].spacing(12).into()
}
/// The hex value with `end` (the nearest index colour) at the far right.
fn hex_row<'a>(&self, end: Option>) -> Element<'a, Message> {
- let mut hex_row = row![self.hex_field(), Space::new().width(Length::Fill)]
- .spacing(8)
- .align_y(iced::Center);
- if let Some(end) = end {
- hex_row = hex_row.push(end);
- }
- hex_row.into()
- }
-
- fn hex_field<'a>(&self) -> Element<'a, Message> {
let (r, g, b) = self.rgb;
let hex = self
.hex_draft
.clone()
.unwrap_or_else(|| math::hex_string(r, g, b));
- row![
+ let mut hex_row = row![
text(t!("Hex")).size(11).style(super::picker::muted_text),
text_input("", &hex)
.on_input(|value| msg(EditorMsg::HexInput(value)))
@@ -337,10 +306,14 @@ impl ColorEditor {
.font(iced::Font::MONOSPACE)
.padding([5, 6])
.width(Length::Fixed(74.0)),
+ Space::new().width(Length::Fill),
]
.spacing(8)
- .align_y(iced::Center)
- .into()
+ .align_y(iced::Center);
+ if let Some(end) = end {
+ hex_row = hex_row.push(end);
+ }
+ hex_row.into()
}
}
diff --git a/src/ui/color_select/math.rs b/src/ui/color_select/math.rs
index 74ab9968d..b62250425 100644
--- a/src/ui/color_select/math.rs
+++ b/src/ui/color_select/math.rs
@@ -59,6 +59,24 @@ pub fn rgb_to_hsb(r: u8, g: u8, b: u8) -> Hsb {
Hsb { h, s, b: max }
}
+/// Cyan, magenta, yellow and black in percent, by the plain device-free
+/// formula (no ICC profile): screen values, not press values.
+pub fn rgb_to_cmyk(r: u8, g: u8, b: u8) -> [f32; 4] {
+ let max = r.max(g).max(b);
+ if max == 0 {
+ return [0.0, 0.0, 0.0, 100.0];
+ }
+ let max = f32::from(max);
+ let ink = |v: u8| (1.0 - f32::from(v) / max) * 100.0;
+ [ink(r), ink(g), ink(b), (1.0 - max / 255.0) * 100.0]
+}
+
+pub fn cmyk_to_rgb([c, m, y, k]: [f32; 4]) -> (u8, u8, u8) {
+ let white = 255.0 * (1.0 - k.clamp(0.0, 100.0) / 100.0);
+ let channel = |ink: f32| (white * (1.0 - ink.clamp(0.0, 100.0) / 100.0)).round() as u8;
+ (channel(c), channel(m), channel(y))
+}
+
/// RGB of an ACI entry, or `None` outside 1–255.
pub fn aci_rgb(index: u8) -> Option<(u8, u8, u8)> {
codec::types::aci_table::aci_to_rgb(index)
diff --git a/src/ui/color_select/picker.rs b/src/ui/color_select/picker.rs
index a4313f881..c02c3723d 100644
--- a/src/ui/color_select/picker.rs
+++ b/src/ui/color_select/picker.rs
@@ -24,7 +24,7 @@ const PANEL_WIDTH: f32 = 400.0;
/// Scope for Tab / Shift+Tab, so focus cycles through the panel's own
/// fields instead of the dialogs and command line underneath.
const PANEL_ID: &str = "select-color-panel";
-const BODY_HEIGHT: f32 = 352.0;
+const BODY_HEIGHT: f32 = 368.0;
/// Swatches per row in the Document tab.
const DOC_COLUMNS: usize = 8;
/// Search matches shown at once in the Color books tab.
@@ -32,8 +32,8 @@ const PAGE_BARS: usize = 7;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum ColorPickerTab {
- Document,
#[default]
+ Document,
Index,
TrueColor,
Books,
@@ -106,11 +106,6 @@ pub struct ColorPicker {
impl ColorPicker {
pub fn new(target: ColorPickTarget, current: AcadColor, varies: bool) -> Self {
- let tab = if matches!(current, AcadColor::Rgb { .. }) {
- ColorPickerTab::TrueColor
- } else {
- ColorPickerTab::Index
- };
Self {
target,
current,
@@ -118,7 +113,7 @@ impl ColorPicker {
pending: current,
current_name: None,
pending_name: None,
- tab,
+ tab: ColorPickerTab::Document,
editor: ColorEditor::new(math::color_rgb(current).unwrap_or((255, 255, 255))),
eyedropper: None,
doc: Vec::new(),
@@ -133,8 +128,7 @@ impl ColorPicker {
}
/// Fill the Document and Color books tabs. `current_name` is the
- /// `BOOK$NAME` of the current colour; a colour from a loaded book opens
- /// on its page.
+ /// `BOOK$NAME` of the current colour; the Color books tab shows its page.
pub fn with_drawing(
mut self,
mut doc: Vec,
@@ -147,9 +141,7 @@ impl ColorPicker {
self.recent = recent.to_vec();
self.books = books;
if let Some(name) = current_name.filter(|name| !name.is_empty()) {
- if self.show_identity(&name) {
- self.tab = ColorPickerTab::Books;
- }
+ self.show_identity(&name);
self.current_name = Some(name.clone());
self.pending_name = Some(name);
}
@@ -1152,13 +1144,12 @@ mod tests {
}
#[test]
- fn opens_on_the_tab_that_fits_the_current_colour() {
- assert_eq!(picker(AcadColor::Index(30)).tab(), ColorPickerTab::Index);
+ fn opens_on_the_document_tab() {
+ assert_eq!(picker(AcadColor::Index(30)).tab(), ColorPickerTab::Document);
assert_eq!(
picker(AcadColor::Rgb { r: 1, g: 2, b: 3 }).tab(),
- ColorPickerTab::TrueColor
+ ColorPickerTab::Document
);
- assert_eq!(picker(AcadColor::ByLayer).tab(), ColorPickerTab::Index);
}
#[test]
@@ -1225,6 +1216,7 @@ mod tests {
assert_eq!(step_index(255, ArrowKey::Right), None);
let mut p = picker(AcadColor::Index(140));
+ p.update(ColorPickerMsg::Tab(ColorPickerTab::Index));
p.update(ColorPickerMsg::Arrow(ArrowKey::Right));
assert_eq!(p.pending(), AcadColor::Index(150));
}
@@ -1313,7 +1305,6 @@ mod tests {
b: 179,
})
.with_drawing(Vec::new(), &[], ral(), Some("RAL CLASSIC$RAL 5015".into()));
- assert_eq!(p.tab(), ColorPickerTab::Books);
assert_eq!(p.book_selection(), Some(2));
assert_eq!(p.book_page, 1);
}
@@ -1388,6 +1379,7 @@ mod tests {
g: 191,
b: 252,
});
+ p.update(ColorPickerMsg::Tab(ColorPickerTab::TrueColor));
edit(&mut p, EditorMsg::Mode(EditorMode::Rgb));
let mut ui = simulator(&p);
let label = ui.find("R").expect("R label");
@@ -1489,11 +1481,11 @@ mod tests {
false,
),
(
- "field",
+ "cmyk",
ColorPickTarget::Properties,
blue,
ColorPickerTab::TrueColor,
- EditorMode::Field,
+ EditorMode::Cmyk,
false,
),
(