ACF $AcfVersion:0$
CDoubleManip.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5// ACF includes
7
8
9namespace imath
10{
11
12
88class CDoubleManip: virtual public IDoubleManip
89{
90public:
92
96 char GetPointChar() const;
97
101 void SetPointChar(char pointChar);
102
103 // reimplemented (imath::IDoubleManip)
104 virtual int GetPrecision() const override;
105
106 // reimplemented (imath::TIValueManip)
107 virtual double GetRounded(const double& value) const override;
108 virtual bool AreValuesEqual(const double& value1, const double& value2) const override;
109 virtual bool IsSmaller(const double& value1, const double& value2) const override;
110 virtual bool IsSmallerEqual(const double& value1, const double& value2) const override;
111 virtual double GetSmallerValue(const double& value) const override;
112 virtual double GetBiggerValue(const double& value) const override;
113 virtual QString GetString(const double& value) const override;
114 virtual bool GetParsed(const QString& text, double& result) const override;
115
116protected:
117 enum{
118 PRECISION = 6
119 };
120
121private:
122 char m_pointChar;
123};
124
125
126// inline methods
127
128inline char CDoubleManip::GetPointChar() const
129{
130 return m_pointChar;
131}
132
133
134inline void CDoubleManip::SetPointChar(char pointChar)
135{
136 m_pointChar = pointChar;
137}
138
139
140// reimplemented (imath::TIValueManip)
141
142inline double CDoubleManip::GetRounded(const double& value) const
143{
144 return value;
145}
146
147
148inline bool CDoubleManip::AreValuesEqual(const double& value1, const double& value2) const
149{
150 return value1 == value2;
151}
152
153
154inline bool CDoubleManip::IsSmaller(const double& value1, const double& value2) const
155{
156 return value1 < value2;
157}
158
159
160inline bool CDoubleManip::IsSmallerEqual(const double& value1, const double& value2) const
161{
162 return value1 <= value2;
163}
164
165
166inline double CDoubleManip::GetSmallerValue(const double& value) const
167{
168 return value - 0.001;
169}
170
171
172inline double CDoubleManip::GetBiggerValue(const double& value) const
173{
174 return value + 0.001;
175}
176
177
178} // namespace imath
179
180
Simple implementation of double value manipulator without rounding or quantization.
virtual double GetRounded(const double &value) const override
Get the nearest value rounded used this arithmetik.
virtual double GetSmallerValue(const double &value) const override
Return biggest value smaller that specified one.
char GetPointChar() const
Get point character.
virtual bool AreValuesEqual(const double &value1, const double &value2) const override
Compare two values and check, if there are equal.
virtual bool IsSmallerEqual(const double &value1, const double &value2) const override
Compare two values and check, if first one is smaller or equal as the second.
virtual bool GetParsed(const QString &text, double &result) const override
Get value converted from string.
virtual bool IsSmaller(const double &value1, const double &value2) const override
Compare two values and check, if first one is smaller as the second.
void SetPointChar(char pointChar)
Set point character.
virtual QString GetString(const double &value) const override
Get this value as string.
virtual int GetPrecision() const override
Get number of digits after point.
virtual double GetBiggerValue(const double &value) const override
Return smallest value bigger that specified one.
Interface for all manipulation using values represent as double.
Package with mathematical functions and algebraical primitives.