mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Transform the DiveProfileItem to an Abstract Generalization
The DiveProfileItem contained much of the complexity and algorithms for almost all line-based items on the canvas, so I transformed that to a general abstraction and implemented a new DiveProfileItem that uses it. this should reduce a bit of code since the implementation of the PP Graphs, Temperature Cylinder Pressure and maybe a few others will only need to reimplement the paint() and the modelDataChanged() methods. The rest is ready. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
1f80788286
commit
254beef5d4
4 changed files with 37 additions and 27 deletions
|
|
@ -7,43 +7,43 @@
|
|||
#include <QPainter>
|
||||
#include <QLinearGradient>
|
||||
|
||||
DiveProfileItem::DiveProfileItem(): QObject(), QGraphicsPolygonItem(),
|
||||
AbstractProfilePolygonItem::AbstractProfilePolygonItem(): QObject(), QGraphicsPolygonItem(),
|
||||
hAxis(NULL), vAxis(NULL), dataModel(NULL), hDataColumn(-1), vDataColumn(-1)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void DiveProfileItem::setHorizontalAxis(DiveCartesianAxis* horizontal)
|
||||
void AbstractProfilePolygonItem::setHorizontalAxis(DiveCartesianAxis* horizontal)
|
||||
{
|
||||
hAxis = horizontal;
|
||||
modelDataChanged();
|
||||
}
|
||||
|
||||
void DiveProfileItem::setHorizontalDataColumn(int column)
|
||||
void AbstractProfilePolygonItem::setHorizontalDataColumn(int column)
|
||||
{
|
||||
hDataColumn = column;
|
||||
modelDataChanged();
|
||||
}
|
||||
|
||||
void DiveProfileItem::setModel(QAbstractTableModel* model)
|
||||
void AbstractProfilePolygonItem::setModel(QAbstractTableModel* model)
|
||||
{
|
||||
dataModel = model;
|
||||
modelDataChanged();
|
||||
}
|
||||
|
||||
void DiveProfileItem::setVerticalAxis(DiveCartesianAxis* vertical)
|
||||
void AbstractProfilePolygonItem::setVerticalAxis(DiveCartesianAxis* vertical)
|
||||
{
|
||||
vAxis = vertical;
|
||||
modelDataChanged();
|
||||
}
|
||||
|
||||
void DiveProfileItem::setVerticalDataColumn(int column)
|
||||
void AbstractProfilePolygonItem::setVerticalDataColumn(int column)
|
||||
{
|
||||
vDataColumn = column;
|
||||
modelDataChanged();
|
||||
}
|
||||
|
||||
void DiveProfileItem::modelDataChanged()
|
||||
void AbstractProfilePolygonItem::modelDataChanged()
|
||||
{
|
||||
// We don't have enougth data to calculate things, quit.
|
||||
if (!hAxis || !vAxis || !dataModel || hDataColumn == -1 || vDataColumn == -1)
|
||||
|
|
@ -62,13 +62,6 @@ void DiveProfileItem::modelDataChanged()
|
|||
poly.append(point);
|
||||
}
|
||||
setPolygon(poly);
|
||||
|
||||
// This is the blueish gradient that the Depth Profile should have.
|
||||
// It's a simple QLinearGradient with 2 stops, starting from top to bottom.
|
||||
QLinearGradient pat(0, poly.boundingRect().top(), 0, poly.boundingRect().bottom());
|
||||
pat.setColorAt(1, getColor(DEPTH_BOTTOM));
|
||||
pat.setColorAt(0, getColor(DEPTH_TOP));
|
||||
setBrush(QBrush(pat));
|
||||
}
|
||||
|
||||
void DiveProfileItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) {
|
||||
|
|
@ -92,3 +85,15 @@ void DiveProfileItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* o
|
|||
painter->drawLine(polygon()[i-1],polygon()[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void DiveProfileItem::modelDataChanged(){
|
||||
AbstractProfilePolygonItem::modelDataChanged();
|
||||
if(polygon().isEmpty())
|
||||
return;
|
||||
// This is the blueish gradient that the Depth Profile should have.
|
||||
// It's a simple QLinearGradient with 2 stops, starting from top to bottom.
|
||||
QLinearGradient pat(0, polygon().boundingRect().top(), 0, polygon().boundingRect().bottom());
|
||||
pat.setColorAt(1, getColor(DEPTH_BOTTOM));
|
||||
pat.setColorAt(0, getColor(DEPTH_TOP));
|
||||
setBrush(QBrush(pat));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue