]> git.ktnx.net Git - mobile-ledger.git/blobdiff - tools/gen-styles
migrate to Matherial DayNight themes
[mobile-ledger.git] / tools / gen-styles
index d158d8bf370e227e5b9894c9a39b8c02558006dd..73e2367bd7ba9a0ad1792345a5290f77e511f313 100644 (file)
@@ -138,13 +138,13 @@ for (my $s = 0.50; $s < 0.90; $s += 0.001) {
 warn sprintf( 's%1.3f, l%1.3f -> %s',
        @$best );
 
-my $baseTheme = "AppTheme.NoActionBar";
+my $baseTheme = "AppTheme";
 
-use constant STEP_DEGREES => 15;
+use constant STEP_DEGREES => 5;
 
 # # hsb
 # for( my $hue = 0; $hue < 360; $hue += STEP_DEGREES ) {
-#      printf "<style name=\"%s.%d\" parent=\"%s\">\n",
+#      printf "<style name=\"%s.%03d\" parent=\"%s\">\n",
 #              $baseTheme, $hue, $baseTheme;
 #      printf "  <item name=\"colorPrimary\">#%s</item>\n",
 #                      hsvHex($hue/360.0, 0.61, 0.95);
@@ -152,7 +152,6 @@ use constant STEP_DEGREES => 15;
 #                      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",
@@ -166,7 +165,6 @@ use constant STEP_DEGREES => 15;
 sub outputThemes {
        my $out = shift;
        my $baseIndent = shift;
-       $out->print(hslStyleForHue($baseColorHue, undef, $baseIndent));
        for( my $hue = 0; $hue < 360; $hue += STEP_DEGREES ) {
                $out->print("\n");
                $out->print(hslStyleForHue($hue, $baseTheme, $baseIndent));
@@ -178,19 +176,26 @@ sub hslStyleForHue {
        my $base = shift;
        my $baseIndent = shift // '';
 
-       my $blueL = 0.665;
-       my $yellowL = 0.350;
-
-       my $blueL2 = 0.350;
-       my $yellowL2 = 0.500;
-
-       # $y == 0 for yellow
-       my $y = $hue - 60;
-       $y += 360 if $y < 0;
-       # $q == 0 for yellow, 1 for blue
-       my $q = cos(deg2rad(abs($y-180)/2.0));
-       my $l1 = $yellowL + ($blueL - $yellowL) * $q;
-       my $l2 = 0.250 + 0.250 * $q;
+       my %lQ = (
+               0   => 0.450,   # red
+               60  => 0.400,   # yellow
+               120 => 0.400,   # green
+               180 => 0.400,   # cyan
+               240 => 0.750,   # blue
+               300 => 0.500,   # magenta
+       );
+       $lQ{360} = $lQ{0};
+
+       my ($x0, $x1, $y0, $y1);
+       $x0 = (int( $hue / 60 ) * 60) % 360;
+       $x1 = $x0 + 60;
+       $y0 = $lQ{$x0};
+       $y1 = $lQ{$x1};
+
+       # linear interpolation
+       my $l1 = $y0 + 1.0 * ( $hue - $x0 ) * ( $y1 - $y0 ) / ( $x1 - $x0 );
+
+       my $l2 = $l1 * 0.80;
        my $l3 = 0.950;
        my $l4 = 0.980;
 
@@ -198,15 +203,15 @@ sub hslStyleForHue {
        my $indent = "$baseIndent    ";
 
        if ($base) {
-               $result .= sprintf "$baseIndent<style name=\"%s.%d\" parent=\"%s\">\n",
+               $result .= sprintf "$baseIndent<style name=\"%s.%03d\" parent=\"%s\">\n",
                         $baseTheme, $hue, $baseTheme;
         }
         else {
                 $result .= sprintf "$baseIndent<style name=\"%s\">\n",
                         $baseTheme;
-                $result .= "$indent<item name=\"windowActionBar\">false</item>\n";
-                $result .= "$indent<item name=\"windowNoTitle\">true</item>\n";
-                $result .= "$indent<item name=\"textColor\">#8a000000</item>\n";
+#                $result .= "$indent<item name=\"windowActionBar\">false</item>\n";
+#                $result .= "$indent<item name=\"windowNoTitle\">true</item>\n";
+#                $result .= "$indent<item name=\"textColor\">#757575</item>\n";
         }
         my $S = 0.845;
         $result .= sprintf "$indent<item name=\"colorPrimary\">#%s</item>\n",
@@ -215,7 +220,8 @@ sub hslStyleForHue {
                 hslHex($hue, $S, $l1);
         $result .= sprintf "$indent<item name=\"colorAccent\">#%s</item>\n",
                 hslHex($hue, $S, $l2);
-        $result .= "$indent<item name=\"drawer_background\">#ffffffff</item>\n";
+        $result .= sprintf "$indent<item name=\"colorPrimaryDark\">#%s</item>\n",
+                hslHex($hue, $S, $l2);
         $result .= sprintf "$indent<item name=\"table_row_dark_bg\">#%s</item>\n",
                 hslHex($hue, $S, $l3);
         $result .= sprintf "$indent<item name=\"table_row_light_bg\">#%s</item>\n",