Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
styles.c File Reference
#include "common/utility.h"
#include "common/history_actions.h"
#include "common/conf.h"
#include <glib/gstdio.h>
#include "database/style_repository.h"
#include "common/styles.h"
#include "history/notify.h"
#include "system/macros.h"
#include "system/mem_alloc.h"
#include "common/logging.h"
#include "common/paths.h"
#include "common/image.h"
#include "metadata/exif.h"
#include "common/file_location.h"
#include "history/history.h"
#include "history/history_snapshot.h"
#include "develop/iop_order.h"
#include "metadata/tags.h"
#include "develop/develop.h"
#include "develop/dev_history.h"
#include <libxml/encoding.h>
#include <libxml/xmlwriter.h>
#include <glib.h>
#include <stdio.h>
#include <string.h>
+ Include dependency graph for src/common/styles.c:

Go to the source code of this file.

Data Structures

struct  StyleInfoData
 
struct  StylePluginData
 
struct  StyleData
 
struct  _item_list_ctx_t
 

Macros

#define DT_IOP_ORDER_INFO   (dt_get_debug_flags() & DT_DEBUG_IOPORDER)
 

Typedefs

typedef struct _item_list_ctx_t _item_list_ctx_t
 

Functions

void dt_style_free (gpointer data)
 
void dt_style_item_free (gpointer data)
 
int32_t dt_styles_get_id_by_name (const char *name)
 
gboolean dt_styles_exists (const char *name)
 
gboolean dt_styles_has_module_order (const char *name)
 
GList * dt_styles_module_order_list (const char *name)
 
static gboolean dt_styles_create_style_header (const char *name, const char *description, GList *iop_list)
 
static void _dt_style_update_from_image (int id, int32_t imgid, GList *filter, GList *update)
 
static void _dt_style_update_iop_order (const gchar *name, const int id, const int32_t imgid, const gboolean copy_iop_order, const gboolean update_iop_order)
 
void dt_styles_update (const char *name, const char *newname, const char *newdescription, GList *filter, const int32_t imgid, GList *update, const gboolean copy_iop_order, const gboolean update_iop_order)
 
void dt_styles_create_from_style (const char *name, const char *newname, const char *description, GList *filter, const int32_t imgid, GList *update, const gboolean copy_iop_order, const gboolean update_iop_order)
 
gboolean dt_styles_create_from_image (const char *name, const char *description, const int32_t imgid, GList *filter, gboolean copy_iop_order)
 
void dt_multiple_styles_apply_to_list (GList *styles, const GList *list, gboolean duplicate)
 
static const char * _dt_styles_normalize_multi_name (const char *multi_name)
 
static gboolean _dt_styles_apply_item_to_module (dt_iop_module_t *module, const dt_style_item_t *style_item)
 
static dt_iop_module_t_dt_styles_get_or_create_module_instance (dt_develop_t *dev, const dt_style_item_t *style_item)
 
static dt_iop_module_t_dt_styles_tmp_module_from_style_item (dt_develop_t *dev, const dt_style_item_t *style_item)
 
static void _prepend_apply_item (void *user_data, const int num, const int multi_priority, const int module_version, const char *operation, const int enabled, const void *params, const int32_t params_size, const void *blendop_params, const int32_t blendop_params_size, const int blendop_version, const char *multi_name, const int selimg_num, const double iop_order)
 
static GList * _dt_styles_get_apply_items (const int style_id)
 
static GList * _dt_styles_build_mod_list_from_history (dt_develop_t *dev, GHashTable *style_ids)
 
static void _dt_styles_tmp_module_free (dt_iop_module_t *module)
 
static int _styles_init_source_dev (dt_develop_t *dev_src, const char *name, const int32_t imgid, gboolean *has_iop_list)
 
static GList * _styles_collect_applied_items (dt_develop_t *dev_src, GList *si_list, GHashTable *style_ids)
 
static void _styles_sync_pipeline_from_items (dt_develop_t *dev_src, GList *applied_items, const gboolean has_iop_list)
 
static int _styles_rebuild_history_from_items (dt_develop_t *dev_src, GList *applied_items)
 
static int _styles_prepare_source_dev (dt_develop_t *dev_src, const char *name, const int style_id, const int32_t imgid, GList **out_si_list, GHashTable **out_style_ids, GList **out_mod_list)
 
int dt_styles_apply_to_image_merge (const char *name, const int style_id, const int32_t newimgid, const dt_history_merge_strategy_t mode, dt_hm_batch_state_t *batch)
 
void dt_styles_apply_style_item (dt_develop_t *dev, dt_style_item_t *style_item)
 
void dt_styles_apply_to_image (const char *name, const gboolean duplicate, const int32_t imgid)
 
