mirror of
https://github.com/tumic0/GPXSee.git
synced 2024-11-24 11:45:53 +01:00
Plots are now paper size agnostic
This commit is contained in:
parent
2ad94947d7
commit
b8e404b789
35
src/gui.cpp
35
src/gui.cpp
@ -7,6 +7,8 @@
|
|||||||
#include <QPrintDialog>
|
#include <QPrintDialog>
|
||||||
#include <QPrinter>
|
#include <QPrinter>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
#include <QPaintEngine>
|
||||||
|
#include <QPaintDevice>
|
||||||
#include <QKeyEvent>
|
#include <QKeyEvent>
|
||||||
#include <QSignalMapper>
|
#include <QSignalMapper>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
@ -34,10 +36,6 @@
|
|||||||
#include "gui.h"
|
#include "gui.h"
|
||||||
|
|
||||||
|
|
||||||
#define PLOT_INFO_HEIGHT 200
|
|
||||||
#define PLOT_MARGIN 100
|
|
||||||
#define PLOT_GRAPH_RATIO 0.2
|
|
||||||
|
|
||||||
static QString timeSpan(qreal time)
|
static QString timeSpan(qreal time)
|
||||||
{
|
{
|
||||||
unsigned h, m, s;
|
unsigned h, m, s;
|
||||||
@ -709,27 +707,36 @@ void GUI::plot(QPrinter *printer)
|
|||||||
info.insert(tr("Time"), timeSpan(_time));
|
info.insert(tr("Time"), timeSpan(_time));
|
||||||
|
|
||||||
|
|
||||||
|
qreal ratio = p.paintEngine()->paintDevice()->logicalDpiX() / SCREEN_DPI;
|
||||||
|
qreal ih = info.contentSize().height() * ratio;
|
||||||
|
qreal mh = ih / 2;
|
||||||
|
|
||||||
|
#define GRR(printer) \
|
||||||
|
(((printer)->width() > (printer)->height()) \
|
||||||
|
? 0.15 * ((qreal)((printer)->width()) / (qreal)((printer)->height())) \
|
||||||
|
: 0.15)
|
||||||
|
#define TRR(printer) \
|
||||||
|
(1.0 - GRR(printer))
|
||||||
|
|
||||||
if (info.isEmpty()) {
|
if (info.isEmpty()) {
|
||||||
if (_trackGraphs->isVisible())
|
if (_trackGraphs->isVisible())
|
||||||
_track->plot(&p, QRectF(0, 0, printer->width(),
|
_track->plot(&p, QRectF(0, 0, printer->width(),
|
||||||
((1.0 - PLOT_GRAPH_RATIO) * printer->height())));
|
(TRR(printer) * printer->height())));
|
||||||
else
|
else
|
||||||
_track->plot(&p, QRectF(0, 0, printer->width(), printer->height()));
|
_track->plot(&p, QRectF(0, 0, printer->width(), printer->height()));
|
||||||
} else {
|
} else {
|
||||||
info.plot(&p, QRectF(0, 0, printer->width(), PLOT_INFO_HEIGHT));
|
info.plot(&p, QRectF(0, 0, printer->width(), ih));
|
||||||
if (_trackGraphs->isVisible())
|
if (_trackGraphs->isVisible())
|
||||||
_track->plot(&p, QRectF(0, PLOT_INFO_HEIGHT + PLOT_MARGIN,
|
_track->plot(&p, QRectF(0, ih + mh, printer->width(),
|
||||||
printer->width(), ((1.0 - PLOT_GRAPH_RATIO) * printer->height())
|
(TRR(printer) * printer->height()) - (ih + 2*mh)));
|
||||||
- (PLOT_INFO_HEIGHT + 2*PLOT_MARGIN)));
|
|
||||||
else
|
else
|
||||||
_track->plot(&p, QRectF(0, PLOT_INFO_HEIGHT + PLOT_MARGIN,
|
_track->plot(&p, QRectF(0, ih + mh, printer->width(),
|
||||||
printer->width(), printer->height()
|
printer->height() - (ih + mh)));
|
||||||
- (PLOT_INFO_HEIGHT + PLOT_MARGIN)));
|
|
||||||
}
|
}
|
||||||
if (_trackGraphs->isVisible()) {
|
if (_trackGraphs->isVisible()) {
|
||||||
GraphView *gv = static_cast<GraphView*>(_trackGraphs->currentWidget());
|
GraphView *gv = static_cast<GraphView*>(_trackGraphs->currentWidget());
|
||||||
gv->plot(&p, QRectF(0, (1.0 - PLOT_GRAPH_RATIO) * printer->height(),
|
gv->plot(&p, QRectF(0, TRR(printer) * printer->height(),
|
||||||
printer->width(), printer->height() * PLOT_GRAPH_RATIO));
|
printer->width(), printer->height() * GRR(printer)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,7 +29,12 @@ void TrackInfo::plot(QPainter *painter, const QRectF &target)
|
|||||||
render(painter, target, adj);
|
render(painter, target, adj);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TrackInfo::isEmpty()
|
bool TrackInfo::isEmpty() const
|
||||||
{
|
{
|
||||||
return _info->isEmpty();
|
return _info->isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QSizeF TrackInfo::contentSize() const
|
||||||
|
{
|
||||||
|
return sceneRect().size();
|
||||||
|
}
|
||||||
|
@ -14,7 +14,8 @@ public:
|
|||||||
|
|
||||||
void insert(const QString &key, const QString &value);
|
void insert(const QString &key, const QString &value);
|
||||||
void plot(QPainter *painter, const QRectF &target);
|
void plot(QPainter *painter, const QRectF &target);
|
||||||
bool isEmpty();
|
bool isEmpty() const;
|
||||||
|
QSizeF contentSize() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
InfoItem *_info;
|
InfoItem *_info;
|
||||||
|
Loading…
Reference in New Issue
Block a user