changeset 1321:6732a5ca1fae

Cleanup the dmsimple engine setup system a bit, move bits out of DMEngine struct to local global variables in dmsimple.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 21 Aug 2017 15:35:26 +0300
parents dd56f806c1a2
children c2000337ac3f
files src/dmengine.h src/dmsimple.c
diffstat 2 files changed, 75 insertions(+), 64 deletions(-) [+]
line wrap: on
line diff
--- a/src/dmengine.h	Sun Aug 20 03:55:08 2017 +0300
+++ b/src/dmengine.h	Mon Aug 21 15:35:26 2017 +0300
@@ -291,12 +291,6 @@
     int    (*demoRender)(struct DMEngineData *);
     void   (*demoShutdown)(struct DMEngineData *);
     void   (*demoQuit)(struct DMEngineData *);
-
-    // Setup specifics
-    DMVector setupMenuPos, setupMenuDim, setupText1Pos, setupText2Pos,
-             setupMenuBarOffs, setupMenuBarDimAdj;
-    BOOL setupMenuCenter, setupTextCondensed;
-    char setupTextFullscreen[64], setupTextWindowed[64], setupTextPrefix[64], setupTextEnterToStart[64];
 } DMEngineData;
 
 
--- a/src/dmsimple.c	Sun Aug 20 03:55:08 2017 +0300
+++ b/src/dmsimple.c	Mon Aug 21 15:35:26 2017 +0300
@@ -17,13 +17,28 @@
 #    include "setupmenubar.h"
 #endif
 
-static const char *engineSetupDataName = "SetupData.txt";
-static const char *engineSetupImageName = "SetupImage.png";
-static const char *engineSetupMenuBarName = "SetupMenuBar.png";
-static const char *engineSetupFontName = "SetupFont.dmf";
+// Setup specifics
+#define setupTextFieldLen 64
 
+static const char *setupDataName = "SetupData.txt";
+static const char *setupFontName = "SetupFont.dmf";
+static DMVector
+    setupMenuPos, setupMenuDim, setupText1Pos, setupText2Pos,
+    setupMenuBarOffs, setupMenuBarDimAdj;
+static BOOL setupMenuCenter, setupTextCondensed;
+static char
+    setupTextFullscreen[setupTextFieldLen],
+    setupTextWindowed[setupTextFieldLen],
+    setupTextPrefix[setupTextFieldLen],
+    setupTextEnterToStart[setupTextFieldLen],
+    setupImageName[setupTextFieldLen] = "SetupImage.png",
+    setupMenuBarName[setupTextFieldLen] = "SetupMenuBar.png";
+
+
+// Engine struct
 static DMEngineData engine;
 
