Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
iop_order.h File Reference
#include <glib.h>
#include <stdint.h>
+ Include dependency graph for iop_order.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  dt_iop_order_entry_t
 
struct  dt_iop_order_rule_t
 

Typedefs

typedef enum dt_iop_order_t dt_iop_order_t
 
typedef struct dt_iop_order_entry_t dt_iop_order_entry_t
 
typedef struct dt_iop_order_rule_t dt_iop_order_rule_t
 

Enumerations

enum  dt_iop_order_t {
  DT_IOP_ORDER_CUSTOM = 0 ,
  DT_IOP_ORDER_LEGACY = 1 ,
  DT_IOP_ORDER_V30 = 2 ,
  DT_IOP_ORDER_V30_JPG = 3 ,
  DT_IOP_ORDER_ANSEL_RAW = 4 ,
  DT_IOP_ORDER_ANSEL_JPG = 5 ,
  DT_IOP_ORDER_LAST = 6
}
 

Functions

const char * dt_iop_order_string (const dt_iop_order_t order)
 Return the human-readable name for an IOP order enum value.
 
dt_iop_order_t dt_ioppr_get_iop_order_version (const int32_t imgid)
 Fetch the IOP order version stored for an image.
 
dt_iop_order_t dt_ioppr_get_iop_order_list_kind (GList *iop_order_list)
 Determine the kind of an order list by inspecting its content.
 
gboolean dt_ioppr_has_iop_order_list (int32_t imgid)
 Check whether the image has an explicit order list stored in DB.
 
GList * dt_ioppr_get_iop_order_list (int32_t imgid, gboolean sorted)
 Load the order list for an image from the DB.
 
GList * dt_ioppr_get_iop_order_list_version (dt_iop_order_t version)
 Return the built-in order list for a given version.
 
GList * dt_ioppr_get_iop_order_link (GList *iop_order_list, const char *op_name, const int multi_priority)
 Find a list link matching an operation and instance.
 
gboolean dt_ioppr_has_multiple_instances (GList *iop_order_list)
 Detect whether multiple instances are grouped for a non-custom order.
 
int dt_ioppr_get_iop_order (GList *iop_order_list, const char *op_name, const int multi_priority)
 Return the iop_order for a given operation/instance pair.
 
gboolean dt_ioppr_write_iop_order_list (GList *iop_order_list, const int32_t imgid)
 Persist an order list to the DB for a given image.
 
voiddt_ioppr_serialize_iop_order_list (GList *iop_order_list, size_t *size)
 Serialize an order list into a binary blob (used for presets).
 
GList * dt_ioppr_deserialize_iop_order_list (const char *buf, size_t size)
 Deserialize an order list from a binary blob.
 
char * dt_ioppr_serialize_text_iop_order_list (GList *iop_order_list)
 Serialize an order list to a text representation.
 
GList * dt_ioppr_deserialize_text_iop_order_list (const char *buf)
 Deserialize an order list from a text representation.
 
GList * dt_ioppr_insert_missing_modules (GList *iop_order_list)
 Insert modules that postdate a deserialized/custom order list.
 
void dt_ioppr_insert_module_instance (struct dt_develop_t *dev, struct dt_iop_module_t *module)
 Ensure a module instance has an entry in dev->iop_order_list.
 
void dt_ioppr_resync_modules_order (struct dt_develop_t *dev)
 Update dev->iop module order values from dev->iop_order_list.
 
void dt_ioppr_resync_pipeline (struct dt_develop_t *dev, const int32_t imgid, const char *msg, gboolean check_duplicates)
 Resynchronize pipeline order and related structures.
 
void dt_ioppr_rebuild_iop_order_from_modules (struct dt_develop_t *dev, GList *ordered_modules)
 Rebuild dev->iop_order_list from a list of ordered modules.
 
void dt_ioppr_update_for_style_items (struct dt_develop_t *dev, GList *st_items, gboolean append)
 Update dev->iop_order_list with modules referenced by style items.
 
void dt_ioppr_update_for_modules (struct dt_develop_t *dev, GList *modules, gboolean append)
 Update dev->iop_order_list with modules from a module list.
 
void dt_ioppr_set_default_iop_order (struct dt_develop_t *dev, const int32_t imgid)
 Set dev->iop_order_list to the default order for a given image.
 
void dt_ioppr_change_iop_order (struct dt_develop_t *dev, const int32_t imgid, GList *new_iop_list)
 Replace the current order list with a new one and persist it.
 
int dt_ioppr_check_so_iop_order (GList *iop_list, GList *iop_order_list)
 Check whether any module .so is missing an iop_order entry.
 
GList * dt_ioppr_get_iop_order_rules ()
 Return the list of ordering rules (prev/next constraints).
 
GList * dt_ioppr_get_iop_order_rules_global (void)
 
GList * dt_ioppr_iop_order_copy_deep (GList *iop_order_list)
 Deep-copy an order list.
 
gint dt_sort_iop_by_order (gconstpointer a, gconstpointer b)
 Compare two module instances by iop_order for sorting.
 
gint dt_sort_iop_list_by_order_f (gconstpointer a, gconstpointer b)
 Compare two list nodes holding modules by iop_order.
 
gboolean dt_ioppr_check_can_move_before_iop (GList *iop_list, struct dt_iop_module_t *module, struct dt_iop_module_t *module_next)
 Validate whether module can be moved before module_next.
 
gboolean dt_ioppr_check_can_move_after_iop (GList *iop_list, struct dt_iop_module_t *module, struct dt_iop_module_t *module_prev)
 Validate whether module can be moved after module_prev.
 
gboolean dt_ioppr_move_iop_before (struct dt_develop_t *dev, struct dt_iop_module_t *module, struct dt_iop_module_t *module_next)
 Move a module instance before another module in the pipe.
 
gboolean dt_ioppr_move_iop_after (struct dt_develop_t *dev, struct dt_iop_module_t *module, struct dt_iop_module_t *module_prev)
 Move a module instance after another module in the pipe.
 
int dt_ioppr_check_iop_order (struct dt_develop_t *dev, const int32_t imgid, const char *msg)
 Debug helper to validate the current order for a develop context.
 

Typedef Documentation

◆ dt_iop_order_entry_t

◆ dt_iop_order_rule_t

◆ dt_iop_order_t

Enumeration Type Documentation

◆ dt_iop_order_t

Enumerator
DT_IOP_ORDER_CUSTOM 
DT_IOP_ORDER_LEGACY 
DT_IOP_ORDER_V30 
DT_IOP_ORDER_V30_JPG 
DT_IOP_ORDER_ANSEL_RAW 
DT_IOP_ORDER_ANSEL_JPG 
DT_IOP_ORDER_LAST 

Definition at line 148 of file iop_order.h.

Function Documentation

◆ dt_iop_order_string()

const char * dt_iop_order_string ( const dt_iop_order_t  order)

Return the human-readable name for an IOP order enum value.

This is mostly used for debug strings, logs, and UI messages.

Parameters
orderIOP order enum value.
Returns
Static string describing the order.

Definition at line 82 of file iop_order.c.

References DT_IOP_ORDER_LAST, and iop_order_string.

Referenced by _gui_styles_dialog_run(), _ioporder_get_current_order_name(), _resolve_iop_order_name(), and dt_collection_new().

◆ dt_ioppr_change_iop_order()

void dt_ioppr_change_iop_order ( struct dt_develop_t dev,
const int32_t  imgid,
GList *  new_iop_list 
)

Replace the current order list with a new one and persist it.

Parameters
devDevelop context.
imgidImage id.
new_iop_listNew order list (ownership remains with caller).

Definition at line 1360 of file iop_order.c.

References dt_dev_get_global(), dt_dev_write_history(), dt_free_gpointer(), DT_IOP_ORDER_CUSTOM, dt_ioppr_extract_multi_instances_list(), dt_ioppr_iop_order_copy_deep(), dt_ioppr_merge_multi_instance_iop_order_list(), dt_ioppr_migrate_iop_order(), dt_ioppr_write_iop_order(), and FALSE.

Referenced by gui_reset(), and set_params().

◆ dt_ioppr_check_can_move_after_iop()

