Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
clipping.c File Reference
#include "widgets/bauhaus.h"
#include "widgets/accelerators.h"
#include "system/macros.h"
#include "system/openmp.h"
#include "system/target_clones.h"
#include "system/mem_alloc.h"
#include "common/module_versioning.h"
#include "common/image.h"
#include "common/imagebuf.h"
#include "pixel/interpolation.h"
#include "math/math.h"
#include "common/conf.h"
#include "control/input.h"
#include "control/control.h"
#include "develop/develop.h"
#include "develop/geometry/geometry.h"
#include "develop/imageop.h"
#include "develop/imageop_gui.h"
#include "widgets/draw.h"
#include "gui/guides.h"
#include "iop/iop_api.h"
#include <assert.h>
#include <gdk/gdkkeysyms.h>
#include <gtk/gtk.h>
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include "widgets/notebook.h"
#include "control/signal.h"
+ Include dependency graph for clipping.c:

Go to the source code of this file.

Data Structures

struct  dt_iop_clipping_aspect_t
 
struct  dt_iop_clipping_params_t
 
struct  dt_iop_clipping_gui_data_t
 
struct  dt_iop_clipping_data_t
 

Typedefs

typedef enum dt_iop_clipping_flags_t dt_iop_clipping_flags_t
 
typedef struct dt_iop_clipping_aspect_t dt_iop_clipping_aspect_t
 
typedef struct dt_iop_clipping_params_t dt_iop_clipping_params_t
 
typedef enum _grab_region_t _grab_region_t
 
typedef struct dt_iop_clipping_gui_data_t dt_iop_clipping_gui_data_t
 
typedef struct dt_iop_clipping_data_t dt_iop_clipping_data_t
 

Enumerations

enum  dt_iop_clipping_flags_t {
  FLAG_FLIP_HORIZONTAL = 1 << 0 ,
  FLAG_FLIP_VERTICAL = 1 << 1
}
 
enum  _grab_region_t {
  GRAB_CENTER = 0 ,
  GRAB_LEFT = 1 << 0 ,
  GRAB_TOP = 1 << 1 ,
  GRAB_RIGHT = 1 << 2 ,
  GRAB_BOTTOM = 1 << 3 ,
  GRAB_TOP_LEFT = GRAB_TOP | GRAB_LEFT ,
  GRAB_TOP_RIGHT = GRAB_TOP | GRAB_RIGHT ,
  GRAB_BOTTOM_RIGHT = GRAB_BOTTOM | GRAB_RIGHT ,
  GRAB_BOTTOM_LEFT = GRAB_BOTTOM | GRAB_LEFT ,
  GRAB_HORIZONTAL = GRAB_LEFT | GRAB_RIGHT ,
  GRAB_VERTICAL = GRAB_TOP | GRAB_BOTTOM ,
  GRAB_ALL = GRAB_LEFT | GRAB_TOP | GRAB_RIGHT | GRAB_BOTTOM ,
  GRAB_NONE = 1 << 4
}
 

Functions

static void keystone_type_populate (struct dt_iop_module_t *self, gboolean with_applied, int select)
 
int legacy_params (dt_iop_module_t *self, const void *const old_params, const int old_version, void *new_params, const int new_version)
 
static void commit_box (dt_iop_module_t *self, dt_iop_clipping_gui_data_t *g, dt_iop_clipping_params_t *p)
 
static void get_corner (const float *aabb, const int i, float *p)
 
static void adjust_aabb (const float *p, float *aabb)
 
const char * deprecated_msg ()
 
const char * name ()
 
const char * aliases ()
 
const char ** description (struct dt_iop_module_t *self)
 
int default_group ()
 
int flags ()
 
int operation_tags ()
 
int operation_tags_filter ()
 
int default_colorspace (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece)
 
static int gui_has_focus (struct dt_iop_module_t *self)
 
static __attribute__ ((always_inline))
 
static void keystone_backtransform (float *i, const dt_boundingbox_t k_space, float a, float b, float d, float e, float g, float h, float kxa, float kya)
 
static void keystone_transform (float *i, const dt_boundingbox_t k_space, float a, float b, float d, float e, float g, float h, float kxa, float kya)
 
static void backtransform (float *x, float *o, const float *m, const float t_h, const float t_v)
 