+
 static const DMOptArg optList[] =
 {
     { 0, '?', "help",       "Show this help", OPT_NONE },
@@ -248,23 +263,25 @@
         // XXX TODO FIXME: Needs better parsing, with size checks etc.
         char *str = buf+pos;
         if (sscanf(str, "menuPos %f %f",
-            &engine.setupMenuPos.x, &engine.setupMenuPos.y) != 2 &&
+            &setupMenuPos.x, &setupMenuPos.y) != 2 &&
             sscanf(str, "menuDim %f %f",
-            &engine.setupMenuDim.x, &engine.setupMenuDim.y) != 2 &&
+            &setupMenuDim.x, &setupMenuDim.y) != 2 &&
             sscanf(str, "text1Pos %f %f",
-            &engine.setupText1Pos.x, &engine.setupText1Pos.y) != 2 &&
+            &setupText1Pos.x, &setupText1Pos.y) != 2 &&
             sscanf(str, "text2Pos %f %f",
-            &engine.setupText2Pos.x, &engine.setupText2Pos.y) != 2 &&
+            &setupText2Pos.x, &setupText2Pos.y) != 2 &&
             sscanf(str, "menuBarOffs %f %f",
-            &engine.setupMenuBarOffs.x, &engine.setupMenuBarOffs.y) != 2 &&
+            &setupMenuBarOffs.x, &setupMenuBarOffs.y) != 2 &&
             sscanf(str, "menuBarDimAdj %f %f",
-            &engine.setupMenuBarDimAdj.x, &engine.setupMenuBarDimAdj.y) != 2 &&
-            sscanf(str, "menuCenter %d", &engine.setupMenuCenter) != 1 &&
-            sscanf(str, "textCondensed %d", &engine.setupTextCondensed) != 1 &&
-            sscanf(str, "textFullscreen %s", engine.setupTextFullscreen) != 1 &&
-            sscanf(str, "textWindowed %s", engine.setupTextWindowed) != 1 &&
-            sscanf(str, "textPrefix %s", engine.setupTextPrefix) != 1 &&
-            sscanf(str, "textEnterToStart %s", engine.setupTextEnterToStart) != 1
+            &setupMenuBarDimAdj.x, &setupMenuBarDimAdj.y) != 2 &&
+            sscanf(str, "menuCenter %d", &setupMenuCenter) != 1 &&
+            sscanf(str, "textCondensed %d", &setupTextCondensed) != 1 &&
+            sscanf(str, "textFullscreen %s", setupTextFullscreen) != 1 &&
+            sscanf(str, "textWindowed %s", setupTextWindowed) != 1 &&
+            sscanf(str, "textPrefix %s", setupTextPrefix) != 1 &&
+            sscanf(str, "textEnterToStart %s", setupTextEnterToStart) != 1 &&
+            sscanf(str, "setupImageName %s", setupImageName) != 1 &&
+            sscanf(str, "setupMenuBarName %s", setupMenuBarName) != 1
             )
         {
             res = dmErrorDBG(DMERR_INVALID_DATA,
@@ -333,35 +350,35 @@
         goto out;
 
     // Get setup data
-    engine.setupMenuPos.x = 0.18750f;
-    engine.setupMenuPos.y = 0.41666f;
-    engine.setupMenuDim.x = 0.625f;
-    engine.setupMenuDim.y = 0.41666f;
+    setupMenuPos.x = 0.18750f;
+    setupMenuPos.y = 0.41666f;
+    setupMenuDim.x = 0.625f;
+    setupMenuDim.y = 0.41666f;
 
-    engine.setupMenuBarOffs.x = 0;
-    engine.setupMenuBarOffs.y = -0.0001;
+    setupMenuBarOffs.x = 0;
+    setupMenuBarOffs.y = -0.0001;
 
-    engine.setupMenuBarDimAdj.x = 0;
-    engine.setupMenuBarDimAdj.y = 0;
+    setupMenuBarDimAdj.x = 0;
+    setupMenuBarDimAdj.y = 0;
 
-    engine.setupText1Pos.x = 0.3f;
-    engine.setupText1Pos.y = 0.9f;
+    setupText1Pos.x = 0.3f;
+    setupText1Pos.y = 0.9f;
 
-    engine.setupText2Pos.x = 0.25f;
-    engine.setupText2Pos.y = 0.85f;
+    setupText2Pos.x = 0.25f;
+    setupText2Pos.y = 0.85f;
 
-    strcpy(engine.setupTextFullscreen   , "FULLSCREEN");
-    strcpy(engine.setupTextWindowed     , " WINDOWED ");
-    strcpy(engine.setupTextEnterToStart , "ENTER TO START THE DEMO");
-    strcpy(engine.setupTextPrefix       , "USE LEFT/RIGHT ARROW TO TOGGLE : ");
+    strcpy(setupTextFullscreen   , "FULLSCREEN");
+    strcpy(setupTextWindowed     , " WINDOWED ");
+    strcpy(setupTextEnterToStart , "ENTER TO START THE DEMO");
+    strcpy(setupTextPrefix       , "USE LEFT/RIGHT ARROW TO TOGGLE : ");
 
-    if (engineParseSetupConfig(engineSetupDataName) != DMERR_OK)
+    if (engineParseSetupConfig(setupDataName) != DMERR_OK)
         goto out;
 
     // Fetch and decompress setup image, try regular resources first
-    if ((result = dmf_open(engine.resources, engineSetupImageName, &file)) == DMERR_OK
+    if ((result = dmf_open(engine.resources, setupImageName, &file)) == DMERR_OK
 #ifdef DM_BUILT_IN_SETUP
-        || (result = dmf_create_memio(NULL, engineSetupImageName, engineSetupImage, sizeof(engineSetupImage), &file)) == DMERR_OK
+        || (result = dmf_create_memio(NULL, setupImageName, setupImage, sizeof(setupImage), &file)) == DMERR_OK
 #endif
         )
     {
@@ -369,9 +386,9 @@
         dmf_close(file);
     }
 
-    if ((result = dmf_open(engine.resources, engineSetupMenuBarName, &file)) == DMERR_OK
+    if ((result = dmf_open(engine.resources, setupMenuBarName, &file)) == DMERR_OK
 #ifdef DM_BUILT_IN_SETUP
-        || (result = dmf_create_memio(NULL, engineSetupMenuBarName, engineSetupMenuBar, sizeof(engineSetupMenuBar), &file)) == DMERR_OK
+        || (result = dmf_create_memio(NULL, setupMenuBarName, setupMenuBar, sizeof(setupMenuBar), &file)) == DMERR_OK
 #endif
         )
     {
@@ -400,9 +417,9 @@
 
 
     // Load up the bitmap font
-    if ((result = dmf_open(engine.resources, engineSetupFontName, &file)) == DMERR_OK
+    if ((result = dmf_open(engine.resources, setupFontName, &file)) == DMERR_OK
 #ifdef DM_BUILT_IN_SETUP
-        || (result = dmf_create_memio(NULL, engineSetupFontName, engineSetupFont, sizeof(engineSetupFont), &file)) == DMERR_OK
+        || (result = dmf_create_memio(NULL, setupFontName, setupFont, sizeof(setupFont), &file)) == DMERR_OK
 #endif
         )
     {
@@ -438,7 +455,7 @@
     int menuOffset = 0,
         menuIndex = 0,
         menuEntryHeight = menuFont->height + 2,
-        menuHeight = vsY(engine.setupMenuDim) / menuEntryHeight;
+        menuHeight = vsY(setupMenuDim) / menuEntryHeight;
 
     menuState = 0;
 
@@ -521,10 +538,10 @@
             if (entry == menuOffset + menuIndex)
             {
                 dmScaledBlitSurface32to32TransparentGA(menuBarImage,
-                    vsX(engine.setupMenuPos) + vsX(engine.setupMenuBarOffs),
-                    vsY(engine.setupMenuPos) + vsY(engine.setupMenuBarOffs) + (index * menuEntryHeight),
-                    vsX(engine.setupMenuDim) + vsX(engine.setupMenuBarDimAdj),
-                    menuEntryHeight + vsY(engine.setupMenuBarDimAdj),
+                    vsX(setupMenuPos) + vsX(setupMenuBarOffs),
+                    vsY(setupMenuPos) + vsY(setupMenuBarOffs) + (index * menuEntryHeight),
+                    vsX(setupMenuDim) + vsX(setupMenuBarDimAdj),
+                    menuEntryHeight + vsY(setupMenuBarDimAdj),
                     engine.screen,
                     200 + sin(t * 10.0) * 50);
             }
@@ -535,35 +552,35 @@
                 mode->aspect / 1000,
                 mode->aspect % 1000);
 
-            DMFloat posX = engine.setupMenuCenter ?
-                2.0f + (vsX(engine.setupMenuDim) - menuFont->width * strlen(menuStr)) / 2.0f :
+            DMFloat posX = setupMenuCenter ?
+                2.0f + (vsX(setupMenuDim) - menuFont->width * strlen(menuStr)) / 2.0f :
                 2.0f;
 
             dmDrawBMTextConst(
                 engine.screen, menuFont,
-                engine.setupTextCondensed, DMD_TRANSPARENT,
-                vsX(engine.setupMenuPos) + posX,
-                vsY(engine.setupMenuPos) + (index * menuEntryHeight),
+                setupTextCondensed, DMD_TRANSPARENT,
+                vsX(setupMenuPos) + posX,
+                vsY(setupMenuPos) + (index * menuEntryHeight),
                 menuStr);
         }
 
         dmDrawBMTextConst(
             engine.screen, menuFont,
-            engine.setupTextCondensed, DMD_TRANSPARENT,
-            vsX(engine.setupText2Pos),
-            vsY(engine.setupText2Pos),
-            engine.setupTextEnterToStart);
+            setupTextCondensed, DMD_TRANSPARENT,
+            vsX(setupText2Pos),
+            vsY(setupText2Pos),
+            setupTextEnterToStart);
 
         snprintf(menuStr, sizeof(menuStr),
             "%s%s",
-            engine.setupTextPrefix,
-            menuFullScreen ? engine.setupTextFullscreen : engine.setupTextWindowed);
+            setupTextPrefix,
+            menuFullScreen ? setupTextFullscreen : setupTextWindowed);
 
         dmDrawBMTextConst(
             engine.screen, menuFont,
-            engine.setupTextCondensed, DMD_TRANSPARENT,
-            vsX(engine.setupText1Pos),
-            vsY(engine.setupText1Pos),
+            setupTextCondensed, DMD_TRANSPARENT,
+            vsX(setupText1Pos),
+            vsY(setupText1Pos),
             menuStr);
 
         // Flip screen