Updraft  1.0
Open source glider flight visualisation tool.
plotaxes.h
Go to the documentation of this file.
00001 #ifndef UPDRAFT_SRC_PLUGINS_IGCVIEWER_PLOTAXES_H_
00002 #define UPDRAFT_SRC_PLUGINS_IGCVIEWER_PLOTAXES_H_
00003 
00004 #include <QPoint>
00005 #include <QPainter>
00006 #include <QLayoutItem>
00007 #include <QLinkedList>
00008 
00009 #include "util/util.h"
00010 
00011 namespace Updraft {
00012 namespace IgcViewer {
00013 
00015 class PlotAxes : public QObject, public QLayoutItem {
00016   Q_OBJECT
00017 
00018  public:
00021   Qt::Orientations expandingDirections() const;
00022   bool isEmpty() const;
00023   QRect geometry() const;
00024   QSize maximumSize() const;
00025   QSize minimumSize() const;
00026   QSize sizeHint() const;
00027   void setGeometry(const QRect& rect);
00029 
00030   explicit PlotAxes(bool drawTimeTicks = true, bool drawAxisX = true);
00031 
00033   qreal placeX(qreal x);
00034 
00036   qreal getInverseX(qreal x);
00037 
00039   qreal placeY(qreal y);
00040 
00042   qreal getInverseY(qreal y);
00043 
00045   void setLimits(qreal min, qreal max, qreal minTime, qreal maxTime);
00046 
00048   void draw(QPainter *painter);
00049 
00051   qreal getBase();
00052 
00054   qreal getStep();
00055 
00057   qreal getFirst();
00058 
00060   int getTimeInterval();
00061 
00063   qreal getStartTimeTick();
00064 
00066   int getVerticalTicks();
00067 
00069   int getFirstHour();
00070 
00072   int getLastHour();
00073 
00074  signals:
00075   void geometryChanged();
00076 
00077  private:
00079   void emitGeometryChanged();
00080 
00082   qreal findTickIncrement(qreal range, qreal width, qreal minTickSpacing);
00083 
00085   qreal findTimeTickIncrement(qreal range, qreal width, qreal minTickSpacing);
00086 
00088   Util::LinearFunc linX, linY;
00089 
00090   Util::LinearFunc tickX, tickY;
00091   int tickCountX, tickCountY;
00092 
00093   QRect rect;
00094   qreal min, max, maxTime, minTime;
00095 
00097   bool drawTimeTicks;
00098 
00100   bool drawAxisX;
00101 
00103   qreal base;
00104 
00106   qreal step;
00107 
00109   qreal first;
00110 
00112   int timeInterval;
00113 
00115   int startTimeTick;
00116 
00118   int firstHour, lastHour;
00119 
00121   static const int TICK_SPACING_X = 10;
00122   static const int TICK_SPACING_Y = 10;
00123   static const int TIME_TICK_HEIGHT = 10;
00124 
00125   static const QPen AXES_PEN;
00126   static const QPen TICKS_PEN;
00127   static const QPen TIME_TICKS_PEN;
00128 
00130   QVector<int> timeIntervalValues;
00131 };
00132 
00133 }  // End namespace Updraft
00134 }  // End namespace IgcViewer
00135 
00136 #endif  // UPDRAFT_SRC_PLUGINS_IGCVIEWER_PLOTAXES_H_
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines