mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-02 23:20:20 +00:00
1bfcf5c0f8
The scaling needs to happen before we draw the profile on the viewport, not before we render that viewport into the pixmap. This is why prior to this patch the first time the profile was rendered it was way off, but then if it got re-rendered things worked better. I'm still not 100% happy with the size and position of the profile, but this is a huge improvement. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
50 lines
1.1 KiB
C++
50 lines
1.1 KiB
C++
#include "qmlprofile.h"
|
|
#include "profile-widget/profilewidget2.h"
|
|
#include "subsurface-core/dive.h"
|
|
#include <QTransform>
|
|
|
|
QMLProfile::QMLProfile(QQuickItem *parent) :
|
|
QQuickPaintedItem(parent)
|
|
{
|
|
m_profileWidget = new ProfileWidget2(0);
|
|
m_profileWidget->setProfileState();
|
|
m_profileWidget->setToolTipVisibile(false);
|
|
//m_profileWidget->setGeometry(this->geometry());
|
|
}
|
|
|
|
QMLProfile::~QMLProfile()
|
|
{
|
|
m_profileWidget->deleteLater();
|
|
}
|
|
|
|
void QMLProfile::paint(QPainter *painter)
|
|
{
|
|
m_profileWidget->render(painter);
|
|
}
|
|
|
|
QString QMLProfile::diveId() const
|
|
{
|
|
return m_diveId;
|
|
}
|
|
|
|
void QMLProfile::setDiveId(const QString &diveId)
|
|
{
|
|
m_diveId = diveId;
|
|
int no = -1;
|
|
struct dive *d = get_dive_by_uniq_id(m_diveId.toInt());
|
|
if (d)
|
|
no = d->number;
|
|
if (m_diveId.toInt() < 1)
|
|
return;
|
|
|
|
if (!d)
|
|
return;
|
|
|
|
// set the profile widget's geometry and scale the viewport so
|
|
// the scene fills it, then plot the dive on that widget
|
|
m_profileWidget->setGeometry(QRect(x(), y(), width(), height()));
|
|
QTransform profileTransform;
|
|
profileTransform.scale(width() / 100, height() / 100);
|
|
m_profileWidget->setTransform(profileTransform);
|
|
m_profileWidget->plotDive(d);
|
|
}
|