FluentUI/src/qmlcustomplot/ticker.cpp

120 lines
3.3 KiB
C++

#include "ticker.h"
#include "qcustomplot.h"
#include <QPen>
#include <stdexcept>
namespace QmlQCustomPlot
{
Ticker::Ticker(QCPAxis* parentAxis, QCustomPlot *parentPlot, QObject *parent)
: m_parentAxis(parentAxis), m_parentPlot(parentPlot), QObject(parent)
{
if(parentPlot == nullptr || parentAxis == nullptr)
throw std::invalid_argument(nullptr);
connect(parentPlot, &QCustomPlot::beforeReplot, this, &Ticker::updateProperty);
updateProperty();
}
Ticker::~Ticker()
{
}
void Ticker::set_ticks(bool value) noexcept
{
m_ticks = m_parentAxis->ticks();
if(m_ticks == value) return;
m_ticks = value;
m_parentAxis->setTicks(value);
Q_EMIT ticksChanged(m_ticks);
m_parentPlot->replot();
}
void Ticker::set_subTicks(bool value) noexcept
{
m_subTicks = m_parentAxis->subTicks();
if(m_subTicks == value) return;
m_subTicks = value;
m_parentAxis->setSubTicks(value);
Q_EMIT subTicksChanged(m_subTicks);
m_parentPlot->replot();
}
void Ticker::set_tickCount(int value) noexcept
{
m_tickCount = m_parentAxis->ticker()->tickCount();
if(m_tickCount == value) return;
m_tickCount = value;
m_parentAxis->ticker()->setTickCount(value);
Q_EMIT tickCountChanged(m_tickCount);
m_parentPlot->replot();
}
void Ticker::set_baseWidth(int value) noexcept
{
m_baseWidth = m_parentAxis->basePen().width();
if(m_baseWidth == value) return;
m_baseWidth = value;
QPen pen = m_parentAxis->basePen();
pen.setWidth(value);
m_parentAxis->setBasePen(pen);
Q_EMIT baseWidthChanged(m_baseWidth);
m_parentPlot->replot();
}
void Ticker::set_baseColor(const QColor &value) noexcept
{
m_baseColor = m_parentAxis->basePen().color();
if(m_baseColor == value) return;
m_baseColor = value;
QPen pen = m_parentAxis->basePen();
pen.setColor(value);
m_parentAxis->setBasePen(pen);
Q_EMIT baseColorChanged(m_baseColor);
m_parentPlot->replot();
}
void Ticker::set_tickColor(const QColor &value) noexcept
{
m_tickColor = m_parentAxis->tickPen().color();
if(m_tickColor == value) return;
m_tickColor = value;
QPen pen = m_parentAxis->tickPen();
pen.setColor(value);
m_parentAxis->setTickPen(pen);
Q_EMIT tickColorChanged(m_tickColor);
m_parentPlot->replot();
}
void Ticker::set_subTickColor(const QColor &value) noexcept
{
m_subTickColor = m_parentAxis->subTickPen().color();
if(m_subTickColor == value) return;
m_subTickColor = value;
QPen pen = m_parentAxis->subTickPen();
pen.setColor(value);
m_parentAxis->setSubTickPen(pen);
Q_EMIT subTickColorChanged(m_subTickColor);
m_parentPlot->replot();
}
void Ticker::updateProperty() noexcept
{
m_ticks = m_parentAxis->ticks();
m_subTicks = m_parentAxis->subTicks();
m_tickCount = m_parentAxis->ticker()->tickCount();
m_baseWidth = m_parentAxis->basePen().width();
m_baseColor = m_parentAxis->basePen().color();
m_tickColor = m_parentAxis->tickPen().color();
m_subTickColor = m_parentAxis->subTickPen().color();
Q_EMIT ticksChanged(m_ticks);
Q_EMIT subTicksChanged(m_subTicks);
Q_EMIT tickCountChanged(m_tickCount);
Q_EMIT baseWidthChanged(m_baseWidth);
Q_EMIT baseColorChanged(m_baseColor);
Q_EMIT tickColorChanged(m_tickColor);
Q_EMIT subTickColorChanged(m_subTickColor);
}
}