Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
ellipse.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 ellipse.c:

Functions

static void _ellipse_point_transform (const float xref, const float yref, const float x, const float y, const float sinr, const float cosr, float *xnew, float *ynew)
 
static int _ellipse_cross_test (float x, float y, float *point_1, float *point_2)
 
static int _ellipse_point_in_polygon (float x, float y, float *points, int points_count)
 
static int _ellipse_point_close_to_path (float x, float y, float as, float *points, int points_count)
 
static void _ellipse_get_distance (float x, float y, float as, dt_masks_form_gui_t *gui, int index, int num_points, int *inside, int *inside_border, int *near, int *inside_source, float *dist)
 
static void _ellipse_draw_shape (cairo_t *cr, double *dashed, const int selected, const float zoom_scale, const float xref, const float yref, float *points, const int points_count)
 
static void _ellipse_draw_border (cairo_t *cr, double *dashed, const float len, const int selected, const float zoom_scale, const float xref, const float yref, float *border, const int border_count)
 
static float * _points_to_transform (float xx, float yy, float radius_a, float radius_b, float rotation, float wd, float ht, int *points_count)
 
static int _ellipse_get_points_source (dt_develop_t *dev, float xx, float yy, float xs, float ys, float radius_a, float radius_b, float rotation, float **points, int *points_count, const dt_iop_module_t *module)
 
static int _ellipse_get_points (dt_develop_t *dev, float xx, float yy, float radius_a, float radius_b, float rotation, float **points, int *points_count)
 
