123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /*=========================================================================
- Library: CTK
- Copyright (c) Kitware Inc.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0.txt
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- =========================================================================*/
- // Qt includes
- #include <QDebug>
- // CTK includes
- #include "ctkLinearValueProxy.h"
- // STD includes
- #include <limits>
- // --------------------------------------------------------------------------
- // ctkLinearValueProxyPrivate
- class CTK_CORE_EXPORT ctkLinearValueProxyPrivate
- {
- Q_DECLARE_PUBLIC(ctkLinearValueProxy);
- protected:
- ctkLinearValueProxy* q_ptr;
- public:
- ctkLinearValueProxyPrivate(ctkLinearValueProxy& object);
- ~ctkLinearValueProxyPrivate();
- bool isCoefficientValid() const;
- double Coefficient;
- double Offset;
- };
- // --------------------------------------------------------------------------
- // ctkLinearValueProxyPrivate methods
- // --------------------------------------------------------------------------
- ctkLinearValueProxyPrivate::ctkLinearValueProxyPrivate(ctkLinearValueProxy& object)
- :q_ptr(&object)
- {
- this->Coefficient = 1.0;
- this->Offset = 0.0;
- }
- // --------------------------------------------------------------------------
- ctkLinearValueProxyPrivate::~ctkLinearValueProxyPrivate()
- {
- }
- // --------------------------------------------------------------------------
- bool ctkLinearValueProxyPrivate::isCoefficientValid() const
- {
- return qAbs(this->Coefficient) > std::numeric_limits<double>::epsilon();
- }
- // --------------------------------------------------------------------------
- // ctkLinearValueProxy methods
- // --------------------------------------------------------------------------
- ctkLinearValueProxy::ctkLinearValueProxy(QObject* _parent)
- : Superclass(_parent)
- , d_ptr(new ctkLinearValueProxyPrivate(*this))
- {
- }
- // --------------------------------------------------------------------------
- ctkLinearValueProxy::~ctkLinearValueProxy()
- {
- }
- // --------------------------------------------------------------------------
- double ctkLinearValueProxy::proxyValueFromValue(double value) const
- {
- return (this->coefficient() * value) + this->offset();
- }
- // --------------------------------------------------------------------------
- double ctkLinearValueProxy::valueFromProxyValue(double proxyValue) const
- {
- return (proxyValue - this->offset()) / this->coefficient();
- }
- // --------------------------------------------------------------------------
- CTK_GET_CPP(ctkLinearValueProxy, double, coefficient, Coefficient);
- CTK_GET_CPP(ctkLinearValueProxy, double, offset, Offset);
- // --------------------------------------------------------------------------
- void ctkLinearValueProxy::setCoefficient(double newCoeff)
- {
- Q_D(ctkLinearValueProxy);
- if (d->Coefficient == newCoeff)
- {
- return;
- }
- emit proxyAboutToBeModified();
- d->Coefficient = newCoeff;
- this->updateProxyValue();
- emit proxyModified();
- }
- // --------------------------------------------------------------------------
- void ctkLinearValueProxy::setOffset(double newOffset)
- {
- Q_D(ctkLinearValueProxy);
- if (d->Offset == newOffset)
- {
- return;
- }
- emit proxyAboutToBeModified();
- d->Offset = newOffset;
- this->updateProxyValue();
- emit proxyModified();
- }
|