Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
gradientslider.c File Reference
#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include "common/darktable.h"
#include "common/math.h"
#include "develop/develop.h"
#include "gradientslider.h"
#include "gui/gtk.h"
+ Include dependency graph for gradientslider.c:

Macros

#define DTGTK_GRADIENT_SLIDER_VALUE_CHANGED_DELAY_MAX   50
 
#define DTGTK_GRADIENT_SLIDER_VALUE_CHANGED_DELAY_MIN   10
 
#define DTGTK_GRADIENT_SLIDER_DEFAULT_INCREMENT   0.01
 
#define parent_class   _gradient_slider_parent_class
 

Enumerations

enum  {
  VALUE_CHANGED ,
  VALUE_RESET ,
  LAST_SIGNAL
}
 

Functions

 G_DEFINE_TYPE (GtkDarktableGradientSlider, _gradient_slider, GTK_TYPE_DRAWING_AREA)
 
static void _gradient_slider_get_preferred_height (GtkWidget *widget, gint *min_height, gint *nat_height)
 
static void _gradient_slider_get_preferred_width (GtkWidget *widget, gint *min_width, gint *nat_width)
 
static gboolean _gradient_slider_draw (GtkWidget *widget, cairo_t *cr)
 
static void _gradient_slider_destroy (GtkWidget *widget)
 
static gboolean _gradient_slider_enter_notify_event (GtkWidget *widget, GdkEventCrossing *event)
 
static gboolean _gradient_slider_button_press (GtkWidget *widget, GdkEventButton *event)
 
static gboolean _gradient_slider_button_release (GtkWidget *widget, GdkEventButton *event)
 
static gboolean _gradient_slider_motion_notify (GtkWidget *widget, GdkEventMotion *event)
 
static gboolean _gradient_slider_scroll_event (GtkWidget *widget, GdkEventScroll *event)
 
static gboolean _gradient_slider_key_press_event (GtkWidget *widget, GdkEventKey *event)
 
static gboolean _gradient_slider_postponed_value_change (gpointer data)
 
static gboolean _test_if_marker_is_upper_or_down (const gint marker, const gboolean up)
 
static gdouble _screen_to_scale (GtkWidget *widget, gint screen)
 
static gint _scale_to_screen (GtkWidget *widget, gdouble scale)
 
static gdouble _get_position_from_screen (GtkWidget *widget, const gdouble x)
 
static gint _get_active_marker (GtkDarktableGradientSlider *gslider)
 
static void _clamp_marker (GtkDarktableGradientSlider *gslider, const gint selected)
 
static gint _get_active_marker_internal (GtkWidget *widget, const gdouble x, const gboolean up)
 
static gint _get_active_marker_from_screen (GtkWidget *widget, const gdouble x, const gdouble y)
 
static gdouble _slider_move (GtkWidget *widget, gint k, gdouble value, gint direction)
 
static gboolean _gradient_slider_add_delta_internal (GtkWidget *widget, gdouble delta, guint state, const gint selected)
 
static float _default_linear_scale_callback (GtkWidget *self, float value, int dir)
 
static gboolean _gradient_slider_leave_notify_event (GtkWidget *widget, GdkEventCrossing *event)
 
static void _gradient_slider_class_init (GtkDarktableGradientSliderClass *klass)
 
static void _gradient_slider_init (GtkDarktableGradientSlider *gslider)
 
gint _list_find_by_position (gconstpointer a, gconstpointer b)
 
static void _gradient_slider_set_defaults (GtkDarktableGradientSlider *gslider)
 
GtkWidget * dtgtk_gradient_slider_multivalue_new (gint positions)
 
GtkWidget * dtgtk_gradient_slider_multivalue_new_with_name (gint positions, gchar *name)
 
GtkWidget * dtgtk_gradient_slider_multivalue_new_with_color (GdkRGBA start, GdkRGBA end, gint positions)
 
GtkWidget * dtgtk_gradient_slider_multivalue_new_with_color_and_name (GdkRGBA start, GdkRGBA end, gint positions, gchar *name)
 
void dtgtk_gradient_slider_multivalue_set_stop (GtkDarktableGradientSlider *gslider, gfloat position, GdkRGBA color)
 
void dtgtk_gradient_slider_multivalue_clear_stops (GtkDarktableGradientSlider *gslider)
 
GType dtgtk_gradient_slider_multivalue_get_type ()
 
gdouble dtgtk_gradient_slider_multivalue_get_value (GtkDarktableGradientSlider *gslider, gint pos)
 
void dtgtk_gradient_slider_multivalue_get_values (GtkDarktableGradientSlider *gslider, gdouble *values)
 
void dtgtk_gradient_slider_multivalue_set_value (GtkDarktableGradientSlider *gslider, gdouble value, gint pos)
 
