#ifndef LIBDNG_LIBRARY_H #define LIBDNG_LIBRARY_H #include #include #include #include #define EXPORT __attribute__((__visibility__("default"))) typedef struct { char *camera_make; char *camera_model; char *unique_camera_model; char *software; uint16_t orientation; struct tm datetime; uint16_t exposure_program; // Raw image data uint16_t bayer_pattern_dimensions[2]; float neutral[3]; float analogbalance[3]; uint8_t cfapattern[4]; uint32_t whitelevel; // Calibration data float color_matrix_1[9]; float color_matrix_2[9]; float forward_matrix_1[9]; float forward_matrix_2[9]; unsigned short illuminant_1; unsigned short illuminant_2; unsigned int hue_sat_map_dims[3]; size_t tone_curve_length; float *tone_curve; float *hue_sat_map_data_1; float *hue_sat_map_data_2; uint16_t bit_depth; bool needs_repack; } libdng_info; #define LIBDNG_ORIENTATION_TOPLEFT 1 #define LIBDNG_ORIENTATION_TOPRIGHT 2 #define LIBDNG_ORIENTATION_BOTRIGHT 3 #define LIBDNG_ORIENTATION_BOTLEFT 4 #define LIBDNG_ORIENTATION_LEFTTOP 5 #define LIBDNG_ORIENTATION_RIGHTTOP 6 #define LIBDNG_ORIENTATION_RIGHTBOT 7 #define LIBDNG_ORIENTATION_LEFTBOT 8 #define LIBDNG_EXPOSUREPROGRAM_UNDEFINED 0 #define LIBDNG_EXPOSUREPROGRAM_MANUAL 1 #define LIBDNG_EXPOSUREPROGRAM_NORMAL 2 #define LIBDNG_EXPOSUREPROGRAM_APERTURE_PRIORITY 3 #define LIBDNG_EXPOSUREPROGRAM_SHUTTER_PRIORITY 4 #define LIBDNG_EXPOSUREPROGRAM_CREATIVE 5 #define LIBDNG_EXPOSUREPROGRAM_ACTION 6 #define LIBDNG_EXPOSUREPROGRAM_PORTRAIT 7 #define LIBDNG_EXPOSUREPROGRAM_LANDSCAPE 8 EXPORT int libdng_init(); EXPORT void libdng_new(libdng_info *dng); EXPORT void libdng_free(libdng_info *dng); EXPORT int libdng_set_mode_from_name(libdng_info *dng, const char *name); EXPORT int libdng_set_mode_from_pixfmt(libdng_info *dng, uint32_t pixfmt); EXPORT int libdng_set_make_model(libdng_info *dng, const char *make, const char *model); EXPORT int libdng_set_software(libdng_info *dng, const char *software); EXPORT int libdng_set_datetime(libdng_info *dng, struct tm time); EXPORT int libdng_set_datetime_now(libdng_info *dng); EXPORT int libdng_set_orientation(libdng_info *dng, uint16_t orientation); EXPORT int libdng_set_neutral(libdng_info *dng, float red, float green, float blue); EXPORT int libdng_set_analog_balance(libdng_info *dng, float red, float green, float blue); EXPORT int libdng_load_calibration_file(libdng_info *dng, const char *path); EXPORT int libdng_set_exposure_program(libdng_info *dng, uint16_t mode); EXPORT int libdng_write(libdng_info *dng, const char *path, unsigned int width, unsigned int height, const uint8_t *data, size_t length); #endif //LIBDNG_LIBRARY_H