libdng.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #ifndef LIBDNG_LIBRARY_H
  2. #define LIBDNG_LIBRARY_H
  3. #include <limits.h>
  4. #include <time.h>
  5. #include <stdint.h>
  6. #include <stdbool.h>
  7. #define EXPORT __attribute__((__visibility__("default")))
  8. typedef struct {
  9. char *camera_make;
  10. char *camera_model;
  11. char *unique_camera_model;
  12. char *software;
  13. uint16_t orientation;
  14. struct tm datetime;
  15. // Raw image data
  16. uint16_t bayer_pattern_dimensions[2];
  17. float neutral[3];
  18. float analogbalance[3];
  19. uint8_t cfapattern[4];
  20. // Calibration data
  21. float color_matrix_1[9];
  22. float color_matrix_2[9];
  23. float forward_matrix_1[9];
  24. float forward_matrix_2[9];
  25. unsigned short illuminant_1;
  26. unsigned short illuminant_2;
  27. unsigned int hue_sat_map_dims[3];
  28. size_t tone_curve_length;
  29. float *tone_curve;
  30. float *hue_sat_map_data_1;
  31. float *hue_sat_map_data_2;
  32. uint16_t bit_depth;
  33. bool needs_repack;
  34. } libdng_info;
  35. #define LIBDNG_ORIENTATION_TOPLEFT 1
  36. #define LIBDNG_ORIENTATION_TOPRIGHT 2
  37. #define LIBDNG_ORIENTATION_BOTRIGHT 3
  38. #define LIBDNG_ORIENTATION_BOTLEFT 4
  39. #define LIBDNG_ORIENTATION_LEFTTOP 5
  40. #define LIBDNG_ORIENTATION_RIGHTTOP 6
  41. #define LIBDNG_ORIENTATION_RIGHTBOT 7
  42. #define LIBDNG_ORIENTATION_LEFTBOT 8
  43. EXPORT int
  44. libdng_init();
  45. EXPORT void
  46. libdng_new(libdng_info *dng);
  47. EXPORT void
  48. libdng_free(libdng_info *dng);
  49. EXPORT int
  50. libdng_set_mode_from_name(libdng_info *dng, const char *name);
  51. EXPORT int
  52. libdng_set_mode_from_pixfmt(libdng_info *dng, uint32_t pixfmt);
  53. EXPORT int
  54. libdng_set_make_model(libdng_info *dng, const char *make, const char *model);
  55. EXPORT int
  56. libdng_set_software(libdng_info *dng, const char *software);
  57. EXPORT int
  58. libdng_set_datetime(libdng_info *dng, struct tm time);
  59. EXPORT int
  60. libdng_set_datetime_now(libdng_info *dng);
  61. EXPORT int
  62. libdng_set_orientation(libdng_info *dng, uint16_t orientation);
  63. EXPORT int
  64. libdng_set_neutral(libdng_info *dng, float red, float green, float blue);
  65. EXPORT int
  66. libdng_set_analog_balance(libdng_info *dng, float red, float green, float blue);
  67. EXPORT int
  68. libdng_load_calibration_file(libdng_info *dng, const char *path);
  69. EXPORT int
  70. libdng_write(libdng_info *dng, const char *path, unsigned int width, unsigned int height, const uint8_t *data,
  71. size_t length);
  72. #endif //LIBDNG_LIBRARY_H