gboolean dt_ioppr_check_can_move_after_iop ( GList *  iop_list,
struct dt_iop_module_t module,
struct dt_iop_module_t module_prev 
)

Validate whether module can be moved after module_prev.

Parameters
iop_listCurrent module list.
moduleModule to move.
module_prevTarget module that should precede.
Returns
TRUE if move is allowed, FALSE otherwise.

Definition at line 2158 of file iop_order.c.

References dt_ioppr_check_can_move_before_iop(), FALSE, dt_iop_module_t::iop_order, IS_NULL_PTR, dt_iop_module_t::multi_name, dt_iop_module_t::op, dt_iop_module_t::raster_mask, dt_iop_module_t::sink, and dt_iop_module_t::source.

Referenced by _dev_module_update_multishow(), _ioporder_drag_motion(), and _modulegroups_drag_motion().

◆ dt_ioppr_check_can_move_before_iop()

gboolean dt_ioppr_check_can_move_before_iop ( GList *  iop_list,
struct dt_iop_module_t module,
struct dt_iop_module_t module_next 
)

Validate whether module can be moved before module_next.

Parameters
iop_listCurrent module list.
moduleModule to move.
module_nextTarget module that should follow.
Returns
TRUE if move is allowed, FALSE otherwise.

Definition at line 1989 of file iop_order.c.

References dt_ioppr_get_iop_order_rules_global(), FALSE, dt_iop_module_t::iop_order, IS_NULL_PTR, dt_iop_module_t::multi_name, dt_iop_module_t::op, dt_iop_module_t::raster_mask, dt_iop_module_t::sink, dt_iop_module_t::source, and TRUE.

Referenced by _dev_module_update_multishow(), _ioporder_drag_motion(), _modulegroups_drag_motion(), and dt_ioppr_check_can_move_after_iop().

◆ dt_ioppr_check_iop_order()

int dt_ioppr_check_iop_order ( struct dt_develop_t dev,
const int32_t  imgid,
const char *  msg 
)

Debug helper to validate the current order for a develop context.

Logs inconsistencies and optionally reports the state with msg.

Parameters
devDevelop context.
imgidImage id (for diagnostics).
msgOptional debug message.
Returns
0 on success, non-zero if issues were detected.

Definition at line 2351 of file iop_order.c.

References _ioppr_check_rules(), DT_DEBUG_PARAMS, dt_print(), dt_develop_t::history, dt_develop_t::iop, dt_iop_module_t::iop_order, dt_iop_module_t::multi_name, dt_iop_module_t::multi_priority, and dt_iop_module_t::op.

Referenced by _apply_style_before_export(), dt_dev_modules_update_multishow(), dt_iop_gui_commit_iop_order_change(), and dt_ioppr_resync_pipeline().

◆ dt_ioppr_check_so_iop_order()

int dt_ioppr_check_so_iop_order ( GList *  iop_list,
GList *  iop_order_list 
)

Check whether any module .so is missing an iop_order entry.

Parameters
iop_listList of module .so entries.
iop_order_listCurrent order list.
Returns
1 if any module is missing an entry, 0 otherwise.

Definition at line 1934 of file iop_order.c.

References dt_deprecated(), dt_ioppr_get_iop_order_entry(), and IS_NULL_PTR.

Referenced by dt_init().

◆ dt_ioppr_deserialize_iop_order_list()

GList * dt_ioppr_deserialize_iop_order_list ( const char *  buf,
size_t  size 
)

Deserialize an order list from a binary blob.

Parameters
bufSerialized buffer.
sizeBuffer size in bytes.
Returns
Newly-allocated order list or NULL on error.

Definition at line 2606 of file iop_order.c.

References _ioppr_reset_iop_order(), dt_free, dt_free_gpointer(), error(), dt_iop_order_entry_t::instance, dt_iop_order_entry_t::iop_order, dt_iop_order_entry_t::o, dt_iop_order_entry_t::operation, and size.

Referenced by _dev_auto_apply_presets(), _ioporder_get_current_order_name(), and set_params().

◆ dt_ioppr_deserialize_text_iop_order_list()

GList * dt_ioppr_deserialize_text_iop_order_list ( const char *  buf)

Deserialize an order list from a text representation.

