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-2021 darktable developers.
4
5 darktable is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 darktable is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with darktable. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#pragma once
20
21#include "common/colorlabels.h"
24
25#include <assert.h>
26#include <gdk/gdkkeysyms.h>
27#include <gtk/gtk.h>
28#include <inttypes.h>
29#include <math.h>
30#include <stdlib.h>
31#include <string.h>
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37#define DT_BAUHAUS_WIDGET_TYPE dt_bh_get_type()
38#define DT_BAUHAUS_WIDGET(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), DT_BAUHAUS_WIDGET_TYPE, DtBauhausWidget)
39#define DT_BAUHAUS_WIDGET_CLASS(obj) G_TYPE_CHECK_CLASS_CAST((obj), DT_BAUHAUS_WIDGET, DtBauhausWidgetClass)
40#define DT_IS_BAUHAUS_WIDGET(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), DT_BAUHAUS_WIDGET_TYPE)
41#define DT_IS_BAUHAUS_WIDGET_CLASS(obj) G_TYPE_CHECK_CLASS_TYPE((obj), DT_BAUHAUS_WIDGET_TYPE)
42#define DT_BAUHAUS_WIDGET_GET_CLASS \
43 G_TYPE_INSTANCE_GET_CLASS((obj), DT_BAUHAUS_WIDGET_TYPE, DtBauhausWidgetClass)
44
46
47#define DT_BAUHAUS_SLIDER_VALUE_CHANGED_DELAY_MAX 500
48#define DT_BAUHAUS_SLIDER_VALUE_CHANGED_DELAY_MIN 25
49#define DT_BAUHAUS_SLIDER_MAX_STOPS 20
50#define DT_BAUHAUS_COMBO_MAX_TEXT 180
51
52// INNER_PADDING is the horizontal space between slider and quad
53// and vertical space between labels and slider baseline
54#define INNER_PADDING DT_PIXEL_APPLY_DPI(4)
55#define INTERNAL_PADDING 2. * INNER_PADDING
56
58
60{
63 // TODO: all the fancy color sliders..
65
71
72// data portion for a slider
74{
75 float pos; // normalized slider value
76 float oldpos; // slider value before entering finetune mode (normalized)
77 float step; // step width (not normalized)
78 float defpos; // default value (not normalized)
79 float min, max; // min and max range
82 int digits; // how many decimals to round to
83
84 float (*grad_col)[3]; // colors for gradient slider
85 int grad_cnt; // how many stops
86 float *grad_pos; // and position of these.
87
88 int fill_feedback : 1; // fill the slider with brighter part up to the handle?
89
90 const char *format; // numeric value is printed with this format
91 float factor; // multiplication factor before printing
92 float offset; // addition before printing
93
94 gboolean is_dragging; // indicates is mouse is dragging slider
95 guint timeout_handle; // used to store id of timeout routine
97
103
104// data portion for a combobox
106{
107 char *label;
109 gboolean sensitive;
110 gpointer data;
111 void (*free_func)(gpointer); // callback to free data elements
113
115{
116 int active; // currently active element
117 int hovered; // currently hovered element, to be used by drawings until and if it is set to active
118 int defpos; // default position
119 int editable; // 1 if arbitrary text may be typed
120 dt_bauhaus_combobox_alignment_t text_align; // if selected text in combo should be aligned to the left/right
121 char *text; // to hold arbitrary text if editable
122 PangoEllipsizeMode entries_ellipsis;
123 GPtrArray *entries;
124 guint timeout_handle; // used to store id of timeout routine
125 void (*populate)(GtkWidget *w, void *module); // function to populate the combo list on the fly
127
128typedef union dt_bauhaus_data_t
129{
130 // this is the placeholder for the data portions
131 // associated with the implementations such as
132 // sliders, combo boxes, ..
136
137// gah, caps.
140
141typedef void (*dt_bauhaus_quad_paint_f)(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data);
142
143// our new widget and its private members, inheriting from drawing area:
145{
146 // gtk base widget
147 GtkDrawingArea parent;
148 // which type of control
150 // associated image operation module (to handle focus and such)
151 dt_gui_module_t *module;
152 // pointer to iop field linked to widget
153 gpointer field;
154 // type of field
156
157 // label text, short
158 char label[256];
159 // callback function to draw the quad icon
161 // minimal modifiers for paint function.
163 // data for the paint callback
165 // quad is a toggle button?
167 // show quad icon or space
168 gboolean show_quad;
169
170 // horizontally expand to fit container's width. Set to TRUE by default,
171 // assuming vertical columns. Manually set to FALSE if using in toolbar menu.
172 gboolean expand;
173
174 // margin and padding structure, defined in css, retrieve on each draw
175 GtkBorder *margin, *padding;
176
178
179 // TRUE if accels should not be enabled here.
180 // Use that for blending
181 gboolean no_accels;
182
183 // Reference to the global bauhaus structure holding common styles and such.
185
186 // Use the app-wise default value-changed callback from *bauhaus
187 // or use custom implementation
189
190 // goes last, might extend past the end:
192
194
195
196// global static data:
197enum
198{
203
204
205// class of our new widget, inheriting from drawing area
207{
208 GtkDrawingAreaClass parent_class;
209
210 // our custom signals
213
215{
216 // The bauhaus widget popup is shared across widgets,
217 // so we need to track which one is currently capturing it
219 GtkWidget *popup_window;
220 GtkWidget *popup_area;
221
222 // are set by the motion notification, to be used during drawing.
224
225 // time when the popup window was opened. this is sortof a hack to
226 // detect `double clicks between windows' to reset the combobox.
227 guint32 opentime;
228 // pointer position when popup window is closed
230 // used to determine whether the user crossed the line already.
233 // key input buffer
234 char keys[64];
236
237 // flag set on button press indicating that popup should be hidden in button release handler
238 gboolean hiding;
239
240 // appearance relevant stuff:
241 // sizes and fonts:
242 float line_height; // height of a line of text
243 float marker_size; // height of the slider indicator
244 float baseline_size; // height of the slider bar
245 float border_width; // width of the border of the slider marker
246 float quad_width; // width of the quad area to paint icons
247 PangoFontDescription *pango_font_desc; // no need to recreate this for every string we want to print
248
249 // colors for sliders and comboboxes
251
252 // colors for graphs
254 GdkRGBA graph_colors[3]; // primaries
256
257 // View-wise default callback to wire to the value-changed signal
258 // if the widget declaration sets the boolean
260};
261
262#define DT_BAUHAUS_SPACE 0
263
264
267
268// load theme colors, fonts, etc
270
271// common functions:
272// set the label text:
273void dt_bauhaus_widget_set_label(GtkWidget *w, const char *label);
274const char* dt_bauhaus_widget_get_label(GtkWidget *w);
275// attach a custom painted quad to the space at the right side (overwriting the default icon if any):
276void dt_bauhaus_widget_set_quad_paint(GtkWidget *w, dt_bauhaus_quad_paint_f f, int paint_flags, void *paint_data);
277// make this quad a toggle button:
278void dt_bauhaus_widget_set_quad_toggle(GtkWidget *w, int toggle);
279// set active status for the quad toggle button:
280void dt_bauhaus_widget_set_quad_active(GtkWidget *w, int active);
281// get active status for the quad toggle button:
282int dt_bauhaus_widget_get_quad_active(GtkWidget *w);
283// set quad visibility:
284void dt_bauhaus_widget_set_quad_visibility(GtkWidget *w, const gboolean visible);
285// set pointer to iop params field:
287
289void dt_bauhaus_show_popup(GtkWidget *w);
290
291// slider:
293GtkWidget *dt_bauhaus_slider_new_with_range(dt_bauhaus_t *bh, dt_gui_module_t *self, float min, float max, float step,
294 float defval, int digits);
295GtkWidget *dt_bauhaus_slider_new_with_range_and_feedback(dt_bauhaus_t *bh, dt_gui_module_t *self, float min, float max,
296 float step, float defval, int digits, int feedback);
297
298GtkWidget *dt_bauhaus_slider_from_widget(dt_bauhaus_t *bh, dt_bauhaus_widget_t *widget, dt_gui_module_t *self, float min, float max,
299 float step, float defval, int digits, int feedback);
300
301// outside doesn't see the real type, we cast it internally.
302void dt_bauhaus_slider_set(GtkWidget *w, float pos);
303void dt_bauhaus_slider_set_val(GtkWidget *w, float val);
304float dt_bauhaus_slider_get(GtkWidget *w);
305float dt_bauhaus_slider_get_val(GtkWidget *w);
306char *dt_bauhaus_slider_get_text(GtkWidget *w, float val);
307
308void dt_bauhaus_slider_set_soft_min(GtkWidget* w, float val);
309float dt_bauhaus_slider_get_soft_min(GtkWidget* w);
310void dt_bauhaus_slider_set_soft_max(GtkWidget* w, float val);
311float dt_bauhaus_slider_get_soft_max(GtkWidget* w);
312void dt_bauhaus_slider_set_soft_range(GtkWidget *widget, float soft_min, float soft_max);
313
314void dt_bauhaus_slider_set_hard_min(GtkWidget* w, float val);
315float dt_bauhaus_slider_get_hard_min(GtkWidget* w);
316void dt_bauhaus_slider_set_hard_max(GtkWidget* w, float val);
317float dt_bauhaus_slider_get_hard_max(GtkWidget* w);
318
319void dt_bauhaus_slider_set_digits(GtkWidget *w, int val);
320int dt_bauhaus_slider_get_digits(GtkWidget *w);
321void dt_bauhaus_slider_set_step(GtkWidget *w, float val);
322float dt_bauhaus_slider_get_step(GtkWidget *w);
323
324void dt_bauhaus_slider_set_feedback(GtkWidget *w, int feedback);
325
326void dt_bauhaus_slider_reset(GtkWidget *widget);
327void dt_bauhaus_slider_set_format(GtkWidget *w, const char *format);
328void dt_bauhaus_slider_set_factor(GtkWidget *w, float factor);
329void dt_bauhaus_slider_set_offset(GtkWidget *w, float offset);
330void dt_bauhaus_slider_set_stop(GtkWidget *widget, float stop, float r, float g, float b);
331void dt_bauhaus_slider_clear_stops(GtkWidget *widget);
332void dt_bauhaus_slider_set_default(GtkWidget *widget, float def);
333
334// combobox:
338 const char *label, const char *tip, int pos, GtkCallback callback,
339 gpointer data, const char **texts);
340
341#define DT_BAUHAUS_COMBOBOX_NEW_FULL(bauhaus, widget, action, label, tip, pos, callback, data, ...) \
342{ \
343 static const gchar *texts[] = { __VA_ARGS__, NULL }; \
344 widget = dt_bauhaus_combobox_new_full(bauhaus, action, label, tip, pos, callback, data, texts); \
345}
346
347void dt_bauhaus_combobox_add(GtkWidget *widget, const char *text);
348void dt_bauhaus_combobox_add_aligned(GtkWidget *widget, const char *text, dt_bauhaus_combobox_alignment_t align);
349void dt_bauhaus_combobox_add_full(GtkWidget *widget, const char *text, dt_bauhaus_combobox_alignment_t align,
350 gpointer data, void (*free_func)(void *data), gboolean sensitive);
351void dt_bauhaus_combobox_set(GtkWidget *w, int pos);
352gboolean dt_bauhaus_combobox_set_from_text(GtkWidget *w, const char *text);
353gboolean dt_bauhaus_combobox_set_from_value(GtkWidget *w, int value);
354void dt_bauhaus_combobox_remove_at(GtkWidget *widget, int pos);
355void dt_bauhaus_combobox_insert(GtkWidget *widget, const char *text,int pos);
356void dt_bauhaus_combobox_insert_full(GtkWidget *widget, const char *text, dt_bauhaus_combobox_alignment_t align,
357 gpointer data, void (*free_func)(void *data), int pos);
358int dt_bauhaus_combobox_length(GtkWidget *widget);
359void dt_bauhaus_combobox_set_editable(GtkWidget *w, int editable);
361int dt_bauhaus_combobox_get_editable(GtkWidget *w);
362const char *dt_bauhaus_combobox_get_text(GtkWidget *w);
363void dt_bauhaus_combobox_set_text(GtkWidget *w, const char *text);
364int dt_bauhaus_combobox_get(GtkWidget *w);
365const char *dt_bauhaus_combobox_get_entry(GtkWidget *w, int pos);
366gpointer dt_bauhaus_combobox_get_data(GtkWidget *widget);
367void dt_bauhaus_combobox_clear(GtkWidget *w);
368void dt_bauhaus_combobox_set_default(GtkWidget *widget, int def);
369void dt_bauhaus_combobox_add_populate_fct(GtkWidget *widget, void (*fct)(GtkWidget *w, void *module));
370void dt_bauhaus_combobox_add_list(GtkWidget *widget, const char **texts);
371void dt_bauhaus_combobox_entry_set_sensitive(GtkWidget *widget, int pos, gboolean sensitive);
372void dt_bauhaus_combobox_set_entries_ellipsis(GtkWidget *widget, PangoEllipsizeMode ellipis);
373
374/* Disable accels for this widget.
375* WARNING: accels are inited when setting the widget label. This function should be called before.
376* It will be useless for the "one-line" init & setter functions.
377*/
378void dt_bauhaus_disable_accels(GtkWidget *widget);
379
380static inline void set_color(cairo_t *cr, GdkRGBA color)
381{
382 cairo_set_source_rgba(cr, color.red, color.green, color.blue, color.alpha);
383}
384
391void dt_bauhaus_set_use_default_callback(GtkWidget *widget);
392
393#ifdef __cplusplus
394}
395#endif
396
397// clang-format off
398// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
399// vim: shiftwidth=2 expandtab tabstop=2 cindent
400// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
401// clang-format on
GtkWidget * dt_bauhaus_slider_new(dt_bauhaus_t *bh, dt_gui_module_t *self)
Definition bauhaus.c:1332
float dt_bauhaus_slider_get_hard_max(GtkWidget *w)
Definition bauhaus.c:1160
float dt_bauhaus_slider_get(GtkWidget *w)
Definition bauhaus.c:2708
void dt_bauhaus_widget_set_label(GtkWidget *w, const char *label)
Definition bauhaus.c:1212
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:1407
dt_bauhaus_combobox_alignment_t
Definition bauhaus.h:99
@ DT_BAUHAUS_COMBOBOX_ALIGN_RIGHT
Definition bauhaus.h:101
@ DT_BAUHAUS_COMBOBOX_ALIGN_LEFT
Definition bauhaus.h:100
int dt_bauhaus_widget_get_quad_active(GtkWidget *w)
Definition bauhaus.c:1300
void dt_bauhaus_slider_set_soft_range(GtkWidget *widget, float soft_min, float soft_max)
Definition bauhaus.c:1206
gboolean dt_bauhaus_combobox_set_from_text(GtkWidget *w, const char *text)
Definition bauhaus.c:1686
void dt_bauhaus_widget_set_quad_visibility(GtkWidget *w, const gboolean visible)
Definition bauhaus.c:1293
void dt_bauhaus_combobox_insert(GtkWidget *widget, const char *text, int pos)
Definition bauhaus.c:1534
void dt_bauhaus_widget_set_quad_paint(GtkWidget *w, dt_bauhaus_quad_paint_f f, int paint_flags, void *paint_data)
Definition bauhaus.c:1259
void dt_bauhaus_slider_set_step(GtkWidget *w, float val)
Definition bauhaus.c:2773
void dt_bauhaus_slider_clear_stops(GtkWidget *widget)
Definition bauhaus.c:1736
char * dt_bauhaus_slider_get_text(GtkWidget *w, float val)
Definition bauhaus.c:2722
void dt_bauhaus_combobox_set_selected_text_align(GtkWidget *widget, const dt_bauhaus_combobox_alignment_t text_align)
Definition bauhaus.c:1511
void dt_bauhaus_hide_popup(dt_bauhaus_t *bh)
Definition bauhaus.c:2429
void dt_bauhaus_slider_reset(GtkWidget *widget)
Definition bauhaus.c:2809
void dt_bauhaus_cleanup(dt_bauhaus_t *bauhaus)
Definition bauhaus.c:1059
void dt_bauhaus_slider_set_default(GtkWidget *widget, float def)
Definition bauhaus.c:1199
void dt_bauhaus_slider_set_stop(GtkWidget *widget, float stop, float r, float g, float b)
Definition bauhaus.c:1744
void dt_bauhaus_load_theme(dt_bauhaus_t *bauhaus)
Definition bauhaus.c:870
const char * dt_bauhaus_combobox_get_entry(GtkWidget *w, int pos)
Definition bauhaus.c:1590
void dt_bauhaus_slider_set_hard_max(GtkWidget *w, float val)
Definition bauhaus.c:1142
void dt_bauhaus_combobox_entry_set_sensitive(GtkWidget *widget, int pos, gboolean sensitive)
Definition bauhaus.c:1727
void dt_bauhaus_slider_set_digits(GtkWidget *w, int val)
Definition bauhaus.c:2759
float dt_bauhaus_slider_get_soft_max(GtkWidget *w)
Definition bauhaus.c:1192
int dt_bauhaus_combobox_get(GtkWidget *w)
Definition bauhaus.c:1720
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:1343
void dt_bauhaus_widget_set_field(GtkWidget *w, gpointer field, dt_introspection_type_t field_type)
Definition bauhaus.c:1267
void dt_bauhaus_widget_set_quad_active(GtkWidget *w, int active)
Definition bauhaus.c:1283
float dt_bauhaus_slider_get_hard_min(GtkWidget *w)
Definition bauhaus.c:1135
int dt_bauhaus_slider_get_digits(GtkWidget *w)
Definition bauhaus.c:2766
void dt_bauhaus_combobox_clear(GtkWidget *w)
Definition bauhaus.c:1581
void dt_bauhaus_slider_set_factor(GtkWidget *w, float factor)
Definition bauhaus.c:2832
void dt_bauhaus_slider_set_soft_max(GtkWidget *w, float val)
Definition bauhaus.c:1183
float dt_bauhaus_slider_get_soft_min(GtkWidget *w)
Definition bauhaus.c:1176
dt_bauhaus_type_t
Definition bauhaus.h:60
@ DT_BAUHAUS_COMBOBOX
Definition bauhaus.h:62
@ DT_BAUHAUS_SLIDER
Definition bauhaus.h:61
void dt_bauhaus_slider_set_soft_min(GtkWidget *w, float val)
Definition bauhaus.c:1167
void dt_bauhaus_slider_set_val(GtkWidget *w, float val)
Definition bauhaus.c:2753
void dt_bauhaus_combobox_set_entries_ellipsis(GtkWidget *widget, PangoEllipsizeMode ellipis)
Definition bauhaus.c:1485
#define DT_BAUHAUS_WIDGET_TYPE
Definition bauhaus.h:37
static void set_color(cairo_t *cr, GdkRGBA color)
Definition bauhaus.h:380
void dt_bauhaus_slider_set_feedback(GtkWidget *w, int feedback)
Definition bauhaus.c:2801
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:3163
int dt_bauhaus_combobox_length(GtkWidget *widget)
Definition bauhaus.c:1549
void dt_bauhaus_slider_set(GtkWidget *w, float pos)
Definition bauhaus.c:2731
void dt_bauhaus_slider_set_format(GtkWidget *w, const char *format)
Definition bauhaus.c:2819
float dt_bauhaus_slider_get_step(GtkWidget *w)
Definition bauhaus.c:2780
void dt_bauhaus_combobox_set_default(GtkWidget *widget, int def)
Definition bauhaus.c:1110
void dt_bauhaus_widget_set_quad_toggle(GtkWidget *w, int toggle)
Definition bauhaus.c:1277
gpointer dt_bauhaus_combobox_get_data(GtkWidget *widget)
Definition bauhaus.c:1572
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:1364
void dt_bauhaus_combobox_add_populate_fct(GtkWidget *widget, void(*fct)(GtkWidget *w, void *module))
Definition bauhaus.c:1451
void dt_bauhaus_combobox_add_list(GtkWidget *widget, const char **texts)
Definition bauhaus.c:1458
gboolean dt_bauhaus_combobox_set_from_value(GtkWidget *w, int value)
Definition bauhaus.c:1704
void dt_bauhaus_disable_accels(GtkWidget *widget)
Definition bauhaus.c:3157
void dt_bauhaus_slider_set_hard_min(GtkWidget *w, float val)
Definition bauhaus.c:1118
const char * dt_bauhaus_combobox_get_text(GtkWidget *w)
Definition bauhaus.c:1556
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:1253
void(* dt_bauhaus_quad_paint_f)(cairo_t *cr, gint x, gint y, gint w, gint h, gint flags, void *data)
Definition bauhaus.h:141
int dt_bauhaus_combobox_get_editable(GtkWidget *w)
Definition bauhaus.c:1504
void dt_bauhaus_combobox_set_editable(GtkWidget *w, int editable)
Definition bauhaus.c:1494
void dt_bauhaus_slider_set_offset(GtkWidget *w, float offset)
Definition bauhaus.c:2839
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:1337
void dt_bauhaus_combobox_remove_at(GtkWidget *widget, int pos)
Definition bauhaus.c:1519
GtkWidget * dt_bauhaus_combobox_new(dt_bauhaus_t *bh, dt_gui_module_t *self)
Definition bauhaus.c:1400
@ DT_BAUHAUS_LAST_SIGNAL
Definition bauhaus.h:201
@ DT_BAUHAUS_QUAD_PRESSED_SIGNAL
Definition bauhaus.h:200
@ DT_BAUHAUS_VALUE_CHANGED_SIGNAL
Definition bauhaus.h:199
float dt_bauhaus_slider_get_val(GtkWidget *w)
Definition bauhaus.c:2716
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:1599
dt_bauhaus_curve_t
Definition bauhaus.h:67
@ DT_BAUHAUS_GET
Definition bauhaus.h:69
@ DT_BAUHAUS_SET
Definition bauhaus.h:68
void dt_bauhaus_combobox_set(GtkWidget *w, int pos)
Definition bauhaus.c:1680
void dt_bauhaus_combobox_add(GtkWidget *widget, const char *text)
Definition bauhaus.c:1464
dt_bauhaus_t * dt_bauhaus_init()
Definition bauhaus.c:941
void dt_bauhaus_combobox_add_aligned(GtkWidget *widget, const char *text, dt_bauhaus_combobox_alignment_t align)
Definition bauhaus.c:1469
void dt_bauhaus_combobox_from_widget(dt_bauhaus_t *bh, dt_bauhaus_widget_t *widget, dt_gui_module_t *self)
Definition bauhaus.c:1420
void dt_bauhaus_show_popup(GtkWidget *w)
Definition bauhaus.c:2445
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
@ DT_COLORLABELS_LAST
Definition colorlabels.h:17
static float f(const float t, const float c, const float x)
Definition graduatednd.c:173
dt_introspection_type_t
Definition introspection.h:35
dt_mipmap_buffer_dsc_flags flags
Definition mipmap_cache.c:4
const float factor
Definition pdf.h:85
Definition bauhaus.h:115
int defpos
Definition bauhaus.h:118
int active
Definition bauhaus.h:116
PangoEllipsizeMode entries_ellipsis
Definition bauhaus.h:122
void(* populate)(GtkWidget *w, void *module)
Definition bauhaus.h:125
guint timeout_handle
Definition bauhaus.h:124
int editable
Definition bauhaus.h:119
int hovered
Definition bauhaus.h:117
dt_bauhaus_combobox_alignment_t text_align
Definition bauhaus.h:120
GPtrArray * entries
Definition bauhaus.h:123
char * text
Definition bauhaus.h:121
Definition bauhaus.h:106
gboolean sensitive
Definition bauhaus.h:109
char * label
Definition bauhaus.h:107
void(* free_func)(gpointer)
Definition bauhaus.h:111
dt_bauhaus_combobox_alignment_t alignment
Definition bauhaus.h:108
gpointer data
Definition bauhaus.h:110
Definition bauhaus.h:74
float soft_max
Definition bauhaus.h:80
float(* grad_col)[3]
Definition bauhaus.h:84
float hard_max
Definition bauhaus.h:81
float defpos
Definition bauhaus.h:78
int grad_cnt
Definition bauhaus.h:85
float factor
Definition bauhaus.h:91
float min
Definition bauhaus.h:79
gboolean is_dragging
Definition bauhaus.h:94
float oldpos
Definition bauhaus.h:76
float offset
Definition bauhaus.h:92
guint timeout_handle
Definition bauhaus.h:95
const char * format
Definition bauhaus.h:90
float * grad_pos
Definition bauhaus.h:86
float soft_min
Definition bauhaus.h:80
float hard_min
Definition bauhaus.h:81
float max
Definition bauhaus.h:79
int fill_feedback
Definition bauhaus.h:88
int digits
Definition bauhaus.h:82
float pos
Definition bauhaus.h:75
float step
Definition bauhaus.h:77
Definition bauhaus.h:215
GdkRGBA graph_bg
Definition bauhaus.h:253
guint32 opentime
Definition bauhaus.h:227
float end_mouse_x
Definition bauhaus.h:229
float baseline_size
Definition bauhaus.h:244
GdkRGBA colorlabels[DT_COLORLABELS_LAST]
Definition bauhaus.h:255
void(* default_value_changed_callback)(GtkWidget *widget)
Definition bauhaus.h:259
GdkRGBA graph_overlay
Definition bauhaus.h:253
float mouse_line_distance
Definition bauhaus.h:232
GdkRGBA color_border
Definition bauhaus.h:250
GdkRGBA indicator_border
Definition bauhaus.h:250
GdkRGBA graph_border
Definition bauhaus.h:253
GdkRGBA graph_fg_active
Definition bauhaus.h:253
GdkRGBA graph_grid
Definition bauhaus.h:253
int keys_cnt
Definition bauhaus.h:235
PangoFontDescription * pango_font_desc
Definition bauhaus.h:247
GdkRGBA graph_exterior
Definition bauhaus.h:253
GdkRGBA color_fill
Definition bauhaus.h:250
gboolean hiding
Definition bauhaus.h:238
GtkWidget * popup_window
Definition bauhaus.h:219
GdkRGBA inset_histogram
Definition bauhaus.h:253
float quad_width
Definition bauhaus.h:246
float line_height
Definition bauhaus.h:242
float end_mouse_y
Definition bauhaus.h:229
float mouse_x
Definition bauhaus.h:223
char keys[64]
Definition bauhaus.h:234
float border_width
Definition bauhaus.h:245
GdkRGBA graph_fg
Definition bauhaus.h:253
GtkWidget * popup_area
Definition bauhaus.h:220
struct dt_bauhaus_widget_t * current
Definition bauhaus.h:218
GdkRGBA graph_colors[3]
Definition bauhaus.h:254
GdkRGBA color_fg
Definition bauhaus.h:250
int change_active
Definition bauhaus.h:231
GdkRGBA color_fg_insensitive
Definition bauhaus.h:250
float marker_size
Definition bauhaus.h:243
float mouse_y
Definition bauhaus.h:223
GdkRGBA color_bg
Definition bauhaus.h:250
Definition bauhaus.h:207
GtkDrawingAreaClass parent_class
Definition bauhaus.h:208
guint signals[DT_BAUHAUS_LAST_SIGNAL]
Definition bauhaus.h:211
Definition bauhaus.h:145
char label[256]
Definition bauhaus.h:158
gboolean show_quad
Definition bauhaus.h:168
GtkDrawingArea parent
Definition bauhaus.h:147
GtkBorder * padding
Definition bauhaus.h:175
int timeout
Definition bauhaus.h:177
dt_bauhaus_quad_paint_f quad_paint
Definition bauhaus.h:160
int quad_toggle
Definition bauhaus.h:166
dt_bauhaus_data_t data
Definition bauhaus.h:191
gboolean expand
Definition bauhaus.h:172
gboolean use_default_callback
Definition bauhaus.h:188
gboolean no_accels
Definition bauhaus.h:181
void * quad_paint_data
Definition bauhaus.h:164
GtkBorder * margin
Definition bauhaus.h:175
dt_gui_module_t *gpointer field
Definition bauhaus.h:153
int quad_paint_flags
Definition bauhaus.h:162
dt_bauhaus_t * bauhaus
Definition bauhaus.h:184
dt_introspection_type_t field_type
Definition bauhaus.h:155
dt_bauhaus_type_t type
Definition bauhaus.h:149
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:25
Definition bauhaus.h:129
dt_bauhaus_combobox_data_t combobox
Definition bauhaus.h:134
dt_bauhaus_slider_data_t slider
Definition bauhaus.h:133