shithub: puzzles

Download patch

ref: ea223a23503c80759d5579626285eda0e617d6b4
parent: e5b0bcae5615d8829c8b5af2e3127397e7b72d8c
author: Ben Harris <bjh21@bjh21.me.uk>
date: Mon Dec 5 14:34:09 EST 2022

js: Put the puzzle background colour in a CSS variable

It's sometimes useful to be able to have an HTML element that visually
forms an extension of the puzzle's border.  By putting the puzzle's
colour 0 (which we assume to be its background) into a CSS variable,
such elements can do something like "background-color:
var(--puzzle-background)" to get that effect even if the puzzle uses a
non-default background colour.

--- a/emcc.c
+++ b/emcc.c
@@ -51,6 +51,7 @@
 extern int js_add_preset_submenu(int menuid, const char *name);
 extern int js_get_selected_preset(void);
 extern void js_select_preset(int n);
+extern void js_set_background_colour(const char *bg);
 extern void js_get_date_64(unsigned *p);
 extern void js_update_permalinks(const char *desc, const char *seed);
 extern void js_enable_undo_redo(bool undo, bool redo);
@@ -1007,6 +1008,8 @@
                 (unsigned)(0.5 + 255 * colours[i*3+2]));
         colour_strings[i] = dupstr(col);
     }
+    /* Put the background colour in a CSS variable. */
+    js_set_background_colour(colour_strings[0]);
 
     /*
      * Request notification when the game ids change (e.g. if the user
--- a/emcclib.js
+++ b/emcclib.js
@@ -144,6 +144,17 @@
     },
 
     /*
+     * void js_set_background_colour(const char *bg);
+     *
+     * Record the puzzle background colour in a CSS variable so
+     * the style sheet can use it if it wants.
+     */
+    js_set_background_colour: function(bgptr) {
+        document.documentElement.style.setProperty("--puzzle-background",
+                                                   UTF8ToString(bgptr));
+    },
+
+    /*
      * void js_get_date_64(unsigned *p);
      *
      * Return the current date, in milliseconds since the epoch