Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
gradient.c File Reference
#include "bauhaus/bauhaus.h"
#include "common/debug.h"
#include "common/undo.h"
#include "control/conf.h"
#include "develop/blend.h"
#include "develop/imageop.h"
#include "develop/masks.h"
#include "develop/openmp_maths.h"
+ Include dependency graph for gradient.c:

Macros

#define extent_MIN   0.0005f
 
#define extent_MAX   1.0f
 
#define CURVATURE_MIN   -2.0f
 
#define CURVATURE_MAX   2.0f
 
#define BORDER_MIN   0.00005f
 
#define BORDER_MAX   0.5f
 

Functions

static int _find_border_separator (const float *border, int count)
 
static void _closest_point_on_segment (float px, float py, float x1, float y1, float x2, float y2, float *closest_x, float *closest_y, float *distance_sq)
 
static void _closest_point_on_line (float px, float py, const float *border, int start_idx, int end_idx, float *closest_x, float *closest_y, float *min_distance_sq)
 
static float _gradient_get_border_len_sq (const dt_masks_form_gui_points_t *gpt)
 
static void _gradient_get_distance (float x, float y, float dist_mouse, dt_masks_form_gui_t *gui, int index, int num_points, int *inside, int *inside_border, int *near, int *inside_source, float *dist)
 
static int _find_closest_handle (struct dt_iop_module_t *module, float pzx, float pzy, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index)
 
static int _init_extent (dt_masks_form_t *form, const float amount, const dt_masks_increment_t increment, const int flow)
 
static int _init_curvature (dt_masks_form_t *form, const float amount, const dt_masks_increment_t increment, const int flow)
 
static int _init_opacity (dt_masks_form_t *form, const float amount, const dt_masks_increment_t increment, const int flow)
 
static int _init_rotation (dt_masks_form_t *form, const float amount, const dt_masks_increment_t increment, const int flow)
 
static int _change_extent (dt_masks_form_t *form, dt_masks_form_gui_t *gui, struct dt_iop_module_t *module, int index, const float amount, const dt_masks_increment_t increment, const int flow)
 
static int _change_curvature (dt_masks_form_t *form, dt_masks_form_gui_t *gui, struct dt_iop_module_t *module, int index, const float amount, const dt_masks_increment_t increment, const int flow)
 
static int _change_rotation (dt_masks_form_t *form, dt_masks_form_gui_t *gui, struct dt_iop_module_t *module, int index, const float amount, const dt_masks_increment_t increment, const int flow)
 
static int _gradient_events_mouse_scrolled (struct dt_iop_module_t *module, float pzx, float pzy, int up, const int flow, uint32_t state, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index, dt_masks_interaction_t interaction)
 
static int _gradient_events_button_pressed (struct dt_iop_module_t *module, float pzx, float pzy, double pressure, int which, int type, uint32_t state, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index)
 
static int _gradient_events_button_released (struct dt_iop_module_t *module, float pzx, float pzy, int which, uint32_t state, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index)
 
static int _gradient_events_mouse_moved (struct dt_iop_module_t *module, float pzx, float pzy, double pressure, int which, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index)
 
static gboolean _gradient_is_canonical (const float x, const float y, const float wd, const float ht)
 
static int _gradient_get_points (dt_develop_t *dev, float x, float y, float rotation, float curvature, float **points, int *points_count)
 
static void _copy_points (float *dest, const float *src, int count, int *k)
 
static int _gradient_get_pts_border (dt_develop_t *dev, float x, float y, float rotation, float distance, float curvature, float **points, int *points_count)
 
static void _gradient_draw_shape (cairo_t *cr, const float *pts_line, const int pts_line_count, const int nb, const gboolean border, const gboolean source)
 
static void _gradient_draw_arrow (cairo_t *cr, const gboolean selected, const gboolean pivot_selected, const gboolean is_rotating, const float zoom_scale, float *pts, int pts_count)
 
static void _gradient_events_post_expose (cairo_t *cr, float zoom_scale, dt_masks_form_gui_t *gui, int index, int nb)
 
static int _gradient_get_points_border (dt_develop_t *dev, dt_masks_form_t *form, float **points, int *points_count, float **border, int *border_count, int source, const dt_iop_module_t *module)
 
static int _gradient_get_area (const dt_iop_module_t *const module, const dt_dev_pixelpipe_iop_t *const piece, dt_masks_form_t *const form, int *width, int *height, int *posx, int *posy)
 
static float dt_gradient_lookup (const float *lut, const float i)
 
static int _gradient_get_mask (const dt_iop_module_t *const module, const dt_dev_pixelpipe_iop_t *const piece, dt_masks_form_t *const form, float **buffer, int *width, int *height, int *posx, int *posy)
 
static int _gradient_get_mask_roi (const dt_iop_module_t *const module, const dt_dev_pixelpipe_iop_t *const piece, dt_masks_form_t *const form, const dt_iop_roi_t *roi, float *buffer)
 
