]> git.tdb.fi Git - libs/gl.git/commitdiff
Add a window size option to viewer
authorMikko Rasa <tdb@tdb.fi>
Thu, 13 May 2021 13:19:50 +0000 (16:19 +0300)
committerMikko Rasa <tdb@tdb.fi>
Thu, 13 May 2021 13:19:50 +0000 (16:19 +0300)
tools/viewer.cpp

index e7af702418cc871ce5567cc016b1cf2b27166ab1..b05e6695c0a9d2438295ce2421d60e60bc75024d 100644 (file)
@@ -27,6 +27,7 @@
 #include <msp/gl/windowview.h>
 #include <msp/input/mouse.h>
 #include <msp/io/print.h>
+#include <msp/strings/regex.h>
 #include <msp/time/timestamp.h>
 #include <msp/time/utils.h>
 
@@ -105,14 +106,26 @@ private:
 
 Viewer::Options::Options(int argc, char **argv)
 {
+       string window_size;
+
        GetOpt getopt;
        getopt.add_option('r', "resources", resource_locations, GetOpt::REQUIRED_ARG);
        getopt.add_option('a', "animation", animation_name, GetOpt::REQUIRED_ARG);
+       getopt.add_option('w', "window-size", window_size, GetOpt::REQUIRED_ARG);
        getopt.add_argument("renderable", renderable_name);
        getopt(argc, argv);
 
        wnd_opts.width = 1024;
        wnd_opts.height = 768;
+       if (!window_size.empty())
+       {
+               RegMatch m = Regex("^([1-9][0-9]*)x([1-9][0-9]*)$").match(window_size);
+               if(!m)
+                       throw usage_error("Invalid window size");
+
+               wnd_opts.width = lexical_cast<unsigned>(m[1].str);
+               wnd_opts.height = lexical_cast<unsigned>(m[2].str);
+       }
        gl_opts.gl_version_major = Graphics::GLOptions::LATEST_VERSION;
        gl_opts.core_profile = true;
 }