Ansel 0.0
A darktable fork - bloat + design vision
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
image.c File Reference
#include "common/image.h"
#include "common/collection.h"
#include "common/darktable.h"
#include "common/debug.h"
#include "common/exif.h"
#include "common/file_location.h"
#include "common/grouping.h"
#include "common/history.h"
#include "common/history_snapshot.h"
#include "common/image_cache.h"
#include "common/imageio.h"
#include "common/imageio_rawspeed.h"
#include "common/imageio_libraw.h"
#include "common/mipmap_cache.h"
#include "common/ratings.h"
#include "common/tags.h"
#include "common/undo.h"
#include "common/selection.h"
#include "common/datetime.h"
#include "control/conf.h"
#include "control/control.h"
#include "control/jobs.h"
#include "develop/lightroom.h"
#include "win/filepath.h"
#include <assert.h>
#include <ctype.h>
#include <math.h>
#include <sqlite3.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <glob.h>
#include <glib/gstdio.h>
+ Include dependency graph for common/image.c:

Data Structures

struct  dt_undo_monochrome_t
 
struct  dt_undo_datetime_t
 
struct  dt_undo_geotag_t
 
struct  dt_undo_duplicate_t
 
struct  _datetime_t
 

Typedefs

typedef struct dt_undo_monochrome_t dt_undo_monochrome_t
 
typedef struct dt_undo_datetime_t dt_undo_datetime_t
 
typedef struct dt_undo_geotag_t dt_undo_geotag_t
 
typedef struct dt_undo_duplicate_t dt_undo_duplicate_t
 
typedef struct _datetime_t _datetime_t
 

Functions

static void _pop_undo_execute (const int32_t imgid, const gboolean before, const gboolean after)
 
static int32_t _image_duplicate_with_version (const int32_t imgid, const int32_t newversion, const gboolean undo)
 
static void _pop_undo (gpointer user_data, const dt_undo_type_t type, dt_undo_data_t data, const dt_undo_action_t action, GList **imgs)
 
static void _image_local_copy_full_path (const int32_t imgid, char *pathname, size_t pathname_len)
 
int dt_image_is_ldr (const dt_image_t *img)
 
int dt_image_is_hdr (const dt_image_t *img)
 
int dt_image_is_raw (const dt_image_t *img)
 
gboolean dt_image_is_monochrome (const dt_image_t *img)
 
static void _image_set_monochrome_flag (const int32_t imgid, gboolean monochrome, gboolean undo_on)
 
void dt_image_set_monochrome_flag (const int32_t imgid, gboolean monochrome)
 
gboolean dt_image_is_matrix_correction_supported (const dt_image_t *img)
 
gboolean dt_image_is_rawprepare_supported (const dt_image_t *img)
 
gboolean dt_image_use_monochrome_workflow (const dt_image_t *img)
 
int dt_image_monochrome_flags (const dt_image_t *img)
 
const char * dt_image_film_roll_name (const char *path)
 
void dt_image_film_roll_directory (const dt_image_t *img, char *pathname, size_t pathname_len)
 
void dt_image_film_roll (const dt_image_t *img, char *pathname, size_t pathname_len)
 
gboolean dt_image_get_xmp_mode ()
 
gboolean dt_image_safe_remove (const int32_t imgid)
 
void dt_image_full_path (const int32_t imgid, char *pathname, size_t pathname_len, gboolean *from_cache, const char *calling_func)
 Get the full path of an image out of the database. TODO: This gets called too many times and the output should be cached. TODO: Document where the pathname_len is being set.
 
void dt_image_path_append_version_no_db (int version, char *pathname, size_t pathname_len)
 
void dt_image_path_append_version (const int32_t imgid, char *pathname, size_t pathname_len)
 
void dt_image_print_exif (const dt_image_t *img, char *line, size_t line_len)
 
int dt_image_get_xmp_rating_from_flags (const int flags)
 
int dt_image_get_xmp_rating (const dt_image_t *img)
 
void dt_image_set_xmp_rating (dt_image_t *img, const int rating)
 
void dt_image_get_location (const int32_t imgid, dt_image_geoloc_t *geoloc)
 
static void _set_location (const int32_t imgid, const dt_image_geoloc_t *geoloc)
 
