//#include // TODO : fix this #include "colorbaraxis/qcolorbaraxis.h" //#include #include "colorbaraxis/qcolorbaraxis_p.h" #include #include #include #include //#include #include #include QT_CHARTS_BEGIN_NAMESPACE /*! Constructs an axis object which is a child of \a parent. */ QColorBarAxis::QColorBarAxis(QRectF plotArea, QLinearGradient gradient, qreal min, qreal max, QObject *parent) : QAbstractAxis(*new QColorBarAxisPrivate(plotArea, gradient, min, max, this), parent) { setGridLineVisible(false); } /*! \internal */ QColorBarAxis::QColorBarAxis(QColorBarAxisPrivate &d, QObject *parent) : QAbstractAxis(d, parent) { } /*! Destroys the object */ QColorBarAxis::~QColorBarAxis() { Q_D(QColorBarAxis); if (d->m_chart) d->m_chart->removeAxis(this); } void QColorBarAxis::setMin(qreal min) { Q_D(QColorBarAxis); setRange(min, qMax(d->m_max, min)); } qreal QColorBarAxis::min() const { Q_D(const QColorBarAxis); return d->m_min; } void QColorBarAxis::setMax(qreal max) { Q_D(QColorBarAxis); setRange(qMin(d->m_min, max), max); } qreal QColorBarAxis::max() const { Q_D(const QColorBarAxis); return d->m_max; } void QColorBarAxis::setRange(qreal min, qreal max) { Q_D(QColorBarAxis); d->setRange(min,max); } void QColorBarAxis::setTickCount(int count) { Q_D(QColorBarAxis); if (d->m_tickCount != count && count >= 2) { d->m_tickCount = count; emit tickCountChanged(count); } } int QColorBarAxis::tickCount() const { Q_D(const QColorBarAxis); return d->m_tickCount; } void QColorBarAxis::setMinorTickCount(int count) { Q_D(QColorBarAxis); if (d->m_minorTickCount != count && count >= 0) { d->m_minorTickCount = count; emit minorTickCountChanged(count); } } int QColorBarAxis::minorTickCount() const { Q_D(const QColorBarAxis); return d->m_minorTickCount; } void QColorBarAxis::setLabelFormat(const QString &format) { Q_D(QColorBarAxis); d->m_format = format; emit labelFormatChanged(format); } QString QColorBarAxis::labelFormat() const { Q_D(const QColorBarAxis); return d->m_format; } /*! Returns the type of the axis */ QAbstractAxis::AxisType QColorBarAxis::type() const { return AxisTypeValue; //TODO : AxisTypeColorBar } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// QColorBarAxisPrivate::QColorBarAxisPrivate(QRectF plotArea, QLinearGradient gradient, qreal min, qreal max, QColorBarAxis *q) : QAbstractAxisPrivate(q), m_plotArea(plotArea), m_min(min), m_max(max), m_tickCount(5), m_minorTickCount(0), m_format(QString::null), // m_applying(false) m_gradient(gradient) { } QColorBarAxisPrivate::~QColorBarAxisPrivate() { } void QColorBarAxisPrivate::initializeGraphics(QGraphicsItem *parent) { Q_Q(QColorBarAxis); ChartAxisElement *axis(0); setAlignment(Qt::AlignRight); //also set orientation (Vertical in this case) //TODO : change this position qreal x1; qreal y1; qreal x2; qreal y2; m_plotArea.getCoords(&x1,&y1,&x2,&y2); QPoint pos(x2+5,y1); axis = new ChartColorBarAxisY(q, pos, m_plotArea.height(),m_gradient, parent); m_item.reset(axis); QAbstractAxisPrivate::initializeGraphics(parent); } void QColorBarAxisPrivate::initializeDomain(AbstractDomain *domain) { //domain is not supposed to have a rangeZ // if (orientation() == Qt::Vertical) { // if (!qFuzzyIsNull(m_max - m_min)) // domain->setRangeY(m_min, m_max); // else // setRange(domain->minY(), domain->maxY()); // } } void QColorBarAxisPrivate::setMin(const QVariant &min) { Q_Q(QColorBarAxis); bool ok; qreal value = min.toReal(&ok); if (ok) q->setMin(value); } void QColorBarAxisPrivate::setMax(const QVariant &max) { Q_Q(QColorBarAxis); bool ok; qreal value = max.toReal(&ok); if (ok) q->setMax(value); } void QColorBarAxisPrivate::setRange(const QVariant &min, const QVariant &max) { Q_Q(QColorBarAxis); bool ok1; bool ok2; qreal value1 = min.toReal(&ok1); qreal value2 = max.toReal(&ok2); if (ok1 && ok2) q->setRange(value1, value2); } void QColorBarAxisPrivate::setRange(qreal min,qreal max) { Q_Q(QColorBarAxis); bool changed = false; if (min > max) return; bool changeMin = false; if (m_min == 0 || min == 0) changeMin = !qFuzzyCompare(1 + m_min, 1 + min); else changeMin = !qFuzzyCompare(m_min, min); bool changeMax = false; if (m_max == 0 || max == 0) changeMax = !qFuzzyCompare(1 + m_max, 1 + max); else changeMax = !qFuzzyCompare(m_max, max); if (changeMin) { m_min = min; changed = true; emit q->minChanged(min); } if (changeMax) { m_max = max; changed = true; emit q->maxChanged(max); } if (changed) { emit rangeChanged(min,max); emit q->rangeChanged(min, max); } } #include "moc_qcolorbaraxis.cpp" #include "moc_qcolorbaraxis_p.cpp" QT_CHARTS_END_NAMESPACE