X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/8266f3fccfd8621ac980d6209cbeac94e0a9c69b..3c9562a2f71995e2a6f6d6fee0bcead2bebfdebc:/puzzles.h diff --git a/puzzles.h b/puzzles.h index e910b3c..129ddd1 100644 --- a/puzzles.h +++ b/puzzles.h @@ -159,7 +159,7 @@ void get_random_seed(void **randseed, int *randseedsize); /* * drawing.c */ -drawing *drawing_init(const drawing_api *api, void *handle); +drawing *drawing_new(const drawing_api *api, midend *me, void *handle); void drawing_free(drawing *dr); void draw_text(drawing *dr, int x, int y, int fonttype, int fontsize, int align, int colour, char *text); @@ -215,6 +215,7 @@ int midend_process_key(midend *me, int x, int y, int button); void midend_force_redraw(midend *me); void midend_redraw(midend *me); float *midend_colours(midend *me, int *ncolours); +void midend_freeze_timer(midend *me, float tprop); void midend_timer(midend *me, float tplus); int midend_num_presets(midend *me); void midend_fetch_preset(midend *me, int n, @@ -278,8 +279,24 @@ void draw_rect_outline(drawing *dr, int x, int y, int w, int h, /* * dsf.c */ +int *snew_dsf(int size); + +void print_dsf(int *dsf, int size); + +/* Return the canonical element of the equivalence class containing element + * val. If 'inverse' is non-NULL, this function will put into it a flag + * indicating whether the canonical element is inverse to val. */ +int edsf_canonify(int *dsf, int val, int *inverse); int dsf_canonify(int *dsf, int val); + +/* Allow the caller to specify that two elements should be in the same + * equivalence class. If 'inverse' is TRUE, the elements are actually opposite + * to one another in some sense. This function will fail an assertion if the + * caller gives it self-contradictory data, ie if two elements are claimed to + * be both opposite and non-opposite. */ +void edsf_merge(int *dsf, int v1, int v2, int inverse); void dsf_merge(int *dsf, int v1, int v2); +void dsf_init(int *dsf, int len); /* * version.c @@ -348,7 +365,7 @@ void free_combi(combi_ctx *combi); */ struct game { const char *name; - const char *winhelp_topic; + const char *winhelp_topic, *htmlhelp_topic; game_params *(*default_params)(void); int (*fetch_preset)(int i, char **name, game_params **params); void (*decode_params)(game_params *, char const *string); @@ -396,7 +413,7 @@ struct game { int can_print, can_print_in_colour; void (*print_size)(game_params *params, float *x, float *y); void (*print)(drawing *dr, game_state *state, int tilesize); - int (*wants_statusbar)(void); + int wants_statusbar; int is_timed; int (*timing_state)(game_state *state, game_ui *ui); int flags;