KD Chart API Documentation  3.1
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Pages
KDChartPosition.cpp
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 #include <KDChartEnums.h>
12 #include <KDChartPosition.h>
13 
14 #include <QByteArray>
15 #include <QList>
16 #include <QString>
17 #include <QStringList>
18 
19 #include <KDABLibFakes>
20 
21 #include <cassert>
22 
23 using namespace KDChart;
24 
25 namespace {
30 static const char *staticPositionNames[] = {
31  QT_TRANSLATE_NOOP("Position", "Unknown Position"),
32  QT_TRANSLATE_NOOP("Position", "Center"),
33  QT_TRANSLATE_NOOP("Position", "NorthWest"),
34  QT_TRANSLATE_NOOP("Position", "North"),
35  QT_TRANSLATE_NOOP("Position", "NorthEast"),
36  QT_TRANSLATE_NOOP("Position", "East"),
37  QT_TRANSLATE_NOOP("Position", "SouthEast"),
38  QT_TRANSLATE_NOOP("Position", "South"),
39  QT_TRANSLATE_NOOP("Position", "SouthWest"),
40  QT_TRANSLATE_NOOP("Position", "West"),
41  QT_TRANSLATE_NOOP("Position", "Floating")};
42 
47 static Position staticPositionUnknown = Position(KDChartEnums::PositionUnknown);
48 static Position staticPositionCenter = Position(KDChartEnums::PositionCenter);
49 static Position staticPositionNorthWest = Position(KDChartEnums::PositionNorthWest);
50 static Position staticPositionNorth = Position(KDChartEnums::PositionNorth);
51 static Position staticPositionNorthEast = Position(KDChartEnums::PositionNorthEast);
52 static Position staticPositionEast = Position(KDChartEnums::PositionEast);
53 static Position staticPositionSouthEast = Position(KDChartEnums::PositionSouthEast);
54 static Position staticPositionSouth = Position(KDChartEnums::PositionSouth);
55 static Position staticPositionSouthWest = Position(KDChartEnums::PositionSouthWest);
56 static Position staticPositionWest = Position(KDChartEnums::PositionWest);
57 static Position staticPositionFloating = Position(KDChartEnums::PositionFloating);
58 
59 static const int maxPositionValue = 10;
60 
61 } // anon namespace
62 
63 const Position &Position::Unknown = staticPositionUnknown;
64 const Position &Position::Center = staticPositionCenter;
65 const Position &Position::NorthWest = staticPositionNorthWest;
66 const Position &Position::North = staticPositionNorth;
67 const Position &Position::NorthEast = staticPositionNorthEast;
68 const Position &Position::East = staticPositionEast;
69 const Position &Position::SouthEast = staticPositionSouthEast;
70 const Position &Position::South = staticPositionSouth;
71 const Position &Position::SouthWest = staticPositionSouthWest;
72 const Position &Position::West = staticPositionWest;
73 const Position &Position::Floating = staticPositionFloating;
74 
79 {
80 }
81 
82 Position::Position(int value)
83  : m_value(value)
84 {
85  assert(0 <= value);
86  assert(value <= maxPositionValue);
87 }
88 
102  : m_value(value)
103 {
104 }
105 
110 {
111  return static_cast<KDChartEnums::PositionValue>(m_value);
112 }
113 
115 {
116  return m_value == Position::Unknown.value();
117 }
118 
120 {
121  return m_value == Position::SouthWest.value() || m_value == Position::West.value() || m_value == Position::NorthWest.value();
122 }
124 {
125  return m_value == Position::NorthWest.value() || m_value == Position::North.value() || m_value == Position::NorthEast.value();
126 }
128 {
129  return m_value == Position::NorthEast.value() || m_value == Position::East.value() || m_value == Position::SouthEast.value();
130 }
132 {
133  return m_value == Position::SouthWest.value() || m_value == Position::South.value() || m_value == Position::SouthEast.value();
134 }
135 
136 bool Position::isCorner() const
137 {
138  return m_value == Position::NorthWest.value() || m_value == Position::NorthEast.value() || m_value == Position::SouthEast.value() || m_value == Position::SouthWest.value();
139 }
140 bool Position::isPole() const
141 {
142  return m_value == Position::North.value() || m_value == Position::South.value();
143 }
144 
146 {
147  return m_value == Position::Floating.value();
148 }
149 
153 const char *Position::name() const
154 {
155  return staticPositionNames[m_value];
156 }
157 
161 QString Position::printableName() const
162 {
163  return tr(staticPositionNames[m_value]);
164 }
165 
173 QList<QByteArray> Position::names(Options options)
174 {
175  QList<QByteArray> list;
176  const int start = (options & IncludeCenter) ? 1 : 2;
177  const int end = (options & IncludeFloating) ? maxPositionValue : maxPositionValue - 1;
178  for (int i = start; i <= end; ++i)
179  list.append(staticPositionNames[i]);
180  return list;
181 }
182 
190 QStringList Position::printableNames(Options options)
191 {
192  QStringList list;
193  const int start = (options & IncludeCenter) ? 1 : 2;
194  const int end = (options & IncludeFloating) ? maxPositionValue : maxPositionValue - 1;
195  for (int i = start; i <= end; ++i)
196  list.append(Position(i).printableName());
197  return list;
198 }
199 
200 Position Position::fromName(const char *name)
201 {
202  for (int i = 1; i <= maxPositionValue; ++i)
203  if (!qstricmp(name, staticPositionNames[i]))
204  return Position(i);
205  return Position(0);
206 }
207 
208 Position Position::fromName(const QByteArray &name)
209 {
210  return fromName(name.data());
211 }
212 
213 bool Position::operator==(const Position &r) const
214 {
215  return (value() == r.value());
216 }
217 
218 bool Position::operator==(int value_) const
219 {
220  return (value() == value_);
221 }
222 
223 #if !defined(QT_NO_DEBUG_STREAM)
224 QDebug operator<<(QDebug dbg, const KDChart::Position &p)
225 {
226  dbg << "KDChart::Position("
227  << p.name() << ")";
228  return dbg;
229 }
230 #endif /* QT_NO_DEBUG_STREAM */
Definition of global enums.
Defines a position, using compass terminology.
QString printableName() const
static Position fromName(const char *name)
static const Position & West
static QList< QByteArray > names(Options options=Options(IncludeCenter|IncludeFloating))
Returns a list of all string, corresponding to the pre-defined positions.
static const Position & South
bool isEastSide() const
bool operator==(const Position &) const
static QStringList printableNames(Options options=Options(IncludeCenter|IncludeFloating))
Returns a list of all translated string, corresponding to the pre-defined positions.
static const Position & Floating
bool isNorthSide() const
const char * name() const
static const Position & North
static const Position & SouthWest
bool isUnknown() const
static const Position & NorthEast
bool isSouthSide() const
bool isWestSide() const
static const Position & NorthWest
static const Position & SouthEast
static const Position & East
KDChartEnums::PositionValue value() const
static const Position & Center
bool isFloating() const
static const Position & Unknown
QDebug operator<<(QDebug stream, const DataDimension &r)

© 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 by doxygen 1.9.1