![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
#include <errno.h>
#include <glib.h>
#include <sqlite3.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <time.h>
#include <unistd.h>
#include <zlib.h>
#include <array>
#include <cassert>
#include <cmath>
#include <cstdlib>
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
#include <exiv2/exiv2.hpp>
#include <pugixml.hpp>
#include "common/colorlabels.h"
#include "common/darktable.h"
#include "common/debug.h"
#include "common/dng_opcode.h"
#include "common/image_cache.h"
#include "common/imageio.h"
#include "common/exif.h"
#include "common/imageio_jpeg.h"
#include "common/metadata.h"
#include "common/ratings.h"
#include "common/tags.h"
#include "common/iop_order.h"
#include "common/variables.h"
#include "common/utility.h"
#include "common/history.h"
#include "common/datetime.h"
#include "control/conf.h"
#include "control/control.h"
#include "develop/imageop.h"
#include "develop/blend.h"
#include "develop/masks.h"
Data Structures | |
class | Lock |
struct | history_entry_t |
struct | mask_entry_t |
Macros | |
#define | __STDC_FORMAT_MACROS |
#define | WIDEN(s) (s) |
#define | DT_XMP_EXIF_VERSION 5 |
#define | read_metadata_threadsafe(image) |
#define | FIND_XMP_TAG(key) dt_exif_read_xmp_tag(xmpData, &pos, key) |
#define | FIND_IPTC_TAG(key) dt_exif_read_iptc_tag(iptcData, &pos, key) |
#define | FIND_EXIF_TAG(key) _exif_read_exif_tag(exifData, &pos, key) |
#define | COMPRESS_THRESHOLD 100 |
#define | TO_BINARY(a) (a > 57 ? a - 97 + 10 : a - 48) |
#define | ERROR_CODE(a) (a) |
Typedefs | |
typedef struct history_entry_t | history_entry_t |
typedef struct mask_entry_t | mask_entry_t |
Functions | |
static const char * | _get_exiv2_type (const int type) |
static void | _get_xmp_tags (const char *prefix, GList **taglist) |
static int | _illu_to_temp (dt_dng_illuminant_t illu) |
void | dt_exif_set_exiv2_taglist () |
const GList * | dt_exif_get_exiv2_taglist () |
static const char * | _exif_get_exiv2_tag_type (const char *tagname) |
static void | _exif_import_tags (dt_image_t *img, Exiv2::XmpData::iterator &pos) |
static void | read_xmp_timestamps (Exiv2::XmpData &xmpData, dt_image_t *img, const int xmp_version) |
static void | dt_strlcpy_to_utf8 (char *dest, size_t dest_max, Exiv2::ExifData::const_iterator &pos, Exiv2::ExifData &exifData) |
static void | dt_remove_known_keys (Exiv2::XmpData &xmp) |
static void | dt_remove_exif_keys (Exiv2::ExifData &exif, const char *keys[], unsigned int n_keys) |
static void | dt_remove_xmp_keys (Exiv2::XmpData &xmp, const char *keys[], unsigned int n_keys) |
static bool | dt_exif_read_xmp_tag (Exiv2::XmpData &xmpData, Exiv2::XmpData::iterator *pos, string key) |
static bool | _exif_decode_xmp_data (dt_image_t *img, Exiv2::XmpData &xmpData, int version, bool exif_read) |
static bool | dt_exif_read_iptc_tag (Exiv2::IptcData &iptcData, Exiv2::IptcData::const_iterator *pos, string key) |
static bool | _exif_decode_iptc_data (dt_image_t *img, Exiv2::IptcData &iptcData) |
static bool | _exif_read_exif_tag (Exiv2::ExifData &exifData, Exiv2::ExifData::const_iterator *pos, string key) |
static bool | _check_usercrop (Exiv2::ExifData &exifData, dt_image_t *img) |
static gboolean | _check_dng_opcodes (Exiv2::ExifData &exifData, dt_image_t *img) |
void | dt_exif_img_check_additional_tags (dt_image_t *img, const char *filename) |
static void | _find_datetime_taken (Exiv2::ExifData &exifData, Exiv2::ExifData::const_iterator pos, char *exif_datetime_taken) |
static void | _find_exif_maker (Exiv2::ExifData &exifData, Exiv2::ExifData::const_iterator pos, char *maker, const size_t m_size) |
static void | _find_exif_model (Exiv2::ExifData &exifData, Exiv2::ExifData::const_iterator pos, char *model, const size_t m_size) |
static bool | _exif_decode_exif_data (dt_image_t *img, Exiv2::ExifData &exifData) |
int | dt_exif_read_from_blob (dt_image_t *img, uint8_t *blob, const int size) |
int | dt_exif_get_thumbnail (const char *path, uint8_t **buffer, size_t *size, char **mime_type, int *width, int *height, int min_width) |
int | dt_exif_read (dt_image_t *img, const char *path) |
int | dt_exif_write_blob (uint8_t *blob, uint32_t size, const char *path, const int compressed) |
static void | dt_remove_exif_geotag (Exiv2::ExifData &exifData) |
int | dt_exif_read_blob (uint8_t **buf, const char *path, const int32_t imgid, const int sRGB, const int out_width, const int out_height, const int dng_mode) |
char * | dt_exif_xmp_encode (const unsigned char *input, const int len, int *output_len) |
char * | dt_exif_xmp_encode_internal (const unsigned char *input, const int len, int *output_len, gboolean do_compress) |
unsigned char * | dt_exif_xmp_decode (const char *input, const int len, int *output_len) |
static void | print_history_entry (history_entry_t *entry) __attribute__((unused)) |
static void | free_history_entry (gpointer data) |
static GList * | read_history_v1 (const std::string &xmpPacket, const char *filename, const int superold) |
static GList * | read_history_v2 (Exiv2::XmpData &xmpData, const char *filename) |
void | free_mask_entry (gpointer data) |
static GHashTable * | read_masks (Exiv2::XmpData &xmpData, const char *filename, const int version) |
static GList * | read_masks_v3 (Exiv2::XmpData &xmpData, const char *filename, const int version) |
static void | add_mask_entry_to_db (int32_t imgid, mask_entry_t *entry) |
static void | add_non_clone_mask_entries_to_db (gpointer key, gpointer value, gpointer user_data) |
static void | add_mask_entries_to_db (int32_t imgid, GHashTable *mask_entries, int mask_id) |
int | _get_max_multi_priority (GList *history, const char *operation) |
static gboolean | _image_altered_deprecated (const int32_t imgid) |
int | dt_exif_xmp_read (dt_image_t *img, const char *filename, const int history_only) |
static void | dt_set_xmp_dt_history (Exiv2::XmpData &xmpData, const int32_t imgid, int history_end) |
static void | set_xmp_timestamps (Exiv2::XmpData &xmpData, const int32_t imgid) |
GTimeSpan | _convert_unix_to_gtimespan (const time_t unix) |
static void | dt_remove_xmp_exif_geotag (Exiv2::XmpData &xmpData) |
static void | dt_set_xmp_exif_geotag (Exiv2::XmpData &xmpData, double longitude, double latitude, double altitude) |
static void | dt_set_xmp_dt_metadata (Exiv2::XmpData &xmpData, const int32_t imgid, const gboolean export_flag) |
static void | _exif_xmp_read_data (Exiv2::XmpData &xmpData, const int32_t imgid) |
static void | _exif_xmp_read_data_export (Exiv2::XmpData &xmpData, const int32_t imgid, dt_export_metadata_t *metadata) |
char * | dt_exif_xmp_read_string (const int32_t imgid) |
static void | dt_remove_xmp_key (Exiv2::XmpData &xmp, const char *key) |
static void | _remove_xmp_keys (Exiv2::XmpData &xmpData, const char *key) |
static void | dt_remove_exif_key (Exiv2::ExifData &exif, const char *key) |
static void | dt_remove_iptc_key (Exiv2::IptcData &iptc, const char *key) |
int | dt_exif_xmp_attach_export (const int32_t imgid, const char *filename, void *metadata) |
int | dt_exif_xmp_write (const int32_t imgid, const char *filename) |
dt_colorspaces_color_profile_type_t | dt_exif_get_color_space (const uint8_t *data, size_t size) |
void | dt_exif_get_datetime_taken (const uint8_t *data, size_t size, char *datetime_taken) |
static void | dt_exif_log_handler (int log_level, const char *message) |
void | dt_exif_init () |
void | dt_exif_cleanup () |
Variables | |
static GList * | exiv2_taglist = NULL |
const char * | dt_xmp_keys [] |
static const guint | dt_xmp_keys_n = G_N_ELEMENTS(dt_xmp_keys) |
#define __STDC_FORMAT_MACROS |
#define COMPRESS_THRESHOLD 100 |
#define DT_XMP_EXIF_VERSION 5 |
#define ERROR_CODE | ( | a | ) | (a) |
#define FIND_EXIF_TAG | ( | key | ) | _exif_read_exif_tag(exifData, &pos, key) |
#define FIND_IPTC_TAG | ( | key | ) | dt_exif_read_iptc_tag(iptcData, &pos, key) |
#define FIND_XMP_TAG | ( | key | ) | dt_exif_read_xmp_tag(xmpData, &pos, key) |
#define read_metadata_threadsafe | ( | image | ) |
#define TO_BINARY | ( | a | ) | (a > 57 ? a - 97 + 10 : a - 48) |
#define WIDEN | ( | s | ) | (s) |
typedef struct history_entry_t history_entry_t |
typedef struct mask_entry_t mask_entry_t |
|
static |
References DT_DEBUG_IMAGEIO, dt_dng_opcode_process_opcode_list_2(), dt_vprint(), FALSE, and TRUE.
Referenced by _exif_decode_exif_data(), and dt_exif_img_check_additional_tags().
|
static |
References FALSE, TRUE, and dt_image_t::usercrop.
Referenced by _exif_decode_exif_data(), and dt_exif_img_check_additional_tags().
GTimeSpan _convert_unix_to_gtimespan | ( | const time_t | unix | ) |
References dt_datetime_gdatetime_to_gtimespan().
Referenced by read_xmp_timestamps().
|
static |
References _check_dng_opcodes(), _check_usercrop(), _find_datetime_taken(), _find_exif_maker(), _find_exif_model(), _illu_to_temp(), dt_image_t::colorspace, dt_image_t::d65_color_matrix, darktable, dt_datetime_exif_to_img(), DT_DATETIME_LENGTH, DT_DEBUG_IMAGEIO, dt_fast_hypotf(), DT_IMAGE_COLORSPACE_ADOBE_RGB, DT_IMAGE_COLORSPACE_SRGB, DT_IMAGE_HAS_ADDITIONAL_DNG_TAGS, dt_image_is_hdr(), dt_image_is_ldr(), DT_IMAGE_MONOCHROME, dt_image_orientation_to_flip_bits(), dt_image_refresh_makermodel(), dt_image_set_xmp_rating(), dt_imageio_set_hdr_tag(), dt_imageio_update_monochrome_workflow_tag(), DT_LS_CloudyWeather, DT_LS_CoolWhiteFluorescent, DT_LS_D50, DT_LS_D55, DT_LS_D65, DT_LS_D75, DT_LS_Daylight, DT_LS_DaylightFluorescent, DT_LS_DayWhiteFluorescent, DT_LS_FineWeather, DT_LS_Flash, DT_LS_Fluorescent, DT_LS_ISOStudioTungsten, DT_LS_Shade, DT_LS_StandardLightA, DT_LS_StandardLightB, DT_LS_StandardLightC, DT_LS_Tungsten, DT_LS_Unknown, DT_LS_WarmWhiteFluorescent, DT_LS_WhiteFluorescent, dt_metadata_set_import(), dt_strlcpy_to_utf8(), dt_tag_attach(), dt_tag_new(), dt_util_gps_elevation_to_number(), dt_util_gps_rationale_to_number(), dt_image_geoloc_t::elevation, dt_image_t::exif_aperture, dt_image_t::exif_crop, dt_image_t::exif_exposure, dt_image_t::exif_exposure_bias, dt_image_t::exif_focal_length, dt_image_t::exif_focus_distance, dt_image_t::exif_inited, dt_image_t::exif_iso, dt_image_t::exif_lens, dt_image_t::exif_maker, dt_image_t::exif_model, FALSE, dt_image_t::filename, FIND_EXIF_TAG, dt_image_t::flags, dt_image_t::geoloc, dt_image_t::id, dt_image_geoloc_t::latitude, dt_image_geoloc_t::longitude, mat3mul(), dt_image_t::orientation, sign(), TRUE, and darktable_t::unmuted.
Referenced by dt_exif_read(), and dt_exif_read_from_blob().
|
static |
References darktable, dt_datetime_exif_to_img(), DT_DEBUG_CONTROL_SIGNAL_RAISE, dt_metadata_set_import(), DT_SIGNAL_TAG_CHANGED, dt_tag_attach(), dt_tag_new(), dt_util_foo_to_utf8(), FALSE, dt_image_t::filename, FIND_IPTC_TAG, dt_image_t::id, key, darktable_t::signals, and TRUE.
Referenced by dt_exif_read().
|
static |
References _exif_import_tags(), dt_colorlabels_remove_labels(), dt_colorlabels_set_label(), dt_conf_get_bool(), dt_datetime_exif_to_img(), dt_image_get_xmp_mode(), dt_image_set_xmp_rating(), dt_metadata_clear(), dt_metadata_get_key(), DT_METADATA_NUMBER, dt_metadata_set_import(), dt_tag_set_tags(), dt_util_gps_elevation_to_number(), dt_util_gps_string_to_number(), dt_image_geoloc_t::elevation, dt_image_t::exif_lens, FALSE, dt_image_t::filename, FIND_XMP_TAG, dt_image_t::geoloc, dt_image_t::id, key, dt_image_geoloc_t::latitude, dt_image_geoloc_t::longitude, sign(), and TRUE.
Referenced by dt_exif_read(), and dt_exif_xmp_read().
|
static |
References exiv2_taglist.
Referenced by dt_exif_xmp_attach_export().
|
static |
References darktable, darktable_t::db, dt_database_get(), DT_DEBUG_SQLITE3_BIND_INT, DT_DEBUG_SQLITE3_BIND_TEXT, DT_DEBUG_SQLITE3_PREPARE_V2, and dt_image_t::id.
Referenced by _exif_decode_xmp_data().
|
static |
References key.
Referenced by dt_exif_xmp_attach_export().
|
static |
References dt_history_hash_values_t::auto_apply, dt_history_hash_values_t::auto_apply_len, dt_history_hash_values_t::basic, dt_history_hash_values_t::basic_len, dt_history_hash_values_t::current, dt_history_hash_values_t::current_len, darktable, darktable_t::db, dt_database_get(), dt_datetime_gtimespan_to_exif(), DT_DATETIME_LENGTH, DT_DEBUG_SQLITE3_BIND_INT, DT_DEBUG_SQLITE3_PREPARE_V2, dt_exif_xmp_encode(), dt_history_hash_read(), DT_IMAGE_AUTO_PRESETS_APPLIED, dt_image_get_xmp_rating_from_flags(), DT_IOP_ORDER_CUSTOM, dt_ioppr_get_iop_order_list(), dt_ioppr_get_iop_order_version(), dt_ioppr_has_multiple_instances(), dt_ioppr_serialize_text_iop_order_list(), dt_set_xmp_dt_history(), dt_set_xmp_dt_metadata(), dt_set_xmp_exif_geotag(), dt_tag_get_hierarchical(), dt_tag_get_list(), DT_XMP_EXIF_VERSION, FALSE, set_xmp_timestamps(), and TRUE.
Referenced by dt_exif_xmp_read_string(), and dt_exif_xmp_write().
|
static |
References darktable, darktable_t::db, dt_database_get(), dt_datetime_gtimespan_to_exif(), DT_DATETIME_LENGTH, DT_DEBUG_SQLITE3_BIND_INT, DT_DEBUG_SQLITE3_PREPARE_V2, DT_IMAGE_AUTO_PRESETS_APPLIED, dt_image_get_xmp_rating_from_flags(), DT_IOP_ORDER_CUSTOM, dt_ioppr_get_iop_order_list(), dt_ioppr_get_iop_order_version(), dt_ioppr_has_multiple_instances(), dt_ioppr_serialize_text_iop_order_list(), DT_META_DT_HISTORY, DT_META_EXIF, DT_META_GEOTAG, DT_META_HIERARCHICAL_TAG, DT_META_METADATA, DT_META_TAG, dt_remove_xmp_exif_geotag(), dt_set_xmp_dt_history(), dt_set_xmp_dt_metadata(), dt_set_xmp_exif_geotag(), dt_tag_get_hierarchical_export(), dt_tag_get_list_export(), DT_XMP_EXIF_VERSION, dt_export_metadata_t::flags, and TRUE.
Referenced by dt_exif_xmp_attach_export().
|
static |
References dt_datetime_add_subsec_to_exif(), DT_DATETIME_EXIF_LENGTH, DT_DATETIME_LENGTH, dt_strlcpy_to_utf8(), and FIND_EXIF_TAG.
Referenced by _exif_decode_exif_data(), and dt_exif_get_datetime_taken().
|
static |
References dt_strlcpy_to_utf8(), FIND_EXIF_TAG, and maker.
Referenced by _exif_decode_exif_data().
|
static |
References dt_strlcpy_to_utf8(), FIND_EXIF_TAG, and model.
Referenced by _exif_decode_exif_data().
|
static |
References type.
Referenced by _get_xmp_tags(), and dt_exif_set_exiv2_taglist().
int _get_max_multi_priority | ( | GList * | history, |
const char * | operation | ||
) |
References MAX, history_entry_t::multi_priority, and history_entry_t::operation.
|
static |
References _get_exiv2_type(), and dt_util_dstrcat().
Referenced by dt_exif_set_exiv2_taglist().
|
static |
References DT_LS_CloudyWeather, DT_LS_CoolWhiteFluorescent, DT_LS_D50, DT_LS_D55, DT_LS_D65, DT_LS_D75, DT_LS_Daylight, DT_LS_DaylightFluorescent, DT_LS_DayWhiteFluorescent, DT_LS_FineWeather, DT_LS_Flash, DT_LS_Fluorescent, DT_LS_ISOStudioTungsten, DT_LS_Shade, DT_LS_StandardLightA, DT_LS_StandardLightB, DT_LS_StandardLightC, DT_LS_Tungsten, DT_LS_WarmWhiteFluorescent, and DT_LS_WhiteFluorescent.
Referenced by _exif_decode_exif_data().
|
static |
References darktable, darktable_t::db, dt_database_get(), DT_DEBUG_SQLITE3_BIND_INT, and DT_DEBUG_SQLITE3_PREPARE_V2.
Referenced by dt_exif_xmp_read().
|
static |
References key.
Referenced by dt_exif_xmp_attach_export().
|
static |
References add_mask_entries_to_db(), add_mask_entry_to_db(), DT_MASKS_GROUP, mask_id, mask_entry_t::mask_nb, mask_entry_t::mask_points, mask_entry_t::mask_points_len, and mask_entry_t::mask_type.
Referenced by add_mask_entries_to_db(), and dt_exif_xmp_read().
|
static |
References mask_entry_t::already_added, darktable, darktable_t::db, dt_database_get(), DT_DEBUG_SQLITE3_BIND_BLOB, DT_DEBUG_SQLITE3_BIND_INT, DT_DEBUG_SQLITE3_BIND_TEXT, DT_DEBUG_SQLITE3_PREPARE_V2, mask_entry_t::mask_id, mask_entry_t::mask_name, mask_entry_t::mask_nb, mask_entry_t::mask_num, mask_entry_t::mask_points, mask_entry_t::mask_points_len, mask_entry_t::mask_src, mask_entry_t::mask_src_len, mask_entry_t::mask_type, mask_entry_t::mask_version, TRUE, and mask_entry_t::version.
Referenced by add_mask_entries_to_db(), add_non_clone_mask_entries_to_db(), and dt_exif_xmp_read().
|
static |
References add_mask_entry_to_db(), DT_MASKS_CLONE, DT_MASKS_NON_CLONE, and mask_entry_t::mask_type.
Referenced by dt_exif_xmp_read().
void dt_exif_cleanup | ( | ) |
Referenced by dt_cleanup().
dt_colorspaces_color_profile_type_t dt_exif_get_color_space | ( | const uint8_t * | data, |
size_t | size | ||
) |
look for color space hints in data and tell the caller if it's sRGB, AdobeRGB or something else. used for mipmaps
References DT_COLORSPACE_ADOBERGB, DT_COLORSPACE_DISPLAY, DT_COLORSPACE_SRGB, and size.
Referenced by dt_imageio_jpeg_read_color_space().
void dt_exif_get_datetime_taken | ( | const uint8_t * | data, |
size_t | size, | ||
char * | datetime_taken | ||
) |
look for datetime_taken in data. used for gphoto downloads
References _find_datetime_taken(), read_metadata_threadsafe, and size.
const GList * dt_exif_get_exiv2_taglist | ( | ) |
get the list of available tags from Exvi2 must not be freed
References dt_exif_set_exiv2_taglist(), and exiv2_taglist.
Referenced by dt_lib_export_metadata_configuration_dialog().
int dt_exif_get_thumbnail | ( | const char * | path, |
uint8_t ** | buffer, | ||
size_t * | size, | ||
char ** | mime_type, | ||
int * | width, | ||
int * | height, | ||
int | min_width | ||
) |
Get the largest possible thumbnail from the image
References DT_DEBUG_LIGHTTABLE, dt_print(), height, MAX, read_metadata_threadsafe, size, WIDEN, and width.
Referenced by dt_imageio_large_thumbnail().
void dt_exif_img_check_additional_tags | ( | dt_image_t * | img, |
const char * | filename | ||
) |
Reads exif tags that are not cached in the database
References _check_dng_opcodes(), _check_usercrop(), read_metadata_threadsafe, and WIDEN.
Referenced by dt_imageio_open_rawspeed().
void dt_exif_init | ( | ) |
|
static |
References DT_DEBUG_CAMERA_SUPPORT, and dt_print().
Referenced by dt_exif_init().
int dt_exif_read | ( | dt_image_t * | img, |
const char * | path | ||
) |
read the metadata of an image. XMP data trumps IPTC data trumps EXIF data
References _exif_decode_exif_data(), _exif_decode_iptc_data(), _exif_decode_xmp_data(), dt_datetime_unix_to_img(), dt_image_t::exif_inited, dt_image_t::height, read_metadata_threadsafe, WIDEN, and dt_image_t::width.
Referenced by _image_import_internal(), _import_copy_file(), _set_test_path(), dt_control_refresh_exif_run(), dt_imageio_open_j2k(), dt_imageio_open_jpeg(), dt_imageio_open_png(), dt_imageio_open_rawspeed(), dt_imageio_open_tiff(), and update_preview_cb().
int dt_exif_read_blob | ( | uint8_t ** | blob, |
const char * | path, | ||
const int32_t | imgid, | ||
const int | sRGB, | ||
const int | out_width, | ||
const int | out_height, | ||
const int | dng_mode | ||
) |
write exif to blob, return length in bytes. blob will be allocated by the function. sRGB should be true if sRGB colorspace is used as output.
References darktable, darktable_package_string, dt_conf_get_int(), DT_DATETIME_EXIF_LENGTH, dt_datetime_img_to_exif(), DT_DATETIME_LENGTH, dt_datetime_now_to_exif(), dt_image_cache_get(), dt_image_cache_read_release(), dt_metadata_get(), dt_remove_exif_geotag(), dt_remove_exif_keys(), dt_image_geoloc_t::elevation, dt_image_t::geoloc, darktable_t::image_cache, dt_image_geoloc_t::latitude, dt_image_geoloc_t::longitude, read_metadata_threadsafe, and WIDEN.
Referenced by dt_control_merge_hdr_job_run(), and dt_imageio_export_with_flags().
int dt_exif_read_from_blob | ( | dt_image_t * | img, |
uint8_t * | blob, | ||
const int | size | ||
) |
References _exif_decode_exif_data(), dt_image_t::filename, and size.
Referenced by dt_imageio_open_exr().
|
static |
References key.
|
static |
References key.
void dt_exif_set_exiv2_taglist | ( | ) |
set the list of available tags from Exvi2
References _get_exiv2_type(), _get_xmp_tags(), dt_util_dstrcat(), and exiv2_taglist.
Referenced by dt_exif_get_exiv2_taglist(), and dt_init().
int dt_exif_write_blob | ( | uint8_t * | blob, |
uint32_t | size, | ||
const char * | path, | ||
const int | compressed | ||
) |
write blob to file exif. merges with existing exif information.
References dt_remove_exif_keys(), key, read_metadata_threadsafe, size, and WIDEN.
Referenced by dt_imageio_write_dng(), write_image(), write_image(), write_image(), and write_image().
int dt_exif_xmp_attach_export | ( | const int32_t | imgid, |
const char * | filename, | ||
void * | metadata | ||
) |
write xmp packet inside an image.
References _exif_get_exiv2_tag_type(), _exif_read_exif_tag(), _exif_xmp_read_data_export(), _remove_xmp_keys(), dt_image_full_path(), dt_image_path_append_version(), DT_META_EXIF, DT_META_GEOTAG, dt_remove_exif_geotag(), dt_remove_exif_key(), dt_remove_iptc_key(), dt_remove_known_keys(), dt_remove_xmp_key(), dt_remove_xmp_keys(), dt_variables_expand(), dt_variables_params_destroy(), dt_variables_params_init(), dt_variables_set_tags_flags(), FALSE, key, m, PATH_MAX, read_metadata_threadsafe, TRUE, type, and WIDEN.
Referenced by dt_imageio_export_with_flags().
unsigned char * dt_exif_xmp_decode | ( | const char * | input, |
const int | len, | ||
int * | output_len | ||
) |
References factor, and TO_BINARY.
Referenced by add_preset(), dt_exif_xmp_read(), dt_presets_import_from_file(), dt_style_plugin_save(), init_presets(), read_history_v1(), read_history_v2(), read_masks(), and read_masks_v3().
char * dt_exif_xmp_encode | ( | const unsigned char * | input, |
const int | len, | ||
int * | output_len | ||
) |
encode / decode op params
References COMPRESS_THRESHOLD, dt_conf_get_string(), dt_exif_xmp_encode_internal(), FALSE, and TRUE.
Referenced by _exif_xmp_read_data(), _init_presets(), dt_preset_encode(), dt_set_xmp_dt_history(), and dt_style_encode().
char * dt_exif_xmp_encode_internal | ( | const unsigned char * | input, |
const int | len, | ||
int * | output_len, | ||
gboolean | do_compress | ||
) |
Referenced by dt_exif_xmp_encode(), encode_colorchecker(), and encode_tonecurve().
int dt_exif_xmp_read | ( | dt_image_t * | img, |
const char * | filename, | ||
const int | history_only | ||
) |
read xmp sidecar file.
References _exif_decode_xmp_data(), _image_altered_deprecated(), add_mask_entries_to_db(), add_mask_entry_to_db(), add_non_clone_mask_entries_to_db(), dt_history_hash_values_t::auto_apply, dt_history_hash_values_t::auto_apply_len, dt_history_hash_values_t::basic, dt_history_hash_values_t::basic_len, history_entry_t::blendop_params, history_entry_t::blendop_params_len, history_entry_t::blendop_version, dt_history_hash_values_t::current, dt_history_hash_values_t::current_len, darktable, darktable_t::db, dt_database_get(), dt_database_release_transaction, dt_database_rollback_transaction(), dt_database_start_transaction, DT_DEBUG_SQLITE3_BIND_BLOB, DT_DEBUG_SQLITE3_BIND_INT, DT_DEBUG_SQLITE3_BIND_TEXT, DT_DEBUG_SQLITE3_PREPARE_V2, dt_exif_xmp_decode(), DT_HISTORY_HASH_BASIC, DT_HISTORY_HASH_CURRENT, dt_history_hash_write(), dt_history_hash_write_from_history(), DT_IMAGE_AUTO_PRESETS_APPLIED, DT_IMAGE_NO_LEGACY_PRESETS, DT_IOP_ORDER_LEGACY, DT_IOP_ORDER_V30, dt_ioppr_deserialize_text_iop_order_list(), dt_ioppr_get_iop_order_link(), dt_ioppr_get_iop_order_list_version(), dt_ioppr_write_iop_order_list(), dt_sort_iop_list_by_order_f(), history_entry_t::enabled, FALSE, dt_image_t::flags, free_history_entry(), free_mask_entry(), dt_image_t::id, dt_iop_order_entry_t::instance, history_entry_t::iop_order, dt_iop_order_entry_t::iop_order_f, dt_image_raw_parameters_t::legacy, dt_image_t::legacy_flip, MIN, history_entry_t::modversion, history_entry_t::multi_name, history_entry_t::multi_priority, history_entry_t::num, dt_iop_order_entry_t::o, history_entry_t::operation, dt_iop_order_entry_t::operation, history_entry_t::params, history_entry_t::params_len, read_history_v1(), read_history_v2(), read_masks(), read_masks_v3(), read_metadata_threadsafe, read_xmp_timestamps(), TRUE, dt_image_raw_parameters_t::user_flip, and WIDEN.
Referenced by _image_import_internal(), dt_history_load_and_apply(), dt_image_read_duplicates(), and main().
char * dt_exif_xmp_read_string | ( | const int32_t | imgid | ) |
get the xmp blob for imgid.
References _exif_xmp_read_data(), dt_image_full_path(), dt_image_path_append_version(), dt_remove_known_keys(), ERROR_CODE, FALSE, PATH_MAX, and WIDEN.
Referenced by write_image(), and write_image().
int dt_exif_xmp_write | ( | const int32_t | imgid, |
const char * | filename | ||
) |
write xmp sidecar file.
References _exif_xmp_read_data(), dt_control_log(), dt_image_full_path(), dt_read_file(), dt_remove_known_keys(), ERROR_CODE, PATH_MAX, TRUE, and WIDEN.
Referenced by dt_control_write_sidecar_files_job_run(), dt_image_write_sidecar_file(), and write_image().
|
static |
References dt_remove_exif_keys().
Referenced by dt_exif_read_blob(), and dt_exif_xmp_attach_export().
|
static |
References key.
Referenced by dt_exif_xmp_attach_export().
|
static |
Referenced by dt_exif_read_blob(), dt_exif_write_blob(), and dt_remove_exif_geotag().
|
static |
References key.
Referenced by dt_exif_xmp_attach_export().
|
static |
References dt_xmp_keys, dt_xmp_keys_n, and key.
Referenced by dt_exif_xmp_attach_export(), dt_exif_xmp_read_string(), and dt_exif_xmp_write().
|
static |
References dt_remove_xmp_keys().
Referenced by _exif_xmp_read_data_export(), and dt_set_xmp_exif_geotag().
|
static |
References key.
Referenced by dt_exif_xmp_attach_export().
|
static |
Referenced by dt_exif_xmp_attach_export(), dt_remove_xmp_exif_geotag(), and set_xmp_timestamps().
|
static |
References darktable, darktable_t::db, dt_database_get(), DT_DEBUG_SQLITE3_BIND_INT, DT_DEBUG_SQLITE3_PREPARE_V2, dt_exif_xmp_encode(), key, mask_id, mask_name, and MIN.
Referenced by _exif_xmp_read_data(), and _exif_xmp_read_data_export().
|
static |
References darktable, darktable_t::db, dt_conf_get_int(), dt_database_get(), DT_DEBUG_SQLITE3_BIND_INT, DT_DEBUG_SQLITE3_PREPARE_V2, DT_METADATA_FLAG_HIDDEN, DT_METADATA_FLAG_PRIVATE, dt_metadata_get_key(), dt_metadata_get_name(), dt_metadata_get_type(), DT_METADATA_TYPE_INTERNAL, dt_util_dstrcat(), flag, and name.
Referenced by _exif_xmp_read_data(), and _exif_xmp_read_data_export().
|
static |
References double(), and dt_remove_xmp_exif_geotag().
Referenced by _exif_xmp_read_data(), and _exif_xmp_read_data_export().
|
static |
Referenced by _exif_decode_exif_data(), _find_datetime_taken(), _find_exif_maker(), and _find_exif_model().
|
static |
References history_entry_t::blendop_params, history_entry_t::multi_name, history_entry_t::operation, and history_entry_t::params.
Referenced by dt_exif_xmp_read(), and read_history_v2().
void free_mask_entry | ( | gpointer | data | ) |
References mask_entry_t::mask_name, mask_entry_t::mask_points, and mask_entry_t::mask_src.
Referenced by dt_exif_xmp_read(), read_masks(), and read_masks_v3().
|
static |
|
static |
References history_entry_t::blendop_params, history_entry_t::blendop_params_len, history_entry_t::blendop_version, dt_exif_xmp_decode(), history_entry_t::enabled, history_entry_t::iop_order, history_entry_t::modversion, history_entry_t::multi_name, history_entry_t::multi_priority, history_entry_t::operation, history_entry_t::params, and history_entry_t::params_len.
Referenced by dt_exif_xmp_read().
|
static |
References history_entry_t::blendop_params, history_entry_t::blendop_params_len, history_entry_t::blendop_version, dt_exif_xmp_decode(), history_entry_t::enabled, free_history_entry(), history_entry_t::have_modversion, history_entry_t::have_operation, history_entry_t::have_params, history_entry_t::iop_order, key, history_entry_t::modversion, history_entry_t::multi_name, history_entry_t::multi_priority, history_entry_t::num, history_entry_t::operation, history_entry_t::params, history_entry_t::params_len, and TRUE.
Referenced by dt_exif_xmp_read().
|
static |
References dt_exif_xmp_decode(), free_mask_entry(), mask_entry_t::mask_id, mask_id, mask_entry_t::mask_name, mask_name, mask_entry_t::mask_nb, mask_entry_t::mask_points, mask_entry_t::mask_points_len, mask_entry_t::mask_src, mask_entry_t::mask_src_len, mask_entry_t::mask_type, mask_entry_t::mask_version, and mask_entry_t::version.
Referenced by dt_exif_xmp_read().
|
static |
References dt_exif_xmp_decode(), free_mask_entry(), key, mask_entry_t::mask_id, mask_entry_t::mask_name, mask_entry_t::mask_nb, mask_entry_t::mask_num, mask_entry_t::mask_points, mask_entry_t::mask_points_len, mask_entry_t::mask_src, mask_entry_t::mask_src_len, mask_entry_t::mask_type, mask_entry_t::mask_version, and mask_entry_t::version.
Referenced by dt_exif_xmp_read().
|
static |
References _convert_unix_to_gtimespan(), dt_image_t::change_timestamp, dt_image_t::export_timestamp, and dt_image_t::print_timestamp.
Referenced by dt_exif_xmp_read().
|
static |
References darktable, darktable_t::db, dt_database_get(), DT_DEBUG_SQLITE3_BIND_INT, DT_DEBUG_SQLITE3_PREPARE_V2, and dt_remove_xmp_keys().
Referenced by _exif_xmp_read_data().
const char* dt_xmp_keys[] |
Referenced by dt_remove_known_keys().
|
static |
Referenced by dt_remove_known_keys().
|
static |
Referenced by _exif_get_exiv2_tag_type(), dt_exif_get_exiv2_taglist(), and dt_exif_set_exiv2_taglist().