local_proto.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #ifndef __LOCAL_PROTO_H__
  2. #define __LOCAL_PROTO_H__
  3. #include <gdal.h>
  4. #include <math.h>
  5. /* is it safe to #include <float.h> ? */
  6. /* range limits */
  7. /*
  8. GDAL data type minimum maximum
  9. Byte 0 255
  10. UInt16 0 65,535
  11. Int16, CInt16 -32,768 32,767
  12. UInt32 0 4,294,967,295
  13. Int32, CInt32 -2,147,483,648 2,147,483,647
  14. Float32, CFloat32 -3.4E38 3.4E38
  15. Float64, CFloat64 -1.79E308 1.79E308
  16. */
  17. /* copied from limits.h, checked against gdal-1.6.0/gcore/gdalrasterband.cpp */
  18. #define TYPE_BYTE_MIN 0
  19. #define TYPE_BYTE_MAX 255
  20. #define TYPE_INT16_MIN (-32768)
  21. #define TYPE_INT16_MAX 32767
  22. #define TYPE_UINT16_MIN 0
  23. #define TYPE_UINT16_MAX 65535
  24. #define TYPE_UINT32_MIN 0
  25. #define TYPE_UINT32_MAX 4294967295U
  26. #define TYPE_INT32_MIN (-TYPE_INT32_MAX - 1)
  27. #define TYPE_INT32_MAX 2147483647
  28. /* new systems: FLT_MAX, DBL_MAX, old systems: MAXFLOAT, MAXDOUBLE, fallback: 3.4E38 and 1.79E308f */
  29. #ifdef FLT_MAX
  30. #define TYPE_FLOAT32_MIN (-FLT_MAX)
  31. #define TYPE_FLOAT32_MAX FLT_MAX
  32. #elif defined(MAX_FLOAT)
  33. #define TYPE_FLOAT32_MIN (-MAXFLOAT)
  34. #define TYPE_FLOAT32_MAX MAXFLOAT
  35. #else
  36. /* formula from float.h */
  37. #define TYPE_FLOAT32_MIN (float)(-((1 + (1 - pow(2, -23))) * pow(2, 127)))
  38. #define TYPE_FLOAT32_MAX (float)((1 + (1 - pow(2, -23))) * pow(2, 127))
  39. #endif
  40. #ifdef DBL_MAX
  41. #define TYPE_FLOAT64_MIN (-DBL_MAX)
  42. #define TYPE_FLOAT64_MAX DBL_MAX
  43. #elif defined(MAXDOUBLE)
  44. #define TYPE_FLOAT64_MIN (-MAXDOUBLE)
  45. #define TYPE_FLOAT64_MAX MAXDOUBLE
  46. #else
  47. /* formula from float.h */
  48. #define TYPE_FLOAT64_MIN (-((1 + (1 - pow(2, -52))) * pow(2, 1023)))
  49. #define TYPE_FLOAT64_MAX ((1 + (1 - pow(2, -52))) * pow(2, 1023))
  50. #endif
  51. #define GRASS_MAX_COLORS TYPE_UINT16_MAX /* ok? */
  52. /* export_band.c */
  53. int export_band(GDALDatasetH, int, const char *,
  54. const char *, struct Cell_head *, RASTER_MAP_TYPE,
  55. double, int, int, int);
  56. int exact_checks(GDALDataType, const char *, const char *,
  57. struct Cell_head *, RASTER_MAP_TYPE, double,
  58. const char *, int);
  59. /* attr.c */
  60. int export_attr(GDALDatasetH, int, const char *,
  61. const char *, RASTER_MAP_TYPE);
  62. #endif /* __LOCAL_PROTO_H__ */