File indexing completed on 2024-05-12 03:47:29
0001 /* 0002 File : DatapickerPoint.h 0003 Project : LabPlot 0004 Description : Graphic Item for coordinate points of Datapicker 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2015 Ankit Wagadre <wagadre.ankit@gmail.com> 0007 SPDX-FileCopyrightText: 2015-2019 Alexander Semke <alexander.semke@web.de> 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #ifndef DATAPICKERPOINT_H 0012 #define DATAPICKERPOINT_H 0013 0014 #include "backend/datapicker/DatapickerCurve.h" 0015 #include "backend/lib/macros.h" 0016 0017 #include <QGraphicsItem> 0018 0019 // TODO: own file 0020 class ErrorBarItem : public QObject, public QGraphicsRectItem { 0021 Q_OBJECT 0022 0023 public: 0024 enum class ErrorBarType { PlusDeltaX, MinusDeltaX, PlusDeltaY, MinusDeltaY }; 0025 0026 explicit ErrorBarItem(DatapickerPoint* parent = nullptr, ErrorBarType type = ErrorBarType::PlusDeltaX); 0027 void setRectSize(const qreal); 0028 0029 public Q_SLOTS: 0030 void setPosition(QPointF); 0031 0032 private: 0033 void initRect(); 0034 void mouseReleaseEvent(QGraphicsSceneMouseEvent*) override; 0035 void hoverEnterEvent(QGraphicsSceneHoverEvent*) override; 0036 QVariant itemChange(GraphicsItemChange, const QVariant& value) override; 0037 0038 QGraphicsLineItem* barLineItem; 0039 QRectF m_rect; 0040 ErrorBarType m_type; 0041 DatapickerPoint* m_parentItem; 0042 }; 0043 0044 class DatapickerPointPrivate; 0045 class DatapickerPoint : public AbstractAspect { 0046 Q_OBJECT 0047 0048 public: 0049 explicit DatapickerPoint(const QString& name); 0050 ~DatapickerPoint() override; 0051 0052 QIcon icon() const override; 0053 QMenu* createContextMenu() override; 0054 QGraphicsItem* graphicsItem() const; 0055 void setParentGraphicsItem(QGraphicsItem*); 0056 void setPrinting(bool); 0057 void initErrorBar(DatapickerCurve::Errors); 0058 0059 void save(QXmlStreamWriter*) const override; 0060 bool load(XmlStreamReader*, bool preview) override; 0061 0062 BASIC_D_ACCESSOR_DECL(QPointF, position, Position) 0063 BASIC_D_ACCESSOR_DECL(QPointF, plusDeltaXPos, PlusDeltaXPos) 0064 BASIC_D_ACCESSOR_DECL(QPointF, minusDeltaXPos, MinusDeltaXPos) 0065 BASIC_D_ACCESSOR_DECL(QPointF, plusDeltaYPos, PlusDeltaYPos) 0066 BASIC_D_ACCESSOR_DECL(QPointF, minusDeltaYPos, MinusDeltaYPos) 0067 0068 void setIsReferencePoint(bool); 0069 bool isReferencePoint() const; 0070 0071 typedef DatapickerPointPrivate Private; 0072 0073 public Q_SLOTS: 0074 void retransform(); 0075 0076 protected: 0077 DatapickerPointPrivate* const d_ptr; 0078 DatapickerPoint(const QString& name, DatapickerPointPrivate* dd); 0079 static QPen selectedPen; 0080 static float selectedOpacity; 0081 0082 private: 0083 Q_DECLARE_PRIVATE(DatapickerPoint) 0084 void init(); 0085 0086 QList<ErrorBarItem*> m_errorBarItemList; 0087 0088 Q_SIGNALS: 0089 void positionChanged(QPointF); 0090 void plusDeltaXPosChanged(QPointF); 0091 void minusDeltaXPosChanged(QPointF); 0092 void plusDeltaYPosChanged(QPointF); 0093 void minusDeltaYPosChanged(QPointF); 0094 void pointSelected(const DatapickerPoint*); 0095 0096 friend class DatapickerTest; 0097 }; 0098 0099 #endif