mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
3da912cda8
- paint() can become a hot path, especially when we think about repainting the item on size changes. In general, it's a really good idea to keep this function as fast as possible, as we want to be able to repaint the item when needed. Also, ProfileWidget is pretty heavy to set up, so rather spend a bit of memory there. - Rename profile to m_profileWidget, it already was member var. - Sizing ... I have to admit I don't understand the rendering of the ProfileWidget. I'd like it to do the following things: - render at native resolution, we don't want to resize it - react to item changes - we want to reset the size and re-render the widget into the item in those cases - perhaps be able to use a couple more of the profilewidget's features Signed-off-by: Sebastian Kügler <sebas@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
50 lines
1.2 KiB
C++
50 lines
1.2 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)
|
|
{
|
|
if (m_diveId.toInt() < 1)
|
|
return;
|
|
|
|
struct dive *d;
|
|
d = get_dive_by_uniq_id(m_diveId.toInt());
|
|
if (!d)
|
|
return;
|
|
|
|
int old_animation_speed = prefs.animation_speed;
|
|
prefs.animation_speed = 0; // no animations while rendering the QGraphicsView
|
|
|
|
m_profileWidget->setGeometry(QRect(x(), y(), width(), height()));
|
|
m_profileWidget->plotDive(d);
|
|
QTransform profileTransform;
|
|
profileTransform.scale(this->height() / 100, this->height() / 100);
|
|
m_profileWidget->setTransform(profileTransform);
|
|
m_profileWidget->render(painter);
|
|
prefs.animation_speed = old_animation_speed;
|
|
}
|
|
|
|
QString QMLProfile::diveId() const
|
|
{
|
|
return m_diveId;
|
|
}
|
|
|
|
void QMLProfile::setDiveId(const QString &diveId)
|
|
{
|
|
m_diveId = diveId;
|
|
}
|