33 #include "lineending.h"
47 Q_PROPERTY(
bool subGridVisible READ subGridVisible WRITE setSubGridVisible)
48 Q_PROPERTY(
bool antialiasedSubGrid READ antialiasedSubGrid WRITE setAntialiasedSubGrid)
49 Q_PROPERTY(
bool antialiasedZeroLine READ antialiasedZeroLine WRITE setAntialiasedZeroLine)
50 Q_PROPERTY(QPen pen READ pen WRITE setPen)
51 Q_PROPERTY(QPen subGridPen READ subGridPen WRITE setSubGridPen)
52 Q_PROPERTY(QPen zeroLinePen READ zeroLinePen WRITE setZeroLinePen)
58 bool subGridVisible()
const {
return mSubGridVisible; }
59 bool antialiasedSubGrid()
const {
return mAntialiasedSubGrid; }
60 bool antialiasedZeroLine()
const {
return mAntialiasedZeroLine; }
61 QPen pen()
const {
return mPen; }
62 QPen subGridPen()
const {
return mSubGridPen; }
63 QPen zeroLinePen()
const {
return mZeroLinePen; }
66 void setSubGridVisible(
bool visible);
67 void setAntialiasedSubGrid(
bool enabled);
68 void setAntialiasedZeroLine(
bool enabled);
69 void setPen(
const QPen &pen);
70 void setSubGridPen(
const QPen &pen);
71 void setZeroLinePen(
const QPen &pen);
76 bool mAntialiasedSubGrid, mAntialiasedZeroLine;
77 QPen mPen, mSubGridPen, mZeroLinePen;
87 void drawSubGridLines(
QCPPainter *painter)
const;
97 Q_PROPERTY(
AxisType axisType READ axisType)
99 Q_PROPERTY(
ScaleType scaleType READ scaleType WRITE setScaleType)
100 Q_PROPERTY(
double scaleLogBase READ scaleLogBase WRITE setScaleLogBase)
101 Q_PROPERTY(
QCPRange range READ range WRITE setRange)
102 Q_PROPERTY(
bool rangeReversed READ rangeReversed WRITE setRangeReversed)
103 Q_PROPERTY(
bool autoTicks READ autoTicks WRITE setAutoTicks)
104 Q_PROPERTY(
int autoTickCount READ autoTickCount WRITE setAutoTickCount)
105 Q_PROPERTY(
bool autoTickLabels READ autoTickLabels WRITE setAutoTickLabels)
106 Q_PROPERTY(
bool autoTickStep READ autoTickStep WRITE setAutoTickStep)
107 Q_PROPERTY(
bool autoSubTicks READ autoSubTicks WRITE setAutoSubTicks)
108 Q_PROPERTY(
bool ticks READ ticks WRITE setTicks)
109 Q_PROPERTY(
bool tickLabels READ tickLabels WRITE setTickLabels)
110 Q_PROPERTY(
int tickLabelPadding READ tickLabelPadding WRITE setTickLabelPadding)
111 Q_PROPERTY(
LabelType tickLabelType READ tickLabelType WRITE setTickLabelType)
112 Q_PROPERTY(QFont tickLabelFont READ tickLabelFont WRITE setTickLabelFont)
113 Q_PROPERTY(QColor tickLabelColor READ tickLabelColor WRITE setTickLabelColor)
114 Q_PROPERTY(
double tickLabelRotation READ tickLabelRotation WRITE setTickLabelRotation)
115 Q_PROPERTY(QString dateTimeFormat READ dateTimeFormat WRITE setDateTimeFormat)
116 Q_PROPERTY(Qt::TimeSpec dateTimeSpec READ dateTimeSpec WRITE setDateTimeSpec)
117 Q_PROPERTY(QString numberFormat READ numberFormat WRITE setNumberFormat)
118 Q_PROPERTY(
int numberPrecision READ numberPrecision WRITE setNumberPrecision)
119 Q_PROPERTY(
double tickStep READ tickStep WRITE setTickStep)
120 Q_PROPERTY(QVector<double> tickVector READ tickVector WRITE setTickVector)
121 Q_PROPERTY(QVector<QString> tickVectorLabels READ tickVectorLabels WRITE setTickVectorLabels)
122 Q_PROPERTY(
int tickLengthIn READ tickLengthIn WRITE setTickLengthIn)
123 Q_PROPERTY(
int tickLengthOut READ tickLengthOut WRITE setTickLengthOut)
124 Q_PROPERTY(
int subTickCount READ subTickCount WRITE setSubTickCount)
125 Q_PROPERTY(
int subTickLengthIn READ subTickLengthIn WRITE setSubTickLengthIn)
126 Q_PROPERTY(
int subTickLengthOut READ subTickLengthOut WRITE setSubTickLengthOut)
127 Q_PROPERTY(QPen basePen READ basePen WRITE setBasePen)
128 Q_PROPERTY(QPen tickPen READ tickPen WRITE setTickPen)
129 Q_PROPERTY(QPen subTickPen READ subTickPen WRITE setSubTickPen)
130 Q_PROPERTY(QFont labelFont READ labelFont WRITE setLabelFont)
131 Q_PROPERTY(QColor labelColor READ labelColor WRITE setLabelColor)
132 Q_PROPERTY(QString label READ label WRITE setLabel)
133 Q_PROPERTY(
int labelPadding READ labelPadding WRITE setLabelPadding)
134 Q_PROPERTY(
int padding READ padding WRITE setPadding)
135 Q_PROPERTY(
int offset READ offset WRITE setOffset)
136 Q_PROPERTY(SelectableParts selectedParts READ selectedParts WRITE setSelectedParts)
137 Q_PROPERTY(SelectableParts selectableParts READ selectableParts WRITE setSelectableParts)
138 Q_PROPERTY(QFont selectedTickLabelFont READ selectedTickLabelFont WRITE setSelectedTickLabelFont)
139 Q_PROPERTY(QFont selectedLabelFont READ selectedLabelFont WRITE setSelectedLabelFont)
140 Q_PROPERTY(QColor selectedTickLabelColor READ selectedTickLabelColor WRITE setSelectedTickLabelColor)
141 Q_PROPERTY(QColor selectedLabelColor READ selectedLabelColor WRITE setSelectedLabelColor)
142 Q_PROPERTY(QPen selectedBasePen READ selectedBasePen WRITE setSelectedBasePen)
143 Q_PROPERTY(QPen selectedTickPen READ selectedTickPen WRITE setSelectedTickPen)
144 Q_PROPERTY(QPen selectedSubTickPen READ selectedSubTickPen WRITE setSelectedSubTickPen)
145 Q_PROPERTY(
QCPLineEnding lowerEnding READ lowerEnding WRITE setLowerEnding)
146 Q_PROPERTY(
QCPLineEnding upperEnding READ upperEnding WRITE setUpperEnding)
147 Q_PROPERTY(
QCPGrid* grid READ grid)
159 Q_FLAGS(AxisType AxisTypes)
160 Q_DECLARE_FLAGS(AxisTypes, AxisType)
185 ,spTickLabels = 0x002
188 Q_FLAGS(SelectablePart SelectableParts)
189 Q_DECLARE_FLAGS(SelectableParts, SelectablePart)
194 AxisType axisType()
const {
return mAxisType; }
195 QCPAxisRect *axisRect()
const {
return mAxisRect; }
196 ScaleType scaleType()
const {
return mScaleType; }
197 double scaleLogBase()
const {
return mScaleLogBase; }
198 const QCPRange range()
const {
return mRange; }
199 bool rangeReversed()
const {
return mRangeReversed; }
200 bool autoTicks()
const {
return mAutoTicks; }
201 int autoTickCount()
const {
return mAutoTickCount; }
202 bool autoTickLabels()
const {
return mAutoTickLabels; }
203 bool autoTickStep()
const {
return mAutoTickStep; }
204 bool autoSubTicks()
const {
return mAutoSubTicks; }
205 bool ticks()
const {
return mTicks; }
206 bool tickLabels()
const {
return mTickLabels; }
207 int tickLabelPadding()
const {
return mTickLabelPadding; }
208 LabelType tickLabelType()
const {
return mTickLabelType; }
209 QFont tickLabelFont()
const {
return mTickLabelFont; }
210 QColor tickLabelColor()
const {
return mTickLabelColor; }
211 double tickLabelRotation()
const {
return mTickLabelRotation; }
212 QString dateTimeFormat()
const {
return mDateTimeFormat; }
213 Qt::TimeSpec dateTimeSpec()
const {
return mDateTimeSpec; }
214 QString numberFormat()
const;
215 int numberPrecision()
const {
return mNumberPrecision; }
216 double tickStep()
const {
return mTickStep; }
217 QVector<double> tickVector()
const {
return mTickVector; }
218 QVector<QString> tickVectorLabels()
const {
return mTickVectorLabels; }
219 int tickLengthIn()
const {
return mTickLengthIn; }
220 int tickLengthOut()
const {
return mTickLengthOut; }
221 int subTickCount()
const {
return mSubTickCount; }
222 int subTickLengthIn()
const {
return mSubTickLengthIn; }
223 int subTickLengthOut()
const {
return mSubTickLengthOut; }
224 QPen basePen()
const {
return mBasePen; }
225 QPen tickPen()
const {
return mTickPen; }
226 QPen subTickPen()
const {
return mSubTickPen; }
227 QFont labelFont()
const {
return mLabelFont; }
228 QColor labelColor()
const {
return mLabelColor; }
229 QString label()
const {
return mLabel; }
230 int labelPadding()
const {
return mLabelPadding; }
231 int padding()
const {
return mPadding; }
232 int offset()
const {
return mOffset; }
233 SelectableParts selectedParts()
const {
return mSelectedParts; }
234 SelectableParts selectableParts()
const {
return mSelectableParts; }
235 QFont selectedTickLabelFont()
const {
return mSelectedTickLabelFont; }
236 QFont selectedLabelFont()
const {
return mSelectedLabelFont; }
237 QColor selectedTickLabelColor()
const {
return mSelectedTickLabelColor; }
238 QColor selectedLabelColor()
const {
return mSelectedLabelColor; }
239 QPen selectedBasePen()
const {
return mSelectedBasePen; }
240 QPen selectedTickPen()
const {
return mSelectedTickPen; }
241 QPen selectedSubTickPen()
const {
return mSelectedSubTickPen; }
247 void setScaleType(ScaleType type);
248 void setScaleLogBase(
double base);
249 Q_SLOT
void setRange(
const QCPRange &range);
250 void setRange(
double lower,
double upper);
251 void setRange(
double position,
double size, Qt::AlignmentFlag alignment);
252 void setRangeLower(
double lower);
253 void setRangeUpper(
double upper);
254 void setRangeReversed(
bool reversed);
255 void setAutoTicks(
bool on);
256 void setAutoTickCount(
int approximateCount);
257 void setAutoTickLabels(
bool on);
258 void setAutoTickStep(
bool on);
259 void setAutoSubTicks(
bool on);
260 void setTicks(
bool show);
261 void setTickLabels(
bool show);
262 void setTickLabelPadding(
int padding);
263 void setTickLabelType(LabelType type);
264 void setTickLabelFont(
const QFont &font);
265 void setTickLabelColor(
const QColor &color);
266 void setTickLabelRotation(
double degrees);
267 void setDateTimeFormat(
const QString &format);
268 void setDateTimeSpec(
const Qt::TimeSpec &timeSpec);
269 void setNumberFormat(
const QString &formatCode);
270 void setNumberPrecision(
int precision);
271 void setTickStep(
double step);
272 void setTickVector(
const QVector<double> &vec);
273 void setTickVectorLabels(
const QVector<QString> &vec);
274 void setTickLength(
int inside,
int outside=0);
275 void setTickLengthIn(
int inside);
276 void setTickLengthOut(
int outside);
277 void setSubTickCount(
int count);
278 void setSubTickLength(
int inside,
int outside=0);
279 void setSubTickLengthIn(
int inside);
280 void setSubTickLengthOut(
int outside);
281 void setBasePen(
const QPen &pen);
282 void setTickPen(
const QPen &pen);
283 void setSubTickPen(
const QPen &pen);
284 void setLabelFont(
const QFont &font);
285 void setLabelColor(
const QColor &color);
286 void setLabel(
const QString &str);
287 void setLabelPadding(
int padding);
288 void setPadding(
int padding);
289 void setOffset(
int offset);
290 void setSelectedTickLabelFont(
const QFont &font);
291 void setSelectedLabelFont(
const QFont &font);
292 void setSelectedTickLabelColor(
const QColor &color);
293 void setSelectedLabelColor(
const QColor &color);
294 void setSelectedBasePen(
const QPen &pen);
295 void setSelectedTickPen(
const QPen &pen);
296 void setSelectedSubTickPen(
const QPen &pen);
297 Q_SLOT
void setSelectableParts(
const QCPAxis::SelectableParts &selectableParts);
298 Q_SLOT
void setSelectedParts(
const QCPAxis::SelectableParts &selectedParts);
303 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0)
const;
307 void moveRange(
double diff);
308 void scaleRange(
double factor,
double center);
309 void setScaleRatio(
const QCPAxis *otherAxis,
double ratio=1.0);
310 void rescale(
bool onlyVisiblePlottables=
false);
311 double pixelToCoord(
double value)
const;
312 double coordToPixel(
double value)
const;
313 SelectablePart getPartAt(
const QPointF &pos)
const;
314 QList<QCPAbstractPlottable*> plottables()
const;
315 QList<QCPGraph*> graphs()
const;
316 QList<QCPAbstractItem*> items()
const;
322 void rangeChanged(
const QCPRange &newRange);
324 void selectionChanged(
const QCPAxis::SelectableParts &parts);
334 QString basePart, expPart;
335 QRect baseBounds, expBounds, totalBounds, rotatedTotalBounds;
336 QFont baseFont, expFont;
343 int mOffset, mPadding;
344 Qt::Orientation mOrientation;
345 SelectableParts mSelectableParts, mSelectedParts;
346 QPen mBasePen, mSelectedBasePen;
351 QFont mLabelFont, mSelectedLabelFont;
352 QColor mLabelColor, mSelectedLabelColor;
354 int mTickLabelPadding;
355 bool mTickLabels, mAutoTickLabels;
356 double mTickLabelRotation;
357 LabelType mTickLabelType;
358 QFont mTickLabelFont, mSelectedTickLabelFont;
359 QColor mTickLabelColor, mSelectedTickLabelColor;
360 QString mDateTimeFormat;
361 Qt::TimeSpec mDateTimeSpec;
362 int mNumberPrecision;
363 char mNumberFormatChar;
364 bool mNumberBeautifulPowers;
365 bool mNumberMultiplyCross;
369 int mSubTickCount, mAutoTickCount;
370 bool mAutoTicks, mAutoTickStep, mAutoSubTicks;
371 int mTickLengthIn, mTickLengthOut, mSubTickLengthIn, mSubTickLengthOut;
372 QPen mTickPen, mSelectedTickPen;
373 QPen mSubTickPen, mSelectedSubTickPen;
377 ScaleType mScaleType;
378 double mScaleLogBase, mScaleLogBaseLogInv;
382 QCache<QString, CachedLabel> mLabelCache;
383 int mLowestVisibleTick, mHighestVisibleTick;
384 QChar mExponentialChar, mPositiveSignChar;
385 QVector<double> mTickVector;
386 QVector<QString> mTickVectorLabels;
387 QVector<double> mSubTickVector;
388 QRect mAxisSelectionBox, mTickLabelsSelectionBox, mLabelSelectionBox;
389 bool mCachedMarginValid;
393 virtual void setupTickVectors();
394 virtual void generateAutoTicks();
395 virtual int calculateAutoSubTickCount(
double tickStep)
const;
396 virtual int calculateMargin();
398 virtual void placeTickLabel(
QCPPainter *painter,
double position,
int distanceToAxis,
const QString &text, QSize *tickLabelsSize);
399 virtual void drawTickLabel(
QCPPainter *painter,
double x,
double y,
const TickLabelData &labelData)
const;
400 virtual TickLabelData getTickLabelData(
const QFont &font,
const QString &text)
const;
401 virtual QPointF getTickLabelDrawOffset(
const TickLabelData &labelData)
const;
402 virtual void getMaxTickLabelSize(
const QFont &font,
const QString &text, QSize *tickLabelsSize)
const;
409 virtual void selectEvent(QMouseEvent *event,
bool additive,
const QVariant &details,
bool *selectionStateChanged);
413 void visibleTickBounds(
int &lowIndex,
int &highIndex)
const;
414 double baseLog(
double value)
const;
415 double basePow(
double value)
const;
416 QPen getBasePen()
const;
417 QPen getTickPen()
const;
418 QPen getSubTickPen()
const;
419 QFont getTickLabelFont()
const;
420 QFont getLabelFont()
const;
421 QColor getTickLabelColor()
const;
422 QColor getLabelColor()
const;
431 Q_DECLARE_OPERATORS_FOR_FLAGS(
QCPAxis::SelectableParts)
432 Q_DECLARE_OPERATORS_FOR_FLAGS(
QCPAxis::AxisTypes)
433 Q_DECLARE_METATYPE(
QCPAxis::SelectablePart)