File indexing completed on 2024-05-26 03:52:00
0001 /* 0002 File : PlotArea.h 0003 Project : LabPlot 0004 Description : Plot area (for background filling and clipping). 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2011-2022 Alexander Semke <alexander.semke@web.de> 0007 SPDX-FileCopyrightText: 2012-2013 Stefan Gerlach <stefan.gerlach@uni-konstanz.de> 0008 0009 SPDX-License-Identifier: GPL-2.0-or-later 0010 */ 0011 0012 #ifndef PLOTAREA_H 0013 #define PLOTAREA_H 0014 0015 #include "backend/lib/macros.h" 0016 #include "backend/worksheet/WorksheetElement.h" 0017 0018 class Background; 0019 class CartesianPlot; 0020 class Line; 0021 class PlotAreaPrivate; 0022 0023 class PlotArea : public WorksheetElement { 0024 Q_OBJECT 0025 0026 public: 0027 explicit PlotArea(const QString& name, CartesianPlot* parent); 0028 ~PlotArea() override; 0029 0030 enum class BorderTypeFlags { NoBorder = 0x0, BorderLeft = 0x1, BorderTop = 0x2, BorderRight = 0x4, BorderBottom = 0x8 }; 0031 Q_DECLARE_FLAGS(BorderType, BorderTypeFlags) 0032 0033 QGraphicsItem* graphicsItem() const override; 0034 void loadThemeConfig(const KConfig& config) override; 0035 void saveThemeConfig(const KConfig& config) override; 0036 bool isHovered() const; 0037 bool isSelected() const; 0038 0039 Background* background() const; 0040 BASIC_D_ACCESSOR_DECL(PlotArea::BorderType, borderType, BorderType) 0041 Line* borderLine() const; 0042 BASIC_D_ACCESSOR_DECL(qreal, borderCornerRadius, BorderCornerRadius) 0043 0044 BASIC_D_ACCESSOR_DECL(bool, clippingEnabled, ClippingEnabled) 0045 CLASS_D_ACCESSOR_DECL(QRectF, rect, Rect) 0046 0047 void save(QXmlStreamWriter*) const override; 0048 bool load(XmlStreamReader*, bool preview) override; 0049 0050 void retransform() override; 0051 void handleResize(double horizontalRatio, double verticalRatio, bool pageResize) override; 0052 0053 typedef PlotAreaPrivate Private; 0054 0055 protected: 0056 PlotArea(const QString& name, CartesianPlot* parent, PlotAreaPrivate* dd); 0057 0058 private: 0059 Q_DECLARE_PRIVATE(PlotArea) 0060 void init(); 0061 0062 Q_SIGNALS: 0063 void borderTypeChanged(PlotArea::BorderType); 0064 void borderCornerRadiusChanged(qreal); 0065 void borderOpacityChanged(qreal); 0066 0067 private: 0068 CartesianPlot* m_parent; 0069 }; 0070 0071 Q_DECLARE_OPERATORS_FOR_FLAGS(PlotArea::BorderType) 0072 0073 #endif