diff --git a/magic/src/fill.c b/magic/src/fill.c index c2922d62e..75f4fda12 100644 --- a/magic/src/fill.c +++ b/magic/src/fill.c @@ -39,15 +39,13 @@ /* Our globals: */ -static Mix_Chunk * fill_snd; +static Mix_Chunk *fill_snd; static Uint8 fill_r, fill_g, fill_b; /* Local function prototypes: */ -static int colors_close(magic_api * api, SDL_Surface * canvas, - Uint32 c1, Uint32 c2); -static void do_flood_fill(magic_api * api, SDL_Surface * canvas, int x, int y, - Uint32 cur_colr, Uint32 old_colr); +static int colors_close(magic_api * api, SDL_Surface * canvas, Uint32 c1, Uint32 c2); +static void do_flood_fill(magic_api * api, SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr); int fill_modes(magic_api * api, int which); void fill_switchout(magic_api * api, int which, int mode, SDL_Surface * canvas); void fill_switchin(magic_api * api, int which, int mode, SDL_Surface * canvas); @@ -55,18 +53,15 @@ int fill_requires_colors(magic_api * api, int which); void fill_set_color(magic_api * api, Uint8 r, Uint8 g, Uint8 b); void fill_shutdown(magic_api * api); void fill_release(magic_api * api, int which, - SDL_Surface * canvas, SDL_Surface * last, - int x, int y, SDL_Rect * update_rect); + SDL_Surface * canvas, SDL_Surface * last, int x, int y, SDL_Rect * update_rect); void fill_click(magic_api * api, int which, int mode, - SDL_Surface * canvas, SDL_Surface * last, - int x, int y, SDL_Rect * update_rect); + SDL_Surface * canvas, SDL_Surface * last, int x, int y, SDL_Rect * update_rect); void fill_drag(magic_api * api, int which, SDL_Surface * canvas, - SDL_Surface * last, int ox, int oy, int x, int y, - SDL_Rect * update_rect); -char * fill_get_description(magic_api * api, int which, int mode); -char * fill_get_name(magic_api * api, int which); + SDL_Surface * last, int ox, int oy, int x, int y, SDL_Rect * update_rect); +char *fill_get_description(magic_api * api, int which, int mode); +char *fill_get_name(magic_api * api, int which); int fill_get_tool_count(magic_api * api); -SDL_Surface * fill_get_icon(magic_api * api, int which); +SDL_Surface *fill_get_icon(magic_api * api, int which); Uint32 fill_api_version(void); int fill_init(magic_api * api); @@ -76,61 +71,59 @@ int fill_init(magic_api * api) { char fname[1024]; - snprintf(fname, sizeof(fname), "%s/sounds/magic/fill.wav", - api->data_directory); + snprintf(fname, sizeof(fname), "%s/sounds/magic/fill.wav", api->data_directory); fill_snd = Mix_LoadWAV(fname); - return(1); + return (1); } -Uint32 fill_api_version(void) { return(TP_MAGIC_API_VERSION); } +Uint32 fill_api_version(void) +{ + return (TP_MAGIC_API_VERSION); +} // We have multiple tools: int fill_get_tool_count(magic_api * api ATTRIBUTE_UNUSED) { - return(1); + return (1); } // Load our icons: -SDL_Surface * fill_get_icon(magic_api * api, int which ATTRIBUTE_UNUSED) +SDL_Surface *fill_get_icon(magic_api * api, int which ATTRIBUTE_UNUSED) { char fname[1024]; - snprintf(fname, sizeof(fname), "%s/images/magic/fill.png", - api->data_directory); + snprintf(fname, sizeof(fname), "%s/images/magic/fill.png", api->data_directory); - return(IMG_Load(fname)); + return (IMG_Load(fname)); } // Return our names, localized: -char * fill_get_name(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED) +char *fill_get_name(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED) { - return(strdup(gettext_noop("Fill"))); + return (strdup(gettext_noop("Fill"))); } // Return our descriptions, localized: -char * fill_get_description(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED) +char *fill_get_description(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED) { - return(strdup(gettext_noop( -"Click in the picture to fill that area with color."))); + return (strdup(gettext_noop("Click in the picture to fill that area with color."))); } // Affect the canvas on drag: void fill_drag(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, SDL_Surface * canvas ATTRIBUTE_UNUSED, - SDL_Surface * last ATTRIBUTE_UNUSED, int ox ATTRIBUTE_UNUSED, int oy ATTRIBUTE_UNUSED, int x ATTRIBUTE_UNUSED, int y ATTRIBUTE_UNUSED, - SDL_Rect * update_rect ATTRIBUTE_UNUSED) + SDL_Surface * last ATTRIBUTE_UNUSED, int ox ATTRIBUTE_UNUSED, int oy ATTRIBUTE_UNUSED, + int x ATTRIBUTE_UNUSED, int y ATTRIBUTE_UNUSED, SDL_Rect * update_rect ATTRIBUTE_UNUSED) { } // Affect the canvas on click: void fill_click(magic_api * api, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED, - SDL_Surface * canvas ATTRIBUTE_UNUSED, SDL_Surface * last ATTRIBUTE_UNUSED, - int x, int y, SDL_Rect * update_rect) + SDL_Surface * canvas ATTRIBUTE_UNUSED, SDL_Surface * last ATTRIBUTE_UNUSED, + int x, int y, SDL_Rect * update_rect) { - do_flood_fill(api, canvas, x, y, SDL_MapRGB(canvas->format, - fill_r, fill_g, fill_b), - api->getpixel(canvas, x, y)); + do_flood_fill(api, canvas, x, y, SDL_MapRGB(canvas->format, fill_r, fill_g, fill_b), api->getpixel(canvas, x, y)); update_rect->x = 0; update_rect->y = 0; @@ -139,8 +132,8 @@ void fill_click(magic_api * api, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_ } void fill_release(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, - SDL_Surface * canvas ATTRIBUTE_UNUSED, SDL_Surface * last ATTRIBUTE_UNUSED, - int x ATTRIBUTE_UNUSED, int y ATTRIBUTE_UNUSED, SDL_Rect * update_rect ATTRIBUTE_UNUSED) + SDL_Surface * canvas ATTRIBUTE_UNUSED, SDL_Surface * last ATTRIBUTE_UNUSED, + int x ATTRIBUTE_UNUSED, int y ATTRIBUTE_UNUSED, SDL_Rect * update_rect ATTRIBUTE_UNUSED) { } @@ -164,42 +157,41 @@ int fill_requires_colors(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_U } -static int colors_close(magic_api * api, SDL_Surface * canvas, - Uint32 c1, Uint32 c2) +static int colors_close(magic_api * api, SDL_Surface * canvas, Uint32 c1, Uint32 c2) { Uint8 r1, g1, b1, r2, g2, b2; if (c1 == c2) - { - /* Get it over with quick, if possible! */ + { + /* Get it over with quick, if possible! */ - return 1; - } + return 1; + } else - { - double r, g, b; - SDL_GetRGB(c1, canvas->format, &r1, &g1, &b1); - SDL_GetRGB(c2, canvas->format, &r2, &g2, &b2); + { + double r, g, b; - // use distance in linear RGB space - r = api->sRGB_to_linear(r1) - api->sRGB_to_linear(r2); - r *= r; - g = api->sRGB_to_linear(g1) - api->sRGB_to_linear(g2); - g *= g; - b = api->sRGB_to_linear(b1) - api->sRGB_to_linear(b2); - b *= b; + SDL_GetRGB(c1, canvas->format, &r1, &g1, &b1); + SDL_GetRGB(c2, canvas->format, &r2, &g2, &b2); - // easy to confuse: - // dark grey, brown, purple - // light grey, tan - // red, orange - return r + g + b < 0.04; - } + // use distance in linear RGB space + r = api->sRGB_to_linear(r1) - api->sRGB_to_linear(r2); + r *= r; + g = api->sRGB_to_linear(g1) - api->sRGB_to_linear(g2); + g *= g; + b = api->sRGB_to_linear(b1) - api->sRGB_to_linear(b2); + b *= b; + + // easy to confuse: + // dark grey, brown, purple + // light grey, tan + // red, orange + return r + g + b < 0.04; + } } -static void do_flood_fill(magic_api * api, SDL_Surface * canvas, int x, int y, - Uint32 cur_colr, Uint32 old_colr) +static void do_flood_fill(magic_api * api, SDL_Surface * canvas, int x, int y, Uint32 cur_colr, Uint32 old_colr) { int fillL, fillR, i, in_line; static unsigned char prog_anim; @@ -214,10 +206,10 @@ static void do_flood_fill(magic_api * api, SDL_Surface * canvas, int x, int y, prog_anim++; if ((prog_anim % 4) == 0) - { - api->update_progress_bar(); - api->playsound(fill_snd, (x * 255) / canvas->w, 255); - } + { + api->update_progress_bar(); + api->playsound(fill_snd, (x * 255) / canvas->w, 255); + } /* Find left side, filling along the way */ @@ -225,15 +217,12 @@ static void do_flood_fill(magic_api * api, SDL_Surface * canvas, int x, int y, in_line = 1; while (in_line) - { - api->putpixel(canvas, fillL, y, cur_colr); - fillL--; + { + api->putpixel(canvas, fillL, y, cur_colr); + fillL--; - in_line = - (fillL < 0) ? 0 : colors_close(api, canvas, - api->getpixel(canvas, fillL, y), - old_colr); - } + in_line = (fillL < 0) ? 0 : colors_close(api, canvas, api->getpixel(canvas, fillL, y), old_colr); + } fillL++; @@ -241,14 +230,12 @@ static void do_flood_fill(magic_api * api, SDL_Surface * canvas, int x, int y, in_line = 1; while (in_line) - { - api->putpixel(canvas, fillR, y, cur_colr); - fillR++; + { + api->putpixel(canvas, fillR, y, cur_colr); + fillR++; - in_line = (fillR >= canvas->w) ? 0 : colors_close(api, canvas, - api->getpixel(canvas, fillR, y), - old_colr); - } + in_line = (fillR >= canvas->w) ? 0 : colors_close(api, canvas, api->getpixel(canvas, fillR, y), old_colr); + } fillR--; @@ -256,26 +243,26 @@ static void do_flood_fill(magic_api * api, SDL_Surface * canvas, int x, int y, /* Search top and bottom */ for (i = fillL; i <= fillR; i++) - { - if (y > 0 && colors_close(api, canvas, api->getpixel(canvas, i, y - 1), - old_colr)) - do_flood_fill(api, canvas, i, y - 1, cur_colr, old_colr); + { + if (y > 0 && colors_close(api, canvas, api->getpixel(canvas, i, y - 1), old_colr)) + do_flood_fill(api, canvas, i, y - 1, cur_colr, old_colr); - if (y < canvas->h - && colors_close(api, canvas, api->getpixel(canvas, i, y + 1), old_colr)) - do_flood_fill(api, canvas, i, y + 1, cur_colr, old_colr); - } + if (y < canvas->h && colors_close(api, canvas, api->getpixel(canvas, i, y + 1), old_colr)) + do_flood_fill(api, canvas, i, y + 1, cur_colr, old_colr); + } } -void fill_switchin(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED, SDL_Surface * canvas ATTRIBUTE_UNUSED) +void fill_switchin(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED, + SDL_Surface * canvas ATTRIBUTE_UNUSED) { } -void fill_switchout(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED, SDL_Surface * canvas ATTRIBUTE_UNUSED) +void fill_switchout(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED, int mode ATTRIBUTE_UNUSED, + SDL_Surface * canvas ATTRIBUTE_UNUSED) { } int fill_modes(magic_api * api ATTRIBUTE_UNUSED, int which ATTRIBUTE_UNUSED) { - return(MODE_PAINT); + return (MODE_PAINT); }