CURSOR_DOWN,
CURSOR_LEFT,
CURSOR_RIGHT,
+ CURSOR_SELECT,
/* made smaller because of 'limited range of datatype' errors. */
MOD_CTRL = 0x1000,
typedef struct game_ui game_ui;
typedef struct game_drawstate game_drawstate;
typedef struct game game;
+typedef struct blitter blitter;
#define ALIGN_VNORMAL 0x000
#define ALIGN_VCENTRE 0x100
void draw_line(frontend *fe, int x1, int y1, int x2, int y2, int colour);
void draw_polygon(frontend *fe, int *coords, int npoints,
int fill, int colour);
+void draw_circle(frontend *fe, int cx, int cy, int radius,
+ int fill, int colour);
void clip(frontend *fe, int x, int y, int w, int h);
void unclip(frontend *fe);
void start_draw(frontend *fe);
void status_bar(frontend *fe, char *text);
void get_random_seed(void **randseed, int *randseedsize);
+blitter *blitter_new(int w, int h);
+void blitter_free(blitter *bl);
+/* save puts the portion of the current display with top-left corner
+ * (x,y) to the blitter. load puts it back again to the specified
+ * coords, or else wherever it was saved from
+ * (if x = y = BLITTER_FROMSAVED). */
+void blitter_save(frontend *fe, blitter *bl, int x, int y);
+#define BLITTER_FROMSAVED (-1)
+void blitter_load(frontend *fe, blitter *bl, int x, int y);
+
/*
* midend.c
*/
* misc.c
*/
void free_cfg(config_item *cfg);
+void obfuscate_bitmap(unsigned char *bmp, int bits, int decode);
+
+/* allocates output each time. len is always in bytes of binary data.
+ * May assert (or just go wrong) if lengths are unchecked. */
+char *bin2hex(const unsigned char *in, int inlen);
+unsigned char *hex2bin(const char *in, int outlen);
+
/*
* version.c
game_state *(*dup_game)(game_state *state);
void (*free_game)(game_state *state);
int can_solve;
- game_state *(*solve)(game_state *state, game_aux_info *aux, char **error);
+ game_state *(*solve)(game_state *orig, game_state *curr,
+ game_aux_info *aux, char **error);
int can_format_as_text;
char *(*text_format)(game_state *state);
game_ui *(*new_ui)(game_state *state);