Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
rotatepixels.c File Reference
#include "develop/imageop_gui.h"
#include "common/module_versioning.h"
#include "system/target_clones.h"
#include "pixel/interpolation.h"
#include "math/math.h"
#include "develop/develop.h"
#include "develop/geometry/geometry.h"
#include "develop/imageop.h"
#include "iop/iop_api.h"
#include <stdlib.h>
#include "widgets/label.h"
+ Include dependency graph for rotatepixels.c:

Go to the source code of this file.

Data Structures

struct  dt_iop_rotatepixels_gui_data_t
 
struct  dt_iop_rotatepixels_params_t
 
struct  dt_iop_rotatepixels_data_t
 

Typedefs

typedef struct dt_iop_rotatepixels_gui_data_t dt_iop_rotatepixels_gui_data_t
 
typedef struct dt_iop_rotatepixels_params_t dt_iop_rotatepixels_params_t
 
typedef struct dt_iop_rotatepixels_data_t dt_iop_rotatepixels_data_t
 

Functions

static void get_corner (const float *aabb, const int i, float *p)
 
static void adjust_aabb (const float *p, float *aabb)
 
const char * name ()
 
int flags ()
 
int default_group ()
 
int operation_tags ()
 
int default_colorspace (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece)
 
const char ** description (struct dt_iop_module_t *self)
 
static void transform (const dt_iop_rotatepixels_data_t *const d, const float scale, const float *const x, float *o)
 
static void backtransform (const dt_iop_rotatepixels_data_t *const d, const float scale, const float *const x, float *o)
 
static void _rotatepixels_map_size (const dt_iop_rotatepixels_data_t *const d, const dt_iop_roi_t *const roi_in, dt_iop_roi_t *roi_out)
 Input rect -> output rect: the inner rectangle of the 45-degree rotation.
 
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)
 
void modify_roi_out (dt_iop_module_t *self, const dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece, dt_iop_roi_t *roi_out, const dt_iop_roi_t *const roi_in)
 
void modify_roi_in (dt_iop_module_t *self, const dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece, const dt_iop_roi_t *const roi_out, dt_iop_roi_t *roi_in)
 