static void inv_matrix (float *m, float *inv_m)
 
static void transform (float *x, float *o, const float *m, const float t_h, const float t_v)
 
static void _clipping_derive (dt_iop_clipping_data_t *d, const dt_iop_roi_t *const roi_in_orig, dt_iop_roi_t *roi_out)
 Derive this module's whole geometric state, and the output rect, from the committed parameters and the input dimensions. THE constructor and THE size evaluator at once.
 
int distort_transform (dt_iop_module_t *self, const dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece, float *const restrict points, size_t points_count)
 
int distort_backtransform (dt_iop_module_t *self, const dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece, float *const restrict points, size_t points_count)
 
void distort_mask (struct dt_iop_module_t *self, const struct dt_dev_pixelpipe_t *pipe, struct dt_dev_pixelpipe_iop_t *piece, const float *const in, float *const out, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)
 
static int _iop_clipping_set_max_clip (struct dt_iop_module_t *self)
 
void modify_roi_out (struct dt_iop_module_t *self, const struct dt_dev_pixelpipe_t *pipe, struct dt_dev_pixelpipe_iop_t *piece, dt_iop_roi_t *roi_out, const dt_iop_roi_t *roi_in_orig)
 
void modify_roi_in (struct dt_iop_module_t *self, const struct dt_dev_pixelpipe_t *pipe, struct dt_dev_pixelpipe_iop_t *piece, const dt_iop_roi_t *roi_out, dt_iop_roi_t *roi_in)
 
__DT_CLONE_TARGETS__ int process (struct dt_iop_module_t *self, const dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid)
 
static void _clipping_resolve (struct dt_iop_module_t *self, const dt_iop_clipping_params_t *const p, dt_iop_clipping_data_t *d)
 Parameters -> committed data. THE constructor.
 
