Base.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #ifndef BASE_H_
  2. #define BASE_H_
  3. // C++ includes
  4. #include <cmath>
  5. #include <cstdio>
  6. #include <cstdlib>
  7. #include <cstdarg>
  8. #include <cassert>
  9. #include <cmath>
  10. #include <cfloat>
  11. #include <ctime>
  12. #include <cstring>
  13. #include <iostream>
  14. #include <fstream>
  15. #include <sstream>
  16. #include <string>
  17. #include <vector>
  18. #include <list>
  19. #include <map>
  20. #include <algorithm>
  21. #include <sys/stat.h>
  22. using std::memcpy;
  23. using std::size_t;
  24. using std::min;
  25. using std::max;
  26. using std::ostream;
  27. using std::basic_ostream;
  28. using std::endl;
  29. #if defined(WIN32)
  30. #pragma warning( disable : 4005 )
  31. #pragma warning( disable : 4172 )
  32. #pragma warning( disable : 4244 )
  33. #pragma warning( disable : 4267 )
  34. #pragma warning( disable : 4311 )
  35. #pragma warning( disable : 4390 )
  36. #pragma warning( disable : 4800 )
  37. #pragma warning( disable : 4996 )
  38. #endif
  39. // PNG
  40. #include <png.h>
  41. #include "edtaa3func.h"
  42. // Defines
  43. #ifndef M_1_PI
  44. #define M_1_PI 0.31830988618379067154
  45. #endif
  46. #define MATH_FLOAT_SMALL 1.0e-37f
  47. #define MATH_TOLERANCE 2e-37f
  48. #define MATH_E 2.71828182845904523536f
  49. #define MATH_LOG10E 0.4342944819032518f
  50. #define MATH_LOG2E 1.442695040888963387f
  51. #define MATH_PI 3.14159265358979323846f
  52. #define MATH_PIOOVER2 1.57079632679489661923f
  53. #define MATH_PIOOVER4 M_PI_4
  54. #define MATH_PIX2 6.28318530717958647693f
  55. #define MATH_EPSILON 0.000001f
  56. #define MATH_DEG_TO_RAD(x) ((x) * 0.0174532925f)
  57. #define MATH_RAD_TO_DEG(x) ((x)* 57.29577951f)
  58. #define MATH_RANDOM_MINUS1_1() ((2.0f*((float)rand()/RAND_MAX))-1.0f) // Returns a random float between -1 and 1.
  59. #define MATH_RANDOM_0_1() ((float)rand()/RAND_MAX) // Returns a random float between 0 and 1.
  60. namespace gameplay
  61. {
  62. enum VertexUsage
  63. {
  64. UNKNOWN = 0,
  65. POSITION = 1,
  66. NORMAL = 2,
  67. COLOR = 3,
  68. TANGENT = 4,
  69. BINORMAL = 5,
  70. BLENDWEIGHTS = 6,
  71. BLENDINDICES = 7,
  72. TEXCOORD0 = 8,
  73. TEXCOORD1 = 9,
  74. TEXCOORD2 = 10,
  75. TEXCOORD3 = 11,
  76. TEXCOORD4 = 12,
  77. TEXCOORD5 = 13,
  78. TEXCOORD6 = 14,
  79. TEXCOORD7 = 15
  80. };
  81. void fillArray(float values[], float value, size_t length);
  82. /**
  83. * Returns the base name of the given path.
  84. * Example: "c:/foo/bar/model.fbx" returns "model.fbx"
  85. *
  86. * @param filepath File path.
  87. *
  88. * @return Base file name.
  89. */
  90. std::string getBaseName(const std::string& filepath);
  91. #define ISZERO(x) (fabs(x) < MATH_EPSILON)
  92. #define ISONE(x) ((x - 1.0f) < MATH_EPSILON)
  93. // Object deletion macro
  94. #define SAFE_DELETE(x) \
  95. if (x) \
  96. { \
  97. delete x; \
  98. x = NULL; \
  99. }
  100. extern int __logVerbosity;
  101. // Logging macro (level is verbosity level, 1-4).
  102. #define LOG(level, ...) \
  103. { \
  104. if (level <= __logVerbosity) \
  105. printf(__VA_ARGS__); \
  106. }
  107. }
  108. #endif