mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-11 19:41:30 +00:00
6dec4b0556
The ruler is a weird beast - it has two child objects that access the parent to call another function, that call the child functions. When I updated the plot_info I didn't take that into consideration, what happened is that when I set the parent's plot_info, the children's plot_info are still invalid, but the update method is called anyhow. This patch updates all plot_info's before calling anything else. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
59 lines
No EOL
1.3 KiB
C++
59 lines
No EOL
1.3 KiB
C++
#ifndef RULERITEM_H
|
|
#define RULERITEM_H
|
|
|
|
#include <QObject>
|
|
#include <QGraphicsEllipseItem>
|
|
#include <QGraphicsObject>
|
|
#include "divecartesianaxis.h"
|
|
#include "display.h"
|
|
|
|
struct plot_data;
|
|
class RulerItem2;
|
|
|
|
class RulerNodeItem2 : public QObject, public QGraphicsEllipseItem {
|
|
Q_OBJECT
|
|
friend class RulerItem2;
|
|
|
|
public:
|
|
explicit RulerNodeItem2();
|
|
void setRuler(RulerItem2 *r);
|
|
void setPlotInfo(struct plot_info& info);
|
|
void recalculate();
|
|
|
|
protected:
|
|
QVariant itemChange(GraphicsItemChange change, const QVariant &value);
|
|
|
|
private:
|
|
struct plot_info pInfo;
|
|
struct plot_data *entry;
|
|
RulerItem2 *ruler;
|
|
DiveCartesianAxis *timeAxis;
|
|
DiveCartesianAxis *depthAxis;
|
|
};
|
|
|
|
class RulerItem2 : public QGraphicsObject {
|
|
Q_OBJECT
|
|
public:
|
|
explicit RulerItem2();
|
|
void recalculate();
|
|
|
|
void setPlotInfo(struct plot_info pInfo);
|
|
RulerNodeItem2 *sourceNode() const;
|
|
RulerNodeItem2 *destNode() const;
|
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
|
|
QRectF boundingRect() const;
|
|
QPainterPath shape() const;
|
|
void setAxis(DiveCartesianAxis *time, DiveCartesianAxis *depth);
|
|
|
|
private:
|
|
struct plot_info pInfo;
|
|
QPointF startPoint, endPoint;
|
|
RulerNodeItem2 *source, *dest;
|
|
QString text;
|
|
int height;
|
|
int paint_direction;
|
|
DiveCartesianAxis *timeAxis;
|
|
DiveCartesianAxis *depthAxis;
|
|
QGraphicsSimpleTextItem *textItem;
|
|
};
|
|
#endif |