|
|
/****************************************************************************
|
|
|
**
|
|
|
** 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 "qchartaxis.h"
|
|
|
|
|
|
QTCOMMERCIALCHART_BEGIN_NAMESPACE
|
|
|
|
|
|
/*!
|
|
|
\class QChartAxis
|
|
|
\brief The QChartAxis class is used for manipulating chart's axis
|
|
|
and for adding optional axes to the chart.
|
|
|
\mainclass
|
|
|
|
|
|
There is only one x Axis, however there can be multiple y axes.
|
|
|
Each chart series can be bound to exactly one Y axis and the share common X axis.
|
|
|
Axis can be setup to show axis line with ticks, gird lines and shades.
|
|
|
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn bool QChartAxis::isAxisVisible() const
|
|
|
\brief Returns if axis is visible
|
|
|
\sa setAxisVisible()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn QPen QChartAxis::axisPen() const
|
|
|
\brief Returns pen used to draw axis and ticks.
|
|
|
\sa setAxisPen()
|
|
|
*/
|
|
|
|
|
|
|
|
|
/*!
|
|
|
\fn bool QChartAxis::isGridLineVisible() const
|
|
|
\brief Returns if grid is visible
|
|
|
\sa setGridLineVisible()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn QPen QChartAxis::gridLinePen() const
|
|
|
\brief Returns pen used to draw grid.
|
|
|
\sa setGridLinePen()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn bool QChartAxis::labelsVisible() const
|
|
|
\brief Returns if grid is visible
|
|
|
\sa setLabelsVisible()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn QPen QChartAxis::labelsPen() const
|
|
|
\brief Returns the pen used to labels.
|
|
|
\sa setLabelsPen()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn QBrush QChartAxis::labelsBrush() const
|
|
|
\brief Returns brush used to draw labels.
|
|
|
\sa setLabelsBrush()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn QFont QChartAxis::labelsFont() const
|
|
|
\brief Returns font used to draw labels.
|
|
|
\sa setLabelsFont()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn QFont QChartAxis::labelsAngle() const
|
|
|
\brief Returns angle used to draw labels.
|
|
|
\sa setLabelsAngle()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn bool QChartAxis::shadesVisible() const
|
|
|
\brief Returns if shades are visible.
|
|
|
\sa setShadesVisible()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn qreal QChartAxis::shadesOpacity() const
|
|
|
\brief Returns opacity of shades.
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn QPen QChartAxis::shadesPen() const
|
|
|
\brief Returns pen used to draw shades.
|
|
|
\sa setShadesPen()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn QBrush QChartAxis::shadesBrush() const
|
|
|
\brief Returns brush used to draw shades.
|
|
|
\sa setShadesBrush()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn qreal QChartAxis::min() const
|
|
|
\brief Returns minimum value on the axis.
|
|
|
\sa setMin()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn qreal QChartAxis::max() const
|
|
|
\brief Returns maximim value on the axis.
|
|
|
\sa setMax()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn void QChartAxis::minChanged(qreal min)
|
|
|
\brief Axis emits signal when \a min of axis has changed.
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn void QChartAxis::maxChanged(qreal max)
|
|
|
\brief Axis emits signal when \a max of axis has changed.
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn void QChartAxis::rangeChanged(qreal min, qreal max)
|
|
|
\brief Axis emits signal when \a min or \a max of axis has changed.
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn int QChartAxis::ticksCount() const
|
|
|
\brief Return number of ticks on the axis
|
|
|
\sa setTicksCount()
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn void QChartAxis::updated()
|
|
|
\brief \internal
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
\fn void QChartAxis::handleAxisRangeChanged(qreal min, qreal max)
|
|
|
\brief \internal \a min \a max
|
|
|
*/
|
|
|
|
|
|
/*!
|
|
|
Constructs new axis object which is a child of \a parent. Ownership is taken by
|
|
|
QChatView or QChart when axis added.
|
|
|
*/
|
|
|
|
|
|
QChartAxis::QChartAxis(QObject *parent) : QObject(parent),
|
|
|
m_axisVisible(true),
|
|
|
m_gridLineVisible(true),
|
|
|
m_labelsVisible(true),
|
|
|
m_labelsAngle(0),
|
|
|
m_shadesVisible(false),
|
|
|
m_shadesOpacity(1.0),
|
|
|
m_min(0),
|
|
|
m_max(0),
|
|
|
m_ticksCount(5),
|
|
|
m_niceNumbers(false)
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Destructor of the axis object. When axis is added to chart, chart object takes ownership.
|
|
|
*/
|
|
|
|
|
|
QChartAxis::~QChartAxis()
|
|
|
{
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets \a pen used to draw axis line and ticks.
|
|
|
*/
|
|
|
void QChartAxis::setAxisPen(const QPen &pen)
|
|
|
{
|
|
|
if (pen != m_axisPen) {
|
|
|
m_axisPen = pen;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets if axis and ticks are \a visible.
|
|
|
*/
|
|
|
void QChartAxis::setAxisVisible(bool visible)
|
|
|
{
|
|
|
if (m_axisVisible != visible) {
|
|
|
m_axisVisible = visible;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets if grid line is \a visible.
|
|
|
*/
|
|
|
void QChartAxis::setGridLineVisible(bool visible)
|
|
|
{
|
|
|
if (m_gridLineVisible != visible) {
|
|
|
m_gridLineVisible = visible;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets \a pen used to draw grid line.
|
|
|
*/
|
|
|
void QChartAxis::setGridLinePen(const QPen &pen)
|
|
|
{
|
|
|
if (m_gridLinePen != pen) {
|
|
|
m_gridLinePen = pen;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets if axis' labels are \a visible.
|
|
|
*/
|
|
|
void QChartAxis::setLabelsVisible(bool visible)
|
|
|
{
|
|
|
if (m_labelsVisible != visible) {
|
|
|
m_labelsVisible = visible;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets \a pen used to draw labels.
|
|
|
*/
|
|
|
void QChartAxis::setLabelsPen(const QPen &pen)
|
|
|
{
|
|
|
if (m_labelsPen != pen) {
|
|
|
m_labelsPen = pen;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets \a brush used to draw labels.
|
|
|
*/
|
|
|
void QChartAxis::setLabelsBrush(const QBrush &brush)
|
|
|
{
|
|
|
if (m_labelsBrush != brush) {
|
|
|
m_labelsBrush = brush;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets \a font used to draw labels.
|
|
|
*/
|
|
|
void QChartAxis::setLabelsFont(const QFont &font)
|
|
|
{
|
|
|
if (m_labelsFont != font) {
|
|
|
m_labelsFont = font;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets \a angle for all the labels on given axis.
|
|
|
*/
|
|
|
void QChartAxis::setLabelsAngle(int angle)
|
|
|
{
|
|
|
if (m_labelsAngle != angle) {
|
|
|
m_labelsAngle = angle;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets if shades are \a visible.
|
|
|
*/
|
|
|
void QChartAxis::setShadesVisible(bool visible)
|
|
|
{
|
|
|
if (m_shadesVisible != visible) {
|
|
|
m_shadesVisible = visible;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets \a pen used to draw shades.
|
|
|
*/
|
|
|
void QChartAxis::setShadesPen(const QPen &pen)
|
|
|
{
|
|
|
if (m_shadesPen != pen) {
|
|
|
m_shadesPen = pen;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets \a brush used to draw shades.
|
|
|
*/
|
|
|
void QChartAxis::setShadesBrush(const QBrush &brush)
|
|
|
{
|
|
|
if (m_shadesBrush != brush) {
|
|
|
m_shadesBrush = brush;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets \a opacity of the shades.
|
|
|
*/
|
|
|
void QChartAxis::setShadesOpacity(qreal opacity)
|
|
|
{
|
|
|
if (m_shadesOpacity != opacity) {
|
|
|
m_shadesOpacity=opacity;
|
|
|
emit updated();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets \a min value on the axis.
|
|
|
*/
|
|
|
void QChartAxis::setMin(qreal min)
|
|
|
{
|
|
|
setRange(min,m_max);
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets \a max value on the axis.
|
|
|
*/
|
|
|
void QChartAxis::setMax(qreal max)
|
|
|
{
|
|
|
setRange(m_min,max);
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets range from \a min to \a max on the axis.
|
|
|
*/
|
|
|
void QChartAxis::setRange(qreal min, qreal max)
|
|
|
{
|
|
|
bool changed = false;
|
|
|
if (!qFuzzyIsNull(m_min - min)) {
|
|
|
m_min = min;
|
|
|
changed = true;
|
|
|
emit minChanged(min);
|
|
|
}
|
|
|
|
|
|
if (!qFuzzyIsNull(m_max - max)) {
|
|
|
m_max = max;
|
|
|
changed = true;
|
|
|
emit maxChanged(max);
|
|
|
}
|
|
|
|
|
|
if (changed) {
|
|
|
emit rangeChanged(m_min,m_max);
|
|
|
emit this->changed(m_min, m_max, m_ticksCount, m_niceNumbers);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets \a count for ticks on the axis.
|
|
|
*/
|
|
|
void QChartAxis::setTicksCount(int count)
|
|
|
{
|
|
|
if (m_ticksCount != count) {
|
|
|
m_ticksCount = count;
|
|
|
emit ticksCountChanged(count);
|
|
|
emit changed(m_min, m_max, m_ticksCount, m_niceNumbers);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets axis, shades, labels and grid lines to be visible.
|
|
|
*/
|
|
|
void QChartAxis::show()
|
|
|
{
|
|
|
m_axisVisible=true;
|
|
|
m_gridLineVisible=true;
|
|
|
m_labelsVisible=true;
|
|
|
m_shadesVisible=true;
|
|
|
emit updated();
|
|
|
}
|
|
|
|
|
|
/*!
|
|
|
Sets axis, shades, labels and grid lines to not be visible.
|
|
|
*/
|
|
|
void QChartAxis::hide()
|
|
|
{
|
|
|
m_axisVisible = false;
|
|
|
m_gridLineVisible = false;
|
|
|
m_labelsVisible = false;
|
|
|
m_shadesVisible = false;
|
|
|
emit updated();
|
|
|
}
|
|
|
|
|
|
void QChartAxis::handleAxisRangeChanged(qreal min, qreal max,int count)
|
|
|
{
|
|
|
setRange(min,max);
|
|
|
setTicksCount(count);
|
|
|
}
|
|
|
|
|
|
void QChartAxis::setNiceNumbers(bool enabled)
|
|
|
{
|
|
|
if (m_niceNumbers != enabled){
|
|
|
m_niceNumbers = enabled;
|
|
|
emit changed(m_min, m_max, m_ticksCount, m_niceNumbers);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
#include "moc_qchartaxis.cpp"
|
|
|
|
|
|
QTCOMMERCIALCHART_END_NAMESPACE
|
|
|
|