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(QString numberFormat READ numberFormat WRITE setNumberFormat)
117 Q_PROPERTY(
int numberPrecision READ numberPrecision WRITE setNumberPrecision)
118 Q_PROPERTY(
double tickStep READ tickStep WRITE setTickStep)
119 Q_PROPERTY(QVector<double> tickVector READ tickVector WRITE setTickVector)
120 Q_PROPERTY(QVector<QString> tickVectorLabels READ tickVectorLabels WRITE setTickVectorLabels)
121 Q_PROPERTY(
int tickLengthIn READ tickLengthIn WRITE setTickLengthIn)
122 Q_PROPERTY(
int tickLengthOut READ tickLengthOut WRITE setTickLengthOut)
123 Q_PROPERTY(
int subTickCount READ subTickCount WRITE setSubTickCount)
124 Q_PROPERTY(
int subTickLengthIn READ subTickLengthIn WRITE setSubTickLengthIn)
125 Q_PROPERTY(
int subTickLengthOut READ subTickLengthOut WRITE setSubTickLengthOut)
126 Q_PROPERTY(QPen basePen READ basePen WRITE setBasePen)
127 Q_PROPERTY(QPen tickPen READ tickPen WRITE setTickPen)
128 Q_PROPERTY(QPen subTickPen READ subTickPen WRITE setSubTickPen)
129 Q_PROPERTY(QFont labelFont READ labelFont WRITE setLabelFont)
130 Q_PROPERTY(QColor labelColor READ labelColor WRITE setLabelColor)
131 Q_PROPERTY(QString label READ label WRITE setLabel)
132 Q_PROPERTY(
int labelPadding READ labelPadding WRITE setLabelPadding)
133 Q_PROPERTY(
int padding READ padding WRITE setPadding)
134 Q_PROPERTY(
int offset READ offset WRITE setOffset)
135 Q_PROPERTY(SelectableParts selectedParts READ selectedParts WRITE setSelectedParts)
136 Q_PROPERTY(SelectableParts selectableParts READ selectableParts WRITE setSelectableParts)
137 Q_PROPERTY(QFont selectedTickLabelFont READ selectedTickLabelFont WRITE setSelectedTickLabelFont)
138 Q_PROPERTY(QFont selectedLabelFont READ selectedLabelFont WRITE setSelectedLabelFont)
139 Q_PROPERTY(QColor selectedTickLabelColor READ selectedTickLabelColor WRITE setSelectedTickLabelColor)
140 Q_PROPERTY(QColor selectedLabelColor READ selectedLabelColor WRITE setSelectedLabelColor)
141 Q_PROPERTY(QPen selectedBasePen READ selectedBasePen WRITE setSelectedBasePen)
142 Q_PROPERTY(QPen selectedTickPen READ selectedTickPen WRITE setSelectedTickPen)
143 Q_PROPERTY(QPen selectedSubTickPen READ selectedSubTickPen WRITE setSelectedSubTickPen)
144 Q_PROPERTY(
QCPLineEnding lowerEnding READ lowerEnding WRITE setLowerEnding)
145 Q_PROPERTY(
QCPLineEnding upperEnding READ upperEnding WRITE setUpperEnding)
146 Q_PROPERTY(
QCPGrid* grid READ grid)
158 Q_FLAGS(AxisType AxisTypes)
159 Q_DECLARE_FLAGS(AxisTypes, AxisType)
184 ,spTickLabels = 0x002
187 Q_FLAGS(SelectablePart SelectableParts)
188 Q_DECLARE_FLAGS(SelectableParts, SelectablePart)
193 AxisType axisType()
const {
return mAxisType; }
194 QCPAxisRect *axisRect()
const {
return mAxisRect; }
195 ScaleType scaleType()
const {
return mScaleType; }
196 double scaleLogBase()
const {
return mScaleLogBase; }
197 const QCPRange range()
const {
return mRange; }
198 bool rangeReversed()
const {
return mRangeReversed; }
199 bool autoTicks()
const {
return mAutoTicks; }
200 int autoTickCount()
const {
return mAutoTickCount; }
201 bool autoTickLabels()
const {
return mAutoTickLabels; }
202 bool autoTickStep()
const {
return mAutoTickStep; }
203 bool autoSubTicks()
const {
return mAutoSubTicks; }
204 bool ticks()
const {
return mTicks; }
205 bool tickLabels()
const {
return mTickLabels; }
206 int tickLabelPadding()
const {
return mTickLabelPadding; }
207 LabelType tickLabelType()
const {
return mTickLabelType; }
208 QFont tickLabelFont()
const {
return mTickLabelFont; }
209 QColor tickLabelColor()
const {
return mTickLabelColor; }
210 double tickLabelRotation()
const {
return mTickLabelRotation; }
211 QString dateTimeFormat()
const {
return mDateTimeFormat; }
212 QString numberFormat()
const;
213 int numberPrecision()
const {
return mNumberPrecision; }
214 double tickStep()
const {
return mTickStep; }
215 QVector<double> tickVector()
const {
return mTickVector; }
216 QVector<QString> tickVectorLabels()
const {
return mTickVectorLabels; }
217 int tickLengthIn()
const {
return mTickLengthIn; }
218 int tickLengthOut()
const {
return mTickLengthOut; }
219 int subTickCount()
const {
return mSubTickCount; }
220 int subTickLengthIn()
const {
return mSubTickLengthIn; }
221 int subTickLengthOut()
const {
return mSubTickLengthOut; }
222 QPen basePen()
const {
return mBasePen; }
223 QPen tickPen()
const {
return mTickPen; }
224 QPen subTickPen()
const {
return mSubTickPen; }
225 QFont labelFont()
const {
return mLabelFont; }
226 QColor labelColor()
const {
return mLabelColor; }
227 QString label()
const {
return mLabel; }
228 int labelPadding()
const {
return mLabelPadding; }
229 int padding()
const {
return mPadding; }
230 int offset()
const {
return mOffset; }
231 SelectableParts selectedParts()
const {
return mSelectedParts; }
232 SelectableParts selectableParts()
const {
return mSelectableParts; }
233 QFont selectedTickLabelFont()
const {
return mSelectedTickLabelFont; }
234 QFont selectedLabelFont()
const {
return mSelectedLabelFont; }
235 QColor selectedTickLabelColor()
const {
return mSelectedTickLabelColor; }
236 QColor selectedLabelColor()
const {
return mSelectedLabelColor; }
237 QPen selectedBasePen()
const {
return mSelectedBasePen; }
238 QPen selectedTickPen()
const {
return mSelectedTickPen; }
239 QPen selectedSubTickPen()
const {
return mSelectedSubTickPen; }
245 void setScaleType(ScaleType type);
246 void setScaleLogBase(
double base);
247 Q_SLOT
void setRange(
const QCPRange &range);
248 void setRange(
double lower,
double upper);
249 void setRange(
double position,
double size, Qt::AlignmentFlag alignment);
250 void setRangeLower(
double lower);
251 void setRangeUpper(
double upper);
252 void setRangeReversed(
bool reversed);
253 void setAutoTicks(
bool on);
254 void setAutoTickCount(
int approximateCount);
255 void setAutoTickLabels(
bool on);
256 void setAutoTickStep(
bool on);
257 void setAutoSubTicks(
bool on);
258 void setTicks(
bool show);
259 void setTickLabels(
bool show);
260 void setTickLabelPadding(
int padding);
261 void setTickLabelType(LabelType type);
262 void setTickLabelFont(
const QFont &font);
263 void setTickLabelColor(
const QColor &color);
264 void setTickLabelRotation(
double degrees);
265 void setDateTimeFormat(
const QString &format);
266 void setNumberFormat(
const QString &formatCode);
267 void setNumberPrecision(
int precision);
268 void setTickStep(
double step);
269 void setTickVector(
const QVector<double> &vec);
270 void setTickVectorLabels(
const QVector<QString> &vec);
271 void setTickLength(
int inside,
int outside=0);
272 void setTickLengthIn(
int inside);
273 void setTickLengthOut(
int outside);
274 void setSubTickCount(
int count);
275 void setSubTickLength(
int inside,
int outside=0);
276 void setSubTickLengthIn(
int inside);
277 void setSubTickLengthOut(
int outside);
278 void setBasePen(
const QPen &pen);
279 void setTickPen(
const QPen &pen);
280 void setSubTickPen(
const QPen &pen);
281 void setLabelFont(
const QFont &font);
282 void setLabelColor(
const QColor &color);
283 void setLabel(
const QString &str);
284 void setLabelPadding(
int padding);
285 void setPadding(
int padding);
286 void setOffset(
int offset);
287 void setSelectedTickLabelFont(
const QFont &font);
288 void setSelectedLabelFont(
const QFont &font);
289 void setSelectedTickLabelColor(
const QColor &color);
290 void setSelectedLabelColor(
const QColor &color);
291 void setSelectedBasePen(
const QPen &pen);
292 void setSelectedTickPen(
const QPen &pen);
293 void setSelectedSubTickPen(
const QPen &pen);
294 Q_SLOT
void setSelectableParts(
const QCPAxis::SelectableParts &selectableParts);
295 Q_SLOT
void setSelectedParts(
const QCPAxis::SelectableParts &selectedParts);
300 virtual double selectTest(
const QPointF &pos,
bool onlySelectable, QVariant *details=0)
const;
304 void moveRange(
double diff);
305 void scaleRange(
double factor,
double center);
306 void setScaleRatio(
const QCPAxis *otherAxis,
double ratio=1.0);
307 double pixelToCoord(
double value)
const;
308 double coordToPixel(
double value)
const;
309 SelectablePart getPartAt(
const QPointF &pos)
const;
310 QList<QCPAbstractPlottable*> plottables()
const;
311 QList<QCPGraph*> graphs()
const;
312 QList<QCPAbstractItem*> items()
const;
318 void rangeChanged(
const QCPRange &newRange);
319 void selectionChanged(
const QCPAxis::SelectableParts &parts);
329 QString basePart, expPart;
330 QRect baseBounds, expBounds, totalBounds, rotatedTotalBounds;
331 QFont baseFont, expFont;
338 int mOffset, mPadding;
339 Qt::Orientation mOrientation;
340 SelectableParts mSelectableParts, mSelectedParts;
341 QPen mBasePen, mSelectedBasePen;
346 QFont mLabelFont, mSelectedLabelFont;
347 QColor mLabelColor, mSelectedLabelColor;
349 int mTickLabelPadding;
350 bool mTickLabels, mAutoTickLabels;
351 double mTickLabelRotation;
352 LabelType mTickLabelType;
353 QFont mTickLabelFont, mSelectedTickLabelFont;
354 QColor mTickLabelColor, mSelectedTickLabelColor;
355 QString mDateTimeFormat;
356 int mNumberPrecision;
357 char mNumberFormatChar;
358 bool mNumberBeautifulPowers;
359 bool mNumberMultiplyCross;
363 int mSubTickCount, mAutoTickCount;
364 bool mAutoTicks, mAutoTickStep, mAutoSubTicks;
365 int mTickLengthIn, mTickLengthOut, mSubTickLengthIn, mSubTickLengthOut;
366 QPen mTickPen, mSelectedTickPen;
367 QPen mSubTickPen, mSelectedSubTickPen;
371 ScaleType mScaleType;
372 double mScaleLogBase, mScaleLogBaseLogInv;
376 QCache<QString, CachedLabel> mLabelCache;
377 int mLowestVisibleTick, mHighestVisibleTick;
378 QChar mExponentialChar, mPositiveSignChar;
379 QVector<double> mTickVector;
380 QVector<QString> mTickVectorLabels;
381 QVector<double> mSubTickVector;
382 QRect mAxisSelectionBox, mTickLabelsSelectionBox, mLabelSelectionBox;
383 bool mCachedMarginValid;
387 virtual void setupTickVectors();
388 virtual void generateAutoTicks();
389 virtual int calculateAutoSubTickCount(
double tickStep)
const;
390 virtual int calculateMargin();
392 virtual void placeTickLabel(
QCPPainter *painter,
double position,
int distanceToAxis,
const QString &text, QSize *tickLabelsSize);
393 virtual void drawTickLabel(
QCPPainter *painter,
double x,
double y,
const TickLabelData &labelData)
const;
394 virtual TickLabelData getTickLabelData(
const QFont &font,
const QString &text)
const;
395 virtual QPointF getTickLabelDrawOffset(
const TickLabelData &labelData)
const;
396 virtual void getMaxTickLabelSize(
const QFont &font,
const QString &text, QSize *tickLabelsSize)
const;
403 virtual void selectEvent(QMouseEvent *event,
bool additive,
const QVariant &details,
bool *selectionStateChanged);
407 void visibleTickBounds(
int &lowIndex,
int &highIndex)
const;
408 double baseLog(
double value)
const;
409 double basePow(
double value)
const;
410 QPen getBasePen()
const;
411 QPen getTickPen()
const;
412 QPen getSubTickPen()
const;
413 QFont getTickLabelFont()
const;
414 QFont getLabelFont()
const;
415 QColor getTickLabelColor()
const;
416 QColor getLabelColor()
const;
425 Q_DECLARE_OPERATORS_FOR_FLAGS(
QCPAxis::SelectableParts)
426 Q_DECLARE_OPERATORS_FOR_FLAGS(
QCPAxis::AxisTypes)
427 Q_DECLARE_METATYPE(
QCPAxis::SelectablePart)