diff options
Diffstat (limited to 'tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp')
-rw-r--r-- | tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp new file mode 100644 index 0000000000..c4946b3eec --- /dev/null +++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp @@ -0,0 +1,196 @@ +/**************************************************************************** +** +** Copyright (C) 2011 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$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, 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. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QStringList> +#include <QDebug> + +#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; +} + |