X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/fa3abef5abe95dd9668a87b1cc57a724dcbf6354..b5ba72bc4698800049947cdf7696cb44f11096bb:/puzzles.h diff --git a/puzzles.h b/puzzles.h index 1b1f013..a97746c 100644 --- a/puzzles.h +++ b/puzzles.h @@ -46,6 +46,7 @@ enum { CURSOR_LEFT, CURSOR_RIGHT, CURSOR_SELECT, + CURSOR_SELECT2, /* made smaller because of 'limited range of datatype' errors. */ MOD_CTRL = 0x1000, @@ -60,6 +61,9 @@ enum { (unsigned)(RIGHT_DRAG - LEFT_DRAG)) #define IS_MOUSE_RELEASE(m) ( (unsigned)((m) - LEFT_RELEASE) <= \ (unsigned)(RIGHT_RELEASE - LEFT_RELEASE)) +#define IS_CURSOR_MOVE(m) ( (m) == CURSOR_UP || (m) == CURSOR_DOWN || \ + (m) == CURSOR_RIGHT || (m) == CURSOR_LEFT ) +#define IS_CURSOR_SELECT(m) ( (m) == CURSOR_SELECT || (m) == CURSOR_SELECT2) /* * Flags in the back end's `flags' word. @@ -185,6 +189,7 @@ void unclip(drawing *dr); void start_draw(drawing *dr); void draw_update(drawing *dr, int x, int y, int w, int h); void end_draw(drawing *dr); +char *text_fallback(drawing *dr, const char *const *strings, int nstrings); void status_bar(drawing *dr, char *text); blitter *blitter_new(drawing *dr, int w, int h); void blitter_free(drawing *dr, blitter *bl); @@ -213,6 +218,7 @@ 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); +void print_line_dotted(drawing *dr, int dotted); /* * midend.c @@ -255,6 +261,7 @@ char *midend_deserialise(midend *me, void *rctx); /* Printing functions supplied by the mid-end */ char *midend_print_puzzle(midend *me, document *doc, int with_soln); +int midend_tilesize(midend *me); /* * malloc.c @@ -297,6 +304,21 @@ void shuffle(void *array, int nelts, int eltsize, random_state *rs); void draw_rect_outline(drawing *dr, int x, int y, int w, int h, int colour); +/* Draw a set of rectangle corners (e.g. for a cursor display). */ +void draw_rect_corners(drawing *dr, int cx, int cy, int r, int col); + +void move_cursor(int button, int *x, int *y, int maxw, int maxh, int wrap); + +/* Used in netslide.c and sixteen.c for cursor movement around edge. */ +int c2pos(int w, int h, int cx, int cy); +int c2diff(int w, int h, int cx, int cy, int button); +void pos2c(int w, int h, int pos, int *cx, int *cy); + +/* Draws text with an 'outline' formed by offsetting the text + * by one pixel; useful for highlighting. Outline is omitted if -1. */ +void draw_text_outline(drawing *dr, int x, int y, int fonttype, + int fontsize, int align, + int text_colour, int outline_colour, char *text); /* * dsf.c */ @@ -321,6 +343,12 @@ void dsf_merge(int *dsf, int v1, int v2); void dsf_init(int *dsf, int len); /* + * laydomino.c + */ +int *domino_layout(int w, int h, random_state *rs); +void domino_layout_prealloc(int w, int h, random_state *rs, + int *grid, int *grid2, int *list); +/* * version.c */ extern char ver[]; @@ -488,6 +516,9 @@ struct drawing_api { void (*end_page)(void *handle, int number); void (*end_doc)(void *handle); void (*line_width)(void *handle, float width); + void (*line_dotted)(void *handle, int dotted); + char *(*text_fallback)(void *handle, const char *const *strings, + int nstrings); }; /*