static void _set_datetime (const int32_t imgid, const char *datetime)
 
static void _geotag_undo_data_free (gpointer data)
 
static void _image_set_location (GList *imgs, const dt_image_geoloc_t *geoloc, GList **undo, const gboolean undo_on)
 
void dt_image_set_locations (const GList *imgs, const dt_image_geoloc_t *geoloc, const gboolean undo_on)
 
void dt_image_set_location (const int32_t imgid, const dt_image_geoloc_t *geoloc, const gboolean undo_on, const gboolean group_on)
 
static void _image_set_images_locations (const GList *img, const GArray *gloc, GList **undo, const gboolean undo_on)
 
void dt_image_set_images_locations (const GList *imgs, const GArray *gloc, const gboolean undo_on)
 
void dt_image_set_flip (const int32_t imgid, const dt_image_orientation_t orientation)
 
dt_image_orientation_t dt_image_get_orientation (const int32_t imgid)
 
void dt_image_flip (const int32_t imgid, const int32_t cw)
 
int32_t dt_image_duplicate (const int32_t imgid)
 
static int32_t _image_duplicate_with_version_ext (const int32_t imgid, const int32_t newversion)
 
int32_t dt_image_duplicate_with_version (const int32_t imgid, const int32_t newversion)
 
void dt_image_remove (const int32_t imgid)
 
uint32_t dt_image_altered (const int32_t imgid)
 
static int _valid_glob_match (const char *const name, size_t offset)
 
GList * dt_image_find_xmps (const char *filename)
 
int dt_image_read_duplicates (const uint32_t id, const char *filename, const gboolean clear_selection)
 
static int32_t _image_import_internal (const int32_t film_id, const char *filename, gboolean lua_locking, gboolean raise_signals)
 
int32_t dt_image_get_id_full_path (const gchar *filename)
 
int32_t dt_image_get_id (int32_t film_id, const gchar *filename)
 
int32_t dt_image_import (const int32_t film_id, const char *filename, gboolean raise_signals)
 
int32_t dt_image_import_lua (const int32_t film_id, const char *filename)
 
void dt_image_init (dt_image_t *img)
 
void dt_image_refresh_makermodel (dt_image_t *img)
 
int32_t dt_image_rename (const int32_t imgid, const int32_t filmid, const gchar *newname)
 
int32_t dt_image_move (const int32_t imgid, const int32_t filmid)
 
int32_t dt_image_copy_rename (const int32_t imgid, const int32_t filmid, const gchar *newname)
 
int32_t dt_image_copy (const int32_t imgid, const int32_t filmid)
 
int dt_image_local_copy_set (const int32_t imgid)
 
static int _nb_other_local_copy_for (const int32_t imgid)
 
int dt_image_local_copy_reset (const int32_t imgid)
 
int dt_image_write_sidecar_file (const int32_t imgid)
 
void dt_image_synch_xmps (const GList *img)
 
void dt_image_synch_xmp (const int selected)
 
void dt_image_synch_all_xmp (const gchar *pathname)
 
void dt_image_local_copy_synch ()
 
void dt_image_get_datetime (const int32_t imgid, char *datetime)
 
static void _datetime_undo_data_free (gpointer data)
 
static void _image_set_datetimes (const GList *img, const GArray *dtime, GList **undo, const gboolean undo_on)
 
void dt_image_set_datetimes (const GList *imgs, const GArray *dtime, const gboolean undo_on)
 
static void _image_set_datetime (const GList *img, const char *datetime, GList **undo, const gboolean undo_on)
 
void dt_image_set_datetime (const GList *imgs, const char *datetime, const gboolean undo_on)
 
char * dt_image_get_audio_path_from_path (const char *image_path)
 
char * dt_image_get_audio_path (const int32_t imgid)
 
char * dt_image_get_text_path_from_path (const char *image_path)
 
char * dt_image_get_text_path (const int32_t imgid)
 
float dt_image_get_exposure_bias (const struct dt_image_t *image_storage)
 
char * dt_image_camera_missing_sample_message (const struct dt_image_t *img, gboolean logmsg)
 
void dt_image_check_camera_missing_sample (const struct dt_image_t *img)
 
void dt_get_dirname_from_imgid (gchar *dir, const int32_t imgid)
 

Typedef Documentation

