KChart

KChartAbstractAreaBase.h
1 /*
2  * SPDX-FileCopyrightText: 2001-2015 Klaralvdalens Datakonsult AB. All rights reserved.
3  *
4  * This file is part of the KD Chart library.
5  *
6  * SPDX-License-Identifier: GPL-2.0-or-later
7  */
8 
9 #ifndef KCHARTABSTRACTAREABASE_H
10 #define KCHARTABSTRACTAREABASE_H
11 
12 #include <QPointF>
13 #include <QSizeF>
14 #include <QRectF>
15 
16 #include "KChartGlobal.h"
17 #include "KChartLayoutItems.h"
18 #include "KChartRelativePosition.h"
19 #include "KChartAbstractAreaBase.h"
20 
21 
22 QT_BEGIN_NAMESPACE
23 class QPainter;
24 class QString;
25 QT_END_NAMESPACE
26 
27 namespace KChart {
28  class TextAttributes;
29  class BackgroundAttributes;
30  class FrameAttributes;
31  class PaintContext;
32 
33 
34 /**
35  * @class AbstractAreaBase KChartAbstractAreaBase.h
36  * @brief Base class for AbstractArea and AbstractAreaWidget: An area
37  * in the chart with a background, a frame, etc.
38  *
39  * AbstractAreaBase is the base class for all chart elements that have
40  * a set of background attributes and frame attributes, such as
41  * legends or axes.
42  *
43  * @note Normally you should not use AbstractAreaBase directly, but
44  * derive your classes from AbstractArea or AbstractAreaWidget.
45  *
46  * @note This classis not a QObject, so it is easier to inherit from
47  * it, if your are inheriting from a QObject too like AbstractAreaWidget does it.
48  *
49  * @sa AbstractArea, AbstractAreaWidget
50  */
51 class KCHART_EXPORT AbstractAreaBase
52 {
53  Q_DISABLE_COPY( AbstractAreaBase )
54  KCHART_DECLARE_PRIVATE_BASE_POLYMORPHIC( AbstractAreaBase )
55 
56 protected:
58  virtual ~AbstractAreaBase() ;
59 
60 public:
61  /**
62  * Returns true if both areas have the same settings.
63  */
64  bool compare( const AbstractAreaBase* other ) const;
65 
66  void alignToReferencePoint( const RelativePosition& position );
67 
68  void setFrameAttributes( const FrameAttributes &a );
69  FrameAttributes frameAttributes() const;
70 
71  void setBackgroundAttributes( const BackgroundAttributes &a );
72  BackgroundAttributes backgroundAttributes() const;
73 
74  virtual void paintBackground( QPainter& painter, const QRect& rectangle );
75  virtual void paintFrame( QPainter& painter, const QRect& rectangle );
76 
77  static void paintBackgroundAttributes( QPainter& painter, const QRect& rectangle,
78  const KChart::BackgroundAttributes& attributes );
79  static void paintFrameAttributes( QPainter& painter, const QRect& rectangle,
80  const KChart::FrameAttributes& attributes );
81 
82  /** \internal
83  * \note Normally you should not call this method, but derive your classes
84  * from AbstractArea or AbstractAreaWidget.
85  * \sa AbstractArea, AbstractAreaWidget
86  */
87  void getFrameLeadings(int& left, int& top, int& right, int& bottom ) const;
88 
89 
90 protected:
91  /** \internal
92  * \note Normally you should not call this method, but derive your classes
93  * from AbstractArea or AbstractAreaWidget.
94  * \sa AbstractArea, AbstractAreaWidget
95  */
96  QRect innerRect() const;
97 
98  /** \internal
99  * This internal method is used by AbstractArea and AbstractAreaWidget
100  * to find out the real widget size.
101  * \sa AbstractArea, AbstractAreaWidget
102  */
103  virtual QRect areaGeometry() const = 0;
104 
105  /** \internal
106  * This internal method can be overwritten by derived classes,
107  * if they want to emit a signal (or perform other actions, resp.)
108  * when the Position of the area has been changed.
109  * The default implementation does nothing.
110  */
111  virtual void positionHasChanged();
112 
113 }; // End of class AbstractAreaBase
114 
115 }
116 #endif // KCHARTABSTRACTAREABASE_H
A set of attributes for frames around items.
Base class for AbstractArea and AbstractAreaWidget: An area in the chart with a background,...
Set of attributes usable for background pixmaps.
Defines relative position information: reference area, position in this area (reference position),...
Contains KChart macros.
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Sat Dec 2 2023 03:54:42 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.