Parameters
bufNUL-terminated string.
Returns
Newly-allocated order list or NULL on error.

Definition at line 2562 of file iop_order.c.

References _ioppr_reset_iop_order(), dt_free_gpointer(), dt_util_str_to_glist(), error(), dt_iop_order_entry_t::instance, dt_iop_order_entry_t::iop_order, IS_NULL_PTR, dt_iop_order_entry_t::o, and dt_iop_order_entry_t::operation.

Referenced by dt_exif_xmp_read(), dt_ioppr_get_iop_order_list(), dt_styles_module_order_list(), and dt_styles_style_text_handler().

◆ dt_ioppr_get_iop_order()

int dt_ioppr_get_iop_order ( GList *  iop_order_list,
const char *  op_name,
const int  multi_priority 
)

Return the iop_order for a given operation/instance pair.

Parameters
iop_order_listOrder list to search.
op_nameOperation name.
multi_priorityInstance priority.
Returns
The iop_order value, or 0 if not found.

Definition at line 913 of file iop_order.c.

References dt_deprecated(), and dt_ioppr_get_iop_order_entry().

Referenced by __attribute__(), _process_history_db_entry(), _show_hide_colorspace(), _styles_sync_pipeline_from_items(), default_input_format(), default_output_format(), default_tiling_callback(), dt_ioppr_get_module_profile_stage(), dt_ioppr_resync_modules_order(), dt_ioppr_update_for_modules(), and dt_ioppr_update_for_style_items().

◆ dt_ioppr_get_iop_order_link()

GList * dt_ioppr_get_iop_order_link ( GList *  iop_order_list,
const char *  op_name,
const int  multi_priority 
)

Find a list link matching an operation and instance.

Parameters
iop_order_listOrder list to search.
op_nameOperation name.
multi_priorityInstance priority.
Returns
The matching list node or NULL if not found.

Definition at line 875 of file iop_order.c.

References dt_iop_order_entry_t::instance, and dt_iop_order_entry_t::operation.

Referenced by dt_exif_xmp_read(), dt_ioppr_get_iop_order_entry(), dt_ioppr_merge_module_multi_instance_iop_order_list(), dt_ioppr_move_iop_after(), and dt_ioppr_move_iop_before().

◆ dt_ioppr_get_iop_order_list()

◆ dt_ioppr_get_iop_order_list_kind()

dt_iop_order_t dt_ioppr_get_iop_order_list_kind ( GList *  iop_order_list)

Determine the kind of an order list by inspecting its content.

Compares the list ordering to the known built-in lists to decide whether this is a built-in version or a custom order.

Parameters
iop_order_listList of dt_iop_order_entry_t.
Returns
A built-in order version or DT_IOP_ORDER_CUSTOM.

Definition at line 951 of file iop_order.c.

References DT_IOP_ORDER_CUSTOM, DT_IOP_ORDER_LAST, DT_IOP_ORDER_LEGACY, FALSE, IS_NULL_PTR, k, orders, and TRUE.

Referenced by _ioporder_get_current_order_name(), _upgrade_library_schema_step(), and dt_ioppr_write_iop_order_list().

◆ dt_ioppr_get_iop_order_list_version()

GList * dt_ioppr_get_iop_order_list_version ( dt_iop_order_t  version)

◆ dt_ioppr_get_iop_order_rules()

GList * dt_ioppr_get_iop_order_rules ( )

Return the list of ordering rules (prev/next constraints).

Returns
List of dt_iop_order_rule_t. BUILDS AND RETURNS A FRESH LIST of the hard-coded iop ordering rules. This is a CONSTRUCTOR, not an accessor: it is called once at startup to populate the cached global, and every call allocates. To READ the cached rules, use dt_ioppr_get_iop_order_rules_global() below — repointing a read site at this function leaks a freshly-built list on every iteration.

Definition at line 836 of file iop_order.c.

References i, dt_iop_order_rule_t::op_next, and dt_iop_order_rule_t::op_prev.

Referenced by dt_init().

◆ dt_ioppr_get_iop_order_rules_global()

GList * dt_ioppr_get_iop_order_rules_global ( void  )

The cached iop ordering rules built once at startup. Read-only; do not free.