static void _gradient_sanitize_config (dt_masks_type_t type)
 
static void _gradient_set_form_name (struct dt_masks_form_t *const form, const size_t nb)
 
static void _gradient_set_hint_message (const dt_masks_form_gui_t *const gui, const dt_masks_form_t *const form, const int opacity, char *const restrict msgbuf, const size_t msgbuf_len)
 
static void _gradient_duplicate_points (dt_develop_t *dev, dt_masks_form_t *const base, dt_masks_form_t *const dest)
 

Variables

const dt_masks_functions_t dt_masks_functions_gradient
 

Macro Definition Documentation

◆ BORDER_MAX

#define BORDER_MAX   0.5f

◆ BORDER_MIN

#define BORDER_MIN   0.00005f

◆ CURVATURE_MAX

#define CURVATURE_MAX   2.0f

◆ CURVATURE_MIN

#define CURVATURE_MIN   -2.0f

◆ extent_MAX

#define extent_MAX   1.0f

◆ extent_MIN

#define extent_MIN   0.0005f

Function Documentation

◆ _change_curvature()

◆ _change_extent()

static int _change_extent ( dt_masks_form_t form,
dt_masks_form_gui_t gui,
struct dt_iop_module_t module,
int  index,
const float  amount,
const dt_masks_increment_t  increment,
const int  flow 
)
static

◆ _change_rotation()

◆ _closest_point_on_line()

static void _closest_point_on_line ( float  px,
float  py,
const float *  border,
int  start_idx,
int  end_idx,
float *  closest_x,
float *  closest_y,
float *  min_distance_sq 
)
static

◆ _closest_point_on_segment()

static void _closest_point_on_segment ( float  px,
float  py,
float  x1,
float  y1,
float  x2,
float  y2,
float *  closest_x,
float *  closest_y,
float *  distance_sq 
)
static

Referenced by _closest_point_on_line().

◆ _copy_points()

static void _copy_points ( float *  dest,
const float *  src,
int  count,
int *  k 
)
static

◆ _find_border_separator()

static int _find_border_separator ( const float *  border,
int  count 
)
static

Referenced by _gradient_get_distance().

◆ _find_closest_handle()

◆ _gradient_draw_arrow()

static void _gradient_draw_arrow ( cairo_t *  cr,
const gboolean  selected,
const gboolean  pivot_selected,
const gboolean  is_rotating,
const float  zoom_scale,
float *  pts,
int  pts_count 
)
static

◆ _gradient_draw_shape()

static void _gradient_draw_shape ( cairo_t *  cr,
const float *  pts_line,
const int  pts_line_count,
const int  nb,
const gboolean  border,
const gboolean  source 
)
static

◆ _gradient_duplicate_points()

static void _gradient_duplicate_points ( dt_develop_t dev,
dt_masks_form_t *const  base,
dt_masks_form_t *const  dest 
)
static

References dt_masks_form_t::points, and void().

◆ _gradient_events_button_pressed()

◆ _gradient_events_button_released()

◆ _gradient_events_mouse_moved()

◆ _gradient_events_mouse_scrolled()

◆ _gradient_events_post_expose()

◆ _gradient_get_area()

static int _gradient_get_area ( const dt_iop_module_t *const  module,
const dt_dev_pixelpipe_iop_t *const  piece,
dt_masks_form_t *const  form,
int *  width,
int *  height,
int *  posx,
int *  posy 
)
static

◆ _gradient_get_border_len_sq()

static float _gradient_get_border_len_sq ( const dt_masks_form_gui_points_t gpt)
static

◆ _gradient_get_distance()

static void _gradient_get_distance ( float  x,
float  y,
float  dist_mouse,
dt_masks_form_gui_t gui,
int  index,
int  num_points,
int *  inside,
int *  inside_border,
int *  near,
int *  inside_source,
float *  dist 
)
static

◆ _gradient_get_mask()

◆ _gradient_get_mask_roi()

◆ _gradient_get_points()

◆ _gradient_get_points_border()

static int _gradient_get_points_border ( dt_develop_t dev,
dt_masks_form_t form,
float **  points,
int *  points_count,
float **  border,
int *  border_count,
int  source,
const dt_iop_module_t module 
)
static

◆ _gradient_get_pts_border()

static int _gradient_get_pts_border ( dt_develop_t dev,
float  x,
float  y,
float  rotation,
float  distance,
float  curvature,
float **  points,
int *  points_count 
)
static

◆ _gradient_is_canonical()

static gboolean _gradient_is_canonical ( const float  x,
const float  y,
const float  wd,
const float  ht 
)
inlinestatic

References FALSE, and TRUE.

Referenced by _gradient_draw_shape().

◆ _gradient_sanitize_config()

static void _gradient_sanitize_config ( dt_masks_type_t  type)
static

References dt_conf_set_float().

◆ _gradient_set_form_name()

