#pragma once #include "dtcore/inc/dtdefinitions.h" #ifdef PI #undef PI #endif namespace dt { static const int INVALID_ID = 0; static const char INVALID_GUID[] = "00000000-0000-0000-0000-000000000000"; static const int INVALID_VALUE = -1; static const float INVALID_VALUE_FLOAT = -1.f; template class Constant { public: static const T EPSILON; static const T MAX; static const T MIN; static const T PI; static const T TWO_PI; static const T HALF_PI; static const T INV_PI; static const T INV_TWO_PI; static const T DEG_TO_RAD; static const T RAD_TO_DEG; }; template<> class Constant { public: DT_CORE_DLL_ENTRY static const float EPSILON; DT_CORE_DLL_ENTRY static const float MAX; DT_CORE_DLL_ENTRY static const float MIN; DT_CORE_DLL_ENTRY static const float PI; DT_CORE_DLL_ENTRY static const float TWO_PI; DT_CORE_DLL_ENTRY static const float HALF_PI; DT_CORE_DLL_ENTRY static const float INV_PI; DT_CORE_DLL_ENTRY static const float INV_TWO_PI; DT_CORE_DLL_ENTRY static const float DEG_TO_RAD; DT_CORE_DLL_ENTRY static const float RAD_TO_DEG; }; template<> class Constant { public: DT_CORE_DLL_ENTRY static const double EPSILON; DT_CORE_DLL_ENTRY static const double MAX; DT_CORE_DLL_ENTRY static const double MIN; DT_CORE_DLL_ENTRY static const double PI; DT_CORE_DLL_ENTRY static const double TWO_PI; DT_CORE_DLL_ENTRY static const double HALF_PI; DT_CORE_DLL_ENTRY static const double INV_PI; DT_CORE_DLL_ENTRY static const double INV_TWO_PI; DT_CORE_DLL_ENTRY static const double DEG_TO_RAD; DT_CORE_DLL_ENTRY static const double RAD_TO_DEG; }; template<> class Constant { public: DT_CORE_DLL_ENTRY static const S8 EPSILON; DT_CORE_DLL_ENTRY static const S8 MAX; DT_CORE_DLL_ENTRY static const S8 MIN; DT_CORE_DLL_ENTRY static const S8 PI; DT_CORE_DLL_ENTRY static const S8 TWO_PI; DT_CORE_DLL_ENTRY static const S8 HALF_PI; DT_CORE_DLL_ENTRY static const S8 INV_PI; DT_CORE_DLL_ENTRY static const S8 INV_TWO_PI; DT_CORE_DLL_ENTRY static const S8 DEG_TO_RAD; DT_CORE_DLL_ENTRY static const S8 RAD_TO_DEG; }; template<> class Constant { public: DT_CORE_DLL_ENTRY static const U8 EPSILON; DT_CORE_DLL_ENTRY static const U8 MAX; DT_CORE_DLL_ENTRY static const U8 MIN; DT_CORE_DLL_ENTRY static const U8 PI; DT_CORE_DLL_ENTRY static const U8 TWO_PI; DT_CORE_DLL_ENTRY static const U8 HALF_PI; DT_CORE_DLL_ENTRY static const U8 INV_PI; DT_CORE_DLL_ENTRY static const U8 INV_TWO_PI; DT_CORE_DLL_ENTRY static const U8 DEG_TO_RAD; DT_CORE_DLL_ENTRY static const U8 RAD_TO_DEG; }; template<> class Constant { public: DT_CORE_DLL_ENTRY static const S16 EPSILON; DT_CORE_DLL_ENTRY static const S16 MAX; DT_CORE_DLL_ENTRY static const S16 MIN; DT_CORE_DLL_ENTRY static const S16 PI; DT_CORE_DLL_ENTRY static const S16 TWO_PI; DT_CORE_DLL_ENTRY static const S16 HALF_PI; DT_CORE_DLL_ENTRY static const S16 INV_PI; DT_CORE_DLL_ENTRY static const S16 INV_TWO_PI; DT_CORE_DLL_ENTRY static const S16 DEG_TO_RAD; DT_CORE_DLL_ENTRY static const S16 RAD_TO_DEG; }; template<> class Constant { public: DT_CORE_DLL_ENTRY static const U16 EPSILON; DT_CORE_DLL_ENTRY static const U16 MAX; DT_CORE_DLL_ENTRY static const U16 MIN; DT_CORE_DLL_ENTRY static const U16 PI; DT_CORE_DLL_ENTRY static const U16 TWO_PI; DT_CORE_DLL_ENTRY static const U16 HALF_PI; DT_CORE_DLL_ENTRY static const U16 INV_PI; DT_CORE_DLL_ENTRY static const U16 INV_TWO_PI; DT_CORE_DLL_ENTRY static const U16 DEG_TO_RAD; DT_CORE_DLL_ENTRY static const U16 RAD_TO_DEG; }; template<> class Constant { public: DT_CORE_DLL_ENTRY static const S32 EPSILON; DT_CORE_DLL_ENTRY static const S32 MAX; DT_CORE_DLL_ENTRY static const S32 MIN; DT_CORE_DLL_ENTRY static const S32 PI; DT_CORE_DLL_ENTRY static const S32 TWO_PI; DT_CORE_DLL_ENTRY static const S32 HALF_PI; DT_CORE_DLL_ENTRY static const S32 INV_PI; DT_CORE_DLL_ENTRY static const S32 INV_TWO_PI; DT_CORE_DLL_ENTRY static const S32 DEG_TO_RAD; DT_CORE_DLL_ENTRY static const S32 RAD_TO_DEG; }; template<> class Constant { public: DT_CORE_DLL_ENTRY static const U32 EPSILON; DT_CORE_DLL_ENTRY static const U32 MAX; DT_CORE_DLL_ENTRY static const U32 MIN; DT_CORE_DLL_ENTRY static const U32 PI; DT_CORE_DLL_ENTRY static const U32 TWO_PI; DT_CORE_DLL_ENTRY static const U32 HALF_PI; DT_CORE_DLL_ENTRY static const U32 INV_PI; DT_CORE_DLL_ENTRY static const U32 INV_TWO_PI; DT_CORE_DLL_ENTRY static const U32 DEG_TO_RAD; DT_CORE_DLL_ENTRY static const U32 RAD_TO_DEG; }; template<> class Constant { public: DT_CORE_DLL_ENTRY static const S64 EPSILON; DT_CORE_DLL_ENTRY static const S64 MAX; DT_CORE_DLL_ENTRY static const S64 MIN; DT_CORE_DLL_ENTRY static const S64 PI; DT_CORE_DLL_ENTRY static const S64 TWO_PI; DT_CORE_DLL_ENTRY static const S64 HALF_PI; DT_CORE_DLL_ENTRY static const S64 INV_PI; DT_CORE_DLL_ENTRY static const S64 INV_TWO_PI; DT_CORE_DLL_ENTRY static const S64 DEG_TO_RAD; DT_CORE_DLL_ENTRY static const S64 RAD_TO_DEG; }; template<> class Constant { public: DT_CORE_DLL_ENTRY static const U64 EPSILON; DT_CORE_DLL_ENTRY static const U64 MAX; DT_CORE_DLL_ENTRY static const U64 MIN; DT_CORE_DLL_ENTRY static const U64 PI; DT_CORE_DLL_ENTRY static const U64 TWO_PI; DT_CORE_DLL_ENTRY static const U64 HALF_PI; DT_CORE_DLL_ENTRY static const U64 INV_PI; DT_CORE_DLL_ENTRY static const U64 INV_TWO_PI; DT_CORE_DLL_ENTRY static const U64 DEG_TO_RAD; DT_CORE_DLL_ENTRY static const U64 RAD_TO_DEG; }; }