void dtgtk_gradient_slider_multivalue_set_values (GtkDarktableGradientSlider *gslider, gdouble *values)
 
void dtgtk_gradient_slider_multivalue_set_marker (GtkDarktableGradientSlider *gslider, gint mark, gint pos)
 
void dtgtk_gradient_slider_multivalue_set_markers (GtkDarktableGradientSlider *gslider, gint *markers)
 
void dtgtk_gradient_slider_multivalue_set_resetvalue (GtkDarktableGradientSlider *gslider, gdouble value, gint pos)
 
gdouble dtgtk_gradient_slider_multivalue_get_resetvalue (GtkDarktableGradientSlider *gslider, gint pos)
 
void dtgtk_gradient_slider_multivalue_set_resetvalues (GtkDarktableGradientSlider *gslider, gdouble *values)
 
void dtgtk_gradient_slider_multivalue_set_picker (GtkDarktableGradientSlider *gslider, gdouble value)
 
void dtgtk_gradient_slider_multivalue_set_picker_meanminmax (GtkDarktableGradientSlider *gslider, gdouble mean, gdouble min, gdouble max)
 
gboolean dtgtk_gradient_slider_multivalue_is_dragging (GtkDarktableGradientSlider *gslider)
 
void dtgtk_gradient_slider_multivalue_set_increment (GtkDarktableGradientSlider *gslider, gdouble value)
 
void dtgtk_gradient_slider_multivalue_set_scale_callback (GtkDarktableGradientSlider *gslider, float(*callback)(GtkWidget *self, float value, int dir))
 
GtkWidget * dtgtk_gradient_slider_new ()
 
GtkWidget * dtgtk_gradient_slider_new_with_name (gchar *name)
 
GtkWidget * dtgtk_gradient_slider_new_with_color (GdkRGBA start, GdkRGBA end)
 
GtkWidget * dtgtk_gradient_slider_new_with_color_and_name (GdkRGBA start, GdkRGBA end, gchar *name)
 
void dtgtk_gradient_slider_set_stop (GtkDarktableGradientSlider *gslider, gfloat position, GdkRGBA color)
 
GType dtgtk_gradient_slider_get_type ()
 
gdouble dtgtk_gradient_slider_get_value (GtkDarktableGradientSlider *gslider)
 
void dtgtk_gradient_slider_set_value (GtkDarktableGradientSlider *gslider, gdouble value)
 
void dtgtk_gradient_slider_set_marker (GtkDarktableGradientSlider *gslider, gint mark)
 
void dtgtk_gradient_slider_set_resetvalue (GtkDarktableGradientSlider *gslider, gdouble value)
 
gdouble dtgtk_gradient_slider_get_resetvalue (GtkDarktableGradientSlider *gslider)
 
void dtgtk_gradient_slider_set_picker (GtkDarktableGradientSlider *gslider, gdouble value)
 
void dtgtk_gradient_slider_set_picker_meanminmax (GtkDarktableGradientSlider *gslider, gdouble mean, gdouble min, gdouble max)
 
gboolean dtgtk_gradient_slider_is_dragging (GtkDarktableGradientSlider *gslider)
 
void dtgtk_gradient_slider_set_increment (GtkDarktableGradientSlider *gslider, gdouble value)
 

Variables

static guint _signals [LAST_SIGNAL] = { 0 }
 

Macro Definition Documentation

◆ DTGTK_GRADIENT_SLIDER_DEFAULT_INCREMENT

#define DTGTK_GRADIENT_SLIDER_DEFAULT_INCREMENT   0.01

◆ DTGTK_GRADIENT_SLIDER_VALUE_CHANGED_DELAY_MAX

#define DTGTK_GRADIENT_SLIDER_VALUE_CHANGED_DELAY_MAX   50

◆ DTGTK_GRADIENT_SLIDER_VALUE_CHANGED_DELAY_MIN

#define DTGTK_GRADIENT_SLIDER_VALUE_CHANGED_DELAY_MIN   10

◆ parent_class

#define parent_class   _gradient_slider_parent_class

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
VALUE_CHANGED 
VALUE_RESET 
LAST_SIGNAL 

Function Documentation

◆ _clamp_marker()

static void _clamp_marker ( GtkDarktableGradientSlider gslider,
const gint  selected 
)
inlinestatic

◆ _default_linear_scale_callback()

static float _default_linear_scale_callback ( GtkWidget *  self,
float  value,
int  dir 
)
static

◆ _get_active_marker()

◆ _get_active_marker_from_screen()

static gint _get_active_marker_from_screen ( GtkWidget *  widget,
const gdouble  x,
const gdouble  y 
)
static

◆ _get_active_marker_internal()

static gint _get_active_marker_internal ( GtkWidget *  widget,
const gdouble  x,
const gboolean  up 
)
static

◆ _get_position_from_screen()