void dt_styles_delete_by_name_adv (const char *name, const gboolean raise)
 
void dt_styles_delete_by_name (const char *name)
 
static void _prepend_item (void *user_data, const int num, const int multi_priority, const int module_version, const char *operation, const int enabled, const void *params, const int32_t params_size, const void *blendop_params, const int32_t blendop_params_size, const int blendop_version, const char *multi_name, const int selimg_num, const double iop_order)
 
GList * dt_styles_get_item_list (const char *name, gboolean params, int32_t imgid)
 
char * dt_styles_get_item_list_as_string (const char *name)
 
static void _prepend_style (void *user_data, const char *name, const char *description)
 
GList * dt_styles_get_list (const char *filter)
 
static void _write_item (void *user_data, const int num, const int multi_priority, const int module_version, const char *operation, const int enabled, const void *params, const int32_t params_size, const void *blendop_params, const int32_t blendop_params_size, const int blendop_version, const char *multi_name, const int selimg_num, const double iop_order)
 
void dt_styles_save_to_file (const char *style_name, const char *filedir, gboolean overwrite)
 
static StyleDatadt_styles_style_data_new ()
 
static StylePluginDatadt_styles_style_plugin_new ()
 
static void dt_styles_style_data_free (StyleData *style, gboolean free_segments)
 
static void dt_styles_start_tag_handler (GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer user_data, GError **error)
 
static void dt_styles_end_tag_handler (GMarkupParseContext *context, const gchar *element_name, gpointer user_data, GError **error)
 
static void dt_styles_style_text_handler (GMarkupParseContext *context, const gchar *text, gsize text_len, gpointer user_data, GError **error)
 
static void dt_style_plugin_save (StylePluginData *plugin, gpointer styleId)
 
static void dt_style_save (StyleData *style)
 
void dt_styles_import_from_file (const char *style_path)
 
gchar * dt_styles_get_description (const char *name)
 
static void _collect_style (void *user_data, const char *name, const char *description)
 
dt_style_tdt_styles_get_by_name (const char *name)
 
void dt_styles_cleanup (void)
 

Variables

static GMarkupParser dt_style_parser
 

Macro Definition Documentation

◆ DT_IOP_ORDER_INFO

#define DT_IOP_ORDER_INFO   (dt_get_debug_flags() & DT_DEBUG_IOPORDER)

Definition at line 75 of file src/common/styles.c.

Typedef Documentation

◆ _item_list_ctx_t

Function Documentation

◆ _collect_style()

static void _collect_style ( void user_data,
const char *  name,
const char *  description 
)
static

Definition at line 1252 of file src/common/styles.c.

References dt_style_t::description, description(), name, dt_style_t::name, and out.

Referenced by dt_styles_get_by_name().

◆ _dt_style_update_from_image()

static void _dt_style_update_from_image ( int  id,
int32_t  imgid,
GList *  filter,
GList *  update 
)
static

◆ _dt_style_update_iop_order()

static void _dt_style_update_iop_order ( const gchar *  name,
const int  id,
const int32_t  imgid,
const gboolean  copy_iop_order,
const gboolean  update_iop_order 
)
static

◆ _dt_styles_apply_item_to_module()

◆ _dt_styles_build_mod_list_from_history()

static GList * _dt_styles_build_mod_list_from_history ( dt_develop_t dev,
GHashTable *  style_ids 
)
static

◆ _dt_styles_get_apply_items()

static GList * _dt_styles_get_apply_items ( const int  style_id)
static

◆ _dt_styles_get_or_create_module_instance()

static dt_iop_module_t * _dt_styles_get_or_create_module_instance ( dt_develop_t dev,
const dt_style_item_t style_item 
)
static

◆ _dt_styles_normalize_multi_name()

static const char * _dt_styles_normalize_multi_name ( const char *  multi_name)
static

◆ _dt_styles_tmp_module_free()

static void _dt_styles_tmp_module_free ( dt_iop_module_t module)
static

Definition at line 525 of file src/common/styles.c.

References dt_free, dt_iop_cleanup_module(), and IS_NULL_PTR.

Referenced by dt_styles_apply_style_item().

◆ _dt_styles_tmp_module_from_style_item()

◆ _prepend_apply_item()

static void _prepend_apply_item ( void user_data,
const int  num,
const int  multi_priority,
const int  module_version,
const char *  operation,
const int  enabled,
const void params,
const int32_t  params_size,
const void blendop_params,
const int32_t  blendop_params_size,
const int  blendop_version,
const char *  multi_name,
const int  selimg_num,
const double  iop_order 
)
static

◆ _prepend_item()

