qabstractaxis.cpp
869 lines
| 19.3 KiB
| text/x-c
|
CppLexer
Michal Klocek
|
r1540 | /**************************************************************************** | ||
** | ||||
** Copyright (C) 2012 Digia Plc | ||||
** All rights reserved. | ||||
** For any questions to Digia, please use contact form at http://qt.digia.com | ||||
** | ||||
** This file is part of the Qt Commercial Charts Add-on. | ||||
** | ||||
** $QT_BEGIN_LICENSE$ | ||||
** Licensees holding valid Qt Commercial licenses may use this file in | ||||
** accordance with the Qt Commercial License Agreement provided with the | ||||
** Software or, alternatively, in accordance with the terms contained in | ||||
** a written agreement between you and Digia. | ||||
** | ||||
** If you have questions regarding the use of this file, please use | ||||
** contact form at http://qt.digia.com | ||||
** $QT_END_LICENSE$ | ||||
** | ||||
****************************************************************************/ | ||||
#include "qabstractaxis.h" | ||||
#include "qabstractaxis_p.h" | ||||
Michal Klocek
|
r2273 | #include "chartdataset_p.h" | ||
#include "charttheme_p.h" | ||||
Michal Klocek
|
r1540 | |||
QTCOMMERCIALCHART_BEGIN_NAMESPACE | ||||
/*! | ||||
\class QAbstractAxis | ||||
\brief The QAbstractAxis class is used for manipulating chart's axis. | ||||
\mainclass | ||||
sauimone
|
r1639 | There is only one x Axis visible at the time, however there can be multiple y axes. | ||
Michal Klocek
|
r1540 | Each chart series can be bound to exactly one Y axis and the shared common X axis. | ||
Axis can be setup to show axis line with tick marks, grid lines and shades. | ||||
*/ | ||||
/*! | ||||
sauimone
|
r1639 | \qmlclass AbstractAxis QAbstractAxis | ||
Michal Klocek
|
r1540 | \brief The Axis element is used for manipulating chart's axes | ||
sauimone
|
r1639 | There is only one x Axis visible at the time, however there can be multiple y axes on a ChartView. | ||
Michal Klocek
|
r1540 | Each chart series can be bound to exactly one Y axis and the shared common X axis. | ||
Axis can be setup to show axis line with tick marks, grid lines and shades. | ||||
To access Axes you can use ChartView API. For example: | ||||
\code | ||||
ChartView { | ||||
axisX.min: 0 | ||||
axisX.max: 3 | ||||
axisX.ticksCount: 4 | ||||
axisY.min: 0 | ||||
axisY.max: 4 | ||||
// Add a few series... | ||||
} | ||||
\endcode | ||||
*/ | ||||
Marek Rosa
|
r1548 | /*! | ||
\enum QAbstractAxis::AxisType | ||||
The type of the series object. | ||||
sauimone
|
r1618 | \value AxisTypeNoAxis | ||
Marek Rosa
|
r1818 | \value AxisTypeValue | ||
Marek Rosa
|
r1822 | \value AxisTypeBarCategory | ||
\value AxisTypeCategory | ||||
Marek Rosa
|
r1733 | \value AxisTypeDateTime | ||
Marek Rosa
|
r1548 | */ | ||
Marek Rosa
|
r1637 | /*! | ||
*\fn void QAbstractAxis::type() const | ||||
Returns the type of the axis | ||||
*/ | ||||
sauimone
|
r1621 | /*! | ||
Marek Rosa
|
r1848 | \property QAbstractAxis::lineVisible | ||
The visibility of the axis line | ||||
sauimone
|
r1621 | */ | ||
/*! | ||||
Marek Rosa
|
r1848 | \qmlproperty bool AbstractAxis::lineVisible | ||
The visibility of the axis line | ||||
Marek Rosa
|
r1548 | */ | ||
Michal Klocek
|
r1540 | /*! | ||
\property QAbstractAxis::labelsVisible | ||||
Defines if axis labels are visible. | ||||
*/ | ||||
/*! | ||||
sauimone
|
r1639 | \qmlproperty bool AbstractAxis::labelsVisible | ||
Michal Klocek
|
r1540 | Defines if axis labels are visible. | ||
*/ | ||||
/*! | ||||
\property QAbstractAxis::visible | ||||
The visibility of the axis. | ||||
*/ | ||||
/*! | ||||
sauimone
|
r1639 | \qmlproperty bool AbstractAxis::visible | ||
Michal Klocek
|
r1540 | The visibility of the axis. | ||
*/ | ||||
/*! | ||||
\property QAbstractAxis::gridVisible | ||||
The visibility of the grid lines. | ||||
*/ | ||||
/*! | ||||
sauimone
|
r1639 | \qmlproperty bool AbstractAxis::gridVisible | ||
Michal Klocek
|
r1540 | The visibility of the grid lines. | ||
*/ | ||||
/*! | ||||
\property QAbstractAxis::color | ||||
The color of the axis and ticks. | ||||
*/ | ||||
/*! | ||||
sauimone
|
r1639 | \qmlproperty color AbstractAxis::color | ||
Michal Klocek
|
r1540 | The color of the axis and ticks. | ||
*/ | ||||
/*! | ||||
sauimone
|
r1575 | \property QAbstractAxis::labelsFont | ||
Michal Klocek
|
r1540 | The font of the axis labels. | ||
*/ | ||||
sauimone
|
r1575 | |||
Michal Klocek
|
r1540 | /*! | ||
sauimone
|
r1639 | \qmlproperty Font AbstractAxis::labelsFont | ||
Michal Klocek
|
r1540 | The font of the axis labels. | ||
See the \l {Font} {QML Font Element} for detailed documentation. | ||||
*/ | ||||
/*! | ||||
\property QAbstractAxis::labelsColor | ||||
The color of the axis labels. | ||||
*/ | ||||
/*! | ||||
sauimone
|
r1639 | \qmlproperty color AbstractAxis::labelsColor | ||
Michal Klocek
|
r1540 | The color of the axis labels. | ||
*/ | ||||
/*! | ||||
\property QAbstractAxis::labelsAngle | ||||
The angle of the axis labels in degrees. | ||||
*/ | ||||
/*! | ||||
sauimone
|
r1639 | \qmlproperty int AbstractAxis::labelsAngle | ||
Michal Klocek
|
r1540 | The angle of the axis labels in degrees. | ||
*/ | ||||
/*! | ||||
\property QAbstractAxis::shadesVisible | ||||
The visibility of the axis shades. | ||||
*/ | ||||
/*! | ||||
sauimone
|
r1639 | \qmlproperty bool AbstractAxis::shadesVisible | ||
Michal Klocek
|
r1540 | The visibility of the axis shades. | ||
*/ | ||||
/*! | ||||
\property QAbstractAxis::shadesColor | ||||
The fill (brush) color of the axis shades. | ||||
*/ | ||||
/*! | ||||
sauimone
|
r1639 | \qmlproperty color AbstractAxis::shadesColor | ||
Michal Klocek
|
r1540 | The fill (brush) color of the axis shades. | ||
*/ | ||||
/*! | ||||
\property QAbstractAxis::shadesBorderColor | ||||
The border (pen) color of the axis shades. | ||||
*/ | ||||
/*! | ||||
sauimone
|
r1639 | \qmlproperty color AbstractAxis::shadesBorderColor | ||
Michal Klocek
|
r1540 | The border (pen) color of the axis shades. | ||
*/ | ||||
Tero Ahola
|
r2265 | /*! | ||
\property QAbstractAxis::titleVisible | ||||
The visibility of the axis title. By default the value is true. | ||||
*/ | ||||
/*! | ||||
\qmlproperty bool AbstractAxis::titleVisible | ||||
The visibility of the axis title. By default the value is true. | ||||
*/ | ||||
/*! | ||||
\property QAbstractAxis::titleFont | ||||
The font of the title of the axis. | ||||
*/ | ||||
/*! | ||||
\qmlproperty Font AbstractAxis::title | ||||
The font of the title of the axis. | ||||
*/ | ||||
/*! | ||||
\property QAbstractAxis::title | ||||
The title of the axis. Empty by default. | ||||
*/ | ||||
/*! | ||||
\qmlproperty string AbstractAxis::title | ||||
The title of the axis. Empty string by default. | ||||
*/ | ||||
/*! | ||||
\property QAbstractAxis::alignment | ||||
The alignment of the axis. Either Qt::AlignLeft or Qt::AlignBottom. | ||||
*/ | ||||
/*! | ||||
\qmlproperty alignment AbstractAxis::alignment | ||||
The alignment of the axis. Either Qt.AlignLeft or Qt.AlignBottom. | ||||
*/ | ||||
Michal Klocek
|
r1540 | /*! | ||
sauimone
|
r1654 | \fn void QAbstractAxis::visibleChanged(bool visible) | ||
Jani Honkonen
|
r1932 | Visibility of the axis has changed to \a visible. | ||
Michal Klocek
|
r1540 | */ | ||
/*! | ||||
sauimone
|
r1654 | \qmlsignal AbstractAxis::onVisibleChanged(bool visible) | ||
Jani Honkonen
|
r1932 | Visibility of the axis has changed to \a visible. | ||
Michal Klocek
|
r1540 | */ | ||
/*! | ||||
Marek Rosa
|
r1848 | \fn void QAbstractAxis::lineVisibleChanged(bool visible) | ||
Jani Honkonen
|
r1932 | Visibility of the axis line has changed to \a visible. | ||
Michal Klocek
|
r1540 | */ | ||
sauimone
|
r1654 | /*! | ||
Marek Rosa
|
r1848 | \qmlsignal AbstractAxis::onLineVisibleChanged(bool visible) | ||
Jani Honkonen
|
r1932 | Visibility of the axis line has changed to \a visible. | ||
Michal Klocek
|
r1540 | */ | ||
sauimone
|
r1654 | /*! | ||
\fn void QAbstractAxis::labelsVisibleChanged(bool visible) | ||||
Jani Honkonen
|
r1932 | Visibility of the labels of the axis has changed to \a visible. | ||
Michal Klocek
|
r1540 | */ | ||
sauimone
|
r1654 | /*! | ||
\qmlsignal AbstractAxis::onLabelsVisibleChanged(bool visible) | ||||
Jani Honkonen
|
r1932 | Visibility of the labels of the axis has changed to \a visible. | ||
Michal Klocek
|
r1540 | */ | ||
sauimone
|
r1654 | /*! | ||
\fn void QAbstractAxis::gridVisibleChanged(bool visible) | ||||
Jani Honkonen
|
r1932 | Visibility of the grid lines of the axis has changed to \a visible. | ||
sauimone
|
r1654 | */ | ||
/*! | ||||
\qmlsignal AbstractAxis::onGridVisibleChanged(bool visible) | ||||
Jani Honkonen
|
r1932 | Visibility of the grid lines of the axis has changed to \a visible. | ||
Michal Klocek
|
r1540 | */ | ||
/*! | ||||
sauimone
|
r1654 | \fn void QAbstractAxis::colorChanged(QColor color) | ||
Emitted if the \a color of the axis is changed. | ||||
*/ | ||||
/*! | ||||
\qmlsignal AbstractAxis::onColorChanged(QColor color) | ||||
Michal Klocek
|
r1540 | Emitted if the \a color of the axis is changed. | ||
*/ | ||||
/*! | ||||
sauimone
|
r1654 | \fn void QAbstractAxis::labelsColorChanged(QColor color) | ||
Emitted if the \a color of the axis labels is changed. | ||||
*/ | ||||
/*! | ||||
\qmlsignal AbstractAxis::onLabelsColorChanged(QColor color) | ||||
Michal Klocek
|
r1540 | Emitted if the \a color of the axis labels is changed. | ||
*/ | ||||
/*! | ||||
\fn void QAbstractAxis::shadesVisibleChanged(bool) | ||||
Emitted if the visibility of the axis shades is changed to \a visible. | ||||
*/ | ||||
sauimone
|
r1654 | /*! | ||
\qmlsignal AbstractAxis::onShadesVisibleChanged(bool visible) | ||||
Emitted if the visibility of the axis shades is changed to \a visible. | ||||
*/ | ||||
Michal Klocek
|
r1540 | |||
/*! | ||||
sauimone
|
r1654 | \fn void QAbstractAxis::shadesColorChanged(QColor color) | ||
Emitted if the \a color of the axis shades is changed. | ||||
*/ | ||||
/*! | ||||
\qmlsignal AbstractAxis::onShadesColorChanged(QColor color) | ||||
Michal Klocek
|
r1540 | Emitted if the \a color of the axis shades is changed. | ||
*/ | ||||
/*! | ||||
\fn void QAbstractAxis::shadesBorderColorChanged(QColor) | ||||
Emitted if the border \a color of the axis shades is changed. | ||||
*/ | ||||
sauimone
|
r1654 | /*! | ||
\qmlsignal AbstractAxis::onBorderColorChanged(QColor color) | ||||
Emitted if the border \a color of the axis shades is changed. | ||||
*/ | ||||
Michal Klocek
|
r1540 | |||
/*! | ||||
Marek Rosa
|
r1657 | \internal | ||
Michal Klocek
|
r1540 | Constructs new axis object which is a child of \a parent. Ownership is taken by | ||
QChart when axis added. | ||||
*/ | ||||
Jani Honkonen
|
r2131 | QAbstractAxis::QAbstractAxis(QAbstractAxisPrivate &d, QObject *parent) | ||
: QObject(parent), | ||||
d_ptr(&d) | ||||
Michal Klocek
|
r1540 | { | ||
} | ||||
/*! | ||||
Destructor of the axis object. When axis is added to chart, chart object takes ownership. | ||||
*/ | ||||
QAbstractAxis::~QAbstractAxis() | ||||
{ | ||||
Michal Klocek
|
r2273 | if (d_ptr->m_chart) | ||
Jani Honkonen
|
r2131 | qFatal("Still binded axis detected !"); | ||
Michal Klocek
|
r1540 | } | ||
/*! | ||||
Sets \a pen used to draw axis line and ticks. | ||||
*/ | ||||
Marek Rosa
|
r1844 | void QAbstractAxis::setLinePen(const QPen &pen) | ||
Michal Klocek
|
r1540 | { | ||
Jani Honkonen
|
r2131 | if (d_ptr->m_axisPen != pen) { | ||
d_ptr->m_axisPen = pen; | ||||
Michal Klocek
|
r2273 | emit linePenChanged(pen); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1540 | } | ||
/*! | ||||
Returns pen used to draw axis and ticks. | ||||
*/ | ||||
Marek Rosa
|
r1844 | QPen QAbstractAxis::linePen() const | ||
Michal Klocek
|
r1540 | { | ||
return d_ptr->m_axisPen; | ||||
} | ||||
Michal Klocek
|
r2273 | //TODO: remove me | ||
Marek Rosa
|
r1844 | void QAbstractAxis::setLinePenColor(QColor color) | ||
Michal Klocek
|
r1540 | { | ||
QPen p = d_ptr->m_axisPen; | ||||
if (p.color() != color) { | ||||
p.setColor(color); | ||||
Marek Rosa
|
r1844 | setLinePen(p); | ||
Michal Klocek
|
r1540 | emit colorChanged(color); | ||
} | ||||
} | ||||
Marek Rosa
|
r1844 | QColor QAbstractAxis::linePenColor() const | ||
Michal Klocek
|
r1540 | { | ||
return d_ptr->m_axisPen.color(); | ||||
} | ||||
/*! | ||||
Sets if axis and ticks are \a visible. | ||||
*/ | ||||
Marek Rosa
|
r1844 | void QAbstractAxis::setLineVisible(bool visible) | ||
Michal Klocek
|
r1540 | { | ||
sauimone
|
r1654 | if (d_ptr->m_arrowVisible != visible) { | ||
d_ptr->m_arrowVisible = visible; | ||||
Marek Rosa
|
r1844 | emit lineVisibleChanged(visible); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1540 | } | ||
Marek Rosa
|
r1844 | bool QAbstractAxis::isLineVisible() const | ||
Michal Klocek
|
r1540 | { | ||
sauimone
|
r1654 | return d_ptr->m_arrowVisible; | ||
Michal Klocek
|
r1540 | } | ||
void QAbstractAxis::setGridLineVisible(bool visible) | ||||
{ | ||||
if (d_ptr->m_gridLineVisible != visible) { | ||||
d_ptr->m_gridLineVisible = visible; | ||||
Jani Honkonen
|
r2282 | emit gridVisibleChanged(visible); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1540 | } | ||
bool QAbstractAxis::isGridLineVisible() const | ||||
{ | ||||
return d_ptr->m_gridLineVisible; | ||||
} | ||||
/*! | ||||
Sets \a pen used to draw grid line. | ||||
*/ | ||||
void QAbstractAxis::setGridLinePen(const QPen &pen) | ||||
{ | ||||
if (d_ptr->m_gridLinePen != pen) { | ||||
d_ptr->m_gridLinePen = pen; | ||||
Michal Klocek
|
r2273 | emit gridLinePenChanged(pen); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1540 | } | ||
/*! | ||||
Returns pen used to draw grid. | ||||
*/ | ||||
QPen QAbstractAxis::gridLinePen() const | ||||
{ | ||||
return d_ptr->m_gridLinePen; | ||||
} | ||||
void QAbstractAxis::setLabelsVisible(bool visible) | ||||
{ | ||||
if (d_ptr->m_labelsVisible != visible) { | ||||
d_ptr->m_labelsVisible = visible; | ||||
emit labelsVisibleChanged(visible); | ||||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1540 | } | ||
bool QAbstractAxis::labelsVisible() const | ||||
{ | ||||
return d_ptr->m_labelsVisible; | ||||
} | ||||
/*! | ||||
Sets \a pen used to draw labels. | ||||
*/ | ||||
void QAbstractAxis::setLabelsPen(const QPen &pen) | ||||
{ | ||||
if (d_ptr->m_labelsPen != pen) { | ||||
d_ptr->m_labelsPen = pen; | ||||
Michal Klocek
|
r2273 | emit labelsPenChanged(pen); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1540 | } | ||
/*! | ||||
Returns the pen used to labels. | ||||
*/ | ||||
QPen QAbstractAxis::labelsPen() const | ||||
{ | ||||
return d_ptr->m_labelsPen; | ||||
} | ||||
/*! | ||||
Sets \a brush used to draw labels. | ||||
*/ | ||||
void QAbstractAxis::setLabelsBrush(const QBrush &brush) | ||||
{ | ||||
if (d_ptr->m_labelsBrush != brush) { | ||||
d_ptr->m_labelsBrush = brush; | ||||
Michal Klocek
|
r2273 | emit labelsBrushChanged(brush); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1540 | } | ||
/*! | ||||
Returns brush used to draw labels. | ||||
*/ | ||||
QBrush QAbstractAxis::labelsBrush() const | ||||
{ | ||||
return d_ptr->m_labelsBrush; | ||||
} | ||||
/*! | ||||
Sets \a font used to draw labels. | ||||
*/ | ||||
void QAbstractAxis::setLabelsFont(const QFont &font) | ||||
{ | ||||
if (d_ptr->m_labelsFont != font) { | ||||
d_ptr->m_labelsFont = font; | ||||
Michal Klocek
|
r2273 | emit labelsFontChanged(font); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1540 | } | ||
/*! | ||||
Returns font used to draw labels. | ||||
*/ | ||||
QFont QAbstractAxis::labelsFont() const | ||||
{ | ||||
return d_ptr->m_labelsFont; | ||||
} | ||||
void QAbstractAxis::setLabelsAngle(int angle) | ||||
{ | ||||
if (d_ptr->m_labelsAngle != angle) { | ||||
d_ptr->m_labelsAngle = angle; | ||||
Michal Klocek
|
r2273 | emit labelsAngleChanged(angle); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1540 | } | ||
int QAbstractAxis::labelsAngle() const | ||||
{ | ||||
return d_ptr->m_labelsAngle; | ||||
} | ||||
Michal Klocek
|
r2273 | //TODO: remove me | ||
Michal Klocek
|
r1540 | void QAbstractAxis::setLabelsColor(QColor color) | ||
{ | ||||
QBrush b = d_ptr->m_labelsBrush; | ||||
if (b.color() != color) { | ||||
b.setColor(color); | ||||
setLabelsBrush(b); | ||||
emit labelsColorChanged(color); | ||||
} | ||||
} | ||||
QColor QAbstractAxis::labelsColor() const | ||||
{ | ||||
return d_ptr->m_labelsBrush.color(); | ||||
} | ||||
Michal Klocek
|
r1965 | void QAbstractAxis::setTitleVisible(bool visible) | ||
{ | ||||
if (d_ptr->m_titleVisible != visible) { | ||||
d_ptr->m_titleVisible = visible; | ||||
Michal Klocek
|
r2273 | emit labelsVisibleChanged(visible); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1965 | } | ||
bool QAbstractAxis::titleVisible() const | ||||
{ | ||||
return d_ptr->m_titleVisible; | ||||
} | ||||
/*! | ||||
Sets \a pen used to draw title. | ||||
*/ | ||||
void QAbstractAxis::setTitlePen(const QPen &pen) | ||||
{ | ||||
if (d_ptr->m_titlePen != pen) { | ||||
d_ptr->m_titlePen = pen; | ||||
Michal Klocek
|
r2273 | emit titlePenChanged(pen); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1965 | } | ||
/*! | ||||
Returns the pen used to title. | ||||
*/ | ||||
QPen QAbstractAxis::titlePen() const | ||||
{ | ||||
return d_ptr->m_titlePen; | ||||
} | ||||
/*! | ||||
Sets \a brush used to draw title. | ||||
*/ | ||||
void QAbstractAxis::setTitleBrush(const QBrush &brush) | ||||
{ | ||||
if (d_ptr->m_titleBrush != brush) { | ||||
d_ptr->m_titleBrush = brush; | ||||
Michal Klocek
|
r2273 | emit titleBrushChanged(brush); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1965 | } | ||
/*! | ||||
Returns brush used to draw title. | ||||
*/ | ||||
QBrush QAbstractAxis::titleBrush() const | ||||
{ | ||||
return d_ptr->m_titleBrush; | ||||
} | ||||
/*! | ||||
Sets \a font used to draw title. | ||||
*/ | ||||
void QAbstractAxis::setTitleFont(const QFont &font) | ||||
{ | ||||
if (d_ptr->m_titleFont != font) { | ||||
d_ptr->m_titleFont = font; | ||||
Michal Klocek
|
r2273 | emit titleFontChanged(font); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1965 | } | ||
/*! | ||||
Returns font used to draw title. | ||||
*/ | ||||
QFont QAbstractAxis::titleFont() const | ||||
{ | ||||
return d_ptr->m_titleFont; | ||||
} | ||||
Michal Klocek
|
r2273 | void QAbstractAxis::setTitleText(const QString &title) | ||
Michal Klocek
|
r1965 | { | ||
Jani Honkonen
|
r2131 | if (d_ptr->m_title != title) { | ||
d_ptr->m_title = title; | ||||
Michal Klocek
|
r2273 | emit titleTextChanged(title); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1965 | } | ||
Michal Klocek
|
r2273 | QString QAbstractAxis::titleText() const | ||
Michal Klocek
|
r1965 | { | ||
Jani Honkonen
|
r2131 | return d_ptr->m_title; | ||
Michal Klocek
|
r1965 | } | ||
Michal Klocek
|
r1540 | void QAbstractAxis::setShadesVisible(bool visible) | ||
{ | ||||
if (d_ptr->m_shadesVisible != visible) { | ||||
d_ptr->m_shadesVisible = visible; | ||||
emit shadesVisibleChanged(visible); | ||||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1540 | } | ||
bool QAbstractAxis::shadesVisible() const | ||||
{ | ||||
return d_ptr->m_shadesVisible; | ||||
} | ||||
/*! | ||||
Sets \a pen used to draw shades. | ||||
*/ | ||||
void QAbstractAxis::setShadesPen(const QPen &pen) | ||||
{ | ||||
if (d_ptr->m_shadesPen != pen) { | ||||
d_ptr->m_shadesPen = pen; | ||||
Michal Klocek
|
r2273 | emit shadesPenChanged(pen); | ||
Jani Honkonen
|
r2131 | } | ||
Michal Klocek
|
r1540 | } | ||
/*! | ||||
Returns pen used to draw shades. | ||||
*/ | ||||
QPen QAbstractAxis::shadesPen() const | ||||
{ | ||||
return d_ptr->m_shadesPen; | ||||
} | ||||
/*! | ||||
Sets \a brush used to draw shades. | ||||
*/ | ||||
void QAbstractAxis::setShadesBrush(const QBrush &brush) | ||||
{ | ||||
if (d_ptr->m_shadesBrush != brush) { | ||||
d_ptr->m_shadesBrush = brush; | ||||
Michal Klocek
|
r2273 | emit shadesBrushChanged(brush); | ||
Michal Klocek
|
r1540 | } | ||
} | ||||
/*! | ||||
Returns brush used to draw shades. | ||||
*/ | ||||
QBrush QAbstractAxis::shadesBrush() const | ||||
{ | ||||
return d_ptr->m_shadesBrush; | ||||
} | ||||
void QAbstractAxis::setShadesColor(QColor color) | ||||
{ | ||||
QBrush b = d_ptr->m_shadesBrush; | ||||
Michal Klocek
|
r2273 | if (b.color() != color) { | ||
b.setColor(color); | ||||
setShadesBrush(b); | ||||
emit shadesColorChanged(color); | ||||
} | ||||
Michal Klocek
|
r1540 | } | ||
QColor QAbstractAxis::shadesColor() const | ||||
{ | ||||
return d_ptr->m_shadesBrush.color(); | ||||
} | ||||
void QAbstractAxis::setShadesBorderColor(QColor color) | ||||
{ | ||||
Michal Klocek
|
r2273 | QPen p = d_ptr->m_shadesPen; | ||
if (p.color() != color) { | ||||
p.setColor(color); | ||||
setShadesPen(p); | ||||
emit shadesColorChanged(color); | ||||
} | ||||
Michal Klocek
|
r1540 | } | ||
QColor QAbstractAxis::shadesBorderColor() const | ||||
{ | ||||
return d_ptr->m_shadesPen.color(); | ||||
} | ||||
Michal Klocek
|
r1617 | bool QAbstractAxis::isVisible() const | ||
{ | ||||
return d_ptr->m_visible; | ||||
} | ||||
Michal Klocek
|
r1540 | /*! | ||
Sets axis, shades, labels and grid lines to be visible. | ||||
*/ | ||||
Michal Klocek
|
r1617 | void QAbstractAxis::setVisible(bool visible) | ||
Michal Klocek
|
r1540 | { | ||
Jani Honkonen
|
r2131 | if (d_ptr->m_visible != visible) { | ||
d_ptr->m_visible = visible; | ||||
Michal Klocek
|
r1626 | emit visibleChanged(visible); | ||
} | ||||
Michal Klocek
|
r1540 | } | ||
Michal Klocek
|
r1617 | |||
/*! | ||||
Sets axis, shades, labels and grid lines to be visible. | ||||
*/ | ||||
void QAbstractAxis::show() | ||||
{ | ||||
setVisible(true); | ||||
} | ||||
Michal Klocek
|
r1540 | /*! | ||
Sets axis, shades, labels and grid lines to not be visible. | ||||
*/ | ||||
void QAbstractAxis::hide() | ||||
{ | ||||
Michal Klocek
|
r1617 | setVisible(false); | ||
Michal Klocek
|
r1540 | } | ||
Marek Rosa
|
r1635 | /*! | ||
Sets the minimum value shown on the axis. | ||||
Jani Honkonen
|
r1935 | Depending on the actual axis type the \a min parameter is converted to appropriate type. | ||
Marek Rosa
|
r1635 | If the conversion is impossible then the function call does nothing | ||
*/ | ||||
sauimone
|
r1578 | void QAbstractAxis::setMin(const QVariant &min) | ||
Michal Klocek
|
r1544 | { | ||
d_ptr->setMin(min); | ||||
} | ||||
Marek Rosa
|
r1635 | |||
/*! | ||||
Sets the maximum value shown on the axis. | ||||
Jani Honkonen
|
r1935 | Depending on the actual axis type the \a max parameter is converted to appropriate type. | ||
Marek Rosa
|
r1635 | If the conversion is impossible then the function call does nothing | ||
*/ | ||||
sauimone
|
r1578 | void QAbstractAxis::setMax(const QVariant &max) | ||
Michal Klocek
|
r1544 | { | ||
d_ptr->setMax(max); | ||||
} | ||||
Marek Rosa
|
r1635 | |||
/*! | ||||
Sets the range shown on the axis. | ||||
Jani Honkonen
|
r1935 | Depending on the actual axis type the \a min and \a max parameters are converted to appropriate types. | ||
Marek Rosa
|
r1635 | If the conversion is impossible then the function call does nothing. | ||
*/ | ||||
sauimone
|
r1578 | void QAbstractAxis::setRange(const QVariant &min, const QVariant &max) | ||
Michal Klocek
|
r1544 | { | ||
Jani Honkonen
|
r2131 | d_ptr->setRange(min, max); | ||
Michal Klocek
|
r1544 | } | ||
Michal Klocek
|
r1695 | |||
Marek Rosa
|
r1743 | /*! | ||
Returns the orientation in which the axis is being used (Vertical or Horizontal) | ||||
*/ | ||||
Jani Honkonen
|
r2271 | // NOTE: should have const but it breaks BC: | ||
// http://techbase.kde.org/Policies/Binary_Compatibility_Examples#Change_the_CV-qualifiers_of_a_member_function | ||||
Qt::Orientation QAbstractAxis::orientation() | ||||
Michal Klocek
|
r1695 | { | ||
Michal Klocek
|
r2273 | return d_ptr->orientation(); | ||
Michal Klocek
|
r1695 | } | ||
Michal Klocek
|
r2105 | Qt::Alignment QAbstractAxis::alignment() const | ||
Marek Rosa
|
r2093 | { | ||
Michal Klocek
|
r2273 | return d_ptr->alignment(); | ||
Marek Rosa
|
r2093 | } | ||
Michal Klocek
|
r1540 | ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// | ||
Jani Honkonen
|
r2131 | QAbstractAxisPrivate::QAbstractAxisPrivate(QAbstractAxis *q) | ||
: q_ptr(q), | ||||
Michal Klocek
|
r2273 | m_chart(0), | ||
Jani Honkonen
|
r2131 | m_orientation(Qt::Orientation(0)), | ||
m_alignment(0), | ||||
m_visible(true), | ||||
m_arrowVisible(true), | ||||
m_gridLineVisible(true), | ||||
m_labelsVisible(true), | ||||
m_labelsAngle(0), | ||||
m_shadesVisible(false), | ||||
m_shadesBrush(Qt::SolidPattern), | ||||
m_shadesOpacity(1.0), | ||||
m_dirty(false) | ||||
Michal Klocek
|
r1540 | { | ||
} | ||||
QAbstractAxisPrivate::~QAbstractAxisPrivate() | ||||
{ | ||||
Michal Klocek
|
r2273 | } | ||
Michal Klocek
|
r1540 | |||
Michal Klocek
|
r2273 | void QAbstractAxisPrivate::setAlignment( Qt::Alignment alignment) | ||
{ | ||||
switch(alignment) { | ||||
case Qt::AlignTop: | ||||
case Qt::AlignBottom: | ||||
m_orientation = Qt::Horizontal; | ||||
break; | ||||
case Qt::AlignLeft: | ||||
case Qt::AlignRight: | ||||
m_orientation = Qt::Vertical; | ||||
break; | ||||
default: | ||||
qWarning()<<"No alignment specified !"; | ||||
break; | ||||
}; | ||||
m_alignment=alignment; | ||||
Michal Klocek
|
r1540 | } | ||
Michal Klocek
|
r2273 | void QAbstractAxisPrivate::initializeTheme(ChartTheme* theme, bool forced) | ||
Michal Klocek
|
r1698 | { | ||
Michal Klocek
|
r2273 | QPen pen; | ||
QBrush brush; | ||||
QFont font; | ||||
bool axisX = m_orientation == Qt::Horizontal; | ||||
if (m_arrowVisible) { | ||||
if (forced || brush == m_labelsBrush){ | ||||
q_ptr->setLabelsBrush(theme->labelBrush()); | ||||
} | ||||
//TODO: introduce axis brush | ||||
if (forced || brush == m_titleBrush){ | ||||
q_ptr->setTitleBrush(theme->labelBrush()); | ||||
} | ||||
if (forced || pen == m_labelsPen){ | ||||
q_ptr->setLabelsPen(Qt::NoPen);// NoPen for performance reasons | ||||
} | ||||
if (forced || pen == m_titlePen){ | ||||
q_ptr->setTitlePen(Qt::NoPen);// Noen for performance reasons | ||||
} | ||||
if (forced || m_shadesVisible) { | ||||
if (forced || brush == m_shadesBrush){ | ||||
q_ptr->setShadesBrush(theme->backgroundShadesBrush()); | ||||
} | ||||
if (forced || pen == m_shadesPen){ | ||||
q_ptr->setShadesPen(theme->backgroundShadesPen()); | ||||
} | ||||
if (forced && (theme->backgroundShades() == ChartTheme::BackgroundShadesBoth | ||||
|| (theme->backgroundShades() == ChartTheme::BackgroundShadesVertical && axisX) | ||||
|| (theme->backgroundShades() == ChartTheme::BackgroundShadesHorizontal && !axisX))) { | ||||
q_ptr->setShadesVisible(true); | ||||
} | ||||
} | ||||
if (forced || pen == m_axisPen) { | ||||
q_ptr->setLinePen(theme->axisLinePen()); | ||||
} | ||||
if (forced || pen == m_gridLinePen) { | ||||
q_ptr->setGridLinePen(theme->girdLinePen()); | ||||
} | ||||
if (forced || font == m_labelsFont){ | ||||
q_ptr->setLabelsFont(theme->labelFont()); | ||||
} | ||||
//TODO: discuss with Tero | ||||
if (forced || font == m_titleFont){ | ||||
QFont font(m_labelsFont); | ||||
font.setBold(true); | ||||
q_ptr->setTitleFont(font); | ||||
} | ||||
Michal Klocek
|
r1698 | } | ||
} | ||||
Michal Klocek
|
r2273 | void QAbstractAxisPrivate::handleRangeChanged(qreal min, qreal max) | ||
{ | ||||
setRange(min,max); | ||||
} | ||||
void QAbstractAxisPrivate::initializeGraphics(QGraphicsItem* parent) | ||||
Michal Klocek
|
r1698 | { | ||
Michal Klocek
|
r2273 | Q_UNUSED(parent); | ||
Michal Klocek
|
r1698 | } | ||
Michal Klocek
|
r2273 | void QAbstractAxisPrivate::initializeAnimations(QChart::AnimationOptions options) | ||
Michal Klocek
|
r1698 | { | ||
Michal Klocek
|
r2273 | ChartAxis* axis = m_item.data(); | ||
Q_ASSERT(axis); | ||||
if(options.testFlag(QChart::GridAxisAnimations)) { | ||||
axis->setAnimation(new AxisAnimation(axis)); | ||||
}else{ | ||||
axis->setAnimation(0); | ||||
} | ||||
Michal Klocek
|
r1698 | } | ||
Michal Klocek
|
r2284 | |||
Michal Klocek
|
r1540 | #include "moc_qabstractaxis.cpp" | ||
#include "moc_qabstractaxis_p.cpp" | ||||
QTCOMMERCIALCHART_END_NAMESPACE | ||||