/**************************************************************************** ** ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** GNU Lesser General Public License Usage ** This file may be used under the terms of the GNU Lesser General Public ** License version 2.1 as published by the Free Software Foundation and ** appearing in the file LICENSE.LGPL included in the packaging of this ** file. Please review the following information to ensure the GNU Lesser ** General Public License version 2.1 requirements will be met: ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Nokia gives you certain additional ** rights. These rights are described in the Nokia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU General ** Public License version 3.0 as published by the Free Software Foundation ** and appearing in the file LICENSE.GPL included in the packaging of this ** file. Please review the following information to ensure the GNU General ** Public License version 3.0 requirements will be met: ** http://www.gnu.org/copyleft/gpl.html. ** ** Other Usage ** Alternatively, this file may be used in accordance with the terms and ** conditions contained in a signed written agreement between you and Nokia. ** ** ** ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include "commandline.h" static void usage(const char *appname) { Q_UNUSED(appname); printf(" GraphicsViewBenchmark related options:\n"); printf(" -h,-help,--help: This help\n"); printf(" -resolution : UI resolution in format WxH where width and height are positive values\n"); printf(" -opengl : Enables OpenGL usage. Building PRECONDITIONS: QT_NO_OPENGL is off.\n"); printf(" -manual : Run test manually \n"); printf("\n The following options are available in manual mode:\n"); printf(" -rotation : UI rotation in degrees\n"); printf(" -subtree-cache : Enables usage of subtree caching method\n"); printf(" -fps : Output FPS count to stdout during application execution\n"); printf(" -items : Count of items created to the list\n"); printf("\n"); } static inline bool argumentOnlyAvailableInManualMode(const char *arg) { return (strcmp(arg, "-rotation") == 0) || (strcmp(arg, "-subtree-cache") == 0) || (strcmp(arg, "-fps") == 0) || (strcmp(arg, "-items") == 0); } bool readSettingsFromCommandLine(int argc, char *argv[], Settings& config) { bool builtWithOpenGL = false; Settings::Options options; #ifndef QT_NO_OPENGL builtWithOpenGL = true; #endif for (int i = 1; i < argc; ++i) { if (strcmp(argv[i], "-manual") == 0) { options |= Settings::ManualTest; argv[i] = 0; break; } } for (int i = 1; i < argc; ++i) { if (!argv[i]) continue; if (strcmp(argv[i], "-h") == 0 || strcmp(argv[i], "-help") == 0 || strcmp(argv[i], "--help") == 0) { usage(argv[0]); return true; } if (strcmp(argv[i], "-opengl") == 0) { if (builtWithOpenGL) { options |= Settings::UseOpenGL; argv[i] = 0; } else { printf("-opengl parameter can be used only with building PRECONDITIONS: QT_NO_OPENGL is off.\n"); usage(argv[0]); return false; } } else if (strcmp(argv[i], "-resolution") == 0) { if (i + 1 >= argc) { printf("-resolution needs an extra parameter specifying the application UI resolution\n"); usage(argv[0]); return false; } else { QStringList res = QString(argv[i+1]).split("x"); if (res.count() != 2) { printf("-resolution parameter UI resolution should be set in format WxH where width and height are positive values\n"); usage(argv[0]); return false; } int width = res.at(0).toInt(); int height = res.at(1).toInt(); config.setSize(QSize(width, height)); if (width <=0 || height <=0) { printf("-resolution parameter UI resolution should be set in format WxH where width and height are positive values\n"); usage(argv[0]); return false; } argv[i] = 0; i++; argv[i] = 0; } } if (!argv[i]) continue; if (!(options & Settings::ManualTest)) { if (argumentOnlyAvailableInManualMode(argv[i])) { printf("\nWrong option: '%s' is only available in manual mode\n\n", argv[i]); usage(argv[0]); return false; } continue; } if (strcmp(argv[i], "-rotation") == 0) { if (i + 1 >= argc) { printf("-rotation needs an extra parameter specifying the application UI rotation in degrees\n"); usage(argv[0]); return false; } else { bool ok; int angle = QString(argv[i+1]).toInt(&ok); if (!ok) { printf("-rotation parameter should specify rotation angle in degrees\n"); usage(argv[0]); return false; } config.setAngle(angle); argv[i] = 0; i++; argv[i] = 0; } } else if (strcmp(argv[i], "-subtree-cache") == 0) { options |= Settings::UseListItemCache; argv[i] = 0; } else if (strcmp(argv[i], "-fps") == 0) { options |= Settings::OutputFps; argv[i] = 0; } else if (strcmp(argv[i], "-items") == 0) { if (i + 1 >= argc) { printf("-items needs an extra parameter specifying amount of list items\n"); usage(argv[0]); return false; } else { bool ok; int amount = QString(argv[i+1]).toInt(&ok); if (!ok) { printf("-items needs an extra parameter specifying amount (integer) of list items\n"); usage(argv[0]); return false; } config.setListItemCount(amount); argv[i] = 0; i++; argv[i] = 0; } } } config.setOptions(options); return true; }