static int _ellipse_get_points_border (dt_develop_t *dev, struct 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 _ellipse_events_mouse_scrolled (struct dt_iop_module_t *module, float pzx, float pzy, int up, 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 _ellipse_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 _ellipse_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 _ellipse_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 void _ellipse_events_post_expose (cairo_t *cr, float zoom_scale, dt_masks_form_gui_t *gui, int index, int num_points)
 
static void _bounding_box (const float *const points, int num_points, int *width, int *height, int *posx, int *posy)
 
static void _fill_mask (const size_t numpoints, float *const bufptr, const float *const points, const float *const center, const float a, const float b, const float ta, const float tb, const float alpha, const size_t out_scale)
 
static float *const _ellipse_points_to_transform (const float center_x, const float center_y, const float dim1, const float dim2, const float rotation, const float wd, const float ht, size_t *point_count)
 
static int _ellipse_get_source_area (dt_iop_module_t *module, dt_dev_pixelpipe_iop_t *piece, dt_masks_form_t *form, int *width, int *height, int *posx, int *posy)
 
static int _ellipse_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 int _ellipse_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 _ellipse_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 _ellipse_set_form_name (struct dt_masks_form_t *const form, const size_t nb)
 
static void _ellipse_duplicate_points (dt_develop_t *const dev, dt_masks_form_t *const base, dt_masks_form_t *const dest)
 
static void _ellipse_initial_source_pos (const float iwd, const float iht, float *x, float *y)
 
static void _ellipse_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 _ellipse_sanitize_config (dt_masks_type_t type)
 

Variables

const dt_masks_functions_t dt_masks_functions_ellipse
 

Function Documentation

◆ _bounding_box()

static void _bounding_box ( const float *const  points,
int  num_points,
int *  width,
int *  height,
int *  posx,
int *  posy 
)
static

References height, and width.

Referenced by _ellipse_get_area(), and _ellipse_get_source_area().

◆ _ellipse_cross_test()

static int _ellipse_cross_test ( float  x,
float  y,
float *  point_1,
float *  point_2 
)
static

◆ _ellipse_draw_border()

static void _ellipse_draw_border ( cairo_t *  cr,
double dashed,
const float  len,
const int  selected,
const float  zoom_scale,
const float  xref,
const float  yref,
float *  border,
const int  border_count 
)
static

◆ _ellipse_draw_shape()

static void _ellipse_draw_shape ( cairo_t *  cr,
double dashed,
const int  selected,
const float  zoom_scale,
const float  xref,
const float  yref,
float *  points,
const int  points_count 
)
static

◆ _ellipse_duplicate_points()

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

References dt_masks_form_t::points, and void().

◆ _ellipse_events_button_pressed()

static int _ellipse_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

References dt_dev_pixelpipe_t::backbuf_height, dt_dev_pixelpipe_t::backbuf_width, dt_masks_point_ellipse_t::border, dt_masks_form_gui_t::border_toggling, dt_masks_point_ellipse_t::center, dt_masks_form_gui_t::creation, dt_masks_form_gui_t::creation_module, darktable, darktable_t::develop, dt_conf_get_float(), dt_conf_get_int(), dt_dev_distort_backtransform(), dt_dev_masks_selection_change(), DT_MASKS_CLONE, DT_MASKS_EDIT_FULL, DT_MASKS_ELLIPSE, dt_masks_get_from_id(), DT_MASKS_GROUP, dt_masks_gui_form_save_creation(), dt_masks_iop_update(), DT_MASKS_NON_CLONE, dt_masks_select_form(), dt_masks_set_edit_mode(), dt_masks_set_source_pos_initial_state(), dt_masks_set_source_pos_initial_value(), dt_modifier_is(), dt_masks_form_gui_t::dx, dt_masks_form_gui_t::dy, dt_masks_form_gui_t::edit_mode, dt_masks_point_ellipse_t::flags, dt_masks_form_gui_t::form_dragging, dt_develop_t::form_gui, dt_masks_form_gui_t::form_rotating, dt_masks_form_gui_t::form_selected, dt_develop_t::form_visible, dt_masks_point_group_t::formid, dt_masks_form_t::formid, dt_masks_form_gui_t::group_selected, dt_dev_pixelpipe_t::iheight, dt_dev_pixelpipe_t::iwidth, dt_masks_form_gui_t::point_dragging, dt_masks_form_gui_t::point_selected, dt_masks_form_t::points, dt_masks_form_gui_points_t::points, dt_masks_form_gui_t::points, dt_masks_form_gui_t::posx, dt_masks_form_gui_t::posy, dt_develop_t::preview_pipe, dt_masks_point_ellipse_t::radius, dt_masks_point_ellipse_t::rotation, dt_masks_form_gui_t::scrollx, dt_masks_form_gui_t::scrolly, dt_masks_form_t::source, dt_masks_form_gui_points_t::source, dt_masks_form_gui_t::source_dragging, dt_masks_form_gui_t::source_selected, TRUE, and dt_masks_form_t::type.

◆ _ellipse_events_button_released()

static int _ellipse_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

◆ _ellipse_events_mouse_moved()

◆ _ellipse_events_mouse_scrolled()

◆ _ellipse_events_post_expose()

static void _ellipse_events_post_expose ( cairo_t *  cr,
float  zoom_scale,
dt_masks_form_gui_t gui,
int  index,
int  num_points 
)
static

◆ _ellipse_get_area()

◆ _ellipse_get_distance()

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

◆ _ellipse_get_mask()

◆ _ellipse_get_mask_roi()

◆ _ellipse_get_points()

static int _ellipse_get_points ( dt_develop_t dev,
float  xx,
float  yy,
float  radius_a,
float  radius_b,
float  rotation,
float **  points,
int *  points_count 
)
static

◆ _ellipse_get_points_border()

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

◆ _ellipse_get_points_source()

static int _ellipse_get_points_source ( dt_develop_t dev,
float  xx,
float  yy,
float  xs,
float  ys,
float  radius_a,
float  radius_b,
float  rotation,
float **  points,
int *  points_count,
const dt_iop_module_t module 
)
static

◆ _ellipse_get_source_area()

◆ _ellipse_initial_source_pos()

static void _ellipse_initial_source_pos ( const float  iwd,
const float  iht,
float *  x,
float *  y 
)
static

References dt_conf_get_float().

◆ _ellipse_point_close_to_path()

static int _ellipse_point_close_to_path ( float  x,
float  y,
float  as,
float *  points,
int  points_count 
)
static

References sqf().

Referenced by _ellipse_get_distance().

◆ _ellipse_point_in_polygon()

static int _ellipse_point_in_polygon ( float  x,
float  y,
float *  points,
int  points_count 
)
static

References _ellipse_cross_test().

Referenced by _ellipse_get_distance().

◆ _ellipse_point_transform()

static void _ellipse_point_transform ( const float  xref,
const float  yref,
const float  x,
const float  y,
const float  sinr,
const float  cosr,
float *  xnew,
float *  ynew 
)
inlinestatic

◆ _ellipse_points_to_transform()

static float *const _ellipse_points_to_transform ( const float  center_x,
const float  center_y,
const float  dim1,
const float  dim2,
const float  rotation,
const float  wd,
const float  ht,
size_t *  point_count 
)
static

◆ _ellipse_sanitize_config()

◆ _ellipse_set_form_name()

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

References dt_masks_form_t::name.

◆ _ellipse_set_hint_message()

static void _ellipse_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

◆ _fill_mask()

static void _fill_mask ( const size_t  numpoints,
float *const  bufptr,
const float *const  points,
const float *const  center,
const float  a,
const float  b,
const float  ta,
const float  tb,
const float  alpha,
const size_t  out_scale 
)
static

References CLIP, and f().

Referenced by _ellipse_get_mask(), and _ellipse_get_mask_roi().

◆ _points_to_transform()

static float * _points_to_transform ( float  xx,
float  yy,
float  radius_a,
float  radius_b,
float  rotation,
float  wd,
float  ht,
int *  points_count 
)
static

Variable Documentation

◆ dt_masks_functions_ellipse

const dt_masks_functions_t dt_masks_functions_ellipse
Initial value:
= {
.point_struct_size = sizeof(struct dt_masks_point_ellipse_t),
.sanitize_config = _ellipse_sanitize_config,
.set_form_name = _ellipse_set_form_name,
.set_hint_message = _ellipse_set_hint_message,
.duplicate_points = _ellipse_duplicate_points,
.initial_source_pos = _ellipse_initial_source_pos,
.get_distance = _ellipse_get_distance,
.get_points = _ellipse_get_points,
.get_points_border = _ellipse_get_points_border,
.get_mask = _ellipse_get_mask,
.get_mask_roi = _ellipse_get_mask_roi,
.get_area = _ellipse_get_area,
.get_source_area = _ellipse_get_source_area,
.mouse_scrolled = _ellipse_events_mouse_scrolled,
.button_pressed = _ellipse_events_button_pressed,
.button_released = _ellipse_events_button_released,
}
static int _ellipse_get_points_border(dt_develop_t *dev, struct dt_masks_form_t *form, float **points, int *points_count, float **border, int *border_count, int source, const dt_iop_module_t *module)
Definition ellipse.c:417
static int _ellipse_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 ellipse.c:662
static int _ellipse_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 ellipse.c:1076
static int _ellipse_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 ellipse.c:825
static void _ellipse_sanitize_config(dt_masks_type_t type)
Definition ellipse.c:2145
static int _ellipse_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 ellipse.c:1782
static void _ellipse_initial_source_pos(const float iwd, const float iht, float *x, float *y)
Definition ellipse.c:2121
static int _ellipse_events_mouse_scrolled(struct dt_iop_module_t *module, float pzx, float pzy, int up, uint32_t state, dt_masks_form_t *form, int parentid, dt_masks_form_gui_t *gui, int index, dt_masks_interaction_t interaction)
Definition ellipse.c:449
static void _ellipse_duplicate_points(dt_develop_t *const dev, dt_masks_form_t *const base, dt_masks_form_t *const dest)
Definition ellipse.c:2109
static void _ellipse_get_distance(float x, float y, float as, dt_masks_form_gui_t *gui, int index, int num_points, int *inside, int *inside_border, int *near, int *inside_source, float *dist)
Definition ellipse.c:137
static void _ellipse_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 ellipse.c:2130
static void _ellipse_events_post_expose(cairo_t *cr, float zoom_scale, dt_masks_form_gui_t *gui, int index, int num_points)
Definition ellipse.c:1300
static int _ellipse_get_points(dt_develop_t *dev, float xx, float yy, float radius_a, float radius_b, float rotation, float **points, int *points_count)
Definition ellipse.c:398
static void _ellipse_set_form_name(struct dt_masks_form_t *const form, const size_t nb)
Definition ellipse.c:2104
static int _ellipse_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 ellipse.c:1751
static int _ellipse_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 ellipse.c:1880
static int _ellipse_get_source_area(dt_iop_module_t *module, dt_dev_pixelpipe_iop_t *piece, dt_masks_form_t *form, int *width, int *height, int *posx, int *posy)
Definition ellipse.c:1721
Definition masks.h:123

Referenced by dt_masks_calculate_source_pos_value(), and dt_masks_create().