void commit_params (struct dt_iop_module_t *self, dt_iop_params_t *p1, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
static void _event_preview_updated_callback (gpointer instance, dt_iop_module_t *self)
 
void gui_focus (struct dt_iop_module_t *self, gboolean in)
 
static void _clipping_geometry_map_size (const void *data, const dt_iop_roi_t *const in, dt_iop_roi_t *out)
 
static void _clipping_keystone (const dt_iop_clipping_data_t *const d, const float rx, const float ry, dt_boundingbox_t k_space, float *kxa, float *kya, float *ma, float *mb, float *md, float *me, float *mg, float *mh)
 The keystone matrix and the scaled quadrilateral, which both directions need.
 
static int _clipping_geometry_transform (const void *data, const dt_geometry_record_t *const record, dt_geometry_chain_t *chain, float *points, size_t points_count)
 
static int _clipping_geometry_backtransform (const void *data, const dt_geometry_record_t *const record, dt_geometry_chain_t *chain, float *points, size_t points_count)
 
gboolean geometry_record (struct dt_iop_module_t *self, const void *params, dt_geometry_record_t *record)
 
void init_pipe (struct dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
void cleanup_pipe (struct dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
static float _ratio_get_aspect (dt_iop_module_t *self, GtkWidget *combo)
 
static void apply_box_aspect (dt_iop_module_t *self, _grab_region_t grab)
 
void reload_defaults (dt_iop_module_t *self)
 
gboolean has_defaults (struct dt_iop_module_t *self)
 
static void _float_to_fract (const char *num, int *n, int *d)
 
static void aspect_presets_changed (GtkWidget *combo, dt_iop_module_t *self)
 
void gui_changed (dt_iop_module_t *self, GtkWidget *w, void *previous)
 
void gui_reset (struct dt_iop_module_t *self)
 
static void keystone_type_changed (GtkWidget *combo, dt_iop_module_t *self)
 
void gui_update (struct dt_iop_module_t *self)
 
static void hvflip_callback (GtkWidget *widget, dt_iop_module_t *self)
 
static void key_swap_callback (GtkAccelGroup *accel_group, GObject *acceleratable, guint keyval, GdkModifierType modifier, gpointer d)
 
static void aspect_flip (GtkWidget *button, dt_iop_module_t *self)
 
static gint _aspect_ratio_cmp (const dt_iop_clipping_aspect_t *a, const dt_iop_clipping_aspect_t *b)
 
static gchar * format_aspect (gchar *original, int adim, int bdim)
 
void gui_init (struct dt_iop_module_t *self)
 
static void free_aspect (gpointer data)
 
void gui_cleanup (struct dt_iop_module_t *self)
 
static _grab_region_t get_grab (float pzx, float pzy, dt_iop_clipping_gui_data_t *g, const float border, const float wd, const float ht)
 
static void gui_draw_sym (cairo_t *cr, float x, float y, float scale, gboolean active)
 
void gui_post_expose (struct dt_iop_module_t *self, cairo_t *cr, int32_t width, int32_t height, int32_t pointerx, int32_t pointery)
 
static float dist_seg (float xa, float ya, float xb, float yb, float xc, float yc)
 
int mouse_moved (struct dt_iop_module_t *self, double x, double y, double pressure, int which)
 
int button_released (struct dt_iop_module_t *self, double x, double y, int which, uint32_t state)
 
int button_pressed (struct dt_iop_module_t *self, double x, double y, double pressure, int which, int type, uint32_t state)
 

Variables

static const dt_geometry_vtable_t _clipping_geometry_vtable
 

Typedef Documentation

◆ _grab_region_t

◆ dt_iop_clipping_aspect_t

◆ dt_iop_clipping_data_t

◆ dt_iop_clipping_flags_t

flip H/V, rotate an image, then clip the buffer.

◆ dt_iop_clipping_gui_data_t

◆ dt_iop_clipping_params_t

Enumeration Type Documentation

◆ _grab_region_t

Enumerator
GRAB_CENTER 
GRAB_LEFT 
GRAB_TOP 
GRAB_RIGHT 
GRAB_BOTTOM 
GRAB_TOP_LEFT 
GRAB_TOP_RIGHT 
GRAB_BOTTOM_RIGHT 
GRAB_BOTTOM_LEFT 
GRAB_HORIZONTAL 
GRAB_VERTICAL 
GRAB_ALL 
GRAB_NONE 

Definition at line 146 of file clipping.c.

◆ dt_iop_clipping_flags_t

flip H/V, rotate an image, then clip the buffer.

Enumerator
FLAG_FLIP_HORIZONTAL 
FLAG_FLIP_VERTICAL 

Definition at line 111 of file clipping.c.

Function Documentation

◆ __attribute__()

static __attribute__ ( (always_inline)  )
inlinestatic

Definition at line 410 of file clipping.c.

References d, and g.

◆ _aspect_ratio_cmp()

static gint _aspect_ratio_cmp ( const dt_iop_clipping_aspect_t a,
const dt_iop_clipping_aspect_t b 
)
static

Definition at line 2147 of file clipping.c.

References MAX, and MIN.

Referenced by gui_init().

◆ _clipping_derive()

static void _clipping_derive ( dt_iop_clipping_data_t d,
const dt_iop_roi_t *const  roi_in_orig,
dt_iop_roi_t roi_out 
)
static

Derive this module's whole geometric state, and the output rect, from the committed parameters and the input dimensions. THE constructor and THE size evaluator at once.

This is modify_roi_out()'s body, unchanged, with the one line that reached into a pipeline piece removed. It was already self-contained – nothing else in those ~190 lines touched ‘piece’, ‘self’ or ‘pipe’ – which is what makes lifting it out safe.

It WRITES into d: the rotation matrix and its inverse, the resolution-corrected keystone factors, the rotation centre, the crop window on the output, the enlargement and the flip are all functions of the input size and cannot be settled until that size is known. Callers who need those fields without planning a ROI – the distort callbacks, and the geometry service's record (develop/geometry/geometry.h) – must therefore run this first. They used to do it by calling modify_roi_out() through the module's own vtable on a SHALLOW COPY of the piece whose ‘data’ pointer still aliased the real one, so the writes landed where they were wanted. Calling this directly says the same thing without the disguise.

Definition at line 746 of file clipping.c.

References d, f, FLAG_FLIP_HORIZONTAL, FLAG_FLIP_VERTICAL, flip, get_corner(), height, dt_iop_roi_t::height, inv_matrix(), k, keystone_transform(), p, transform(), width, dt_iop_roi_t::width, dt_iop_roi_t::x, and dt_iop_roi_t::y.

Referenced by _clipping_geometry_backtransform(), _clipping_geometry_map_size(), _clipping_geometry_transform(), distort_backtransform(), distort_transform(), and modify_roi_out().

◆ _clipping_geometry_backtransform()

static int _clipping_geometry_backtransform ( const void data,
const dt_geometry_record_t *const  record,
dt_geometry_chain_t chain,
float *  points,
size_t  points_count 
)
static

◆ _clipping_geometry_map_size()

static void _clipping_geometry_map_size ( const void data,
const dt_iop_roi_t *const  in,
dt_iop_roi_t out 
)
static

Definition at line 1352 of file clipping.c.

References _clipping_derive(), and out.

◆ _clipping_geometry_transform()

static int _clipping_geometry_transform ( const void data,
const dt_geometry_record_t *const  record,
dt_geometry_chain_t chain,
float *  points,
size_t  points_count 
)
static

◆ _clipping_keystone()

static void _clipping_keystone ( const dt_iop_clipping_data_t *const  d,
const float  rx,
const float  ry,
dt_boundingbox_t  k_space,
float *  kxa,
float *  kya,
float *  ma,
float *  mb,
float *  md,
float *  me,
float *  mg,
float *  mh 
)
static

The keystone matrix and the scaled quadrilateral, which both directions need.

Definition at line 1359 of file clipping.c.

References d.

Referenced by _clipping_geometry_backtransform(), and _clipping_geometry_transform().

◆ _clipping_resolve()

static void _clipping_resolve ( struct dt_iop_module_t self,
const dt_iop_clipping_params_t *const  p,
dt_iop_clipping_data_t d 
)
static

Parameters -> committed data. THE constructor.

commit_params()'s body, unchanged, minus the two lines that fetched the parameters and the piece. Like _clipping_derive() below it was already self-contained, and the geometry record needs it for the same reason: it has parameters and no pipeline piece to put them in.

It reads ONE thing that is not a parameter: gui_has_focus(), which neutralises the crop while this module is the focused one so the darkroom shows the whole frame to drag the crop over. That is GUI state and never reaches history, which is why a record cannot be built from history alone and why this takes self.

Note what this does NOT settle – everything that depends on the input size (the matrices, the keystone factors corrected by resolution, the rotation centre, the crop on the output). That is _clipping_derive()'s job, and it has to run afterwards.

Definition at line 1105 of file clipping.c.

References CLAMPF, d, dt_iop_module_t::dev, FLAG_FLIP_HORIZONTAL, FLAG_FLIP_VERTICAL, gui_has_focus(), dt_image_t::id, dt_develop_t::image_storage, M_PI, and p.

Referenced by commit_params(), and geometry_record().

◆ _event_preview_updated_callback()

static void _event_preview_updated_callback ( gpointer  instance,
dt_iop_module_t self 
)
static

◆ _float_to_fract()

static void _float_to_fract ( const char *  num,
int *  n,
int *  d 
)
static

Definition at line 1751 of file clipping.c.

References d, FALSE, k, n, p, and TRUE.

Referenced by aspect_presets_changed().

◆ _iop_clipping_set_max_clip()

◆ _ratio_get_aspect()

◆ adjust_aabb()

static void adjust_aabb ( const float *  p,
float *  aabb 
)
inlinestatic

Definition at line 346 of file clipping.c.

References p.

Referenced by modify_roi_in().

◆ aliases()

const char * aliases ( )

Definition at line 364 of file clipping.c.

◆ apply_box_aspect()

◆ aspect_flip()

static void aspect_flip ( GtkWidget button,
dt_iop_module_t self 
)
static

Definition at line 2142 of file clipping.c.

References key_swap_callback().

Referenced by gui_init().

◆ aspect_presets_changed()

◆ backtransform()

static void backtransform ( float *  x,
float *  o,
const float *  m,
const float  t_h,
const float  t_v 
)
inlinestatic

◆ button_pressed()

◆ button_released()

int button_released ( struct dt_iop_module_t self,
double  x,
double  y,
int  which,
uint32_t  state 
)

◆ cleanup_pipe()

void cleanup_pipe ( struct dt_iop_module_t self,
dt_dev_pixelpipe_t pipe,
dt_dev_pixelpipe_iop_t piece 
)

Definition at line 1480 of file clipping.c.

References dt_dev_pixelpipe_iop_t::data, and dt_free_align.

◆ commit_box()

◆ commit_params()

void commit_params ( struct dt_iop_module_t self,
dt_iop_params_t p1,
dt_dev_pixelpipe_t pipe,
dt_dev_pixelpipe_iop_t piece 
)

Definition at line 1271 of file clipping.c.

References _clipping_resolve(), and dt_dev_pixelpipe_iop_t::data.

◆ default_colorspace()

int default_colorspace ( dt_iop_module_t self,
dt_dev_pixelpipe_t pipe,
const dt_dev_pixelpipe_iop_t piece 
)

Definition at line 400 of file clipping.c.

References IOP_CS_RGB.

◆ default_group()

int default_group ( )

Definition at line 378 of file clipping.c.

References IOP_GROUP_EFFECTS.

◆ deprecated_msg()

const char * deprecated_msg ( )

Definition at line 354 of file clipping.c.

◆ description()

const char ** description ( struct dt_iop_module_t self)

Definition at line 369 of file clipping.c.

References dt_iop_set_description().

◆ dist_seg()

static float dist_seg ( float  xa,
float  ya,
float  xb,
float  yb,
float  xc,
float  yc 
)
static

Definition at line 2814 of file clipping.c.

Referenced by mouse_moved().

◆ distort_backtransform()

int distort_backtransform ( dt_iop_module_t self,
const dt_dev_pixelpipe_t pipe,
const dt_dev_pixelpipe_iop_t piece,
float *const restrict  points,
size_t  points_count 
)

◆ distort_mask()

void distort_mask ( struct dt_iop_module_t self,
const struct dt_dev_pixelpipe_t pipe,
struct dt_dev_pixelpipe_iop_t piece,
const float *const  in,
float *const  out,
const dt_iop_roi_t *const  roi_in,
const dt_iop_roi_t *const  roi_out 
)

◆ distort_transform()

int distort_transform ( dt_iop_module_t self,
const dt_dev_pixelpipe_t pipe,
const dt_dev_pixelpipe_iop_t piece,
float *const restrict  points,
size_t  points_count 
)

◆ flags()

int flags ( )

◆ format_aspect()

static gchar * format_aspect ( gchar *  original,
int  adim,
int  bdim 
)
static

Definition at line 2169 of file clipping.c.

Referenced by gui_init().

◆ free_aspect()

static void free_aspect ( gpointer  data)
static

Definition at line 2375 of file clipping.c.

References dt_free, and dt_iop_clipping_aspect_t::name.

Referenced by gui_cleanup().

◆ geometry_record()

◆ get_corner()

static void get_corner ( const float *  aabb,
const int  i,
float *  p 
)
inlinestatic

Definition at line 341 of file clipping.c.

References i, k, and p.

Referenced by _clipping_derive(), and modify_roi_in().

◆ get_grab()

static _grab_region_t get_grab ( float  pzx,
float  pzy,
dt_iop_clipping_gui_data_t g,
const float  border,
const float  wd,
const float  ht 
)
static

Definition at line 2391 of file clipping.c.

References g, GRAB_BOTTOM, GRAB_CENTER, GRAB_LEFT, GRAB_NONE, GRAB_RIGHT, and GRAB_TOP.

Referenced by gui_post_expose(), and mouse_moved().

◆ gui_changed()

◆ gui_cleanup()

void gui_cleanup ( struct dt_iop_module_t self)

Definition at line 2382 of file clipping.c.

References dt_iop_gui_data(), free_aspect(), g, and IOP_GUI_FREE.

◆ gui_draw_sym()

static void gui_draw_sym ( cairo_t *  cr,
float  x,
float  y,
float  scale,
gboolean  active 
)
static

◆ gui_focus()

◆ gui_has_focus()

static int gui_has_focus ( struct dt_iop_module_t self)
static

Definition at line 405 of file clipping.c.

References dt_iop_module_t::dev, and dt_develop_t::gui_module.

Referenced by _clipping_resolve().

◆ gui_init()

◆ gui_post_expose()

◆ gui_reset()

void gui_reset ( struct dt_iop_module_t self)

Definition at line 1960 of file clipping.c.

References dt_conf_set_int(), dt_iop_gui_data(), and g.

◆ gui_update()

◆ has_defaults()

gboolean has_defaults ( struct dt_iop_module_t self)

Definition at line 1743 of file clipping.c.

References d, dt_iop_module_t::default_params, p, and dt_iop_module_t::params.

◆ hvflip_callback()

static void hvflip_callback ( GtkWidget widget,
dt_iop_module_t self 
)
static

◆ init_pipe()

void init_pipe ( struct dt_iop_module_t self,
dt_dev_pixelpipe_t pipe,
dt_dev_pixelpipe_iop_t piece 
)

◆ inv_matrix()

static void inv_matrix ( float *  m,
float *  inv_m 
)
inlinestatic

Definition at line 477 of file clipping.c.

References m.

Referenced by _clipping_derive().

◆ key_swap_callback()

static void key_swap_callback ( GtkAccelGroup *  accel_group,
GObject *  acceleratable,
guint  keyval,
GdkModifierType  modifier,
gpointer  d 
)
static

◆ keystone_backtransform()

static void keystone_backtransform ( float *  i,
const dt_boundingbox_t  k_space,
float  a,
float  b,
float  d,
float  e,
float  g,
float  h,
float  kxa,
float  kya 
)
inlinestatic

Definition at line 444 of file clipping.c.

References d, g, and i.

Referenced by _clipping_geometry_backtransform(), distort_backtransform(), distort_mask(), modify_roi_in(), and process().

◆ keystone_transform()

static void keystone_transform ( float *  i,
const dt_boundingbox_t  k_space,
float  a,
float  b,
float  d,
float  e,
float  g,
float  h,
float  kxa,
float  kya 
)
inlinestatic

Definition at line 457 of file clipping.c.

References d, g, and i.

Referenced by _clipping_derive(), _clipping_geometry_transform(), and distort_transform().

◆ keystone_type_changed()

static void keystone_type_changed ( GtkWidget combo,
dt_iop_module_t self 
)
static

◆ keystone_type_populate()

static void keystone_type_populate ( struct dt_iop_module_t self,
gboolean  with_applied,
int  select 
)
static

◆ legacy_params()

int legacy_params ( dt_iop_module_t self,
const void *const  old_params,
const int  old_version,
void new_params,
const int  new_version 
)

Definition at line 166 of file clipping.c.

References ch, f, k, and n.

◆ modify_roi_in()

◆ modify_roi_out()

void modify_roi_out ( struct dt_iop_module_t self,
const struct dt_dev_pixelpipe_t pipe,
struct dt_dev_pixelpipe_iop_t piece,
dt_iop_roi_t roi_out,
const dt_iop_roi_t roi_in_orig 
)

Definition at line 931 of file clipping.c.

References _clipping_derive(), and dt_dev_pixelpipe_iop_t::data.

◆ mouse_moved()

◆ name()

const char * name ( )

Definition at line 359 of file clipping.c.

Referenced by gui_init().

◆ operation_tags()

int operation_tags ( )

Definition at line 389 of file clipping.c.

References IOP_TAG_CLIPPING, and IOP_TAG_DISTORT.

◆ operation_tags_filter()

int operation_tags_filter ( )

Definition at line 394 of file clipping.c.

References IOP_TAG_CLIPPING, and IOP_TAG_DECORATION.

◆ process()

◆ reload_defaults()

◆ transform()

Variable Documentation

◆ _clipping_geometry_vtable

const dt_geometry_vtable_t _clipping_geometry_vtable
static
Initial value:
= {
}
static int _clipping_geometry_transform(const void *data, const dt_geometry_record_t *const record, dt_geometry_chain_t *chain, float *points, size_t points_count)
Definition clipping.c:1375
static void _clipping_geometry_map_size(const void *data, const dt_iop_roi_t *const in, dt_iop_roi_t *out)
Definition clipping.c:1352
static int _clipping_geometry_backtransform(const void *data, const dt_geometry_record_t *const record, dt_geometry_chain_t *chain, float *points, size_t points_count)
Definition clipping.c:1414

Definition at line 1455 of file clipping.c.

Referenced by geometry_record().