static gdouble _get_position_from_screen ( GtkWidget *  widget,
const gdouble  x 
)
inlinestatic

◆ _gradient_slider_add_delta_internal()

static gboolean _gradient_slider_add_delta_internal ( GtkWidget *  widget,
gdouble  delta,
guint  state,
const gint  selected 
)
static

◆ _gradient_slider_button_press()

◆ _gradient_slider_button_release()

◆ _gradient_slider_class_init()

◆ _gradient_slider_destroy()

◆ _gradient_slider_draw()

◆ _gradient_slider_enter_notify_event()

static gboolean _gradient_slider_enter_notify_event ( GtkWidget *  widget,
GdkEventCrossing *  event 
)
static

◆ _gradient_slider_get_preferred_height()

static void _gradient_slider_get_preferred_height ( GtkWidget *  widget,
gint *  min_height,
gint *  nat_height 
)
static

◆ _gradient_slider_get_preferred_width()

static void _gradient_slider_get_preferred_width ( GtkWidget *  widget,
gint *  min_width,
gint *  nat_width 
)
static

◆ _gradient_slider_init()

static void _gradient_slider_init ( GtkDarktableGradientSlider gslider)
static

◆ _gradient_slider_key_press_event()

static gboolean _gradient_slider_key_press_event ( GtkWidget *  widget,
GdkEventKey *  event 
)
static

◆ _gradient_slider_leave_notify_event()

static gboolean _gradient_slider_leave_notify_event ( GtkWidget *  widget,
GdkEventCrossing *  event 
)
static

◆ _gradient_slider_motion_notify()

◆ _gradient_slider_postponed_value_change()

static gboolean _gradient_slider_postponed_value_change ( gpointer  data)
static

◆ _gradient_slider_scroll_event()

◆ _gradient_slider_set_defaults()

◆ _list_find_by_position()

gint _list_find_by_position ( gconstpointer  a,
gconstpointer  b 
)

◆ _scale_to_screen()

static gint _scale_to_screen ( GtkWidget *  widget,
gdouble  scale 
)
inlinestatic

◆ _screen_to_scale()

static gdouble _screen_to_scale ( GtkWidget *  widget,
gint  screen 
)
inlinestatic

◆ _slider_move()

◆ _test_if_marker_is_upper_or_down()

◆ dtgtk_gradient_slider_get_resetvalue()

gdouble dtgtk_gradient_slider_get_resetvalue ( GtkDarktableGradientSlider gslider)

◆ dtgtk_gradient_slider_get_type()

GType dtgtk_gradient_slider_get_type ( void  )

◆ dtgtk_gradient_slider_get_value()

gdouble dtgtk_gradient_slider_get_value ( GtkDarktableGradientSlider gslider)

Get the slider value 0 - 1.0

References dtgtk_gradient_slider_multivalue_get_value().

Referenced by center_callback().

◆ dtgtk_gradient_slider_is_dragging()

gboolean dtgtk_gradient_slider_is_dragging ( GtkDarktableGradientSlider gslider)

◆ dtgtk_gradient_slider_multivalue_clear_stops()

void dtgtk_gradient_slider_multivalue_clear_stops ( GtkDarktableGradientSlider gslider)

Clear all stops

References _GtkDarktableGradientSlider::colors.

Referenced by _blendop_blendif_update_tab().

◆ dtgtk_gradient_slider_multivalue_get_resetvalue()

gdouble dtgtk_gradient_slider_multivalue_get_resetvalue ( GtkDarktableGradientSlider gslider,
gint  pos 
)

◆ dtgtk_gradient_slider_multivalue_get_type()

GType dtgtk_gradient_slider_multivalue_get_type ( void  )

◆ dtgtk_gradient_slider_multivalue_get_value()

gdouble dtgtk_gradient_slider_multivalue_get_value ( GtkDarktableGradientSlider gslider,
gint  position 
)

◆ dtgtk_gradient_slider_multivalue_get_values()

◆ dtgtk_gradient_slider_multivalue_is_dragging()

gboolean dtgtk_gradient_slider_multivalue_is_dragging ( GtkDarktableGradientSlider gslider)

◆ dtgtk_gradient_slider_multivalue_new()

GtkWidget * dtgtk_gradient_slider_multivalue_new ( gint  positions)

◆ dtgtk_gradient_slider_multivalue_new_with_color()

◆ dtgtk_gradient_slider_multivalue_new_with_color_and_name()

GtkWidget * dtgtk_gradient_slider_multivalue_new_with_color_and_name ( GdkRGBA  start,
GdkRGBA  end,
gint  positions,
gchar *  name 
)

◆ dtgtk_gradient_slider_multivalue_new_with_name()

GtkWidget * dtgtk_gradient_slider_multivalue_new_with_name ( gint  positions,
gchar *  name 
)

◆ dtgtk_gradient_slider_multivalue_set_increment()

