KD Chart API Documentation 3.1
Loading...
Searching...
No Matches
KDChartRulerAttributes.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
12
13#include <limits>
14
15#include <QDebug>
16#include <QPen>
17
18#include <KDABLibFakes>
19
20#define d d_func()
21
22using namespace KDChart;
23
24class RulerAttributes::Private
25{
26 friend class RulerAttributes;
27
28public:
29 Private();
30
31private:
32 QPen tickMarkPen;
33 QPen majorTickMarkPen;
34 QPen minorTickMarkPen;
35
36 bool majorTickMarkPenIsSet : 1;
37 bool minorTickMarkPenIsSet : 1;
38
39 bool showMajorTickMarks : 1;
40 bool showMinorTickMarks : 1;
41
42 bool showRulerLine : 1;
43
44 bool majorTickLengthIsSet : 1;
45 bool minorTickLengthIsSet : 1;
46
47 bool showFirstTick : 1;
48
49 int labelMargin = -1;
50 int majorTickLength = 3;
51 int minorTickLength = 2;
52
53 RulerAttributes::TickMarkerPensMap customTickMarkPens;
54};
55
56RulerAttributes::Private::Private()
62 , showMajorTickMarks(true)
63 , showMinorTickMarks(true)
64 , showRulerLine(false)
65 , majorTickLengthIsSet(false)
66 , minorTickLengthIsSet(false)
67 , showFirstTick(true)
68{
72}
73
75 : _d(new Private())
76{
77 // this block left empty intentionally
78}
79
81 : _d(new Private(*r.d))
82{
83}
84
86{
87 d->tickMarkPen = pen;
88}
89
91{
92 return d->tickMarkPen;
93}
94
96{
97 d->majorTickMarkPen = pen;
98 d->majorTickMarkPenIsSet = true;
99}
100
102{
103 return d->majorTickMarkPenIsSet;
104}
105
107{
108 return d->majorTickMarkPenIsSet ? d->majorTickMarkPen : d->tickMarkPen;
109}
110
112{
113 d->minorTickMarkPen = pen;
114 d->minorTickMarkPenIsSet = true;
115}
116
118{
119 return d->minorTickMarkPenIsSet;
120}
121
123{
124 return d->minorTickMarkPenIsSet ? d->minorTickMarkPen : d->tickMarkPen;
125}
126
127void RulerAttributes::setTickMarkPen(qreal value, const QPen &pen)
128{
129 if (!d->customTickMarkPens.contains(value))
130 d->customTickMarkPens.insert(value, pen);
131}
132
134{
135 QMapIterator<qreal, QPen> it(d->customTickMarkPens);
136 while (it.hasNext()) {
137 it.next();
138 if (qAbs(value - it.key()) < std::numeric_limits<float>::epsilon())
139 return it.value();
140 }
141 return d->tickMarkPen;
142}
143
145{
146 return d->customTickMarkPens;
147}
148
150{
151 QMapIterator<qreal, QPen> it(d->customTickMarkPens);
152 while (it.hasNext()) {
153 it.next();
154 if (qAbs(value - it.key()) < std::numeric_limits<float>::epsilon())
155 return true;
156 }
157 return false;
158}
159
161{
162 d->tickMarkPen.setColor(color);
163}
164
166{
167 return d->tickMarkPen.color();
168}
169
171{
172 d->showMajorTickMarks = show;
173}
174
176{
177 return d->showMajorTickMarks;
178}
179
181{
182 d->showMinorTickMarks = show;
183}
184
186{
187 return d->showMinorTickMarks;
188}
189
191{
192 d->labelMargin = margin;
193}
194
196{
197 return d->labelMargin;
198}
199
201{
202 d->majorTickLength = length;
203 d->majorTickLengthIsSet = true;
204}
205
207{
208 return d->majorTickLength;
209}
210
212{
213 return d->majorTickLengthIsSet;
214}
215
217{
218 d->minorTickLength = length;
219 d->minorTickLengthIsSet = true;
220}
221
223{
224 return d->minorTickLength;
225}
226
228{
229 return d->minorTickLengthIsSet;
230}
231
233{
234 d->showFirstTick = show;
235}
236
238{
239 return d->showFirstTick;
240}
241
243{
244 if (this == &r)
245 return *this;
246
247 *d = *r.d;
248
249 return *this;
250}
251
253{
254 delete _d;
255 _d = nullptr;
256}
257
259{
261 if (!isEqual) {
262 return false;
263 }
264 QMap<qreal, QPen>::ConstIterator it = d->customTickMarkPens.constBegin();
265 QMap<qreal, QPen>::ConstIterator it2 = r.d->customTickMarkPens.constBegin();
266 for (; it != d->customTickMarkPens.constEnd(); ++it, ++it2) {
267 if (it.key() != it2.key() || it.value() != it2.value()) {
268 return false;
269 }
270 }
271 return true;
272}
273
275{
276 d->showRulerLine = show;
277}
278
280{
281 return d->showRulerLine;
282}
283
284#if !defined(QT_NO_DEBUG_STREAM)
286{
287 dbg << "KDChart::RulerAttributes("
288 << "tickMarkPen=" << a.tickMarkPen()
289 << "majorTickMarkPen=" << a.majorTickMarkPen()
290 << "minorTickMarkPen=" << a.minorTickMarkPen();
293 while (it.hasNext()) {
294 it.next();
295 dbg << "customTickMarkPen=(" << it.value() << " : " << it.key() << ")";
296 }
297 dbg << ")";
298 return dbg;
299}
300#endif /* QT_NO_DEBUG_STREAM */
A set of attributes controlling the appearance of axis rulers.
void setTickMarkColor(const QColor &color)
TickMarkerPensMap tickMarkPens() const
bool hasTickMarkPenAt(qreal value) const
bool operator==(const RulerAttributes &) const
void setMajorTickMarkPen(const QPen &pen)
void setMinorTickMarkPen(const QPen &pen)
void setTickMarkPen(const QPen &pen)
RulerAttributes & operator=(const RulerAttributes &)
QDebug operator<<(QDebug stream, const DataDimension &r)
QMap::const_iterator constBegin() const const
QMap::const_iterator constEnd() const const
const Key key(const T &value, const Key &defaultKey) const const
const T value(const Key &key, const T &defaultValue) const const
bool hasNext() const const
const Key & key() const const
QMapIterator::Item next()
const T & value() const const
void setCapStyle(Qt::PenCapStyle style)

© 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