Definition at line 538 of file darktable.c.

References darktable, and darktable_t::iop_order_rules.

Referenced by _hm_topo_build_id_info_table(), _iop_rules(), _ioppr_check_rules(), and dt_ioppr_check_can_move_before_iop().

◆ dt_ioppr_get_iop_order_version()

dt_iop_order_t dt_ioppr_get_iop_order_version ( const int32_t  imgid)

Fetch the IOP order version stored for an image.

If the image has no stored order, this falls back to the default matching the image format, or DT_IOP_ORDER_ANSEL_RAW for UNKNOWN_IMAGE.

Parameters
imgidImage id.
Returns
Stored order version or the default built-in order.

Definition at line 811 of file iop_order.c.

References dt_history_repository_get_module_order_version(), dt_image_cache_is_ready(), dt_image_cache_read_release(), dt_image_cache_testget(), dt_image_needs_rawprepare(), DT_IOP_ORDER_ANSEL_JPG, DT_IOP_ORDER_ANSEL_RAW, and IS_NULL_PTR.

Referenced by _exif_xmp_read_data(), _exif_xmp_read_data_export(), and _gui_styles_dialog_run().

◆ dt_ioppr_has_iop_order_list()

gboolean dt_ioppr_has_iop_order_list ( int32_t  imgid)

Check whether the image has an explicit order list stored in DB.

Parameters
imgidImage id.
Returns
TRUE if an order list exists, FALSE otherwise.

Definition at line 1095 of file iop_order.c.

References dt_history_repository_has_custom_module_order().

Referenced by _dev_auto_apply_presets().

◆ dt_ioppr_has_multiple_instances()

gboolean dt_ioppr_has_multiple_instances ( GList *  iop_order_list)

Detect whether multiple instances are grouped for a non-custom order.

Used to decide if a list follows the built-in ordering conventions.

Parameters
iop_order_listOrder list to inspect.
Returns
TRUE if instances are grouped together, FALSE otherwise.

Definition at line 991 of file iop_order.c.

References FALSE, and TRUE.

Referenced by _exif_xmp_read_data(), _exif_xmp_read_data_export(), and dt_ioppr_write_iop_order().

◆ dt_ioppr_insert_missing_modules()

GList * dt_ioppr_insert_missing_modules ( GList *  iop_order_list)

Insert modules that postdate a deserialized/custom order list.

Pre-existing edits carry a serialized iop-order list saved before newer modules existed; without this those modules resolve to INT_MAX and are mis-ordered. Call on every path that deserializes a custom order (DB module_order table and XMP import). @_NEW_MODULE: register new modules in the implementation.

Parameters
iop_order_listDeserialized order list (ownership retained by caller).
Returns
Updated list head.

Definition at line 773 of file iop_order.c.

References _insert_before().

Referenced by dt_exif_xmp_read(), dt_ioppr_get_iop_order_list(), dt_styles_module_order_list(), and dt_styles_style_text_handler().

◆ dt_ioppr_insert_module_instance()

void dt_ioppr_insert_module_instance ( struct dt_develop_t dev,
struct dt_iop_module_t module 
)

Ensure a module instance has an entry in dev->iop_order_list.

Inserts a new entry if missing, keeping list consistency for subsequent reordering or serialization.

Parameters
devDevelop context.
moduleModule instance to insert.

Definition at line 2323 of file iop_order.c.

References dt_iop_order_entry_t::instance, dt_iop_order_entry_t::iop_order, dt_develop_t::iop_order_list, dt_iop_order_entry_t::o, and dt_iop_order_entry_t::operation.

Referenced by dt_dev_module_duplicate().

◆ dt_ioppr_iop_order_copy_deep()

GList * dt_ioppr_iop_order_copy_deep ( GList *  iop_order_list)

◆ dt_ioppr_move_iop_after()

gboolean dt_ioppr_move_iop_after ( struct dt_develop_t dev,
struct dt_iop_module_t module,
struct dt_iop_module_t module_prev 
)

Move a module instance after another module in the pipe.

Updates module ordering and related lists.

Parameters
devDevelop context.
moduleModule to move.
module_prevModule that should precede after move.
Returns
TRUE if move succeeded, FALSE otherwise.