static void _prepend_item ( void user_data,
const int  num,
const int  multi_priority,
const int  module_version,
const char *  operation,
const int  enabled,
const void params,
const int32_t  params_size,
const void blendop_params,
const int32_t  blendop_params_size,
const int  blendop_version,
const char *  multi_name,
const int  selimg_num,
const double  iop_order 
)
static

◆ _prepend_style()

static void _prepend_style ( void user_data,
const char *  name,
const char *  description 
)
static

Definition at line 878 of file src/common/styles.c.

References dt_style_t::description, description(), name, and dt_style_t::name.

Referenced by dt_styles_get_list().

◆ _styles_collect_applied_items()

static GList * _styles_collect_applied_items ( dt_develop_t dev_src,
GList *  si_list,
GHashTable *  style_ids 
)
static

◆ _styles_init_source_dev()

static int _styles_init_source_dev ( dt_develop_t dev_src,
const char *  name,
const int32_t  imgid,
gboolean *  has_iop_list 
)
static

◆ _styles_prepare_source_dev()

static int _styles_prepare_source_dev ( dt_develop_t dev_src,
const char *  name,
const int  style_id,
const int32_t  imgid,
GList **  out_si_list,
GHashTable **  out_style_ids,
GList **  out_mod_list 
)
static

◆ _styles_rebuild_history_from_items()

◆ _styles_sync_pipeline_from_items()

◆ _write_item()

static void _write_item ( void user_data,
const int  num,
const int  multi_priority,
const int  module_version,
const char *  operation,
const int  enabled,
const void params,
const int32_t  params_size,
const void blendop_params,
const int32_t  blendop_params_size,
const int  blendop_version,
const char *  multi_name,
const int  selimg_num,
const double  iop_order 
)
static

Definition at line 894 of file src/common/styles.c.

References dt_exif_xmp_encode(), dt_free, enabled, and params_size().

Referenced by dt_styles_save_to_file().

◆ dt_multiple_styles_apply_to_list()

void dt_multiple_styles_apply_to_list ( GList *  styles,
const GList *  list,
gboolean  duplicate 
)

applies the style to selection of images applies list of styles to selection of images

Definition at line 329 of file src/common/styles.c.

References dt_history_message(), dt_history_style_on_image(), dt_undo_end_group(), dt_undo_get_global(), DT_UNDO_LT_HISTORY, dt_undo_start_group(), and IS_NULL_PTR.

Referenced by apply_clicked().

◆ dt_style_free()

void dt_style_free ( gpointer  data)

helpers that free a style or style_item. can be used in g_list_free_full()

Definition at line 105 of file src/common/styles.c.

References dt_style_t::description, dt_free, and dt_style_t::name.

Referenced by _gui_styles_update_view(), _lib_export_styles_changed_callback(), _studio_style_populate_styles_tree(), append_styles(), gui_init(), and gui_reset().

◆ dt_style_item_free()

◆ dt_style_plugin_save()

◆ dt_style_save()

◆ dt_styles_apply_style_item()

◆ dt_styles_apply_to_image()

void dt_styles_apply_to_image ( const char *  name,
const gboolean  duplicate,
const int32_t  imgid 
)

applies the style to image by imgid, takes care of overwrite and duplicate modes

Definition at line 745 of file src/common/styles.c.

References dt_history_style_on_image(), dt_undo_end_group(), dt_undo_get_global(), DT_UNDO_LT_HISTORY, dt_undo_start_group(), and name.

◆ dt_styles_apply_to_image_merge()

int dt_styles_apply_to_image_merge ( const char *  name,
const int  style_id,
const int32_t  newimgid,
const dt_history_merge_strategy_t  mode,
dt_hm_batch_state_t batch 
)

◆ dt_styles_cleanup()

void dt_styles_cleanup ( void  )

cleanup cached statements

Definition at line 1268 of file src/common/styles.c.

References dt_style_repository_cleanup().

Referenced by dt_cleanup().

◆ dt_styles_create_from_image()

gboolean dt_styles_create_from_image ( const char *  name,
const char *  description,
const int32_t  imgid,
GList *  items,
gboolean  copy_iop_order 
)

◆ dt_styles_create_from_style()

void dt_styles_create_from_style ( const char *  name,
const char *  newname,
const char *  description,
GList *  filter,
const int32_t  imgid,
GList *  update,
gboolean  copy_iop_order,
const gboolean  update_iop_order 
)

◆ dt_styles_create_style_header()

static gboolean dt_styles_create_style_header ( const char *  name,
const char *  description,
GList *  iop_list 
)
static

◆ dt_styles_delete_by_name()

void dt_styles_delete_by_name ( const char *  name)

delete a style by name, raise signal

Definition at line 764 of file src/common/styles.c.

References dt_styles_delete_by_name_adv(), name, and TRUE.

Referenced by _gui_styles_new_style_response(), and import_clicked().

