text: /***************************************************************************
                   qgsbench.h  - Benchmark
                               -------------------
      begin                : 2011-11-15
      copyright            : (C) 2011 Radim Blazek
      email                : radim dot blazek at gmail dot com
   ***************************************************************************/
  
  /***************************************************************************
   *                                                                         *
   *   This program is free software; you can redistribute it and/or modify  *
   *   it under the terms of the GNU General Public License as published by  *
   *   the Free Software Foundation; either version 2 of the License, or     *
   *   (at your option) any later version.                                   *
   *                                                                         *
   ***************************************************************************/
  #ifndef QGSBENCH_H
  #define QGSBENCH_H
  
  #include <QCoreApplication>
  #include <QDomDocument>
  #include <QDomNode>
  #include <QMap>
  #include <QPainter>
  #include <QString>
  #include <QTime>
  #include <QVariant>
  #include <QVector>
  
  #include "qgsmapsettings.h"
  
  class QgsBench :  public QObject
  {
      Q_OBJECT
    public:
      QgsBench( int width, int height, int cycles );
  
      // start time counter
      void start();
  
      // save elapsed time since last start() in list and restarts counter
      void elapsed();
  
      void render();
  
      void printLog( const QString &printTime );
  
      bool openProject( const QString &fileName );
  
      void setExtent( const QgsRectangle &extent );
  
      void saveSnapsot( const QString &fileName );
  
      void saveLog( const QString &fileName );
  
      QString serialize( const QMap<QString, QVariant> &map, int level = 0 );
  
      void setRenderHints( const QPainter::RenderHints &hints ) { mRendererHints = hints; }
  
      void setParallel( bool enabled ) { mParallel = enabled; }
  
    public slots:
      void readProject( const QDomDocument &doc );
  
    private:
      // snapshot image width
      int mWidth;
  
      // snapshot image height
      int mHeight;
  
      // Number of rendering cycles
      int mIterations;
  
  
      QgsRectangle mExtent;
      bool mSetExtent;
  
      QPainter::RenderHints mRendererHints;
  
      // log map
      QMap<QString, QVariant> mLogMap;
  
      double mUserStart;
      double mSysStart;
      QTime mWallTime; // 'wall clock' time
  
      // user, sys, total times
      QVector<double *> mTimes;
  
      QImage mImage;
  
      QgsMapSettings mMapSettings;
  
      bool mParallel;
  };
  
  #endif // QGSBENCH_H
  
  