X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/cb0c7d4a682a68dfeb06e1c4e3aeb01cdf126c5e..cb22d3a69ec93769fbf22fa1535892c92e36f99d:/puzzles.h diff --git a/puzzles.h b/puzzles.h index ff991ad..1c5342d 100644 --- a/puzzles.h +++ b/puzzles.h @@ -7,6 +7,7 @@ #include /* for FILE */ #include /* for size_t */ +#include /* for UINT_MAX */ #ifndef TRUE #define TRUE 1 @@ -78,6 +79,7 @@ enum { #define SMALL_SCREEN #define PORTRAIT_SCREEN #define VIVID_COLOURS + #define STYLUS_BASED #endif #define IGNOREARG(x) ( (x) = (x) ) @@ -108,14 +110,12 @@ typedef struct psdata psdata; #define FONT_VARIABLE 1 /* For printing colours */ -#define HATCH_SOLID 0 -#define HATCH_CLEAR 1 -#define HATCH_SLASH 2 -#define HATCH_BACKSLASH 3 -#define HATCH_HORIZ 4 -#define HATCH_VERT 5 -#define HATCH_PLUS 6 -#define HATCH_X 7 +#define HATCH_SLASH 1 +#define HATCH_BACKSLASH 2 +#define HATCH_HORIZ 3 +#define HATCH_VERT 4 +#define HATCH_PLUS 5 +#define HATCH_X 6 /* * Structure used to pass configuration data between frontend and @@ -203,11 +203,15 @@ void print_begin_puzzle(drawing *dr, float xm, float xc, void print_end_puzzle(drawing *dr); void print_end_page(drawing *dr, int number); void print_end_doc(drawing *dr); -void print_get_colour(drawing *dr, int colour, int *hatch, - float *r, float *g, float *b); +void print_get_colour(drawing *dr, int colour, int printing_in_colour, + int *hatch, float *r, float *g, float *b); int print_mono_colour(drawing *dr, int grey); /* 0==black, 1==white */ -int print_grey_colour(drawing *dr, int hatch, float grey); -int print_rgb_colour(drawing *dr, int hatch, float r, float g, float b); +int print_grey_colour(drawing *dr, float grey); +int print_hatched_colour(drawing *dr, int hatch); +int print_rgb_mono_colour(drawing *dr, float r, float g, float b, int mono); +int print_rgb_grey_colour(drawing *dr, float r, float g, float b, float grey); +int print_rgb_hatched_colour(drawing *dr, float r, float g, float b, + int hatch); void print_line_width(drawing *dr, int width); /* @@ -218,7 +222,7 @@ midend *midend_new(frontend *fe, const game *ourgame, void midend_free(midend *me); void midend_set_params(midend *me, game_params *params); game_params *midend_get_params(midend *me); -void midend_size(midend *me, int *x, int *y, int expand); +void midend_size(midend *me, int *x, int *y, int user_size); void midend_new_game(midend *me); void midend_restart_game(midend *me); void midend_stop_anim(midend *me); @@ -231,6 +235,7 @@ void midend_timer(midend *me, float tplus); int midend_num_presets(midend *me); void midend_fetch_preset(midend *me, int n, char **name, game_params **params); +int midend_which_preset(midend *me); int midend_wants_statusbar(midend *me); enum { CFG_SETTINGS, CFG_SEED, CFG_DESC, CFG_FRONTEND_SPECIFIC }; config_item *midend_get_config(midend *me, int which, char **wintitle); @@ -279,6 +284,10 @@ unsigned char *hex2bin(const char *in, int outlen); * and auto-generates highlight and lowlight colours too. */ void game_mkhighlight(frontend *fe, float *ret, int background, int highlight, int lowlight); +/* As above, but starts from a provided background colour rather + * than the frontend default. */ +void game_mkhighlight_specific(frontend *fe, float *ret, + int background, int highlight, int lowlight); /* Randomly shuffles an array of items. */ void shuffle(void *array, int nelts, int eltsize, random_state *rs); @@ -326,7 +335,14 @@ void random_free(random_state *state); char *random_state_encode(random_state *state); random_state *random_state_decode(char *input); /* random.c also exports SHA, which occasionally comes in useful. */ +#if __STDC_VERSION__ >= 199901L +#include +typedef uint32_t uint32; +#elif UINT_MAX >= 4294967295L +typedef unsigned int uint32; +#else typedef unsigned long uint32; +#endif typedef struct { uint32 h[5]; unsigned char block[64]; @@ -369,6 +385,12 @@ combi_ctx *next_combi(combi_ctx *combi); /* returns NULL for end */ void free_combi(combi_ctx *combi); /* + * divvy.c + */ +/* divides w*h rectangle into pieces of size k. Returns w*h dsf. */ +int *divvy_rectangle(int w, int h, int k, random_state *rs); + +/* * Data structure containing the function calls and data specific * to a particular game. This is enclosed in a data structure so * that a particular platform can choose, if it wishes, to compile