openhmd.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /*
  2. * OpenHMD - Free and Open Source API and drivers for immersive technology.
  3. * Copyright (C) 2013 Fredrik Hultin.
  4. * Copyright (C) 2013 Jakob Bornecrantz.
  5. * Distributed under the Boost 1.0 licence, see LICENSE for full text.
  6. */
  7. #ifndef OPENHMD_H
  8. #define OPENHMD_H
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. #ifdef _WIN32
  13. #ifdef DLL_EXPORT
  14. #define OHMD_APIENTRY __cdecl __declspec( dllexport )
  15. #else
  16. #ifdef OHMD_STATIC
  17. #define OHMD_APIENTRY __cdecl
  18. #else
  19. #define OHMD_APIENTRY __cdecl __declspec( dllimport )
  20. #endif
  21. #endif
  22. #else
  23. #define OHMD_APIENTRY
  24. #endif
  25. #define OHMD_STR_SIZE 256
  26. typedef enum {
  27. OHMD_VENDOR,
  28. OHMD_PRODUCT,
  29. OHMD_PATH,
  30. } ohmd_string_value;
  31. typedef enum {
  32. OHMD_ROTATION_EULER,
  33. OHMD_ROTATION_QUAT,
  34. OHMD_MAT4X4_LEFT_EYE_GL_MODELVIEW,
  35. OHMD_MAT4X4_RIGHT_EYE_GL_MODELVIEW,
  36. OHMD_MAT4X4_LEFT_EYE_GL_PROJECTION,
  37. OHMD_MAT4X4_RIGHT_EYE_GL_PROJECTION,
  38. OHMD_POSITION_VEC
  39. } ohmd_float_value;
  40. typedef struct ohmd_context ohmd_context;
  41. typedef struct ohmd_device ohmd_device;
  42. OHMD_APIENTRY ohmd_context* ohmd_ctx_create();
  43. OHMD_APIENTRY void ohmd_ctx_destroy(ohmd_context* ctx);
  44. OHMD_APIENTRY const char* ohmd_ctx_get_error(ohmd_context* ctx);
  45. OHMD_APIENTRY void ohmd_ctx_update(ohmd_context* ctx);
  46. OHMD_APIENTRY int ohmd_ctx_probe(ohmd_context* ctx);
  47. OHMD_APIENTRY const char* ohmd_list_gets(ohmd_context* ctx, int index, ohmd_string_value type);
  48. OHMD_APIENTRY ohmd_device* ohmd_list_open_device(ohmd_context* ctx, int index);
  49. OHMD_APIENTRY int ohmd_device_getf(ohmd_device* device, ohmd_float_value type, float* out);
  50. #ifdef __cplusplus
  51. }
  52. #endif
  53. #endif