void dtgtk_gradient_slider_multivalue_set_increment ( GtkDarktableGradientSlider gslider,
gdouble  value 
)

set increment for scroll action

References _GtkDarktableGradientSlider::increment.

Referenced by _blendop_blendif_update_tab().

◆ dtgtk_gradient_slider_multivalue_set_marker()

void dtgtk_gradient_slider_multivalue_set_marker ( GtkDarktableGradientSlider gslider,
gint  mark,
gint  pos 
)

◆ dtgtk_gradient_slider_multivalue_set_markers()

void dtgtk_gradient_slider_multivalue_set_markers ( GtkDarktableGradientSlider gslider,
gint *  markers 
)

◆ dtgtk_gradient_slider_multivalue_set_picker()

void dtgtk_gradient_slider_multivalue_set_picker ( GtkDarktableGradientSlider gslider,
gdouble  value 
)

◆ dtgtk_gradient_slider_multivalue_set_picker_meanminmax()

void dtgtk_gradient_slider_multivalue_set_picker_meanminmax ( GtkDarktableGradientSlider gslider,
gdouble  mean,
gdouble  min,
gdouble  max 
)

◆ dtgtk_gradient_slider_multivalue_set_resetvalue()

void dtgtk_gradient_slider_multivalue_set_resetvalue ( GtkDarktableGradientSlider gslider,
gdouble  value,
gint  pos 
)

◆ dtgtk_gradient_slider_multivalue_set_resetvalues()

◆ dtgtk_gradient_slider_multivalue_set_scale_callback()

◆ dtgtk_gradient_slider_multivalue_set_stop()

void dtgtk_gradient_slider_multivalue_set_stop ( GtkDarktableGradientSlider gslider,
gfloat  position,
GdkRGBA  color 
)

◆ dtgtk_gradient_slider_multivalue_set_value()

◆ dtgtk_gradient_slider_multivalue_set_values()

◆ dtgtk_gradient_slider_new()

GtkWidget * dtgtk_gradient_slider_new ( )

instantiate a new darktable gradient slider control

References dt_gui_add_class(), and dtgtk_gradient_slider_multivalue_new().

Referenced by dtgtk_gradient_slider_new_with_name().

◆ dtgtk_gradient_slider_new_with_color()

GtkWidget * dtgtk_gradient_slider_new_with_color ( GdkRGBA  start,
GdkRGBA  end 
)

◆ dtgtk_gradient_slider_new_with_color_and_name()

GtkWidget * dtgtk_gradient_slider_new_with_color_and_name ( GdkRGBA  start,
GdkRGBA  end,
gchar *  name 
)

References dtgtk_gradient_slider_new_with_color(), and name.

Referenced by gui_init().

◆ dtgtk_gradient_slider_new_with_name()

GtkWidget * dtgtk_gradient_slider_new_with_name ( gchar *  name)

◆ dtgtk_gradient_slider_set_increment()

void dtgtk_gradient_slider_set_increment ( GtkDarktableGradientSlider gslider,
gdouble  value 
)

set increment for scroll action

References _GtkDarktableGradientSlider::increment.

◆ dtgtk_gradient_slider_set_marker()

void dtgtk_gradient_slider_set_marker ( GtkDarktableGradientSlider gslider,
gint  mark 
)

Set the slider marker

References dtgtk_gradient_slider_multivalue_set_marker().

◆ dtgtk_gradient_slider_set_picker()

void dtgtk_gradient_slider_set_picker ( GtkDarktableGradientSlider gslider,
gdouble  value 
)

◆ dtgtk_gradient_slider_set_picker_meanminmax()

void dtgtk_gradient_slider_set_picker_meanminmax ( GtkDarktableGradientSlider gslider,
gdouble  mean,
gdouble  min,
gdouble  max 
)

◆ dtgtk_gradient_slider_set_resetvalue()

void dtgtk_gradient_slider_set_resetvalue ( GtkDarktableGradientSlider gslider,
gdouble  value 
)

Set the slider reset value

References dtgtk_gradient_slider_multivalue_set_resetvalue().

◆ dtgtk_gradient_slider_set_stop()

void dtgtk_gradient_slider_set_stop ( GtkDarktableGradientSlider gslider,
gfloat  position,
GdkRGBA  color 
)

Set a color at specified stop

References dtgtk_gradient_slider_multivalue_set_stop(), and position().

◆ dtgtk_gradient_slider_set_value()

void dtgtk_gradient_slider_set_value ( GtkDarktableGradientSlider gslider,
gdouble  value 
)

◆ G_DEFINE_TYPE()

G_DEFINE_TYPE ( GtkDarktableGradientSlider  ,
_gradient_slider  ,
GTK_TYPE_DRAWING_AREA   
)

Variable Documentation

◆ _signals

guint _signals[LAST_SIGNAL] = { 0 }
static