__DT_CLONE_TARGETS__ int process (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 _rotatepixels_resolve (const dt_iop_rotatepixels_params_t *const p, dt_iop_rotatepixels_data_t *d)
 Params -> committed data. THE constructor, shared with geometry_record().
 
void commit_params (dt_iop_module_t *self, dt_iop_params_t *p1, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
static void _rotatepixels_geometry_map_size (const void *data, const dt_iop_roi_t *const in, dt_iop_roi_t *out)
 
static int _rotatepixels_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 _rotatepixels_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 (dt_iop_module_t *self, const void *params, dt_geometry_record_t *record)
 
void init_pipe (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
void cleanup_pipe (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
void reload_defaults (dt_iop_module_t *self)
 
void gui_update (dt_iop_module_t *self)
 Refresh GUI controls from current params and configuration.
 
void gui_init (dt_iop_module_t *self)
 

Variables

static const dt_geometry_vtable_t _rotatepixels_geometry_vtable
 

Typedef Documentation

◆ dt_iop_rotatepixels_data_t

◆ dt_iop_rotatepixels_gui_data_t

◆ dt_iop_rotatepixels_params_t

Function Documentation

◆ _rotatepixels_geometry_backtransform()

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

Definition at line 369 of file rotatepixels.c.

References backtransform(), d, i, dt_geometry_record_t::in, and dt_iop_roi_t::scale.

◆ _rotatepixels_geometry_map_size()

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

Definition at line 349 of file rotatepixels.c.

References _rotatepixels_map_size(), and out.

◆ _rotatepixels_geometry_transform()

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

Definition at line 354 of file rotatepixels.c.

References d, i, dt_geometry_record_t::in, dt_iop_roi_t::scale, and transform().

◆ _rotatepixels_map_size()

static void _rotatepixels_map_size ( const dt_iop_rotatepixels_data_t *const  d,
const dt_iop_roi_t *const  roi_in,
dt_iop_roi_t roi_out 
)
static

Input rect -> output rect: the inner rectangle of the 45-degree rotation.

NOTE the non-parameter input: the output size depends on the user's interpolator preference, because the margin this trims is the interpolation kernel's width. A record captures it at publish time, which is correct as long as changing that preference re-publishes – it forces a pipeline rebuild, which republishes the geometry.

Definition at line 155 of file rotatepixels.c.

References d, dt_interpolation_new(), DT_INTERPOLATION_USERPREF, dt_iop_roi_t::height, MAX, dt_iop_roi_t::scale, dt_iop_roi_t::width, dt_interpolation::width, and x.

Referenced by _rotatepixels_geometry_map_size(), and modify_roi_out().

◆ _rotatepixels_resolve()

static void _rotatepixels_resolve ( const dt_iop_rotatepixels_params_t *const  p,
dt_iop_rotatepixels_data_t d 
)
static

Params -> committed data. THE constructor, shared with geometry_record().

Definition at line 322 of file rotatepixels.c.

References d, k, M_PI, and p.

Referenced by commit_params(), and geometry_record().

◆ adjust_aabb()

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

Definition at line 75 of file rotatepixels.c.

References p.

Referenced by modify_roi_in().

◆ backtransform()

static void backtransform ( const dt_iop_rotatepixels_data_t *const  d,
const float  scale,
const float *const  x,
float *  o 
)
static

◆ cleanup_pipe()

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

Definition at line 419 of file rotatepixels.c.

References dt_dev_pixelpipe_iop_t::data, and dt_free_align.

◆ commit_params()

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

◆ 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 105 of file rotatepixels.c.

References IOP_CS_RGB.

◆ default_group()

int default_group ( )

Definition at line 95 of file rotatepixels.c.

References IOP_GROUP_TECHNICAL.

◆ description()

const char ** description ( struct dt_iop_module_t self)

Definition at line 110 of file rotatepixels.c.

References dt_iop_set_description().

◆ 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 
)
Todo:

Definition at line 218 of file rotatepixels.c.

References dt_iop_roi_t::height, out, void(), and dt_iop_roi_t::width.

◆ 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()

◆ geometry_record()

◆ get_corner()

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

Definition at line 70 of file rotatepixels.c.

References i, k, and p.

Referenced by modify_roi_in().

◆ gui_init()

void gui_init ( dt_iop_module_t self)

◆ gui_update()

void gui_update ( dt_iop_module_t self)

Refresh GUI controls from current params and configuration.

Todo:
check why needed
Todo:
by hand

Definition at line 440 of file rotatepixels.c.

References dt_iop_module_t::default_enabled, dt_iop_module_t::gui, and dt_iop_module_gui_t::widget.

◆ init_pipe()

◆ modify_roi_in()

◆ modify_roi_out()

void modify_roi_out ( dt_iop_module_t self,
const dt_dev_pixelpipe_t pipe,
dt_dev_pixelpipe_iop_t piece,
dt_iop_roi_t roi_out,
const dt_iop_roi_t *const  roi_in 
)

Definition at line 230 of file rotatepixels.c.

References _rotatepixels_map_size(), and dt_dev_pixelpipe_iop_t::data.

◆ name()

const char * name ( )

Definition at line 84 of file rotatepixels.c.

◆ operation_tags()

int operation_tags ( )

Definition at line 100 of file rotatepixels.c.

References IOP_TAG_DISTORT.

◆ process()

◆ reload_defaults()

◆ transform()

static void transform ( const dt_iop_rotatepixels_data_t *const  d,
const float  scale,
const float *const  x,
float *  o 
)
static

Definition at line 127 of file rotatepixels.c.

References d, mul_mat_vec_2(), and x.

Referenced by _rotatepixels_geometry_transform(), and distort_transform().

Variable Documentation

◆ _rotatepixels_geometry_vtable

const dt_geometry_vtable_t _rotatepixels_geometry_vtable
static
Initial value:
= {
}
static void _rotatepixels_geometry_map_size(const void *data, const dt_iop_roi_t *const in, dt_iop_roi_t *out)
static int _rotatepixels_geometry_backtransform(const void *data, const dt_geometry_record_t *const record, dt_geometry_chain_t *chain, float *points, size_t points_count)
static int _rotatepixels_geometry_transform(const void *data, const dt_geometry_record_t *const record, dt_geometry_chain_t *chain, float *points, size_t points_count)

Definition at line 385 of file rotatepixels.c.

Referenced by geometry_record().