KD Chart API Documentation 3.1
Loading...
Searching...
No Matches
KDChartPosition.h
Go to the documentation of this file.
1/****************************************************************************
2**
3** This file is part of the KD Chart library.
4**
5** SPDX-FileCopyrightText: 2001 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
6**
7** SPDX-License-Identifier: MIT
8**
9****************************************************************************/
10
11#ifndef KDCHARTPOSITION_H
12#define KDCHARTPOSITION_H
13
14#include "KDChartEnums.h"
15#include "KDChartGlobal.h"
16#include <QCoreApplication>
17#include <QDebug>
18#include <QMetaType>
19#include <Qt>
20#include <QtContainerFwd>
21
22QT_BEGIN_NAMESPACE
23class QByteArray;
24QT_END_NAMESPACE
25
26namespace KDChart {
27
62class KDCHART_EXPORT Position
63{
64 Q_DECLARE_TR_FUNCTIONS(Position)
65 Position(int value);
66
67public:
68 Position();
69 Position(KDChartEnums::PositionValue value); // intentionally non-explicit
70
71 KDChartEnums::PositionValue value() const;
72
73 const char *name() const;
74 QString printableName() const;
75
76 bool isUnknown() const;
77
78 bool isWestSide() const;
79 bool isNorthSide() const;
80 bool isEastSide() const;
81 bool isSouthSide() const;
82
83 bool isCorner() const;
84 bool isPole() const;
85
86 bool isFloating() const;
87
88 static const Position &Unknown;
89 static const Position &Center;
90 static const Position &NorthWest;
91 static const Position &North;
92 static const Position &NorthEast;
93 static const Position &East;
94 static const Position &SouthEast;
95 static const Position &South;
96 static const Position &SouthWest;
97 static const Position &West;
98
99 static const Position &Floating;
100
101 // boolean flags: 1, 2, 4, 8, ...
103 {
104 IncludeCenter = 0x1,
105 IncludeFloating = 0x2
106 };
107 Q_DECLARE_FLAGS(Options, Option)
108
109 // Unfortunately the following typecast from int to Options is needed
110 // as the | operator is not defined yet, this will be done by
111 // the macro Q_DECLARE_OPERATORS_FOR_FLAGS( KDChart::Position::Options )
112 // at the bottom of this file.
113 static QList<QByteArray> names(Options options = Options(IncludeCenter | IncludeFloating));
114 static QStringList printableNames(Options options = Options(IncludeCenter | IncludeFloating));
115
116 static Position fromName(const char *name);
117 static Position fromName(const QByteArray &name);
118
119 bool operator==(const Position &) const;
120 bool operator==(int) const;
121 bool operator!=(const Position &) const;
122 bool operator!=(int) const;
123
124private:
125 int m_value = KDChartEnums::PositionUnknown;
126}; // End of class Position
127
128inline bool Position::operator!=(const Position &other) const
129{
130 return !operator==(other);
131}
132inline bool Position::operator!=(int other) const
133{
134 return !operator==(other);
135}
136
141class KDCHART_EXPORT PositionPoints
142{
143public:
145 {
146 } // all points get initialized with the default automatically
147
149 QPointF center,
150 QPointF northWest,
151 QPointF north,
152 QPointF northEast,
153 QPointF east,
154 QPointF southEast,
155 QPointF south,
156 QPointF southWest,
157 QPointF west)
158 : mPositionCenter(center)
159 , mPositionNorthWest(northWest)
160 , mPositionNorth(north)
161 , mPositionNorthEast(northEast)
162 , mPositionEast(east)
163 , mPositionSouthEast(southEast)
164 , mPositionSouth(south)
165 , mPositionSouthWest(southWest)
166 , mPositionWest(west)
167 {
168 }
170 const QPointF &onePointForAllPositions)
171 : mPositionCenter(onePointForAllPositions)
172 , mPositionNorthWest(onePointForAllPositions)
173 , mPositionNorth(onePointForAllPositions)
174 , mPositionNorthEast(onePointForAllPositions)
175 , mPositionEast(onePointForAllPositions)
176 , mPositionSouthEast(onePointForAllPositions)
177 , mPositionSouth(onePointForAllPositions)
178 , mPositionSouthWest(onePointForAllPositions)
179 , mPositionWest(onePointForAllPositions)
180 {
181 }
183 const QRectF &rect)
184 {
185 const QRectF r(rect.normalized());
186 mPositionCenter = r.center();
187 mPositionNorthWest = r.topLeft();
188 mPositionNorth = QPointF(r.center().x(), r.top());
189 mPositionNorthEast = r.topRight();
190 mPositionEast = QPointF(r.right(), r.center().y());
191 mPositionSouthEast = r.bottomRight();
192 mPositionSouth = QPointF(r.center().x(), r.bottom());
193 mPositionSouthWest = r.bottomLeft();
194 mPositionWest = QPointF(r.left(), r.center().y());
195 }
197 QPointF northWest,
198 QPointF northEast,
199 QPointF southEast,
200 QPointF southWest)
201 : mPositionCenter((northWest + southEast) / 2.0)
202 , mPositionNorthWest(northWest)
203 , mPositionNorth((northWest + northEast) / 2.0)
204 , mPositionNorthEast(northEast)
205 , mPositionEast((northEast + southEast) / 2.0)
206 , mPositionSouthEast(southEast)
207 , mPositionSouth((southWest + southEast) / 2.0)
208 , mPositionSouthWest(southWest)
209 , mPositionWest((northWest + southWest) / 2.0)
210 {
211 }
212
214 {
215 mapOfDegrees[pos] = degrees;
216 }
217
218#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && defined(Q_COMPILER_MANGLES_RETURN_TYPE)
219 const qreal degrees(KDChartEnums::PositionValue pos) const
220#else
222#endif
223 {
224 if (mapOfDegrees.contains(pos))
225 return mapOfDegrees[pos];
226 return 0.0;
227 }
228
229#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && defined(Q_COMPILER_MANGLES_RETURN_TYPE)
230 const QPointF point(Position position) const
231#else
232 QPointF point(Position position) const
233#endif
234 {
235 // qDebug() << "point( " << position.name() << " )";
236 if (position == Position::Center)
237 return mPositionCenter;
238 if (position == Position::NorthWest)
239 return mPositionNorthWest;
240 if (position == Position::North)
241 return mPositionNorth;
242 if (position == Position::NorthEast)
243 return mPositionNorthEast;
244 if (position == Position::East)
245 return mPositionEast;
246 if (position == Position::SouthEast)
247 return mPositionSouthEast;
248 if (position == Position::South)
249 return mPositionSouth;
250 if (position == Position::SouthWest)
251 return mPositionSouthWest;
252 if (position == Position::West)
253 return mPositionWest;
254 return mPositionUnknown;
255 }
256
257 bool isNull() const
258 {
259 return mPositionUnknown.isNull() && mPositionCenter.isNull() && mPositionNorthWest.isNull() && mPositionNorth.isNull() && mPositionNorthEast.isNull() && mPositionEast.isNull() && mPositionSouthEast.isNull() && mPositionSouth.isNull() && mPositionSouthWest.isNull() && mPositionWest.isNull();
260 }
261
273
274}; // End of class PositionPoints
275}
276
277#if !defined(QT_NO_DEBUG_STREAM)
278KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::Position &);
279#endif /* QT_NO_DEBUG_STREAM */
280
281QT_BEGIN_NAMESPACE
283Q_DECLARE_OPERATORS_FOR_FLAGS(KDChart::Position::Options)
284QT_END_NAMESPACE
285
286Q_DECLARE_METATYPE(KDChart::Position)
287
288#endif // KDCHARTPOSITION_H
Definition of global enums.
Contains KDChart macros.
QT_BEGIN_NAMESPACE Q_DECLARE_TYPEINFO(KDChart::Position, Q_MOVABLE_TYPE)
KDCHART_EXPORT QDebug operator<<(QDebug, const KDChart::Position &)
Stores the absolute target points of a Position.
PositionPoints(const QRectF &rect)
PositionPoints(const QPointF &onePointForAllPositions)
void setDegrees(KDChartEnums::PositionValue pos, qreal degrees)
PositionPoints(QPointF center, QPointF northWest, QPointF north, QPointF northEast, QPointF east, QPointF southEast, QPointF south, QPointF southWest, QPointF west)
qreal degrees(KDChartEnums::PositionValue pos) const
QMap< KDChartEnums::PositionValue, qreal > mapOfDegrees
QPointF point(Position position) const
PositionPoints(QPointF northWest, QPointF northEast, QPointF southEast, QPointF southWest)
Defines a position, using compass terminology.
bool operator!=(const Position &) const
static const Position & West
static const Position & South
bool operator==(const Position &) const
static const Position & Floating
static const Position & North
static const Position & SouthWest
static const Position & NorthEast
static const Position & NorthWest
static const Position & SouthEast
static const Position & East
static const Position & Center
static const Position & Unknown
bool operator==(const TickInfo &, const TickInfo &)
qreal x() const const
qreal y() const const
qreal bottom() const const
QPointF bottomLeft() const const
QPointF bottomRight() const const
QPointF center() const const
qreal left() const const
QRectF normalized() const const
qreal right() const const
qreal top() const const
QPointF topLeft() const const
QPointF topRight() const const

© 2001 Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
https://www.kdab.com/development-resources/qt-tools/kd-chart/
Generated on Wed May 1 2024 00:01:10 for KD Chart API Documentation by doxygen 1.9.8