◆ _datetime_t

typedef struct _datetime_t _datetime_t

◆ dt_undo_datetime_t

◆ dt_undo_duplicate_t

◆ dt_undo_geotag_t

◆ dt_undo_monochrome_t

Function Documentation

◆ _datetime_undo_data_free()

static void _datetime_undo_data_free ( gpointer  data)
static

◆ _geotag_undo_data_free()

static void _geotag_undo_data_free ( gpointer  data)
static

◆ _image_duplicate_with_version()

◆ _image_duplicate_with_version_ext()

static int32_t _image_duplicate_with_version_ext ( const int32_t  imgid,
const int32_t  newversion 
)
static

◆ _image_import_internal()

◆ _image_local_copy_full_path()

static void _image_local_copy_full_path ( const int32_t  imgid,
char *  pathname,
size_t  pathname_len 
)
static

◆ _image_set_datetime()

static void _image_set_datetime ( const GList *  img,
const char *  datetime,
GList **  undo,
const gboolean  undo_on 
)
static

◆ _image_set_datetimes()

static void _image_set_datetimes ( const GList *  img,
const GArray *  dtime,
GList **  undo,
const gboolean  undo_on 
)
static

◆ _image_set_images_locations()

static void _image_set_images_locations ( const GList *  img,
const GArray *  gloc,
GList **  undo,
const gboolean  undo_on 
)
static

◆ _image_set_location()

static void _image_set_location ( GList *  imgs,
const dt_image_geoloc_t geoloc,
GList **  undo,
const gboolean  undo_on 
)
static

◆ _image_set_monochrome_flag()

◆ _nb_other_local_copy_for()

static int _nb_other_local_copy_for ( const int32_t  imgid)
static

◆ _pop_undo()

◆ _pop_undo_execute()

static void _pop_undo_execute ( const int32_t  imgid,
const gboolean  before,
const gboolean  after 
)
static

References _image_set_monochrome_flag(), and FALSE.

Referenced by _pop_undo().

◆ _set_datetime()

static void _set_datetime ( const int32_t  imgid,
const char *  datetime 
)
static

◆ _set_location()

◆ _valid_glob_match()

static int _valid_glob_match ( const char *const  name,
size_t  offset 
)
static

References FALSE, and name.

Referenced by dt_image_find_xmps().

◆ dt_get_dirname_from_imgid()

void dt_get_dirname_from_imgid ( gchar *  dir,
const int32_t  imgid 
)

get dirname from imgid

References dt_image_full_path(), FALSE, and PATH_MAX.

Referenced by dt_collection_load_filmroll().

◆ dt_image_altered()

uint32_t dt_image_altered ( const int32_t  imgid)

returns the number of history entries in library for this image

References darktable, darktable_t::db, dt_database_get(), DT_DEBUG_SQLITE3_BIND_INT, and DT_DEBUG_SQLITE3_PREPARE_V2.

Referenced by _dt_image_info_changed_callback(), _write_mipmap_to_disk(), and is_altered_member().

◆ dt_image_camera_missing_sample_message()

char * dt_image_camera_missing_sample_message ( const struct dt_image_t img,
gboolean  logmsg 
)

handle message for missing camera samples reported by rawspeed

References dt_image_t::camera_maker, dt_image_t::camera_model, and dt_util_str_replace().

Referenced by dt_image_check_camera_missing_sample().

◆ dt_image_check_camera_missing_sample()

void dt_image_check_camera_missing_sample ( const struct dt_image_t img)

◆ dt_image_copy()

int32_t dt_image_copy ( const int32_t  imgid,
const int32_t  filmid 
)

physically copy image to the folder of the film roll with filmid and duplicate update database entries.

References dt_image_copy_rename().

Referenced by dt_control_copy_images_job_run(), and dt_lua_copy_image().

◆ dt_image_copy_rename()

int32_t dt_image_copy_rename ( const int32_t  imgid,
const int32_t  filmid,
const gchar *  newname 
)

◆ dt_image_duplicate()

int32_t dt_image_duplicate ( const int32_t  imgid)

duplicates the given image in the database.

References dt_image_duplicate_with_version().

Referenced by dt_control_duplicate_images_job_run(), dt_lua_duplicate_image(), and dt_styles_apply_to_image().

