File indexing completed on 2024-05-12 15:26:41
0001 /*************************************************************************** 0002 File : DatapickerCurve.h 0003 Project : LabPlot 0004 Description : container for Curve-Point and Datasheet/Spreadsheet 0005 of datapicker 0006 -------------------------------------------------------------------- 0007 Copyright : (C) 2015 by Ankit Wagadre (wagadre.ankit@gmail.com) 0008 Copyright : (C) 2015-2019 Alexander Semke (alexander.semke@web.de) 0009 ***************************************************************************/ 0010 /*************************************************************************** 0011 * * 0012 * This program is free software; you can redistribute it and/or modify * 0013 * it under the terms of the GNU General Public License as published by * 0014 * the Free Software Foundation; either version 2 of the License, or * 0015 * (at your option) any later version. * 0016 * * 0017 * This program is distributed in the hope that it will be useful, * 0018 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0020 * GNU General Public License for more details. * 0021 * * 0022 * You should have received a copy of the GNU General Public License * 0023 * along with this program; if not, write to the Free Software * 0024 * Foundation, Inc., 51 Franklin Street, Fifth Floor, * 0025 * Boston, MA 02110-1301 USA * 0026 * * 0027 ***************************************************************************/ 0028 0029 #ifndef DATAPICKERCURVE_H 0030 #define DATAPICKERCURVE_H 0031 0032 #include "backend/core/AbstractAspect.h" 0033 #include "backend/lib/macros.h" 0034 #include "backend/datapicker/DatapickerImage.h" 0035 #include "backend/worksheet/plots/cartesian/Symbol.h" 0036 0037 class DatapickerPoint; 0038 class QAction; 0039 class DatapickerCurvePrivate; 0040 class Column; 0041 class Spreadsheet; 0042 class AbstractColumn; 0043 0044 class DatapickerCurve: public AbstractAspect { 0045 Q_OBJECT 0046 0047 public: 0048 explicit DatapickerCurve(const QString&); 0049 ~DatapickerCurve() override; 0050 0051 enum class ErrorType {NoError, SymmetricError, AsymmetricError}; 0052 struct Errors { 0053 ErrorType x; 0054 ErrorType y; 0055 }; 0056 0057 QIcon icon() const override; 0058 void setPrinting(bool); 0059 void setSelectedInView(bool); 0060 void addDatasheet(DatapickerImage::GraphType); 0061 void updatePoints(); 0062 void updatePoint(const DatapickerPoint*); 0063 0064 BASIC_D_ACCESSOR_DECL(Errors, curveErrorTypes, CurveErrorTypes) 0065 BASIC_D_ACCESSOR_DECL(Symbol::Style, pointStyle, PointStyle) 0066 BASIC_D_ACCESSOR_DECL(qreal, pointOpacity, PointOpacity) 0067 BASIC_D_ACCESSOR_DECL(qreal, pointRotationAngle, PointRotationAngle) 0068 BASIC_D_ACCESSOR_DECL(qreal, pointSize, PointSize) 0069 CLASS_D_ACCESSOR_DECL(QBrush, pointBrush, PointBrush) 0070 CLASS_D_ACCESSOR_DECL(QPen, pointPen, PointPen) 0071 BASIC_D_ACCESSOR_DECL(qreal, pointErrorBarSize, PointErrorBarSize) 0072 CLASS_D_ACCESSOR_DECL(QBrush, pointErrorBarBrush, PointErrorBarBrush) 0073 CLASS_D_ACCESSOR_DECL(QPen, pointErrorBarPen, PointErrorBarPen) 0074 BASIC_D_ACCESSOR_DECL(bool, pointVisibility, PointVisibility) 0075 0076 POINTER_D_ACCESSOR_DECL(AbstractColumn, posXColumn, PosXColumn) 0077 QString& posXColumnPath() const; 0078 POINTER_D_ACCESSOR_DECL(AbstractColumn, posYColumn, PosYColumn) 0079 QString& posYColumnPath() const; 0080 POINTER_D_ACCESSOR_DECL(AbstractColumn, posZColumn, PosZColumn) 0081 QString& posZColumnPath() const; 0082 POINTER_D_ACCESSOR_DECL(AbstractColumn, plusDeltaXColumn, PlusDeltaXColumn) 0083 QString& plusDeltaXColumnPath() const; 0084 POINTER_D_ACCESSOR_DECL(AbstractColumn, minusDeltaXColumn, MinusDeltaXColumn) 0085 QString& minusDeltaXColumnPath() const; 0086 POINTER_D_ACCESSOR_DECL(AbstractColumn, plusDeltaYColumn, PlusDeltaYColumn) 0087 QString& plusDeltaYColumnPath() const; 0088 POINTER_D_ACCESSOR_DECL(AbstractColumn, minusDeltaYColumn, MinusDeltaYColumn) 0089 QString& minusDeltaYColumnPath() const; 0090 0091 void save(QXmlStreamWriter*) const override; 0092 bool load(XmlStreamReader*, bool preview) override; 0093 0094 typedef DatapickerCurvePrivate Private; 0095 0096 protected: 0097 DatapickerCurve(const QString& name, DatapickerCurvePrivate* dd); 0098 DatapickerCurvePrivate* const d_ptr; 0099 0100 private: 0101 Q_DECLARE_PRIVATE(DatapickerCurve) 0102 void init(); 0103 void initAction(); 0104 Column* appendColumn(const QString&); 0105 0106 Spreadsheet* m_datasheet{nullptr}; 0107 0108 signals: 0109 void curveErrorTypesChanged(const DatapickerCurve::Errors&); 0110 void posXColumnChanged(const AbstractColumn*); 0111 void posYColumnChanged(const AbstractColumn*); 0112 void posZColumnChanged(const AbstractColumn*); 0113 void plusDeltaXColumnChanged(const AbstractColumn*); 0114 void minusDeltaXColumnChanged(const AbstractColumn*); 0115 void plusDeltaYColumnChanged(const AbstractColumn*); 0116 void minusDeltaYColumnChanged(const AbstractColumn*); 0117 void pointStyleChanged(Symbol::Style); 0118 void pointSizeChanged(qreal); 0119 void pointRotationAngleChanged(qreal); 0120 void pointOpacityChanged(qreal); 0121 void pointBrushChanged(QBrush); 0122 void pointPenChanged(const QPen&); 0123 void pointErrorBarSizeChanged(qreal); 0124 void pointErrorBarBrushChanged(QBrush); 0125 void pointErrorBarPenChanged(const QPen&); 0126 void pointVisibilityChanged(bool); 0127 }; 0128 #endif // DATAPICKERCURVE_H