Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
cValueRange.h
Go to the documentation of this file.
1 //
4 //
5 
6 #ifndef _INC_cValueRange_H
7 #define _INC_cValueRange_H
8 #ifndef NO_PRAGMA_ONCE
9 #pragma once
10 #endif
11 
12 #include "Calc.h"
13 #include "GrayCore/include/cMem.h"
14 #include "GrayCore/include/cPair.h"
16 
17 namespace GrayLib
18 {
19  template<typename TYPE>
20  class GRAYLIB_LINK cValueRange : public cRangeT<TYPE>
21  {
25  public:
27  {
28  this->m_Lo = tLo;
29  this->m_Hi = tHi;
30  }
31 
33  {
34  this->m_Hi = this->m_Lo = nVal;
35  }
36 
37  // getters.
38  bool isRangeValid() const
39  {
41  return this->m_Lo != cTypeLimit<TYPE>::k_Min || this->m_Hi != cTypeLimit<TYPE>::k_Min;
42  }
43 
44  TYPE GetLinearX(TYPE nVal2, TYPE nRange2) const
45  {
48  if (nRange2 == 0)
49  return this->m_Lo;
50  return this->m_Lo + CalcI::MulDiv<TYPE>(nVal2, this->get_RangeX(), nRange2);
51  }
52  TYPE GetLinearI(int nVal2, int nRange2 = 1000) const
53  {
57  return this->m_Lo + (TYPE)CalcI::MulDiv<int>(nVal2, (int) this->get_RangeI(), nRange2);
58  }
59 
60 #if 0
61  void v_GetRange(cVariant& vVal) const
62  {
64  if (IsRangeInvalid())
65  {
66  return;
67  }
68  if (m_Lo == m_Hi)
69  {
70  vVal = cVariant(m_Lo);
71  return;
72  }
73  cVariant vLo(m_Lo);
74  vVal.AddArrayElement(vLo);
75  cVariant vHi(m_Hi);
76  vVal.AddArrayElement(vHi);
77  }
78 #endif
79  };
80 
84 
85 #ifdef GRAY_DLL // force implementation/instantiate for DLL/SO.
86  template class GRAYLIB_LINK cValueRange<WORD>;
87  template class GRAYLIB_LINK cValueRange<int>;
88  template class GRAYLIB_LINK cValueRange<float>;
89 #endif
90 
91 };
92 #endif
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
#define TYPE
Definition: StrT.cpp:38
Definition: cValueRange.h:21
bool isRangeValid() const
Definition: cValueRange.h:38
cValueRange(TYPE tLo=cTypeLimit< TYPE >::k_Min, TYPE tHi=cTypeLimit< TYPE >::k_Min)
Definition: cValueRange.h:26
TYPE GetLinearX(TYPE nVal2, TYPE nRange2) const
Definition: cValueRange.h:44
TYPE GetLinearI(int nVal2, int nRange2=1000) const
Definition: cValueRange.h:52
void InitX(TYPE nVal=cTypeLimit< TYPE >::k_Min)
Definition: cValueRange.h:32
Definition: cVariant.h:26
void AddArrayElement(const THIS_t &vVal)
Definition: cVariant.h:378
Definition: cPair.h:20
Definition: cMesh.h:22
cValueRange< int > cValueRangeByte
Definition: cValueRange.h:82
cValueRange< int > cValueRangeInt
Definition: cValueRange.h:81
cValueRange< float > cValueRangeFloat
Definition: cValueRange.h:83
class __DECL_IMPORT cVariant
Definition: cJSONWriter.h:19
Definition: cTypes.h:152