Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
lib.h
Go to the documentation of this file.
1/*
2 This file is part of darktable,
3 Copyright (C) 2009-2012 johannes hanika.
4 Copyright (C) 2010-2012 Henrik Andersson.
5 Copyright (C) 2011 Brian Teague.
6 Copyright (C) 2011 Robert Bieber.
7 Copyright (C) 2011-2014, 2016-2017 Tobias Ellinghaus.
8 Copyright (C) 2012 Richard Wonka.
9 Copyright (C) 2014-2016 Jérémy Rosen.
10 Copyright (C) 2014, 2016 Roman Lebedev.
11 Copyright (C) 2019-2021 Aldric Renaudin.
12 Copyright (C) 2019 Edgardo Hoszowski.
13 Copyright (C) 2019 Heiko Bauke.
14 Copyright (C) 2019-2021 Pascal Obry.
15 Copyright (C) 2020-2021 Dan Torop.
16 Copyright (C) 2020-2022 Diederik Ter Rahe.
17 Copyright (C) 2020 Matthias Vogelgesang.
18 Copyright (C) 2020, 2022 Philippe Weyland.
19 Copyright (C) 2020 Ralf Brown.
20 Copyright (C) 2021 Mark-64.
21 Copyright (C) 2022 luzpaz.
22 Copyright (C) 2022 Martin Bařinka.
23 Copyright (C) 2024-2025 Aurélien PIERRE.
24
25 darktable is free software: you can redistribute it and/or modify
26 it under the terms of the GNU General Public License as published by
27 the Free Software Foundation, either version 3 of the License, or
28 (at your option) any later version.
29
30 darktable is distributed in the hope that it will be useful,
31 but WITHOUT ANY WARRANTY; without even the implied warranty of
32 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
33 GNU General Public License for more details.
34
35 You should have received a copy of the GNU General Public License
36 along with darktable. If not, see <http://www.gnu.org/licenses/>.
37*/
38
39#pragma once
40
41#include "common/darktable.h"
42#include "common/iop_profile.h"
44#include "views/view.h"
45#include <gmodule.h>
46#include <gtk/gtk.h>
47#include <glib.h>
48
49struct dt_lib_module_t;
51
53typedef struct dt_lib_t
54{
55 GList *plugins;
57
59 struct
60 {
61 struct
62 {
63 struct dt_lib_module_t *module;
67
68
69typedef struct dt_lib_module_t
70{
71 // Needs to stay on top for casting
73
74#define INCLUDE_API_FROM_MODULE_H
75#include "libs/lib_api.h"
76
78 GModule *module;
80 void *data;
82 char plugin_name[128];
91
95
97
98void dt_lib_init(dt_lib_t *lib);
99void dt_lib_cleanup(dt_lib_t *lib);
100
104void dt_lib_gui_set_expanded(dt_lib_module_t *module, gboolean expanded);
107
110
112gboolean dt_lib_is_visible(dt_lib_module_t *module);
114void dt_lib_set_visible(dt_lib_module_t *module, gboolean visible);
117
119gchar *dt_lib_get_localized_name(const gchar *plugin_name);
120
124void dt_lib_presets_add(const char *name, const char *plugin_name, const int32_t version, const void *params,
125 const int32_t params_size, gboolean readonly);
126
128void dt_lib_queue_postponed_update(dt_lib_module_t *mod, void (*update_fn)(dt_lib_module_t *self));
131
132// apply a preset to the given module
133gboolean dt_lib_presets_apply(const gchar *preset, const gchar *module_name, int module_version);
134// duplicate a preset
135gchar *dt_lib_presets_duplicate(const gchar *preset, const gchar *module_name, int module_version);
136// remove a preset
137void dt_lib_presets_remove(const gchar *preset, const gchar *module_name, int module_version);
138// update a preset
139void dt_lib_presets_update(const gchar *preset, const gchar *module_name, int module_version, const gchar *newname,
140 const gchar *desc, const void *params, const int32_t params_size);
141// know if the module can autoapply presets
143
144/*
145 * Proxy functions
146 */
147
150
152void dt_lib_colorpicker_set_point(dt_lib_t *lib, const float pos[2]);
153
155gint dt_lib_sort_plugins(gconstpointer a, gconstpointer b);
158
160gboolean dt_handle_dialog_enter(GtkWidget *widget, GdkEventKey *event, gpointer data);
161
163GtkWidget *dt_action_button_new(dt_lib_module_t *self, const gchar *label, gpointer callback, gpointer data,
164 const gchar *tooltip, guint accel_key, GdkModifierType mods);
165
166// clang-format off
167// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
168// vim: shiftwidth=2 expandtab tabstop=2 cindent
169// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
170// clang-format on
size_t params_size(dt_imageio_module_format_t *self)
Definition avif.c:565
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
char * name
Definition common/metadata.c:61
uint32_t view(const dt_view_t *self)
Definition darkroom.c:191
float dt_boundingbox_t[4]
Definition darktable.h:709
const char * tooltip
Definition image.h:217
struct dt_iop_tonecurve_params_t preset
Definition iop/tonecurve.c:449
gboolean dt_handle_dialog_enter(GtkWidget *widget, GdkEventKey *event, gpointer data)
Definition lib.c:1452
gboolean dt_lib_presets_can_autoapply(dt_lib_module_t *mod)
Definition lib.c:1447
gint dt_lib_sort_plugins(gconstpointer a, gconstpointer b)
Definition lib.c:647
void dt_lib_colorpicker_set_box_area(dt_lib_t *lib, const dt_boundingbox_t box)
Definition lib.c:1363
void dt_lib_cancel_postponed_update(dt_lib_module_t *mod)
Definition lib.c:1437
gboolean dt_lib_gui_get_expanded(dt_lib_module_t *module)
Definition lib.c:1049
void dt_lib_init(dt_lib_t *lib)
Definition lib.c:1231
void dt_lib_presets_remove(const gchar *preset, const gchar *module_name, int module_version)
Definition lib.c:390
void dt_lib_init_presets(dt_lib_module_t *module)
Definition lib.c:773
GtkWidget * dt_action_button_new(dt_lib_module_t *self, const gchar *label, gpointer callback, gpointer data, const gchar *tooltip, guint accel_key, GdkModifierType mods)
Definition lib.c:1462
gboolean dt_lib_is_visible_in_view(dt_lib_module_t *module, const dt_view_t *view)
Definition lib.c:132
void dt_lib_queue_postponed_update(dt_lib_module_t *mod, void(*update_fn)(dt_lib_module_t *self))
Definition lib.c:1425
void dt_lib_presets_add(const char *name, const char *plugin_name, const int32_t version, const void *params, const int32_t params_size, gboolean readonly)
Definition lib.c:1260
gboolean dt_lib_presets_apply(const gchar *preset, const gchar *module_name, int module_version)
Definition lib.c:411
void dt_lib_colorpicker_set_point(dt_lib_t *lib, const float pos[2])
Definition lib.c:1382
gboolean dt_lib_is_visible(dt_lib_module_t *module)
Definition lib.c:1312
gchar * dt_lib_presets_duplicate(const gchar *preset, const gchar *module_name, int module_version)
Definition lib.c:334
void dt_lib_gui_set_expanded(dt_lib_module_t *module, gboolean expanded)
Definition lib.c:1013
void dt_lib_presets_update(const gchar *preset, const gchar *module_name, int module_version, const gchar *newname, const gchar *desc, const void *params, const int32_t params_size)
Definition lib.c:462
dt_lib_module_t * dt_lib_get_module(const char *name)
Definition lib.c:1400
void dt_lib_set_visible(dt_lib_module_t *module, gboolean visible)
Definition lib.c:1322
void dt_lib_cleanup(dt_lib_t *lib)
Definition lib.c:1239
GtkWidget * dt_lib_gui_get_expander(dt_lib_module_t *module)
Definition lib.c:1157
gchar * dt_lib_get_localized_name(const gchar *plugin_name)
Definition lib.c:1346
struct _GtkWidget GtkWidget
Definition splash.h:29
Definition colorpicker.h:53
The dt_gui_module_t type is the intersection between a dt_lib_module_t and a dt_iop_module_t structur...
Definition gui_module_api.h:42
Definition lib.h:70
GtkWidget * expander
Definition lib.h:86
GtkWidget * reset_button
Definition lib.h:93
GtkWidget * presets_button
Definition lib.h:94
void(* _postponed_update)(struct dt_lib_module_t *self)
Definition lib.h:88
char plugin_name[128]
Definition lib.h:82
dt_gui_module_t common_fields
Definition lib.h:72
GModule *void * data
Definition lib.h:80
GtkWidget * arrow
Definition lib.h:92
GtkWidget * widget
Definition lib.h:84
guint timeout_handle
Definition lib.h:90
Definition lib.h:54
struct dt_lib_t::@58::@59 navigation
struct dt_lib_module_t * gui_module
Definition lib.h:56
struct dt_lib_t::@58 proxy
GList * plugins
Definition lib.h:55
Definition view.h:149