◆ dt_image_duplicate_with_version()

int32_t dt_image_duplicate_with_version ( const int32_t  imgid,
const int32_t  newversion 
)

duplicates the given image in the database with the duplicate getting the supplied version number. if that version already exists just return the imgid without producing new duplicate. called with newversion -1 a new duplicate is produced with the next free version number.

References _image_duplicate_with_version(), and TRUE.

Referenced by dt_image_duplicate().

◆ dt_image_film_roll()

void dt_image_film_roll ( const dt_image_t img,
char *  pathname,
size_t  pathname_len 
)

◆ dt_image_film_roll_directory()

void dt_image_film_roll_directory ( const dt_image_t img,
char *  pathname,
size_t  pathname_len 
)

◆ dt_image_film_roll_name()

const char * dt_image_film_roll_name ( const char *  path)

returns the portion of the path used for the film roll name.

References CLAMPS, and dt_conf_get_int().

Referenced by dt_image_film_roll(), list_view(), and pretty_print_collection().

◆ dt_image_find_xmps()

GList * dt_image_find_xmps ( const char *  filename)

finds all xmp duplicates for the given image in the database.

References _valid_glob_match(), dt_util_test_image_file(), PATH_MAX, and win_image_find_duplicates().

Referenced by _import_copy_xmp(), dt_control_delete_images_job_run(), and dt_image_read_duplicates().

◆ dt_image_flip()

◆ dt_image_full_path()

void dt_image_full_path ( const int32_t  imgid,
char *  pathname,
size_t  pathname_len,
gboolean *  from_cache,
const char *  calling_func 
)

Get the full path of an image out of the database. TODO: This gets called too many times and the output should be cached. TODO: Document where the pathname_len is being set.

Parameters
imgidThe image ID.
pathnameA pointer storing the returned value from the sql request.
pathname_lenNumber of characters of the path set outside the function.
from_cacheBoolean, false returns the orgina file (file system), true tries to ge a local copy.
calling_funcPass FUNCTION for identifcation of callers of this function.

References _image_local_copy_full_path(), darktable, darktable_t::db, dt_database_get(), DT_DEBUG_SQL, DT_DEBUG_SQLITE3_BIND_INT, DT_DEBUG_SQLITE3_PREPARE_V2, dt_print(), FALSE, and PATH_MAX.

Referenced by _event_dnd_get(), _generate_blocking(), _get_image_buffer(), _init_f(), _metadata_view_update_values(), _view_map_dnd_get_callback(), _watermark_get_svgdoc(), _write_mipmap_to_disk(), dt_control_delete_images_job_run(), dt_control_export_job_run(), dt_control_merge_hdr_job_run(), dt_control_refresh_exif_run(), dt_control_write_sidecar_files_job_run(), dt_exif_xmp_attach_export(), dt_exif_xmp_read_string(), dt_exif_xmp_write(), dt_get_dirname_from_imgid(), dt_get_lightroom_xmp(), dt_image_copy_rename(), dt_image_find_best_color_profile(), dt_image_get_audio_path(), dt_image_get_text_path(), dt_image_local_copy_reset(), dt_image_local_copy_set(), dt_image_local_copy_synch(), dt_image_rename(), dt_image_safe_remove(), dt_image_write_sidecar_file(), dt_imageio_export_with_flags(), dt_view_image_info_update(), image_tostring(), sidecar_member(), store(), store(), store_wrapper(), try_enter(), and write_image().

◆ dt_image_get_audio_path()

char * dt_image_get_audio_path ( const int32_t  imgid)

helper function to get the audio file filename that is accompanying the image. g_free() after use

References dt_image_full_path(), dt_image_get_audio_path_from_path(), FALSE, and PATH_MAX.

Referenced by dt_view_audio_start().

◆ dt_image_get_audio_path_from_path()

char * dt_image_get_audio_path_from_path ( const char *  image_path)

◆ dt_image_get_datetime()

◆ dt_image_get_exposure_bias()

float dt_image_get_exposure_bias ( const struct dt_image_t image_storage)

◆ dt_image_get_id()

int32_t dt_image_get_id ( int32_t  film_id,
const gchar *  filename 
)

◆ dt_image_get_id_full_path()

int32_t dt_image_get_id_full_path ( const gchar *  filename)