static void _gradient_set_form_name ( struct dt_masks_form_t *const  form,
const size_t  nb 
)
static

References dt_masks_form_t::name.

◆ _gradient_set_hint_message()

static void _gradient_set_hint_message ( const dt_masks_form_gui_t *const  gui,
const dt_masks_form_t *const  form,
const int  opacity,
char *const restrict  msgbuf,
const size_t  msgbuf_len 
)
static

◆ _init_curvature()

static int _init_curvature ( dt_masks_form_t form,
const float  amount,
const dt_masks_increment_t  increment,
const int  flow 
)
static

◆ _init_extent()

static int _init_extent ( dt_masks_form_t form,
const float  amount,
const dt_masks_increment_t  increment,
const int  flow 
)
static

◆ _init_opacity()

static int _init_opacity ( dt_masks_form_t form,
const float  amount,
const dt_masks_increment_t  increment,
const int  flow 
)
static

◆ _init_rotation()

static int _init_rotation ( dt_masks_form_t form,
const float  amount,
const dt_masks_increment_t  increment,
const int  flow 
)
static

◆ dt_gradient_lookup()

static float dt_gradient_lookup ( const float *  lut,
const float  i 
)
inlinestatic

References f().

Referenced by _gradient_get_mask(), and _gradient_get_mask_roi().

Variable Documentation

◆ dt_masks_functions_gradient

const dt_masks_functions_t dt_masks_functions_gradient
Initial value:
= {
.point_struct_size = sizeof(struct dt_masks_anchor_gradient_t),
.sanitize_config = _gradient_sanitize_config,
.set_form_name = _gradient_set_form_name,
.set_hint_message = _gradient_set_hint_message,
.duplicate_points = _gradient_duplicate_points,
.get_distance = _gradient_get_distance,
.get_points_border = _gradient_get_points_border,
.get_mask = _gradient_get_mask,
.get_mask_roi = _gradient_get_mask_roi,
.get_area = _gradient_get_area,
.draw_shape = _gradient_draw_shape
}
static void _gradient_events_post_expose(cairo_t *cr, float zoom_scale, dt_masks_form_gui_t *gui, int index, int nb)
Definition gradient.c:992
static void _gradient_get_distance(float x, float y, float dist_mouse, dt_masks_form_gui_t *gui, int index, int num_points, int *inside, int *inside_border, int *near, int *inside_source, float *dist)
Definition gradient.c:165
static void _gradient_draw_shape(cairo_t *cr, const float *pts_line, const int pts_line_count, const int nb, const gboolean border, const gboolean source)
Definition gradient.c:877
static void _gradient_set_hint_message(const dt_masks_form_gui_t *const gui, const dt_masks_form_t *const form, const int opacity, char *const restrict msgbuf, const size_t msgbuf_len)
Definition gradient.c:1490
static int _gradient_get_mask_roi(const dt_iop_module_t *const module, const dt_dev_pixelpipe_iop_t *const piece, dt_masks_form_t *const form, const dt_iop_roi_t *roi, float *buffer)
Definition gradient.c:1308
static int _gradient_get_mask(const dt_iop_module_t *const module, const dt_dev_pixelpipe_iop_t *const piece, dt_masks_form_t *const form, float **buffer, int *width, int *height, int *posx, int *posy)
Definition gradient.c:1122
static int _gradient_events_button_pressed(struct dt_iop_module_t *module, float pzx, float pzy, double pressure, int which, int type, uint32_t state, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index)
Definition gradient.c:482
static int _gradient_get_area(const dt_iop_module_t *const module, const dt_dev_pixelpipe_iop_t *const piece, dt_masks_form_t *const form, int *width, int *height, int *posx, int *posy)
Definition gradient.c:1082
static void _gradient_set_form_name(struct dt_masks_form_t *const form, const size_t nb)
Definition gradient.c:1485
static int _gradient_events_mouse_moved(struct dt_iop_module_t *module, float pzx, float pzy, double pressure, int which, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index)
Definition gradient.c:627
static int _gradient_events_button_released(struct dt_iop_module_t *module, float pzx, float pzy, int which, uint32_t state, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index)
Definition gradient.c:583
static void _gradient_duplicate_points(dt_develop_t *dev, dt_masks_form_t *const base, dt_masks_form_t *const dest)
Definition gradient.c:1501
static void _gradient_sanitize_config(dt_masks_type_t type)
Definition gradient.c:1479
static int _gradient_events_mouse_scrolled(struct dt_iop_module_t *module, float pzx, float pzy, int up, const int flow, uint32_t state, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index, dt_masks_interaction_t interaction)
Definition gradient.c:453
static int _gradient_get_points_border(dt_develop_t *dev, dt_masks_form_t *form, float **points, int *points_count, float **border, int *border_count, int source, const dt_iop_module_t *module)
Definition gradient.c:1063
Definition masks.h:155

Referenced by _gradient_events_post_expose(), and dt_masks_create().