changeset 40:a239b7d4e13b

Modularize progress meter.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 30 Sep 2012 19:13:06 +0300
parents 281b080e8c44
children 780300a8d322
files dmsimple.c
diffstat 1 files changed, 35 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- 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;
         }
     }