-warn sprintf( 's%1.3f, l%1.3f -> %s',
- @$best );
-
-my $baseTheme = "AppTheme.NoActionBar";
-
-use constant STEP_DEGREES => 15;
-
-# # hsb
-# for( my $hue = 0; $hue < 360; $hue += STEP_DEGREES ) {
-# printf "<style name=\"%s.%d\" parent=\"%s\">\n",
-# $baseTheme, $hue, $baseTheme;
-# printf " <item name=\"colorPrimary\">#%s</item>\n",
-# hsvHex($hue/360.0, 0.61, 0.95);
-# printf " <item name=\"colorPrimaryDark\">#%s</item>\n",
-# hsvHex($hue/360.0, 0.86, 0.55);
-# printf " <item name=\"colorAccent\">#%s</item>\n",
-# hsvHex(($hue-4)/360.0, 0.72, 0.82);
-# printf " <item name=\"drawer_background\">#ffffffff</item>\n";
-# printf " <item name=\"table_row_dark_bg\">#28%s</item>\n",
-# hsvHex($hue/360.0, 0.65, 0.83);
-# printf " <item name=\"table_row_light_bg\">#28%s</item>\n",
-# hsvHex($hue/360.0, 0.20, 1.00);
-# printf " <item name=\"header_border\">#80%s</item>\n",
-# hsvHex(($hue+6)/360.0, 0.86, 0.55);
-# printf "</style>\n";
+
+warn sprintf("%s: %2.1f\n", 'white', Color::sRGB->WHITE->relativeLuminance);
+warn sprintf("%s: %2.1f\n", 'black', Color::sRGB->BLACK->relativeLuminance);
+warn sprintf( "%s: %2.1f\n",
+ '50% gray',
+ Color::sRGB->new( r => 0.5, g => 0.5, b => 0.5 )->relativeLuminance );
+
+my $baseColor = '#935ff2';
+my $baseColorRGB = Color::sRGB->fromHexTriplet($baseColor);
+my $baseColorHSL = $baseColorRGB->toHSL;
+my $baseColorHue = $baseColorHSL->h;
+warn sprintf(
+ '%s → H:%1.4f S:%1.4f L:%1.4f (luminance: %1.4f; cW: %1.4f, cB: %1.4f)',
+ $baseColor,
+ 360 * $baseColorHSL->h,
+ $baseColorHSL->s,
+ $baseColorHSL->l,
+ $baseColorRGB->relativeLuminance,
+ $baseColorRGB->contrastWith( Color::sRGB->WHITE ),
+ $baseColorRGB->contrastWith( Color::sRGB->BLACK ),
+);
+# # find best saturation/lightness for the desired color
+# # test if the above is correct
+# my ($best, $min_dist);
+# for (my $s = 0.50; $s < 0.90; $s += 0.001) {
+# for ( my $l = 0.50; $l <= 0.80; $l += 0.001 ) {
+# my $color = Color::sRGB->fromHSL(
+# Color::HSL->new( h => $baseColorHue, s => $s, l => $l ) );
+# my $dist =
+# abs( $color->r - $baseColorRGB->r )
+# + abs( $color->g - $baseColorRGB->g )
+# + abs( $color->b - $baseColorRGB->b );
+# if ( not defined($best) or $dist < $min_dist ) {
+# $best = [ $s, $l, $color ];
+# $min_dist = $dist;
+# }
+# }