File indexing completed on 2024-05-12 03:48:20
0001 /* 0002 File : Line.h 0003 Project : LabPlot 0004 Description : Line 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2022 Alexander Semke <alexander.semke@web.de> 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 0010 #ifndef LINE_H 0011 #define LINE_H 0012 0013 #include "backend/core/AbstractAspect.h" 0014 #include "backend/lib/macros.h" 0015 #include "backend/worksheet/plots/cartesian/Histogram.h" 0016 #include "backend/worksheet/plots/cartesian/XYCurve.h" 0017 0018 class LinePrivate; 0019 class KConfigGroup; 0020 0021 class Line : public AbstractAspect { 0022 Q_OBJECT 0023 0024 public: 0025 explicit Line(const QString& name); 0026 ~Line() override; 0027 0028 void setPrefix(const QString&); 0029 const QString& prefix() const; 0030 void setCreateXmlElement(bool); 0031 void init(const KConfigGroup&); 0032 0033 void save(QXmlStreamWriter*) const override; 0034 bool load(XmlStreamReader*, bool preview) override; 0035 void loadThemeConfig(const KConfigGroup&); 0036 void loadThemeConfig(const KConfigGroup&, const QColor&); 0037 void saveThemeConfig(KConfigGroup&) const; 0038 0039 // histogram specific parameters 0040 BASIC_D_ACCESSOR_DECL(bool, histogramLineTypeAvailable, HistogramLineTypeAvailable) 0041 BASIC_D_ACCESSOR_DECL(Histogram::LineType, histogramLineType, HistogramLineType) 0042 0043 // drop line specific parameters for XYCurve 0044 BASIC_D_ACCESSOR_DECL(XYCurve::DropLineType, dropLineType, DropLineType) 0045 0046 // common parameters 0047 QPen pen() const; 0048 BASIC_D_ACCESSOR_DECL(Qt::PenStyle, style, Style) 0049 CLASS_D_ACCESSOR_DECL(QColor, color, Color) 0050 BASIC_D_ACCESSOR_DECL(double, width, Width) 0051 BASIC_D_ACCESSOR_DECL(double, opacity, Opacity) 0052 0053 typedef LinePrivate Private; 0054 0055 protected: 0056 LinePrivate* const d_ptr; 0057 0058 private: 0059 Q_DECLARE_PRIVATE(Line) 0060 0061 Q_SIGNALS: 0062 void histogramLineTypeChanged(Histogram::LineType); 0063 void dropLineTypeChanged(XYCurve::DropLineType); 0064 0065 void styleChanged(Qt::PenStyle); 0066 void widthChanged(double); 0067 void colorChanged(const QColor&); 0068 void opacityChanged(float); 0069 0070 void updateRequested(); 0071 void updatePixmapRequested(); 0072 }; 0073 0074 #endif