+// ----------------------------------------------------------------------------
+// TODO: These functions or something like them should probably be made
+// public.  There are similar functions in src/aui/dockart.cpp...
+
+static double wxBlendColour(double fg, double bg, double alpha)
+{
+    double result = bg + (alpha * (fg - bg));
+    if (result < 0.0)
+        result = 0.0;
+    if (result > 255)
+        result = 255;
+    return result;
+}
+
+static wxColor wxStepColour(const wxColor& c, int ialpha)
+{
+    if (ialpha == 100)
+        return c;
+
+    double r = c.Red(), g = c.Green(), b = c.Blue();
+    double bg;
+
+    // ialpha is 0..200 where 0 is completely black
+    // and 200 is completely white and 100 is the same
+    // convert that to normal alpha 0.0 - 1.0
+    ialpha = wxMin(ialpha, 200);
+    ialpha = wxMax(ialpha, 0);
+    double alpha = ((double)(ialpha - 100.0))/100.0;
+
+    if (ialpha > 100)
+    {
+        // blend with white
+        bg = 255.0;
+        alpha = 1.0 - alpha;  // 0 = transparent fg; 1 = opaque fg
+    }
+     else
+    {
+        // blend with black
+        bg = 0.0;
+        alpha = 1.0 + alpha;  // 0 = transparent fg; 1 = opaque fg
+    }
+
+    r = wxBlendColour(r, bg, alpha);
+    g = wxBlendColour(g, bg, alpha);
+    b = wxBlendColour(b, bg, alpha);
+
+    return wxColour((unsigned char)r, (unsigned char)g, (unsigned char)b);
+}
+
+#define LIGHT_STEP 160
+