changeset 67:1327ef5dc9fb

Remove -w and -h options and replace them with -s <width>x<height>.
author Matti Hamalainen <ccr@tnsp.org>
date Sun, 15 Dec 2019 23:16:29 +0200
parents 1d24faa5bfb9
children 701bef61dcf1
files gldragon.cpp
diffstat 1 files changed, 34 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/gldragon.cpp	Sun Dec 15 22:28:48 2019 +0200
+++ b/gldragon.cpp	Sun Dec 15 23:16:29 2019 +0200
@@ -134,21 +134,43 @@
                     optUseShaders = true;
                     break;
 
-                case 'w':
-                case 'h':
+                case 's':
                 case 'm':
                 case 'v':
-                    if (opt[1] == 0)
                     {
-                        printf("Option '%s' requires an argument.\n", opt);
-                        goto exit;
-                    }
+                        std::string marg;
+                        if (opt[1] == 0)
+                        {
+                            if (narg < argc)
+                                marg = std::string(argv[++narg]);
+                            else
+                            {
+                                printf("Option '%s' requires an argument.\n", opt);
+                                goto exit;
+                            }
+                        }
+                        else
+                            marg = std::string(opt + 1);
 
-                    switch (opt[0])
-                    {
-                        case 'w': optWidth = atoi(opt + 1); break;
-                        case 'h': optHeight = atoi(opt + 1); break;
-                        case 'v': optVSyncMode = atoi(opt + 1); break;
+                        switch (opt[0])
+                        {
+                            case 's':
+                                {
+                                std::vector<std::string> mtokens = dmStrSplit(marg, "xX:");
+                                if (mtokens.size() != 2)
+                                {
+                                    printf("Option expects argument of format <width>x<height> in pixels.\n"
+                                        "For example: -s 640x480\n");
+                                    goto exit;
+                                }
+
+                                optWidth = std::stoi(mtokens[0], 0, 0);
+                                optHeight = std::stoi(mtokens[1], 0, 0);
+                                }
+                                break;
+
+                            case 'v': optVSyncMode = std::stoi(marg, 0, 0); break;
+                        }
                     }
                     break;
 
@@ -182,8 +204,7 @@
             "Usage: %s [options] [<scenefile.scene>]\n"
             "-?            Show this help\n"
             "-g            Use GLSL shader instead of basic OpenGL lighting\n"
-            "-w<width>     Window width (default %d)\n"
-            "-h<height>    Window height (default %d)\n"
+            "-s<w>x<h>     Set window dimensions (default %d x %d)\n"
             "-v<0-3>       Set vsync mode: 0 = do not attempt to set vsync mode\n"
             "              (may be required for software rendering backends),\n"
             "              1 = no vsync, 2 = vsync, 3 = adaptive.\n"