Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
bauhaus.h
Go to the documentation of this file.
1/*
2 This file is part of darktable,
3 Copyright (C) 2012-2014, 2016 johannes hanika.
4 Copyright (C) 2012, 2019 parafin.
5 Copyright (C) 2012 Richard Wonka.
6 Copyright (C) 2012-2014, 2016-2019 Tobias Ellinghaus.
7 Copyright (C) 2012, 2016 Ulrich Pegelow.
8 Copyright (C) 2013, 2019, 2021-2022 Aldric Renaudin.
9 Copyright (C) 2013 Dennis Gnad.
10 Copyright (C) 2013 Simon Spannagel.
11 Copyright (C) 2013 Yari Adan.
12 Copyright (C) 2015 Jérémy Rosen.
13 Copyright (C) 2016 Roman Lebedev.
14 Copyright (C) 2017, 2020-2021 Dan Torop.
15 Copyright (C) 2018 David Polak.
16 Copyright (C) 2018, 2020-2021 Pascal Obry.
17 Copyright (C) 2018 Peter Budai.
18 Copyright (C) 2019-2020, 2022-2023, 2025 Aurélien PIERRE.
19 Copyright (C) 2019-2020 Heiko Bauke.
20 Copyright (C) 2020-2022 Diederik Ter Rahe.
21 Copyright (C) 2020 Hubert Kowalski.
22 Copyright (C) 2021 Philippe Weyland.
23 Copyright (C) 2022 Martin Bařinka.
24 Copyright (C) 2025 Alynx Zhou.
25 Copyright (C) 2025-2026 Guillaume Stutin.
26
27 darktable is free software: you can redistribute it and/or modify
28 it under the terms of the GNU General Public License as published by
29 the Free Software Foundation, either version 3 of the License, or
30 (at your option) any later version.
31
32 darktable is distributed in the hope that it will be useful,
33 but WITHOUT ANY WARRANTY; without even the implied warranty of
34 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
35 GNU General Public License for more details.
36
37 You should have received a copy of the GNU General Public License
38 along with darktable. If not, see <http://www.gnu.org/licenses/>.
39*/
40
41#pragma once
42
43#include "common/colorlabels.h"
46
47#include <assert.h>
48#include <gdk/gdkkeysyms.h>
49#include <gtk/gtk.h>
50#include <inttypes.h>
51#include <math.h>
52#include <stdlib.h>
53#include <string.h>
54
55#ifdef __cplusplus
56extern "C" {
57#endif
58
59#define DT_BAUHAUS_WIDGET_TYPE dt_bh_get_type()
60#define DT_BAUHAUS_WIDGET(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), DT_BAUHAUS_WIDGET_TYPE, DtBauhausWidget)
61#define DT_BAUHAUS_WIDGET_CLASS(obj) G_TYPE_CHECK_CLASS_CAST((obj), DT_BAUHAUS_WIDGET, DtBauhausWidgetClass)
62#define DT_IS_BAUHAUS_WIDGET(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), DT_BAUHAUS_WIDGET_TYPE)
63#define DT_IS_BAUHAUS_WIDGET_CLASS(obj) G_TYPE_CHECK_CLASS_TYPE((obj), DT_BAUHAUS_WIDGET_TYPE)
64#define DT_BAUHAUS_WIDGET_GET_CLASS \
65 G_TYPE_INSTANCE_GET_CLASS((obj), DT_BAUHAUS_WIDGET_TYPE, DtBauhausWidgetClass)
66
68
69#define DT_BAUHAUS_SLIDER_VALUE_CHANGED_DELAY_MAX 500
70#define DT_BAUHAUS_SLIDER_VALUE_CHANGED_DELAY_MIN 25
71#define DT_BAUHAUS_SLIDER_MAX_STOPS 20
72#define DT_BAUHAUS_COMBO_MAX_TEXT 180
73#define DT_BAUHAUS_COMBO_SEPARATOR_DEFAULT_HEIGHT_FACTOR 0.6f
74
75// INTERNAL_PADDING is the horizontal space between slider and quad
76#define INTERNAL_PADDING DT_GUI_BOX_SPACING
77
78// INNER_PADDING is the vertical space between labels and slider baseline
79#define INNER_PADDING 2.
80
81
83
85{
88 // TODO: all the fancy color sliders..
90
96
97// data portion for a slider
99{
100 float pos; // normalized slider value
101 float oldpos; // slider value before entering finetune mode (normalized)
102 float step; // step width (not normalized)
103 float defpos; // default value (not normalized)
104 float min, max; // min and max range
107 int digits; // how many decimals to round to
108
109 float (*grad_col)[3]; // colors for gradient slider
110 int grad_cnt; // how many stops
111 float *grad_pos; // and position of these.
112
113 int fill_feedback : 1; // fill the slider with brighter part up to the handle?
114
115 const char *format; // numeric value is printed with this format
116 float factor; // multiplication factor before printing
117 float offset; // addition before printing
118
119 gboolean is_dragging; // indicates is mouse is dragging slider
121
127
128// data portion for a combobox
130{
131 char *label;
132 char *tooltip;
134 gboolean sensitive;
135 gboolean is_separator;
137 gpointer data;
138 void (*free_func)(gpointer); // callback to free data elements
140
142{
143 int active; // currently active element
144 int hovered; // currently hovered element, to be used by drawings until and if it is set to active
145 int defpos; // default position
146 int editable; // 1 if arbitrary text may be typed
147 dt_bauhaus_combobox_alignment_t text_align; // if selected text in combo should be aligned to the left/right
148 char *text; // to hold arbitrary text if editable
149 PangoEllipsizeMode entries_ellipsis;
150 GPtrArray *entries;
151 void (*populate)(GtkWidget *w, void *module); // function to populate the combo list on the fly
153
154typedef union dt_bauhaus_data_t
155{
156 // this is the placeholder for the data portions
157 // associated with the implementations such as
158 // sliders, combo boxes, ..
162
163// gah, caps.
166
167typedef void (*dt_bauhaus_quad_paint_f)(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data);
168typedef int (*dt_bauhaus_resize_handle_get_size_f)(gpointer user_data);
169typedef int (*dt_bauhaus_resize_handle_resize_f)(int requested_size, gboolean finished, gpointer user_data);
170
171// our new widget and its private members, inheriting from drawing area:
173{
174 // gtk base widget
175 GtkDrawingArea parent;
176 // which type of control
178 // associated image operation module (to handle focus and such)
179 dt_gui_module_t *module;
180 // pointer to iop field linked to widget
181 gpointer field;
182 // type of field
184
185 // label text, short
186 char label[256];
187 // callback function to draw the quad icon
189 // minimal modifiers for paint function.
191 // data for the paint callback
193 // quad is a toggle button?
195 // show quad icon or space
196 gboolean show_quad;
197
198 // horizontally expand to fit container's width. Set to TRUE by default,
199 // assuming vertical columns. Manually set to FALSE if using in toolbar menu.
200 gboolean expand;
201
202 // margin and padding structure, defined in css, retrieve on each draw
203 GtkBorder *margin, *padding;
204
205 // TRUE if accels should not be enabled here.
206 // Use that for blending
207 gboolean no_accels;
209
210 // Reference to the global bauhaus structure holding common styles and such.
212
213 // Use the app-wise default value-changed callback from *bauhaus
214 // or use custom implementation
216
217 // goes last, might extend past the end:
219
221
222
223// global static data:
224enum
225{
230
231
232// class of our new widget, inheriting from drawing area
234{
235 GtkDrawingAreaClass parent_class;
236
237 // our custom signals
240
242{
243 // The bauhaus widget popup is shared across widgets,
244 // so we need to track which one is currently capturing it
248
249 // are set by the motion notification, to be used during drawing.
251
252 // time when the popup window was opened. this is sortof a hack to
253 // detect `double clicks between windows' to reset the combobox.
254 guint32 opentime;
255 // pointer position when popup window is closed
257 // used to determine whether the user crossed the line already.
260 // key input buffer
261 char keys[64];
263
264 // flag set on button press indicating that popup should be hidden in button release handler
265 gboolean hiding;
266
267 // appearance relevant stuff:
268 // sizes and fonts:
269 float line_height; // height of a line of text
270 float marker_size; // height of the slider indicator
271 float baseline_size; // height of the slider bar
272 float border_width; // width of the border of the slider marker
273 float quad_width; // width of the quad area to paint icons
274 PangoFontDescription *pango_font_desc; // no need to recreate this for every string we want to print
275
276 // colors for sliders and comboboxes
279
280 // colors for graphs
283 GdkRGBA graph_colors[3]; // primaries
285
286 // View-wise default callback to wire to the value-changed signal
287 // if the widget declaration sets the boolean
289};
290
291#define DT_BAUHAUS_SPACE 0
292
293
296
297// load theme colors, fonts, etc
299
300// common functions:
301// set the label text:
302void dt_bauhaus_widget_set_label(GtkWidget *w, const char *label);
304// attach a custom painted quad to the space at the right side (overwriting the default icon if any):
305void dt_bauhaus_widget_set_quad_paint(GtkWidget *w, dt_bauhaus_quad_paint_f f, int paint_flags, void *paint_data);
306// make this quad a toggle button:
308// set active status for the quad toggle button:
310// get active status for the quad toggle button:
312// set quad visibility:
313void dt_bauhaus_widget_set_quad_visibility(GtkWidget *w, const gboolean visible);
314// set pointer to iop params field:
316
319
338GtkWidget *dt_bauhaus_resize_handle_new(GtkOrientation orientation, gboolean invert, const char *tooltip,
340 dt_bauhaus_resize_handle_resize_f resize, gpointer user_data);
341
342// slider:
345 float defval, int digits);
347 float step, float defval, int digits, int feedback);
348
350 float step, float defval, int digits, int feedback);
351
352// outside doesn't see the real type, we cast it internally.
353void dt_bauhaus_slider_set(GtkWidget *w, float pos);
354void dt_bauhaus_slider_set_val(GtkWidget *w, float val);
357char *dt_bauhaus_slider_get_text(GtkWidget *w, float val);
358
359void dt_bauhaus_slider_set_soft_min(GtkWidget* w, float val);
361void dt_bauhaus_slider_set_soft_max(GtkWidget* w, float val);
363void dt_bauhaus_slider_set_soft_range(GtkWidget *widget, float soft_min, float soft_max);
364
365void dt_bauhaus_slider_set_hard_min(GtkWidget* w, float val);
367void dt_bauhaus_slider_set_hard_max(GtkWidget* w, float val);
369
372void dt_bauhaus_slider_set_step(GtkWidget *w, float val);
374
375void dt_bauhaus_slider_set_feedback(GtkWidget *w, int feedback);
376
378void dt_bauhaus_slider_set_format(GtkWidget *w, const char *format);
380void dt_bauhaus_slider_set_offset(GtkWidget *w, float offset);
381void dt_bauhaus_slider_set_stop(GtkWidget *widget, float stop, float r, float g, float b);
383void dt_bauhaus_slider_set_default(GtkWidget *widget, float def);
384
385// combobox:
389 const char *label, const char *tip, int pos, GtkCallback callback,
390 gpointer data, const char **texts);
391
392#define DT_BAUHAUS_COMBOBOX_NEW_FULL(bauhaus, widget, action, label, tip, pos, callback, data, ...) \
393{ \
394 static const gchar *texts[] = { __VA_ARGS__, NULL }; \
395 widget = dt_bauhaus_combobox_new_full(bauhaus, action, label, tip, pos, callback, data, texts); \
396}
397
398// Build a combobox from a <dtconfig> entry of anselconfig.xml.in whose <type> is <enum>.
399// Entries are pre-filled from the <enum><option> list (translated for display), the widget
400// is pre-selected from the current dt_conf value, and any later user selection is written
401// back to that same config key. Returns NULL if `confkey` is not a known enum config entry.
403
404void dt_bauhaus_combobox_add(GtkWidget *widget, const char *text);
405void dt_bauhaus_combobox_add_with_tooltip(GtkWidget *widget, const char *text, const char *tooltip);
408 gpointer data, void (*free_func)(void *data), gboolean sensitive);
409// Separators are visual-only rows and don't count in public combobox indexes.
411void dt_bauhaus_combobox_add_separator_with_height(GtkWidget *widget, float row_height_factor);
412void dt_bauhaus_combobox_set(GtkWidget *w, int pos);
413gboolean dt_bauhaus_combobox_set_from_text(GtkWidget *w, const char *text);
415void dt_bauhaus_combobox_remove_at(GtkWidget *widget, int pos);
416void dt_bauhaus_combobox_insert(GtkWidget *widget, const char *text,int pos);
418 gpointer data, void (*free_func)(void *data), int pos);
419// Insert before public index pos, or at the end when pos == dt_bauhaus_combobox_length().
421void dt_bauhaus_combobox_insert_separator_with_height(GtkWidget *widget, int pos, float row_height_factor);
423void dt_bauhaus_combobox_set_editable(GtkWidget *w, int editable);
427void dt_bauhaus_combobox_set_text(GtkWidget *w, const char *text);
429const char *dt_bauhaus_combobox_get_entry(GtkWidget *w, int pos);
432void dt_bauhaus_combobox_set_default(GtkWidget *widget, int def);
433void dt_bauhaus_combobox_add_populate_fct(GtkWidget *widget, void (*fct)(GtkWidget *w, void *module));
434void dt_bauhaus_combobox_add_list(GtkWidget *widget, const char **texts);
435void dt_bauhaus_combobox_entry_set_sensitive(GtkWidget *widget, int pos, gboolean sensitive);
436void dt_bauhaus_combobox_set_entries_ellipsis(GtkWidget *widget, PangoEllipsizeMode ellipis);
437
438/* Disable accels for this widget.
439* WARNING: accels are inited when setting the widget label. This function should be called before.
440* It will be useless for the "one-line" init & setter functions.
441*/
445
446static inline void set_color(cairo_t *cr, GdkRGBA color)
447{
448 cairo_set_source_rgba(cr, color.red, color.green, color.blue, color.alpha);
449}
450
458
459#ifdef __cplusplus
460}
461#endif
462
463// clang-format off
464// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
465// vim: shiftwidth=2 expandtab tabstop=2 cindent
466// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
467// clang-format on
GtkWidget * dt_bauhaus_slider_new(dt_bauhaus_t *bh, dt_gui_module_t *self)
Definition bauhaus.c:1775
float dt_bauhaus_slider_get_hard_max(GtkWidget *w)
Definition bauhaus.c:1601
float dt_bauhaus_slider_get(GtkWidget *w)
Definition bauhaus.c:3483
void dt_bauhaus_combobox_add_separator_with_height(GtkWidget *widget, float row_height_factor)
Definition bauhaus.c:2055
void dt_bauhaus_widget_set_label(GtkWidget *w, const char *label)
Definition bauhaus.c:1653
GtkWidget * dt_bauhaus_combobox_new_full(dt_bauhaus_t *bh, dt_gui_module_t *self, const char *label, const char *tip, int pos, GtkCallback callback, gpointer data, const char **texts)
Definition bauhaus.c:1849
dt_bauhaus_combobox_alignment_t
Definition bauhaus.h:123
@ DT_BAUHAUS_COMBOBOX_ALIGN_RIGHT
Definition bauhaus.h:125
@ DT_BAUHAUS_COMBOBOX_ALIGN_LEFT
Definition bauhaus.h:124
@ DT_BAUHAUS_LAST_SIGNAL
Definition bauhaus.h:228
@ DT_BAUHAUS_QUAD_PRESSED_SIGNAL
Definition bauhaus.h:227
@ DT_BAUHAUS_VALUE_CHANGED_SIGNAL
Definition bauhaus.h:226
int dt_bauhaus_widget_get_quad_active(GtkWidget *w)
Definition bauhaus.c:1743
void dt_bauhaus_slider_set_soft_range(GtkWidget *widget, float soft_min, float soft_max)
Definition bauhaus.c:1647
gboolean dt_bauhaus_combobox_set_from_text(GtkWidget *w, const char *text)
Definition bauhaus.c:2311
void dt_bauhaus_widget_set_quad_visibility(GtkWidget *w, const gboolean visible)
Definition bauhaus.c:1736
void dt_bauhaus_combobox_insert(GtkWidget *widget, const char *text, int pos)
Definition bauhaus.c:2118
void dt_bauhaus_widget_set_quad_paint(GtkWidget *w, dt_bauhaus_quad_paint_f f, int paint_flags, void *paint_data)
Definition bauhaus.c:1702
void dt_bauhaus_slider_set_step(GtkWidget *w, float val)
Definition bauhaus.c:3548
void dt_bauhaus_slider_clear_stops(GtkWidget *widget)
Definition bauhaus.c:2364
char * dt_bauhaus_slider_get_text(GtkWidget *w, float val)
Definition bauhaus.c:3497
void dt_bauhaus_combobox_set_selected_text_align(GtkWidget *widget, const dt_bauhaus_combobox_alignment_t text_align)
Definition bauhaus.c:2092
void dt_bauhaus_hide_popup(dt_bauhaus_t *bh)
Definition bauhaus.c:3172
void dt_bauhaus_slider_reset(GtkWidget *widget)
Definition bauhaus.c:3588
void dt_bauhaus_cleanup(dt_bauhaus_t *bauhaus)
Definition bauhaus.c:1500
void dt_bauhaus_slider_set_default(GtkWidget *widget, float def)
Definition bauhaus.c:1640
void dt_bauhaus_slider_set_stop(GtkWidget *widget, float stop, float r, float g, float b)
Definition bauhaus.c:2372
void dt_bauhaus_load_theme(dt_bauhaus_t *bauhaus)
Definition bauhaus.c:1289
const char * dt_bauhaus_combobox_get_entry(GtkWidget *w, int pos)
Definition bauhaus.c:2199
void dt_bauhaus_slider_set_hard_max(GtkWidget *w, float val)
Definition bauhaus.c:1583
void dt_bauhaus_combobox_entry_set_sensitive(GtkWidget *widget, int pos, gboolean sensitive)
Definition bauhaus.c:2354
void dt_bauhaus_slider_set_digits(GtkWidget *w, int val)
Definition bauhaus.c:3534
float dt_bauhaus_slider_get_soft_max(GtkWidget *w)
Definition bauhaus.c:1633
int dt_bauhaus_combobox_get(GtkWidget *w)
Definition bauhaus.c:2347
GtkWidget * dt_bauhaus_slider_new_with_range_and_feedback(dt_bauhaus_t *bh, dt_gui_module_t *self, float min, float max, float step, float defval, int digits, int feedback)
Definition bauhaus.c:1786
void dt_bauhaus_widget_set_field(GtkWidget *w, gpointer field, dt_introspection_type_t field_type)
Definition bauhaus.c:1710
void dt_bauhaus_widget_set_quad_active(GtkWidget *w, int active)
Definition bauhaus.c:1726
float dt_bauhaus_slider_get_hard_min(GtkWidget *w)
Definition bauhaus.c:1576
GtkWidget * dt_bauhaus_combobox_from_conf(dt_bauhaus_t *bh, dt_gui_module_t *self, const char *confkey)
Definition bauhaus.c:1868
int dt_bauhaus_slider_get_digits(GtkWidget *w)
Definition bauhaus.c:3541
void dt_bauhaus_combobox_clear(GtkWidget *w)
Definition bauhaus.c:2189
void dt_bauhaus_disable_module_list(GtkWidget *widget)
Definition bauhaus.c:3948
void dt_bauhaus_slider_set_factor(GtkWidget *w, float factor)
Definition bauhaus.c:3611
void dt_bauhaus_slider_set_soft_max(GtkWidget *w, float val)
Definition bauhaus.c:1624
float dt_bauhaus_slider_get_soft_min(GtkWidget *w)
Definition bauhaus.c:1617
dt_bauhaus_type_t
Definition bauhaus.h:85
@ DT_BAUHAUS_COMBOBOX
Definition bauhaus.h:87
@ DT_BAUHAUS_SLIDER
Definition bauhaus.h:86
void dt_bauhaus_slider_set_soft_min(GtkWidget *w, float val)
Definition bauhaus.c:1608
void dt_bauhaus_slider_set_val(GtkWidget *w, float val)
Definition bauhaus.c:3528
void dt_bauhaus_combobox_set_entries_ellipsis(GtkWidget *widget, PangoEllipsizeMode ellipis)
Definition bauhaus.c:2064
#define DT_BAUHAUS_WIDGET_TYPE
Definition bauhaus.h:59
static void set_color(cairo_t *cr, GdkRGBA color)
Definition bauhaus.h:446
void dt_bauhaus_combobox_insert_separator(GtkWidget *widget, int pos)
Definition bauhaus.c:2138
void dt_bauhaus_slider_set_feedback(GtkWidget *w, int feedback)
Definition bauhaus.c:3580
void dt_bauhaus_set_use_default_callback(GtkWidget *widget)
Tell the widget to use the globally-defined default callback in the bauhaus structure This callback n...
Definition bauhaus.c:3954
int dt_bauhaus_combobox_length(GtkWidget *widget)
Definition bauhaus.c:2155
void dt_bauhaus_slider_set(GtkWidget *w, float pos)
Definition bauhaus.c:3506
void dt_bauhaus_slider_set_format(GtkWidget *w, const char *format)
Definition bauhaus.c:3598
float dt_bauhaus_slider_get_step(GtkWidget *w)
Definition bauhaus.c:3555
void dt_bauhaus_combobox_set_default(GtkWidget *widget, int def)
Definition bauhaus.c:1551
void dt_bauhaus_widget_set_quad_toggle(GtkWidget *w, int toggle)
Definition bauhaus.c:1720
gpointer dt_bauhaus_combobox_get_data(GtkWidget *widget)
Definition bauhaus.c:2179
GtkWidget * dt_bauhaus_slider_from_widget(dt_bauhaus_t *bh, dt_bauhaus_widget_t *widget, dt_gui_module_t *self, float min, float max, float step, float defval, int digits, int feedback)
Definition bauhaus.c:1807
void dt_bauhaus_combobox_add_populate_fct(GtkWidget *widget, void(*fct)(GtkWidget *w, void *module))
Definition bauhaus.c:2002
void dt_bauhaus_combobox_add_separator(GtkWidget *widget)
Definition bauhaus.c:2050
void dt_bauhaus_combobox_add_list(GtkWidget *widget, const char **texts)
Definition bauhaus.c:2010
gboolean dt_bauhaus_combobox_set_from_value(GtkWidget *w, int value)
Definition bauhaus.c:2330
int(* dt_bauhaus_resize_handle_get_size_f)(gpointer user_data)
Definition bauhaus.h:168
void dt_bauhaus_disable_accels(GtkWidget *widget)
Definition bauhaus.c:3942
void dt_bauhaus_slider_set_hard_min(GtkWidget *w, float val)
Definition bauhaus.c:1559
GtkWidget * dt_bauhaus_resize_handle_new(GtkOrientation orientation, gboolean invert, const char *tooltip, dt_bauhaus_resize_handle_get_size_f get_size, dt_bauhaus_resize_handle_resize_f resize, gpointer user_data)
Create a themed handle widget driving one-dimensional resize gestures.
Definition bauhaus.c:1179
const char * dt_bauhaus_combobox_get_text(GtkWidget *w)
Definition bauhaus.c:2162
void dt_bauhaus_combobox_insert_full(GtkWidget *widget, const char *text, dt_bauhaus_combobox_alignment_t align, gpointer data, void(*free_func)(void *data), int pos)
const char * dt_bauhaus_widget_get_label(GtkWidget *w)
Definition bauhaus.c:1696
void(* dt_bauhaus_quad_paint_f)(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data)
Definition bauhaus.h:167
int dt_bauhaus_combobox_get_editable(GtkWidget *w)
Definition bauhaus.c:2085
void dt_bauhaus_combobox_set_editable(GtkWidget *w, int editable)
Definition bauhaus.c:2074
void dt_bauhaus_slider_set_offset(GtkWidget *w, float offset)
Definition bauhaus.c:3618
void dt_bauhaus_combobox_insert_separator_with_height(GtkWidget *widget, int pos, float row_height_factor)
Definition bauhaus.c:2143
GtkWidget * dt_bauhaus_slider_new_with_range(dt_bauhaus_t *bh, dt_gui_module_t *self, float min, float max, float step, float defval, int digits)
Definition bauhaus.c:1780
void dt_bauhaus_combobox_remove_at(GtkWidget *widget, int pos)
Definition bauhaus.c:2101
GtkWidget * dt_bauhaus_combobox_new(dt_bauhaus_t *bh, dt_gui_module_t *self)
Definition bauhaus.c:1842
int(* dt_bauhaus_resize_handle_resize_f)(int requested_size, gboolean finished, gpointer user_data)
Definition bauhaus.h:169
float dt_bauhaus_slider_get_val(GtkWidget *w)
Definition bauhaus.c:3491
void dt_bauhaus_combobox_add_full(GtkWidget *widget, const char *text, dt_bauhaus_combobox_alignment_t align, gpointer data, void(*free_func)(void *data), gboolean sensitive)
void dt_bauhaus_combobox_set_text(GtkWidget *w, const char *text)
Definition bauhaus.c:2209
dt_bauhaus_curve_t
Definition bauhaus.h:92
@ DT_BAUHAUS_GET
Definition bauhaus.h:94
@ DT_BAUHAUS_SET
Definition bauhaus.h:93
void dt_bauhaus_combobox_set(GtkWidget *w, int pos)
Definition bauhaus.c:2301
void dt_bauhaus_combobox_add(GtkWidget *widget, const char *text)
Definition bauhaus.c:2016
void dt_bauhaus_combobox_add_with_tooltip(GtkWidget *widget, const char *text, const char *tooltip)
Definition bauhaus.c:2021
dt_bauhaus_t * dt_bauhaus_init()
Definition bauhaus.c:1382
void dt_bauhaus_combobox_add_aligned(GtkWidget *widget, const char *text, dt_bauhaus_combobox_alignment_t align)
Definition bauhaus.c:2033
void dt_bauhaus_combobox_from_widget(dt_bauhaus_t *bh, dt_bauhaus_widget_t *widget, dt_gui_module_t *self)
Definition bauhaus.c:1912
void dt_bauhaus_show_popup(GtkWidget *w)
Definition bauhaus.c:3188
@ DT_COLORLABELS_LAST
Definition colorlabels.h:46
const dt_aligned_pixel_t f
static const float const float const float min
const float max
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
static const dt_aligned_pixel_simd_t value
Definition darktable.h:577
const char * tooltip
Definition image.h:251
dt_introspection_type_t
static const float x
static dt_mipmap_size_t get_size(const uint32_t key)
dt_mipmap_buffer_dsc_flags flags
Definition mipmap_cache.c:4
const float factor
Definition pdf.h:90
struct _GtkWidget GtkWidget
Definition splash.h:29
const float r
PangoEllipsizeMode entries_ellipsis
Definition bauhaus.h:149
void(* populate)(GtkWidget *w, void *module)
Definition bauhaus.h:151
dt_bauhaus_combobox_alignment_t text_align
Definition bauhaus.h:147
Definition bauhaus.h:130
gboolean sensitive
Definition bauhaus.h:134
char * tooltip
Definition bauhaus.h:132
char * label
Definition bauhaus.h:131
float row_height_factor
Definition bauhaus.h:136
void(* free_func)(gpointer)
Definition bauhaus.h:138
dt_bauhaus_combobox_alignment_t alignment
Definition bauhaus.h:133
gboolean is_separator
Definition bauhaus.h:135
gpointer data
Definition bauhaus.h:137
const char * format
Definition bauhaus.h:115
GdkRGBA graph_bg
Definition bauhaus.h:281
guint32 opentime
Definition bauhaus.h:254
GdkRGBA color_value_text_insensitive
Definition bauhaus.h:278
float end_mouse_x
Definition bauhaus.h:256
float baseline_size
Definition bauhaus.h:271
GdkRGBA graph_scope_restricted
Definition bauhaus.h:282
GdkRGBA colorlabels[DT_COLORLABELS_LAST]
Definition bauhaus.h:284
void(* default_value_changed_callback)(GtkWidget *widget)
Definition bauhaus.h:288
GdkRGBA graph_overlay
Definition bauhaus.h:281
float mouse_line_distance
Definition bauhaus.h:259
GdkRGBA color_border
Definition bauhaus.h:277
GdkRGBA indicator_border
Definition bauhaus.h:277
GdkRGBA color_value_insensitive
Definition bauhaus.h:278
GdkRGBA graph_border
Definition bauhaus.h:281
GdkRGBA graph_fg_active
Definition bauhaus.h:281
GdkRGBA graph_grid
Definition bauhaus.h:281
PangoFontDescription * pango_font_desc
Definition bauhaus.h:274
GdkRGBA graph_exterior
Definition bauhaus.h:281
GdkRGBA color_fill
Definition bauhaus.h:277
gboolean hiding
Definition bauhaus.h:265
GtkWidget * popup_window
Definition bauhaus.h:246
GdkRGBA inset_histogram
Definition bauhaus.h:282
float quad_width
Definition bauhaus.h:273
float line_height
Definition bauhaus.h:269
float end_mouse_y
Definition bauhaus.h:256
GdkRGBA color_value_text
Definition bauhaus.h:278
float mouse_x
Definition bauhaus.h:250
GdkRGBA color_value
Definition bauhaus.h:278
char keys[64]
Definition bauhaus.h:261
float border_width
Definition bauhaus.h:272
GdkRGBA graph_fg
Definition bauhaus.h:281
GtkWidget * popup_area
Definition bauhaus.h:247
struct dt_bauhaus_widget_t * current
Definition bauhaus.h:245
GdkRGBA graph_colors[3]
Definition bauhaus.h:283
GdkRGBA color_fg
Definition bauhaus.h:277
int change_active
Definition bauhaus.h:258
GdkRGBA color_fg_insensitive
Definition bauhaus.h:277
float marker_size
Definition bauhaus.h:270
float mouse_y
Definition bauhaus.h:250
GdkRGBA color_bg
Definition bauhaus.h:277
GtkDrawingAreaClass parent_class
Definition bauhaus.h:235
guint signals[DT_BAUHAUS_LAST_SIGNAL]
Definition bauhaus.h:238
char label[256]
Definition bauhaus.h:186
gboolean show_quad
Definition bauhaus.h:196
GtkDrawingArea parent
Definition bauhaus.h:175
GtkBorder * padding
Definition bauhaus.h:203
dt_bauhaus_quad_paint_f quad_paint
Definition bauhaus.h:188
dt_bauhaus_data_t data
Definition bauhaus.h:218
gboolean no_module_list
Definition bauhaus.h:208
gboolean use_default_callback
Definition bauhaus.h:215
gboolean no_accels
Definition bauhaus.h:207
void * quad_paint_data
Definition bauhaus.h:192
GtkBorder * margin
Definition bauhaus.h:203
dt_gui_module_t *gpointer field
Definition bauhaus.h:181
dt_bauhaus_t * bauhaus
Definition bauhaus.h:211
dt_introspection_type_t field_type
Definition bauhaus.h:183
dt_bauhaus_type_t type
Definition bauhaus.h:177
The dt_gui_module_t type is the intersection between a dt_lib_module_t and a dt_iop_module_t structur...
dt_bauhaus_combobox_data_t combobox
Definition bauhaus.h:160
dt_bauhaus_slider_data_t slider
Definition bauhaus.h:159