◆ dt_image_get_location()

◆ dt_image_get_orientation()

◆ dt_image_get_text_path()

char * dt_image_get_text_path ( const int32_t  imgid)

helper function to get the text file filename that is accompanying the image. g_free() after use

References dt_image_full_path(), dt_image_get_text_path_from_path(), FALSE, and PATH_MAX.

Referenced by _get_base_value().

◆ dt_image_get_text_path_from_path()

char * dt_image_get_text_path_from_path ( const char *  image_path)

◆ dt_image_get_xmp_mode()

◆ dt_image_get_xmp_rating()

int dt_image_get_xmp_rating ( const dt_image_t img)

◆ dt_image_get_xmp_rating_from_flags()

int dt_image_get_xmp_rating_from_flags ( const int  flags)

◆ dt_image_import()

int32_t dt_image_import ( int32_t  film_id,
const char *  filename,
gboolean  raise_signals 
)

imports a new image from raw/etc file and adds it to the data base and image cache. Use from threads other than lua.

References _image_import_internal(), and TRUE.

Referenced by _film_import1(), _import_job(), dt_control_merge_hdr_job_run(), dt_image_import_job_run(), dt_load_from_string(), and main().

◆ dt_image_import_lua()

int32_t dt_image_import_lua ( int32_t  film_id,
const char *  filename 
)

imports a new image from raw/etc file and adds it to the data base and image cache. Use from lua thread.

References _image_import_internal(), FALSE, and TRUE.

Referenced by import_images().

◆ dt_image_init()

void dt_image_init ( dt_image_t img)

inits basic values to sensible defaults.

References dt_image_t::adobe_XYZ_to_CAM, dt_image_t::buf_dsc, dt_image_t::cache_entry, dt_image_t::camera_alias, dt_image_t::camera_legacy_makermodel, dt_image_t::camera_maker, dt_image_t::camera_makermodel, dt_image_t::camera_missing_sample, dt_image_t::camera_model, dt_image_t::change_timestamp, dt_iop_buffer_dsc_t::channels, dt_image_t::color_labels, dt_image_t::colorspace, dt_image_t::crop_height, dt_image_t::crop_width, dt_image_t::crop_x, dt_image_t::crop_y, dt_image_t::d65_color_matrix, dt_image_t::dng_gain_maps, dt_datetime_exif_to_img(), DT_IMAGE_COLORSPACE_NONE, 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, dt_image_t::export_timestamp, FALSE, dt_image_t::filename, dt_image_t::film_id, dt_iop_buffer_dsc_t::filters, dt_image_t::flags, dt_image_t::fuji_rotation_pos, dt_image_t::geoloc, dt_image_t::group_id, dt_image_t::height, dt_image_t::id, dt_image_t::import_timestamp, dt_image_geoloc_t::latitude, dt_image_raw_parameters_t::legacy, dt_image_t::legacy_flip, dt_image_t::loader, LOADER_UNKNOWN, dt_image_geoloc_t::longitude, dt_image_t::orientation, ORIENTATION_NULL, dt_image_t::p_height, dt_image_t::p_width, dt_image_t::pixel_aspect_ratio, dt_image_t::print_timestamp, dt_image_t::profile, dt_image_t::profile_size, dt_image_t::raw_black_level, dt_image_t::raw_black_level_separate, dt_image_t::raw_white_point, TYPE_UNKNOWN, UNKNOWN_IMAGE, dt_image_raw_parameters_t::user_flip, dt_image_t::usercrop, dt_image_t::version, dt_image_t::wb_coeffs, and dt_image_t::width.

Referenced by _import_copy_file(), _set_test_path(), dt_dev_init(), dt_image_cache_allocate(), and update_preview_cb().

◆ dt_image_is_hdr()

◆ dt_image_is_ldr()

int dt_image_is_ldr ( const dt_image_t img)

returns non-zero if the image contains low-dynamic range data.

References DT_IMAGE_LDR, dt_image_t::filename, and dt_image_t::flags.

Referenced by _exif_decode_exif_data(), generate_preset_combo(), and is_ldr_member().

◆ dt_image_is_matrix_correction_supported()

◆ dt_image_is_monochrome()

◆ dt_image_is_raw()

◆ dt_image_is_rawprepare_supported()

