subsurface/qt-ui/profile/diveprofileitem.h
Tomaz Canabrava 35979537d9 Plot the Temperature Text.
I Moved the 'plot text' method of the Old Graphics to the new
layout - this one was mostly unchanged as it was already good
as is.

And used the TemperatureProfileItem to also display texts.
This was the first implementation of the new system that uses
*less* code than the original one, wich makes me happy.

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-01-17 14:04:47 -08:00

76 lines
No EOL
2.4 KiB
C++

#ifndef DIVEPROFILEITEM_H
#define DIVEPROFILEITEM_H
#include <QObject>
#include <QGraphicsPolygonItem>
#include "graphicsview-common.h"
/* This is the Profile Item, it should be used for quite a lot of things
on the profile view. The usage should be pretty simple:
DiveProfileItem *profile = new DiveProfileItem();
profile->setVerticalAxis( profileYAxis );
profile->setHorizontalAxis( timeAxis );
profile->setModel( DiveDataModel );
profile->setHorizontalDataColumn( DiveDataModel::TIME );
profile->setVerticalDataColumn( DiveDataModel::DEPTH );
scene()->addItem(profile);
This is a generically item and should be used as a base for others, I think...
*/
class DiveTextItem;
class DiveCartesianAxis;
class QAbstractTableModel;
class AbstractProfilePolygonItem : public QObject, public QGraphicsPolygonItem{
Q_OBJECT
Q_PROPERTY(QPointF pos WRITE setPos READ pos)
Q_PROPERTY(qreal x WRITE setX READ x)
Q_PROPERTY(qreal y WRITE setY READ y)
public:
AbstractProfilePolygonItem();
void setVerticalAxis(DiveCartesianAxis *vertical);
void setHorizontalAxis(DiveCartesianAxis *horizontal);
void setModel(QAbstractTableModel *model);
void setHorizontalDataColumn(int column);
void setVerticalDataColumn(int column);
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0) = 0;
public slots:
virtual void modelDataChanged();
protected:
DiveCartesianAxis *hAxis;
DiveCartesianAxis *vAxis;
QAbstractTableModel *dataModel;
int hDataColumn;
int vDataColumn;
};
class DiveProfileItem : public AbstractProfilePolygonItem{
Q_OBJECT
public:
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
virtual void modelDataChanged();
};
class DiveTemperatureItem : public AbstractProfilePolygonItem{
Q_OBJECT
public:
DiveTemperatureItem();
virtual void modelDataChanged();
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
private:
void createTextItem(int seconds, int mkelvin);
};
class DiveGasPressureItem : public AbstractProfilePolygonItem{
Q_OBJECT
public:
virtual void modelDataChanged();
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
private:
QVector<QPolygonF> polygons;
};
QGraphicsItemGroup *plotText(text_render_options_t *tro,const QPointF& pos, const QString& text, QGraphicsItem *parent);
#endif