◆ dt_styles_delete_by_name_adv()

void dt_styles_delete_by_name_adv ( const char *  name,
const gboolean  raise 
)

◆ dt_styles_end_tag_handler()

static void dt_styles_end_tag_handler ( GMarkupParseContext *  context,
const gchar *  element_name,
gpointer  user_data,
GError **  error 
)
static

Definition at line 1052 of file src/common/styles.c.

References FALSE, and StyleData::in_plugin.

◆ dt_styles_exists()

gboolean dt_styles_exists ( const char *  name)

check if style exists by name

Definition at line 133 of file src/common/styles.c.

References dt_styles_get_id_by_name(), FALSE, name, and TRUE.

Referenced by _gui_styles_dialog_run(), _gui_styles_new_style_response(), dt_styles_save_to_file(), and import_clicked().

◆ dt_styles_get_by_name()

dt_style_t * dt_styles_get_by_name ( const char *  name)

get a style object by name, the object needs to be freed by the caller

Definition at line 1261 of file src/common/styles.c.

References _collect_style(), dt_style_repository_get_style(), and name.

◆ dt_styles_get_description()

gchar * dt_styles_get_description ( const char *  name)

get a description of a named style

Definition at line 1240 of file src/common/styles.c.

References dt_style_repository_get_description(), dt_styles_get_id_by_name(), and name.

Referenced by _gui_styles_dialog_run(), dt_styles_save_to_file(), and dt_styles_update().

◆ dt_styles_get_id_by_name()

◆ dt_styles_get_item_list()

GList * dt_styles_get_item_list ( const char *  name,
gboolean  params,
int32_t  imgid 
)

get a list of items for a named style if imgid != UNKNOWN_IMAGE, then styles from the corresponding image are also reported if they are not already part of the style

Definition at line 841 of file src/common/styles.c.

References _prepend_item(), dt_style_repository_foreach_item(), dt_style_repository_foreach_item_against_image(), dt_style_repository_foreach_item_with_params(), dt_styles_get_id_by_name(), name, _item_list_ctx_t::result, and UNKNOWN_IMAGE.

Referenced by _apply_style_before_export(), _gui_styles_dialog_run(), and dt_styles_get_item_list_as_string().

◆ dt_styles_get_item_list_as_string()

char * dt_styles_get_item_list_as_string ( const char *  name)

get list of items for a named style as a nice string

Definition at line 857 of file src/common/styles.c.

References dt_free_gpointer(), dt_style_item_free(), dt_styles_get_item_list(), dt_util_glist_to_str(), FALSE, IS_NULL_PTR, items, name, dt_style_item_t::name, and names.

Referenced by _gui_styles_update_view(), and _styles_build_tooltip().

◆ dt_styles_get_list()

GList * dt_styles_get_list ( const char *  filter)

◆ dt_styles_has_module_order()

gboolean dt_styles_has_module_order ( const char *  name)

returns TRUE if the style has a module order defined

Definition at line 140 of file src/common/styles.c.

References dt_free, dt_style_repository_get_iop_list(), and name.

Referenced by _gui_styles_dialog_run(), and _styles_apply_callback().

◆ dt_styles_import_from_file()

void dt_styles_import_from_file ( const char *  style_path)

◆ dt_styles_module_order_list()

◆ dt_styles_save_to_file()

◆ dt_styles_start_tag_handler()

static void dt_styles_start_tag_handler ( GMarkupParseContext *  context,
const gchar *  element_name,
const gchar **  attribute_names,
const gchar **  attribute_values,
gpointer  user_data,
GError **  error 
)
static

◆ dt_styles_style_data_free()

static void dt_styles_style_data_free ( StyleData style,
gboolean  free_segments 
)
static

◆ dt_styles_style_data_new()

static StyleData * dt_styles_style_data_new ( )
static

◆ dt_styles_style_plugin_new()

◆ dt_styles_style_text_handler()

◆ dt_styles_update()

void dt_styles_update ( const char *  name,
const char *  newname,
const char *  description,
GList *  filter,
const int32_t  imgid,
GList *  update,
const gboolean  copy_iop_order,
const gboolean  update_iop_order 
)

Variable Documentation

◆ dt_style_parser

GMarkupParser dt_style_parser
static
Initial value:
= {
NULL,
NULL
}
static void dt_styles_end_tag_handler(GMarkupParseContext *context, const gchar *element_name, gpointer user_data, GError **error)
static void dt_styles_style_text_handler(GMarkupParseContext *context, const gchar *text, gsize text_len, gpointer user_data, GError **error)
static void dt_styles_start_tag_handler(GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer user_data, GError **error)

Definition at line 1132 of file src/common/styles.c.

Referenced by dt_styles_import_from_file().