Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
libs/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
49#ifdef USE_LUA
50#include "lua/call.h"
51#include "lua/events.h"
52#include "lua/lib.h"
53#include "lua/modules.h"
54#include "lua/types.h"
55#endif
56
57struct dt_lib_module_t;
59
61typedef struct dt_lib_t
62{
63 GList *plugins;
65
67 struct
68 {
69 struct
70 {
71 struct dt_lib_module_t *module;
75
76
77typedef struct dt_lib_module_t
78{
79 // Needs to stay on top for casting
81
82#define INCLUDE_API_FROM_MODULE_H
83#include "libs/lib_api.h"
84
86 GModule *module;
88 void *data;
90 char plugin_name[128];
99
103
105
106void dt_lib_init(dt_lib_t *lib);
107void dt_lib_cleanup(dt_lib_t *lib);
108
112void dt_lib_gui_set_expanded(dt_lib_module_t *module, gboolean expanded);
115
118
120gboolean dt_lib_is_visible(dt_lib_module_t *module);
122void dt_lib_set_visible(dt_lib_module_t *module, gboolean visible);
125
127gchar *dt_lib_get_localized_name(const gchar *plugin_name);
128
132void dt_lib_presets_add(const char *name, const char *plugin_name, const int32_t version, const void *params,
133 const int32_t params_size, gboolean readonly);
134
136void dt_lib_queue_postponed_update(dt_lib_module_t *mod, void (*update_fn)(dt_lib_module_t *self));
139
140// apply a preset to the given module
141gboolean dt_lib_presets_apply(const gchar *preset, const gchar *module_name, int module_version);
142// duplicate a preset
143gchar *dt_lib_presets_duplicate(const gchar *preset, const gchar *module_name, int module_version);
144// remove a preset
145void dt_lib_presets_remove(const gchar *preset, const gchar *module_name, int module_version);
146// update a preset
147void dt_lib_presets_update(const gchar *preset, const gchar *module_name, int module_version, const gchar *newname,
148 const gchar *desc, const void *params, const int32_t params_size);
149// know if the module can autoapply presets
151
152/*
153 * Proxy functions
154 */
155
158
160void dt_lib_colorpicker_set_point(dt_lib_t *lib, const float pos[2]);
161
163gint dt_lib_sort_plugins(gconstpointer a, gconstpointer b);
166
168gboolean dt_handle_dialog_enter(GtkWidget *widget, GdkEventKey *event, gpointer data);
169
171GtkWidget *dt_action_button_new(dt_lib_module_t *self, const gchar *label, gpointer callback, gpointer data,
172 const gchar *tooltip, guint accel_key, GdkModifierType mods);
173
174// clang-format off
175// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
176// vim: shiftwidth=2 expandtab tabstop=2 cindent
177// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
178// clang-format on
size_t params_size(dt_imageio_module_format_t *self)
Definition avif.c:624
const float b
Definition colorspaces_inline_conversions.h:1326
const float a
Definition colorspaces_inline_conversions.h:1292
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
const char * tooltip
Definition common/image.h:217
char * name
Definition common/metadata.c:61
uint32_t view(const dt_view_t *self)
Definition darkroom.c:194
float dt_boundingbox_t[4]
Definition darktable.h:630
struct dt_iop_tonecurve_params_t preset
Definition iop/tonecurve.c:454
gboolean dt_handle_dialog_enter(GtkWidget *widget, GdkEventKey *event, gpointer data)
Definition libs/lib.c:1405
gboolean dt_lib_presets_can_autoapply(dt_lib_module_t *mod)
Definition libs/lib.c:1400
gint dt_lib_sort_plugins(gconstpointer a, gconstpointer b)
Definition libs/lib.c:647
void dt_lib_colorpicker_set_box_area(dt_lib_t *lib, const dt_boundingbox_t box)
Definition libs/lib.c:1316
void dt_lib_cancel_postponed_update(dt_lib_module_t *mod)
Definition libs/lib.c:1390
gboolean dt_lib_gui_get_expanded(dt_lib_module_t *module)
Definition libs/lib.c:1021
void dt_lib_init(dt_lib_t *lib)
Definition libs/lib.c:1188
void dt_lib_presets_remove(const gchar *preset, const gchar *module_name, int module_version)
Definition libs/lib.c:390
void dt_lib_init_presets(dt_lib_module_t *module)
Definition libs/lib.c:776
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 libs/lib.c:1415
gboolean dt_lib_is_visible_in_view(dt_lib_module_t *module, const dt_view_t *view)
Definition libs/lib.c:132
void dt_lib_queue_postponed_update(dt_lib_module_t *mod, void(*update_fn)(dt_lib_module_t *self))
Definition libs/lib.c:1378
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 libs/lib.c:1217
gboolean dt_lib_presets_apply(const gchar *preset, const gchar *module_name, int module_version)
Definition libs/lib.c:411
void dt_lib_colorpicker_set_point(dt_lib_t *lib, const float pos[2])
Definition libs/lib.c:1335
gboolean dt_lib_is_visible(dt_lib_module_t *module)
Definition libs/lib.c:1268
gchar * dt_lib_presets_duplicate(const gchar *preset, const gchar *module_name, int module_version)
Definition libs/lib.c:334
void dt_lib_gui_set_expanded(dt_lib_module_t *module, gboolean expanded)
Definition libs/lib.c:990
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 libs/lib.c:462
dt_lib_module_t * dt_lib_get_module(const char *name)
Definition libs/lib.c:1353
void dt_lib_set_visible(dt_lib_module_t *module, gboolean visible)
Definition libs/lib.c:1278
void dt_lib_cleanup(dt_lib_t *lib)
Definition libs/lib.c:1196
GtkWidget * dt_lib_gui_get_expander(dt_lib_module_t *module)
Definition libs/lib.c:1115
gchar * dt_lib_get_localized_name(const gchar *plugin_name)
Definition libs/lib.c:1299
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 libs/lib.h:78
GtkWidget * expander
Definition libs/lib.h:94
GtkWidget * reset_button
Definition libs/lib.h:101
GtkWidget * presets_button
Definition libs/lib.h:102
void(* _postponed_update)(struct dt_lib_module_t *self)
Definition libs/lib.h:96
char plugin_name[128]
Definition libs/lib.h:90
dt_gui_module_t common_fields
Definition libs/lib.h:80
GModule *void * data
Definition libs/lib.h:88
GtkWidget * arrow
Definition libs/lib.h:100
GtkWidget * widget
Definition libs/lib.h:92
guint timeout_handle
Definition libs/lib.h:98
Definition libs/lib.h:62
struct dt_lib_t::@58::@59 navigation
struct dt_lib_module_t * gui_module
Definition libs/lib.h:64
struct dt_lib_t::@58 proxy
GList * plugins
Definition libs/lib.h:63
Definition views/view.h:123