Updraft
1.0
Open source glider flight visualisation tool.
|
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_