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); }
/* 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 }