# HG changeset patch # User Matti Hamalainen # Date 1349021586 -10800 # Node ID a239b7d4e13b502367af467f88811bdc701f8b3f # Parent 281b080e8c4476561ef5dd5df672b5d1f41fb2b0 Modularize progress meter. diff -r 281b080e8c44 -r a239b7d4e13b dmsimple.c --- a/dmsimple.c Sat Sep 29 20:47:08 2012 +0300 +++ b/dmsimple.c Sun Sep 30 19:13:06 2012 +0300 @@ -5,6 +5,39 @@ DMFrameData frame; +int engineShowProgress(int loaded, int total) +{ + int dx = 60, + dh = 20, + dw = engine.screen->w - (2 * dx), + dy = (engine.screen->h - dh) / 2; + + if (SDL_MUSTLOCK(engine.screen) != 0 && SDL_LockSurface(engine.screen) != 0) + return DMERR_INIT_FAIL; + + // Draw the progress bar + dmClearSurface(engine.screen, dmMapRGBA(engine.screen, 0,0,0,0)); + dmFillRect(engine.screen, dx, dy, dx+dw, dy+dh, dmMapRGB(engine.screen, 255,255,255)); + dmFillRect(engine.screen, dx+1, dy+1, dx+dw-1, dy+dh-1, dmMapRGB(engine.screen, 0,0,0)); + + if (total > 0) + { + dmFillRect(engine.screen, + dx+3, dy+3, + dx + 3 + ((dw - 3) * loaded) / total, + dy + dh - 3, + dmMapRGB(engine.screen, 200,200,200)); + } + + // Flip screen + if (SDL_MUSTLOCK(engine.screen) != 0) + SDL_UnlockSurface(engine.screen); + + SDL_Flip(engine.screen); + return DMERR_OK; +} + + int engineLoadResources() { int err, loaded, total; @@ -16,33 +49,8 @@ // Show a nice progress bar while loading if (total > 0 && (loaded % 2) == 0) { - int dx = 60, - dh = 20, - dw = engine.screen->w - (2 * dx), - dy = (engine.screen->h - dh) / 2; - - if (SDL_MUSTLOCK(engine.screen) != 0 && SDL_LockSurface(engine.screen) != 0) - return DMERR_INIT_FAIL; - - // Draw the progress bar - dmClearSurface(engine.screen, dmMapRGBA(engine.screen, 0,0,0,0)); - dmFillRect(engine.screen, dx, dy, dx+dw, dy+dh, dmMapRGB(engine.screen, 255,255,255)); - dmFillRect(engine.screen, dx+1, dy+1, dx+dw-1, dy+dh-1, dmMapRGB(engine.screen, 0,0,0)); - - if (total > 0) - { - dmFillRect(engine.screen, - dx+3, dy+3, - dx + 3 + ((dw - 3) * loaded) / total, - dy + dh - 3, - dmMapRGB(engine.screen, 200,200,200)); - } - - // Flip screen - if (SDL_MUSTLOCK(engine.screen) != 0) - SDL_UnlockSurface(engine.screen); - - SDL_Flip(engine.screen); + if ((err = engineShowProgress(loaded, total)) != DMERR_OK) + return err; } }