Definition at line 2225 of file iop_order.c.

References dt_ioppr_get_iop_order_link(), dt_ioppr_resync_modules_order(), FALSE, dt_iop_order_entry_t::instance, dt_iop_order_entry_t::iop_order, dt_develop_t::iop_order_list, IS_NULL_PTR, dt_iop_module_t::multi_priority, dt_iop_order_entry_t::o, dt_iop_module_t::op, dt_iop_order_entry_t::operation, and TRUE.

Referenced by dt_dev_module_duplicate(), and dt_iop_gui_move_module_after().

◆ dt_ioppr_move_iop_before()

gboolean dt_ioppr_move_iop_before ( struct dt_develop_t dev,
struct dt_iop_module_t module,
struct dt_iop_module_t module_next 
)

Move a module instance before another module in the pipe.

Updates module ordering and related lists.

Parameters
devDevelop context.
moduleModule to move.
module_nextModule that should follow after move.
Returns
TRUE if move succeeded, FALSE otherwise.

Definition at line 2193 of file iop_order.c.

References dt_ioppr_get_iop_order_link(), dt_ioppr_resync_modules_order(), FALSE, dt_iop_order_entry_t::instance, dt_iop_order_entry_t::iop_order, dt_develop_t::iop_order_list, IS_NULL_PTR, dt_iop_module_t::multi_priority, dt_iop_order_entry_t::o, dt_iop_module_t::op, dt_iop_order_entry_t::operation, and TRUE.

Referenced by dt_iop_gui_move_module_before().

◆ dt_ioppr_rebuild_iop_order_from_modules()

void dt_ioppr_rebuild_iop_order_from_modules ( struct dt_develop_t dev,
GList *  ordered_modules 
)

◆ dt_ioppr_resync_modules_order()

void dt_ioppr_resync_modules_order ( struct dt_develop_t dev)

◆ dt_ioppr_resync_pipeline()

void dt_ioppr_resync_pipeline ( struct dt_develop_t dev,
const int32_t  imgid,
const char *  msg,
gboolean  check_duplicates 
)

Resynchronize pipeline order and related structures.

Rebuilds ordering for modules/history and optionally checks for duplicate iop_order values.

Parameters
devDevelop context.
imgidImage id (for diagnostics).
msgOptional debug message.
check_duplicatesWhether to validate duplicate iop_order entries.

Definition at line 1241 of file iop_order.c.

References dt_ioppr_check_duplicate_iop_order(), dt_ioppr_check_iop_order(), dt_ioppr_resync_iop_list(), dt_ioppr_resync_modules_order(), dt_develop_t::history, and dt_develop_t::iop.

Referenced by _styles_sync_pipeline_from_items(), dt_dev_pop_history_items_ext(), dt_dev_read_history_ext(), dt_dev_replace_history_on_image(), dt_history_merge(), and dt_styles_apply_style_item().

◆ dt_ioppr_serialize_iop_order_list()

void * dt_ioppr_serialize_iop_order_list ( GList *  iop_order_list,
size_t *  size 
)

Serialize an order list into a binary blob (used for presets).

Parameters
iop_order_listOrder list to serialize.
sizeOutput size of the serialized blob.
Returns
Allocated buffer to be freed by the caller.

Definition at line 2465 of file iop_order.c.

References IS_NULL_PTR, and size.

Referenced by get_params(), and init_presets().

◆ dt_ioppr_serialize_text_iop_order_list()

char * dt_ioppr_serialize_text_iop_order_list ( GList *  iop_order_list)

Serialize an order list to a text representation.

Parameters
iop_order_listOrder list to serialize.
Returns
Newly-allocated NUL-terminated string.

Definition at line 2507 of file iop_order.c.

References FALSE.

Referenced by _dt_style_update_iop_order(), _exif_xmp_read_data(), _exif_xmp_read_data_export(), _ioporder_get_current_order_name(), _upgrade_library_schema_step(), dt_ioppr_write_iop_order(), dt_styles_create_style_header(), and dt_styles_save_to_file().

◆ dt_ioppr_set_default_iop_order()

