{
float *ret = snewn(3 * NCOLOURS, float);
int i;
- float max;
- frontend_default_colour(fe, &ret[COL_BACKGROUND * 3]);
+ game_mkhighlight(fe, ret, COL_BACKGROUND, COL_HIGHLIGHT, COL_LOWLIGHT);
- /*
- * Drop the background colour so that the highlight is
- * noticeably brighter than it while still being under 1.
- */
- max = ret[COL_BACKGROUND*3];
- for (i = 1; i < 3; i++)
- if (ret[COL_BACKGROUND*3+i] > max)
- max = ret[COL_BACKGROUND*3+i];
- if (max * 1.2F > 1.0F) {
- for (i = 0; i < 3; i++)
- ret[COL_BACKGROUND*3+i] /= (max * 1.2F);
- }
-
- for (i = 0; i < 3; i++) {
- ret[COL_HIGHLIGHT * 3 + i] = ret[COL_BACKGROUND * 3 + i] * 1.2F;
- ret[COL_LOWLIGHT * 3 + i] = ret[COL_BACKGROUND * 3 + i] * 0.8F;
+ for (i = 0; i < 3; i++)
ret[COL_TEXT * 3 + i] = 0.0;
- }
*ncolours = NCOLOURS;
return ret;
return ret;
}
+void game_mkhighlight(frontend *fe, float *ret,
+ int background, int highlight, int lowlight)
+{
+ float max;
+ int i;
+
+ frontend_default_colour(fe, &ret[background * 3]);
+
+ /*
+ * Drop the background colour so that the highlight is
+ * noticeably brighter than it while still being under 1.
+ */
+ max = ret[background*3];
+ for (i = 1; i < 3; i++)
+ if (ret[background*3+i] > max)
+ max = ret[background*3+i];
+ if (max * 1.2F > 1.0F) {
+ for (i = 0; i < 3; i++)
+ ret[background*3+i] /= (max * 1.2F);
+ }
+
+ for (i = 0; i < 3; i++) {
+ ret[highlight * 3 + i] = ret[background * 3 + i] * 1.2F;
+ ret[lowlight * 3 + i] = ret[background * 3 + i] * 0.8F;
+ }
+}
+
/* vim: set shiftwidth=4 tabstop=8: */
static float *game_colours(frontend *fe, game_state *state, int *ncolours)
{
float *ret = snewn(3 * NCOLOURS, float);
- int i;
- float max;
-
- frontend_default_colour(fe, &ret[COL_BACKGROUND * 3]);
- /*
- * Drop the background colour so that the highlight is
- * noticeably brighter than it while still being under 1.
- */
- max = ret[COL_BACKGROUND*3];
- for (i = 1; i < 3; i++)
- if (ret[COL_BACKGROUND*3+i] > max)
- max = ret[COL_BACKGROUND*3+i];
- if (max * 1.2F > 1.0F) {
- for (i = 0; i < 3; i++)
- ret[COL_BACKGROUND*3+i] /= (max * 1.2F);
- }
-
- for (i = 0; i < 3; i++) {
- ret[COL_HIGHLIGHT * 3 + i] = ret[COL_BACKGROUND * 3 + i] * 1.2F;
- ret[COL_LOWLIGHT * 3 + i] = ret[COL_BACKGROUND * 3 + i] * 0.8F;
- }
+ game_mkhighlight(fe, ret, COL_BACKGROUND, COL_HIGHLIGHT, COL_LOWLIGHT);
ret[COL_PEG * 3 + 0] = 0.0F;
ret[COL_PEG * 3 + 1] = 0.0F;
char *bin2hex(const unsigned char *in, int inlen);
unsigned char *hex2bin(const char *in, int outlen);
+/* Sets (and possibly dims) background from frontend default colour,
+ * and auto-generates highlight and lowlight colours too. */
+void game_mkhighlight(frontend *fe, float *ret,
+ int background, int highlight, int lowlight);
/*
* version.c
{
float *ret = snewn(3 * NCOLOURS, float);
int i;
- float max;
- frontend_default_colour(fe, &ret[COL_BACKGROUND * 3]);
+ game_mkhighlight(fe, ret, COL_BACKGROUND, COL_HIGHLIGHT, COL_LOWLIGHT);
- /*
- * Drop the background colour so that the highlight is
- * noticeably brighter than it while still being under 1.
- */
- max = ret[COL_BACKGROUND*3];
- for (i = 1; i < 3; i++)
- if (ret[COL_BACKGROUND*3+i] > max)
- max = ret[COL_BACKGROUND*3+i];
- if (max * 1.2F > 1.0F) {
- for (i = 0; i < 3; i++)
- ret[COL_BACKGROUND*3+i] /= (max * 1.2F);
- }
-
- for (i = 0; i < 3; i++) {
- ret[COL_HIGHLIGHT * 3 + i] = ret[COL_BACKGROUND * 3 + i] * 1.2F;
- ret[COL_LOWLIGHT * 3 + i] = ret[COL_BACKGROUND * 3 + i] * 0.8F;
+ for (i = 0; i < 3; i++)
ret[COL_TEXT * 3 + i] = 0.0;
- }
*ncolours = NCOLOURS;
return ret;
{
float *ret = snewn(3 * NCOLOURS, float);
int i;
- float max;
- frontend_default_colour(fe, &ret[COL_BACKGROUND * 3]);
-
- /*
- * Drop the background colour so that the highlight is
- * noticeably brighter than it while still being under 1.
- */
- max = ret[COL_BACKGROUND*3];
- for (i = 1; i < 3; i++)
- if (ret[COL_BACKGROUND*3+i] > max)
- max = ret[COL_BACKGROUND*3+i];
- if (max * 1.2F > 1.0F) {
- for (i = 0; i < 3; i++)
- ret[COL_BACKGROUND*3+i] /= (max * 1.2F);
- }
+ game_mkhighlight(fe, ret, COL_BACKGROUND, COL_HIGHLIGHT, COL_LOWLIGHT);
for (i = 0; i < 3; i++) {
- ret[COL_HIGHLIGHT * 3 + i] = ret[COL_BACKGROUND * 3 + i] * 1.2F;
ret[COL_HIGHLIGHT_GENTLE * 3 + i] = ret[COL_BACKGROUND * 3 + i] * 1.1F;
- ret[COL_LOWLIGHT * 3 + i] = ret[COL_BACKGROUND * 3 + i] * 0.8F;
ret[COL_LOWLIGHT_GENTLE * 3 + i] = ret[COL_BACKGROUND * 3 + i] * 0.9F;
ret[COL_TEXT * 3 + i] = 0.0;
}