mirror of
https://github.com/tumic0/GPXSee.git
synced 2024-11-24 11:45:53 +01:00
Improved PDF export
This commit is contained in:
parent
16cce5abd0
commit
e7edd5c3c3
@ -237,7 +237,7 @@ void Graph::plot(QPainter *painter, const QRectF &target)
|
||||
resize(canvas);
|
||||
_slider->hide();
|
||||
_info->hide();
|
||||
_scene->render(painter, target, QRectF(), Qt::KeepAspectRatioByExpanding);
|
||||
_scene->render(painter, target, QRectF());
|
||||
_slider->show();
|
||||
_info->show();
|
||||
resize(orig);
|
||||
|
@ -29,7 +29,7 @@ QRectF ScaleItem::boundingRect() const
|
||||
es = fm.tightBoundingRect(QString::number(_length * SEGMENTS));
|
||||
us = fm.tightBoundingRect(units());
|
||||
|
||||
return QRectF(-ss.width()/2, -(PADDING + ss.height() + fm.descent()),
|
||||
return QRectF(-ss.width()/2, 0,
|
||||
_width * SEGMENTS + ss.width()/2 + qMax(us.width() + PADDING, es.width()/2),
|
||||
SCALE_HEIGHT + PADDING + ss.height() + 2*fm.descent());
|
||||
}
|
||||
@ -43,22 +43,23 @@ void ScaleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
||||
font.setPixelSize(FONT_SIZE);
|
||||
font.setFamily(FONT_FAMILY);
|
||||
QFontMetrics fm(font);
|
||||
|
||||
QRect br;
|
||||
|
||||
painter->setFont(font);
|
||||
|
||||
for (int i = 0; i <= SEGMENTS; i++) {
|
||||
QString label = QString::number(_length * i);
|
||||
QRect br = fm.tightBoundingRect(label);
|
||||
painter->drawText(_width * i - br.width()/2, -PADDING, label);
|
||||
br = fm.tightBoundingRect(label);
|
||||
painter->drawText(_width * i - br.width()/2, br.height(), label);
|
||||
}
|
||||
painter->drawText(_width * SEGMENTS + PADDING, SCALE_HEIGHT + fm.descent(),
|
||||
units());
|
||||
painter->drawText(_width * SEGMENTS + PADDING, SCALE_HEIGHT + PADDING
|
||||
+ br.height() + fm.descent(), units());
|
||||
|
||||
painter->drawRect(QRectF(0, 0, SEGMENTS * _width, SCALE_HEIGHT));
|
||||
painter->drawRect(QRectF(0, br.height() + PADDING, SEGMENTS * _width,
|
||||
SCALE_HEIGHT));
|
||||
for (int i = 0; i < SEGMENTS; i += 2)
|
||||
painter->fillRect(QRectF(i * _width, 0, _width, SCALE_HEIGHT),
|
||||
Qt::black);
|
||||
painter->fillRect(QRectF(i * _width, br.height() + PADDING, _width,
|
||||
SCALE_HEIGHT), Qt::black);
|
||||
|
||||
/*
|
||||
painter->setPen(Qt::red);
|
||||
|
@ -12,8 +12,7 @@
|
||||
|
||||
#define MARGIN 10.0
|
||||
#define TRACK_WIDTH 3
|
||||
#define SCALE_OFFSET_X 7
|
||||
#define SCALE_OFFSET_Y 15
|
||||
#define SCALE_OFFSET 7
|
||||
|
||||
Track::Track(QWidget *parent)
|
||||
: QGraphicsView(parent)
|
||||
@ -247,12 +246,6 @@ void Track::wheelEvent(QWheelEvent *event)
|
||||
resetCachedContent();
|
||||
}
|
||||
|
||||
void Track::showMarkers(bool show)
|
||||
{
|
||||
for (int i = 0; i < _markers.size(); i++)
|
||||
_markers.at(i)->setVisible(show);
|
||||
}
|
||||
|
||||
void Track::setTrackLineWidth(qreal width)
|
||||
{
|
||||
for (int i = 0; i < _trackPaths.size(); i++) {
|
||||
@ -264,12 +257,14 @@ void Track::setTrackLineWidth(qreal width)
|
||||
|
||||
void Track::plot(QPainter *painter, const QRectF &target)
|
||||
{
|
||||
_scene->removeItem(_mapScale);
|
||||
|
||||
QRectF orig = _scene->itemsBoundingRect();
|
||||
QRectF adj;
|
||||
QRectF orig, adj;
|
||||
qreal ratio, diff;
|
||||
|
||||
_scene->removeItem(_mapScale);
|
||||
orig = _scene->itemsBoundingRect().adjusted(0, 0, 0,
|
||||
_mapScale->boundingRect().height());
|
||||
_scene->addItem(_mapScale);
|
||||
|
||||
if (target.width()/target.height() > orig.width()/orig.height()) {
|
||||
ratio = target.width()/target.height();
|
||||
diff = qAbs((orig.height() * ratio) - orig.width());
|
||||
@ -280,13 +275,13 @@ void Track::plot(QPainter *painter, const QRectF &target)
|
||||
adj = orig.adjusted(0, -diff/2, 0, diff/2);
|
||||
}
|
||||
|
||||
showMarkers(false);
|
||||
setTrackLineWidth(0);
|
||||
_scene->render(painter, target, adj, Qt::KeepAspectRatioByExpanding);
|
||||
setTrackLineWidth(TRACK_WIDTH * _scale);
|
||||
showMarkers(true);
|
||||
_mapScale->setPos(adj.bottomRight()
|
||||
+ QPoint(-_mapScale->boundingRect().width(),
|
||||
-_mapScale->boundingRect().height()));
|
||||
|
||||
_scene->addItem(_mapScale);
|
||||
setTrackLineWidth(0);
|
||||
_scene->render(painter, target, adj);
|
||||
setTrackLineWidth(TRACK_WIDTH * _scale);
|
||||
}
|
||||
|
||||
enum QPrinter::Orientation Track::orientation() const
|
||||
@ -391,8 +386,8 @@ void Track::resizeEvent(QResizeEvent *e)
|
||||
|
||||
void Track::paintEvent(QPaintEvent *e)
|
||||
{
|
||||
QPointF scenePos = mapToScene(rect().bottomLeft() + QPoint(SCALE_OFFSET_X,
|
||||
-SCALE_OFFSET_Y));
|
||||
QPointF scenePos = mapToScene(rect().bottomLeft() + QPoint(SCALE_OFFSET,
|
||||
-(SCALE_OFFSET + _mapScale->boundingRect().height())));
|
||||
_mapScale->setPos(scenePos);
|
||||
|
||||
QGraphicsView::paintEvent(e);
|
||||
|
Loading…
Reference in New Issue
Block a user