gboolean dt_image_is_rawprepare_supported ( const dt_image_t img)

◆ dt_image_local_copy_reset()

◆ dt_image_local_copy_set()

◆ dt_image_local_copy_synch()

◆ dt_image_monochrome_flags()

◆ dt_image_move()

int32_t dt_image_move ( const int32_t  imgid,
const int32_t  filmid 
)

physically move image with imgid and its duplicates to the film roll given by filmid. returns -1 on error, 0 on success.

References dt_image_rename().

Referenced by dt_control_move_images_job_run(), and dt_lua_move_image().

◆ dt_image_path_append_version()

◆ dt_image_path_append_version_no_db()

void dt_image_path_append_version_no_db ( int  version,
char *  pathname,
size_t  pathname_len 
)

appends version numbering for duplicated images without querying the db.

References c2.

Referenced by dt_control_crawler_run(), and dt_image_path_append_version().

◆ dt_image_print_exif()

void dt_image_print_exif ( const dt_image_t img,
char *  line,
size_t  line_len 
)

◆ dt_image_read_duplicates()

◆ dt_image_refresh_makermodel()

◆ dt_image_remove()

◆ dt_image_rename()

int32_t dt_image_rename ( const int32_t  imgid,
const int32_t  filmid,
const gchar *  newname 
)

physically move image with imgid and its duplicates to the film roll given by filmid and the name given by newname. returns -1 on error, 0 on success.

Todo:
: several places where string truncation could occur unnoticed
Todo:
: map that to a background job

References _image_local_copy_full_path(), darktable, darktable_t::db, dt_control_log(), dt_database_get(), DT_DEBUG_SQLITE3_BIND_INT, DT_DEBUG_SQLITE3_PREPARE_V2, dt_image_cache_get(), DT_IMAGE_CACHE_RELAXED, dt_image_cache_write_release(), dt_image_full_path(), dt_image_path_append_version(), dt_image_write_sidecar_file(), DT_MAX_FILENAME_LEN, FALSE, dt_image_t::filename, dt_image_t::film_id, darktable_t::image_cache, and PATH_MAX.

Referenced by dt_image_move(), and dt_lua_move_image().

◆ dt_image_safe_remove()

gboolean dt_image_safe_remove ( const int32_t  imgid)

◆ dt_image_set_datetime()

void dt_image_set_datetime ( const GList *  imgs,
const char *  datetime,
const gboolean  undo_on 
)

◆ dt_image_set_datetimes()

void dt_image_set_datetimes ( const GList *  imgs,
const GArray *  dtime,
const gboolean  undo_on 
)

◆ dt_image_set_flip()

◆ dt_image_set_images_locations()

void dt_image_set_images_locations ( const GList *  imgs,
const GArray *  gloc,
const gboolean  undo_on 
)

◆ dt_image_set_location()

void dt_image_set_location ( const int32_t  imgid,
const dt_image_geoloc_t geoloc,
const gboolean  undo_on,
const gboolean  group_on 
)

◆ dt_image_set_locations()

void dt_image_set_locations ( const GList *  img,
const dt_image_geoloc_t geoloc,
const gboolean  undo_on 
)

◆ dt_image_set_monochrome_flag()

void dt_image_set_monochrome_flag ( const int32_t  imgid,
gboolean  monochrome 
)

set the monochrome flags if monochrome is TRUE and clear it otherwise

References _image_set_monochrome_flag(), and TRUE.

Referenced by dt_control_monochrome_images_job_run().

◆ dt_image_set_xmp_rating()

void dt_image_set_xmp_rating ( dt_image_t img,
const int  rating 
)

◆ dt_image_synch_all_xmp()

◆ dt_image_synch_xmp()

◆ dt_image_synch_xmps()

◆ dt_image_use_monochrome_workflow()

gboolean dt_image_use_monochrome_workflow ( const dt_image_t img)

returns true if the image has been tested to be monochrome and the image wants monochrome workflow

References DT_IMAGE_MONOCHROME, DT_IMAGE_MONOCHROME_BAYER, DT_IMAGE_MONOCHROME_PREVIEW, DT_IMAGE_MONOCHROME_WORKFLOW, and dt_image_t::flags.

Referenced by _image_get_infos().

◆ dt_image_write_sidecar_file()