KChart

KChartAbstractArea.h
1 /*
2  * Copyright (C) 2001-2015 Klaralvdalens Datakonsult AB. All rights reserved.
3  *
4  * This file is part of the KD Chart library.
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License as
8  * published by the Free Software Foundation; either version 2 of
9  * the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program. If not, see <https://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef KCHARTABSTRACTAREA_H
21 #define KCHARTABSTRACTAREA_H
22 
23 #include <QObject>
24 
25 #include "KChartGlobal.h"
26 #include "KChartAbstractAreaBase.h"
27 #include "KChartLayoutItems.h"
28 
29 namespace KChart {
30 
31 
32 /**
33  * @class AbstractArea KChartAbstractArea.h
34  * @brief An area in the chart with a background, a frame, etc.
35  *
36  * AbstractArea is the base class for all non-widget chart elements that have
37  * a set of background attributes and frame attributes, such as
38  * coordinate planes or axes.
39  *
40  * @note This class inherits from AbstractAreaBase, AbstractLayoutItem, QObject.
41  * The reason for this triple inheritance is that neither AbstractAreaBase nor
42  * AbstractLayoutItem are QObject.
43  */
44 class KCHART_EXPORT AbstractArea : public QObject,
45  public AbstractAreaBase,
46  public AbstractLayoutItem
47 {
48  Q_OBJECT
49 
50  Q_DISABLE_COPY( AbstractArea )
51  KCHART_DECLARE_PRIVATE_DERIVED( AbstractArea )
52 
53 public:
54  virtual ~AbstractArea() ;
55 
56  /**
57  * @brief Draws the background and frame, then calls paint().
58  *
59  * In most cases there is no need to overwrite this method in a derived
60  * class, but you would overwrite AbstractLayoutItem::paint() instead.
61  */
62  virtual void paintIntoRect( QPainter& painter, const QRect& rect );
63 
64  /**
65  * Call paintAll, if you want the background and the frame to be drawn
66  * before the normal paint() is invoked automatically.
67  */
68  void paintAll( QPainter& painter ) override;
69 
70  /**
71  * This is called at layout time by KChart::AutoSpacerLayoutItem::sizeHint().
72  *
73  * The method triggers AbstractArea::sizeHint() to find out the
74  * amount of overlap at the left edge of the area.
75  *
76  * \note The default implementation is not using any caching,
77  * it might make sense to implement a more sophisticated solution
78  * for derived classes that have complex work to do in sizeHint().
79  * All we have here is a primitive flag to be set by the caller
80  * if it is sure that no sizeHint() needs to be called.
81  */
82  virtual int leftOverlap( bool doNotRecalculate=false ) const;
83  /**
84  * This is called at layout time by KChart::AutoSpacerLayoutItem::sizeHint().
85  *
86  * The method triggers AbstractArea::sizeHint() to find out the
87  * amount of overlap at the right edge of the area.
88  *
89  * \note The default implementation is not using any caching,
90  * it might make sense to implement a more sophisticated solution
91  * for derived classes that have complex work to do in sizeHint().
92  * All we have here is a primitive flag to be set by the caller
93  * if it is sure that no sizeHint() needs to be called.
94  */
95  virtual int rightOverlap( bool doNotRecalculate=false ) const;
96  /**
97  * This is called at layout time by KChart::AutoSpacerLayoutItem::sizeHint().
98  *
99  * The method triggers AbstractArea::sizeHint() to find out the
100  * amount of overlap at the top edge of the area.
101  *
102  * \note The default implementation is not using any caching,
103  * it might make sense to implement a more sophisticated solution
104  * for derived classes that have complex work to do in sizeHint().
105  * All we have here is a primitive flag to be set by the caller
106  * if it is sure that no sizeHint() needs to be called.
107  */
108  virtual int topOverlap( bool doNotRecalculate=false ) const;
109  /**
110  * This is called at layout time by KChart:AutoSpacerLayoutItem::sizeHint().
111  *
112  * The method triggers AbstractArea::sizeHint() to find out the
113  * amount of overlap at the bottom edge of the area.
114  *
115  * \note The default implementation is not using any caching,
116  * it might make sense to implement a more sophisticated solution
117  * for derived classes that have complex work to do in sizeHint().
118  * All we have here is a primitive flag to be set by the caller
119  * if it is sure that no sizeHint() needs to be called.
120  */
121  virtual int bottomOverlap( bool doNotRecalculate=false ) const;
122 
123 protected:
124  AbstractArea();
125  QRect areaGeometry() const override;
126  void positionHasChanged() override;
127 
128 Q_SIGNALS:
129  void positionChanged( AbstractArea * );
130 }; // End of class AbstractArea
131 
132 }
133 #endif // KCHARTABSTRACTAREA_H
Class only listed here to document inheritance of some KChart classes.
Contains KChart macros.
Base class for AbstractArea and AbstractAreaWidget: An area in the chart with a background, a frame, etc.
Base class for all layout items of KChart.
An area in the chart with a background, a frame, etc.
Global namespace.
This file is part of the KDE documentation.
Documentation copyright © 1996-2021 The KDE developers.
Generated on Thu May 6 2021 22:36:19 by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.