X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/937a9efffe3be5ecb6c6b9fb6596644d05aed3d9..a4c9750f8f338b67f47b13cacfc882b4f7c8479b:/misc.c diff --git a/misc.c b/misc.c index 025083d..b832ee0 100644 --- a/misc.c +++ b/misc.c @@ -147,8 +147,6 @@ unsigned char *hex2bin(const char *in, int outlen) unsigned char *ret = snewn(outlen, unsigned char); int i; - debug(("hex2bin: in '%s'", in)); - memset(ret, 0, outlen*sizeof(unsigned char)); for (i = 0; i < outlen*2; i++) { int c = in[i]; @@ -196,4 +194,31 @@ void game_mkhighlight(frontend *fe, float *ret, } } +void shuffle(void *array, int nelts, int eltsize, random_state *rs) +{ + char *tmp = smalloc(eltsize); + char *carray = (char *)array; + int i; + + for (i = nelts; i-- > 1 ;) { + int j = random_upto(rs, i+1); + if (j != i) { + memcpy(tmp, carray + eltsize * i, eltsize); + memcpy(carray + eltsize * i, carray + eltsize * j, eltsize); + memcpy(carray + eltsize * j, tmp, eltsize); + } + } + sfree(tmp); +} + +void draw_rect_outline(frontend *fe, int x, int y, int w, int h, int colour) +{ + int x0 = x, x1 = x+w-1, y0 = y, y1 = y+h-1; + + draw_line(fe, x0, y0, x0, y1, colour); + draw_line(fe, x0, y1, x1, y1, colour); + draw_line(fe, x1, y1, x1, y0, colour); + draw_line(fe, x1, y0, x0, y0, colour); +} + /* vim: set shiftwidth=4 tabstop=8: */