Beispiel #1
0
static void real_set_color_palette(MT_COLOR_PALETTE *pal)
{
   GString *str;
   MT_COLOR *col;

   str = g_string_new(NULL);

   /* MT_BACKGROUND: */
   col = &(*pal)[MT_BACKGROUND];
   g_string_truncate(str, 0);
   COL2("bg", col);
   parse_rc_string(str->str, "*");

   /* MT_FOREGROUND: */
   col = &(*pal)[MT_FOREGROUND];
   g_string_set_size(str, 0);
   COL2("fg", col);
   parse_rc_string(str->str, "*");

   /* MT_WINDOW_BACKGROUND: */
   col = &(*pal)[MT_WINDOW_BACKGROUND];
   g_string_truncate(str, 0);
   COL2("base", col);
   parse_rc_string(str->str, "*");
   
   /* MT_WINDOW_FOREGROUND: */
   col = &(*pal)[MT_WINDOW_FOREGROUND];
   g_string_truncate(str, 0);
   COL2("text", col);
   parse_rc_string(str->str, "*");

   /* MT_BUTTON_BACKGROUND: */
   col = &(*pal)[MT_BUTTON_BACKGROUND];
   g_string_truncate(str, 0);
   COL2("bg", col);
   parse_rc_string(str->str, "*.GtkButton");
   
   /* MT_BUTTON_FOREGROUND: */
   col = &(*pal)[MT_BUTTON_FOREGROUND];
   g_string_truncate(str, 0);
   COL2("text", col);
   parse_rc_string(str->str, "*.GtkButton");

   /* MT_SELECTED_BACKGROUND: */
   col = &(*pal)[MT_SELECTED_BACKGROUND];
   g_string_truncate(str, 0);
   COL1("base", "SELECTED", col);
   COL1("base", "ACTIVE", col);
   COL1("bg", "SELECTED", col);
   parse_rc_string(str->str, "*");

   g_string_truncate(str, 0);
   COL1("bg", "PRELIGHT", col);
   parse_rc_string(str->str, "*Menu*");

   col = &(*pal)[MT_BACKGROUND];
   g_string_truncate(str, 0);
   COL1("bg", "PRELIGHT", col);
   parse_rc_string(str->str, "*MenuBar*");
   
   /* MT_SELECTED_FOREGROUND: */
   col = &(*pal)[MT_SELECTED_FOREGROUND];
   g_string_truncate(str, 0);
   COL1("text", "SELECTED", col);
   COL1("text", "ACTIVE", col);
   COL1("fg", "SELECTED", col);
   parse_rc_string(str->str, "*");

   g_string_truncate(str, 0);
   COL1("fg", "PRELIGHT", col);
   COL1("text", "PRELIGHT", col);
   parse_rc_string(str->str, "*Menu*");

   col = &(*pal)[MT_FOREGROUND];
   g_string_truncate(str, 0);
   COL1("fg", "PRELIGHT", col);
   parse_rc_string(str->str, "*MenuBar*");

   /* MT_DISABLED_BACKGROUND: */
   col = &(*pal)[MT_DISABLED_BACKGROUND];
   g_string_truncate(str, 0);
   COL1("base", "INSENSITIVE", col);
   parse_rc_string(str->str, "*");
   
   /* MT_DISABLED_FOREGROUND: */
   col = &(*pal)[MT_DISABLED_FOREGROUND];
   g_string_truncate(str, 0);
   COL1("text", "INSENSITIVE", col);
   COL1("fg", "INSENSITIVE", col);
   /* COL1("bg", "INSENSITIVE", col); */
   parse_rc_string(str->str, "*");


   /* GtkOptionMenu: */
   col = &(*pal)[MT_WINDOW_BACKGROUND];
   g_string_truncate(str, 0);
   COL1("bg", "NORMAL", col);
   COL1("bg", "ACTIVE", col);
   COL1("bg", "PRELIGHT", col);
   parse_rc_string(str->str, "*.GtkOptionMenu");

   col = &(*pal)[MT_WINDOW_FOREGROUND];
   g_string_truncate(str, 0);
   COL1("fg", "NORMAL", col);
   COL1("fg", "PRELIGHT", col);
   parse_rc_string(str->str, "*.GtkOptionMenu.*");

   g_string_free(str, TRUE);
}
Beispiel #2
0
/* Call before first call to solve()
*/
void initsolve(struct solver *self)
{
  int x, y, s;
  int r = 0, c;
  int base;

  memset(self->nrows, 0, sizeof(self->nrows));
  memset(self->ncols, 0, sizeof(self->ncols));

  for (x = 0; x < 9; x++) {
    for (y = 0; y < 9; y++) {
      int box = 3*(x/3) + y/3;
      for (s = 0; s < 9; s++) {
        base = 0;
        self->ncols[r] = 0;

        NEXTCOL(r) = base + x * 9 + y;
        base += 81;
        NEXTCOL(r) = base + x * 9 + s;
        base += 81;
        NEXTCOL(r) = base + y * 9 + s;
        base += 81;
        NEXTCOL(r) = base + box * 9 + s;

        r++;
      }
    }
  }

  self->colcount = base;

  for (r = 0; r < NROWS; r++) {
    assert (self->col[r][0] == r / 9);
    assert (self->col[r][1] == 81 + (r/81)*9 + r%9);
    assert (self->col[r][2] == 162 + r%81);
    assert (self->col[r][3] == 243 + (r / 243) * 27 + ((r / 27) * 9) % 27 + r % 9);

    assert (self->col[r][0] == COL0(r));
    assert (self->col[r][1] == COL1(r));
    assert (self->col[r][2] == COL2(r));
    assert (self->col[r][3] == COL3(r));

    int i;
    for (i = 0; i < self->ncols[r]; i++) {
      c = self->col[r][i];
      self->row[c][self->nrows[c]] = r;
      self->nrows[c]++;
#if 0
      printf("%d - %d rows (cur row %d)\n", c, nrows[c], r);
      explaincol(c);
#endif
      assert(self->nrows[c] <= ROWS_SET);
    }
  }

#if 0
  for (c = 0; c < 324; c++) {
    printf("col %d:", c);
    for (r = 0; r < 9; r++) {
      printf(" %d", self->row[c][r]);
    }
    printf("\n");

    printf("XXX %d:", c);
    for (r = 0; r < 9; r++) {
      printf(" %d", calc_rownum(c, r));
      assert (self->row[c][r] == calc_rownum(c, r));
    }
    printf("\n");
  }
#endif
}