void dt_ioppr_set_default_iop_order ( struct dt_develop_t dev,
const int32_t  imgid 
)

Set dev->iop_order_list to the default order for a given image.

Uses the stored image order when present. If the image has no stored order, uses dev->image_storage to pick the RAW or non-RAW built-in list so darkroom first-run history reloads and offscreen paste/style reloads use the same image state as the modules.

Parameters
devDevelop context.
imgidImage id.

Definition at line 1309 of file iop_order.c.

References _ioppr_reset_iop_order(), dt_free_gpointer(), dt_history_repository_has_module_order(), dt_image_needs_rawprepare(), DT_IOP_ORDER_ANSEL_JPG, DT_IOP_ORDER_ANSEL_RAW, dt_ioppr_get_iop_order_list(), dt_ioppr_get_iop_order_list_version(), dt_ioppr_resync_modules_order(), FALSE, dt_image_t::id, dt_develop_t::image_storage, and dt_develop_t::iop_order_list.

Referenced by _dev_auto_apply_presets(), _styles_init_source_dev(), dt_dev_read_history_ext(), and dt_ioppr_migrate_iop_order().

◆ dt_ioppr_update_for_modules()

void dt_ioppr_update_for_modules ( struct dt_develop_t dev,
GList *  modules,
gboolean  append 
)

Update dev->iop_order_list with modules from a module list.

Parameters
devDevelop context.
modulesList of module instances.
appendWhether to append new entries at the end (TRUE) or merge into list order (FALSE).

Definition at line 1758 of file iop_order.c.

References dt_free_gpointer(), dt_ioppr_get_iop_order(), dt_ioppr_update_for_entries(), dt_iop_order_entry_t::instance, dt_iop_module_t::iop_order, dt_develop_t::iop_order_list, dt_iop_module_t::multi_priority, n, and dt_iop_module_t::op.

◆ dt_ioppr_update_for_style_items()

void dt_ioppr_update_for_style_items ( struct dt_develop_t dev,
GList *  st_items,
gboolean  append 
)

Update dev->iop_order_list with modules referenced by style items.

Parameters
devDevelop context.
st_itemsStyle items list.
appendWhether to append new entries at the end (TRUE) or merge into list order (FALSE).

Definition at line 1721 of file iop_order.c.

References dt_ioppr_get_iop_order(), dt_ioppr_update_for_entries(), dt_style_item_t::iop_order, dt_develop_t::iop_order_list, dt_style_item_t::multi_priority, n, and dt_style_item_t::operation.

Referenced by _apply_style_before_export(), _styles_prepare_source_dev(), and _styles_sync_pipeline_from_items().

◆ dt_ioppr_write_iop_order_list()

gboolean dt_ioppr_write_iop_order_list ( GList *  iop_order_list,
const int32_t  imgid 
)

Persist an order list to the DB for a given image.

Parameters
iop_order_listOrder list to store.
imgidImage id.
Returns
TRUE on success, FALSE on error.

Definition at line 1035 of file iop_order.c.

References dt_ioppr_get_iop_order_list_kind(), dt_ioppr_write_iop_order(), and kind.

Referenced by _dev_auto_apply_presets(), _write_history_from_state(), and dt_exif_xmp_read().

◆ dt_sort_iop_by_order()

gint dt_sort_iop_by_order ( gconstpointer  a,
gconstpointer  b 
)

Compare two module instances by iop_order for sorting.

Parameters
aFirst module pointer.
bSecond module pointer.
Returns
Sorting comparison result.

Definition at line 1976 of file iop_order.c.

Referenced by _check_deleted_instances(), _create_deleted_modules(), dt_dev_history_refresh_nodes_ext(), dt_dev_load_modules(), dt_dev_module_duplicate(), and dt_ioppr_resync_modules_order().

◆ dt_sort_iop_list_by_order_f()

gint dt_sort_iop_list_by_order_f ( gconstpointer  a,
gconstpointer  b 
)

Compare two list nodes holding modules by iop_order.

Parameters
aGList node containing a module.
bGList node containing a module.
Returns
Sorting comparison result.

Definition at line 939 of file iop_order.c.

Referenced by _upgrade_library_schema_step(), and dt_exif_xmp_read().