Blender  V2.93
transform_snap.c File Reference
#include <float.h>
#include "PIL_time.h"
#include "DNA_windowmanager_types.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "GPU_immediate.h"
#include "GPU_state.h"
#include "BKE_context.h"
#include "BKE_editmesh.h"
#include "BKE_layer.h"
#include "BKE_object.h"
#include "BKE_scene.h"
#include "RNA_access.h"
#include "SEQ_sequencer.h"
#include "SEQ_time.h"
#include "WM_types.h"
#include "ED_gizmo_library.h"
#include "ED_markers.h"
#include "ED_node.h"
#include "ED_transform_snap_object_context.h"
#include "ED_uvedit.h"
#include "UI_resources.h"
#include "UI_view2d.h"
#include "MEM_guardedalloc.h"
#include "transform.h"
#include "transform_convert.h"
#include "transform_snap.h"

Go to the source code of this file.

Functions

Prototypes
static void setSnappingCallback (TransInfo *t)
 
static void CalcSnapGeometry (TransInfo *t, float *vec)
 
static void TargetSnapMedian (TransInfo *t)
 
static void TargetSnapCenter (TransInfo *t)
 
static void TargetSnapClosest (TransInfo *t)
 
static void TargetSnapActive (TransInfo *t)
 
Implementations
static bool snapNodeTest (View2D *v2d, bNode *node, eSnapSelect snap_select)
 
static NodeBorder snapNodeBorder (int snap_node_mode)
 
static bool snap_use_backface_culling (const TransInfo *t)
 
bool validSnap (const TransInfo *t)
 
bool activeSnap (const TransInfo *t)
 
bool transformModeUseSnap (const TransInfo *t)
 
static bool doForceIncrementSnap (const TransInfo *t)
 
void drawSnapping (const struct bContext *C, TransInfo *t)
 
eRedrawFlag handleSnapping (TransInfo *t, const wmEvent *event)
 
void applyProject (TransInfo *t)
 
void applyGridAbsolute (TransInfo *t)
 
void applySnapping (TransInfo *t, float *vec)
 
void resetSnapping (TransInfo *t)
 
bool usingSnappingNormal (const TransInfo *t)
 
bool validSnappingNormal (const TransInfo *t)
 
static bool bm_edge_is_snap_target (BMEdge *e, void *UNUSED(user_data))
 
static bool bm_face_is_snap_target (BMFace *f, void *UNUSED(user_data))
 
static void initSnappingMode (TransInfo *t)
 
void initSnapping (TransInfo *t, wmOperator *op)
 
void freeSnapping (TransInfo *t)
 
void addSnapPoint (TransInfo *t)
 
eRedrawFlag updateSelectedSnapPoint (TransInfo *t)
 
void removeSnapPoint (TransInfo *t)
 
void getSnapPoint (const TransInfo *t, float vec[3])
 
Calc Snap (Generic)
static void CalcSnapGeometry (TransInfo *t, float *UNUSED(vec))
 
Target
static void snap_target_median_impl (TransInfo *t, float r_median[3])
 
static void snap_target_grid_ensure (TransInfo *t)
 
static void TargetSnapOffset (TransInfo *t, TransData *td)
 
Snap Objects
short snapObjectsTransform (TransInfo *t, const float mval[2], float *dist_px, float r_loc[3], float r_no[3])
 
Peeling
bool peelObjectsTransform (TransInfo *t, const float mval[2], const bool use_peel_object, float r_loc[3], float r_no[3], float *r_thickness)
 
snap Nodes
static bool snapNode (ToolSettings *ts, SpaceNode *UNUSED(snode), ARegion *region, bNode *node, const int mval[2], float r_loc[2], float *r_dist_px, char *r_node_border)
 
static bool snapNodes (ToolSettings *ts, SpaceNode *snode, ARegion *region, const int mval[2], eSnapSelect snap_select, float r_loc[2], float *r_dist_px, char *r_node_border)
 
bool snapNodesTransform (TransInfo *t, const int mval[2], float r_loc[2], float *r_dist_px, char *r_node_border)
 
snap Frames
void snapFrameTransform (TransInfo *t, const eAnimEdit_AutoSnap autosnap, const bool is_frame_value, const float delta, float *r_val)
 
void snapSequenceBounds (TransInfo *t, const int mval[2])
 
static void snap_grid_apply (TransInfo *t, const int max_index, const float grid_dist, const float loc[3], float r_out[3])
 
bool transform_snap_grid (TransInfo *t, float *val)
 
static void snap_increment_apply_ex (TransInfo *UNUSED(t), const int max_index, const float increment_val, const float aspect[3], const float loc[3], float r_out[3])
 
static void snap_increment_apply (TransInfo *t, int max_index, const float increment_dist, float *r_val)
 
bool transform_snap_increment_ex (TransInfo *t, bool use_local_space, float *r_val)
 
bool transform_snap_increment (TransInfo *t, float *r_val)
 
Generic callbacks
float transform_snap_distance_len_squared_fn (TransInfo *UNUSED(t), const float p1[3], const float p2[3])
 

Function Documentation

◆ activeSnap()

bool activeSnap ( const TransInfo t)

◆ addSnapPoint()

void addSnapPoint ( TransInfo t)

◆ applyGridAbsolute()

void applyGridAbsolute ( TransInfo t)

◆ applyProject()

void applyProject ( TransInfo t)

◆ applySnapping()

void applySnapping ( TransInfo t,
float vec 
)

◆ bm_edge_is_snap_target()

static bool bm_edge_is_snap_target ( BMEdge e,
void *  UNUSEDuser_data 
)
static

Definition at line 512 of file transform_snap.c.

References BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, and e.

Referenced by initSnappingMode().

◆ bm_face_is_snap_target()

static bool bm_face_is_snap_target ( BMFace f,
void *  UNUSEDuser_data 
)
static

◆ CalcSnapGeometry() [1/2]

static void CalcSnapGeometry ( TransInfo t,
float UNUSEDvec 
)
static

◆ CalcSnapGeometry() [2/2]

static void CalcSnapGeometry ( TransInfo t,
float vec 
)
static

Referenced by setSnappingCallback().

◆ doForceIncrementSnap()

static bool doForceIncrementSnap ( const TransInfo t)
static

◆ drawSnapping()

void drawSnapping ( const struct bContext C,
TransInfo t 
)

◆ freeSnapping()

void freeSnapping ( TransInfo t)

Definition at line 704 of file transform_snap.c.

References ED_transform_snap_object_context_destroy(), NULL, and t.

Referenced by postTrans().

◆ getSnapPoint()

void getSnapPoint ( const TransInfo t,
float  vec[3] 
)

◆ handleSnapping()

eRedrawFlag handleSnapping ( TransInfo t,
const wmEvent event 
)

◆ initSnapping()

void initSnapping ( TransInfo t,
wmOperator op 
)

◆ initSnappingMode()

static void initSnappingMode ( TransInfo t)
static

◆ peelObjectsTransform()

bool peelObjectsTransform ( TransInfo t,
const float  mval[2],
const bool  use_peel_object,
float  r_loc[3],
float  r_no[3],
float r_thickness 
)

◆ removeSnapPoint()

void removeSnapPoint ( TransInfo t)

◆ resetSnapping()

void resetSnapping ( TransInfo t)

Definition at line 478 of file transform_snap.c.

References t.

Referenced by initSnapping().

◆ setSnappingCallback()

static void setSnappingCallback ( TransInfo t)
static

◆ snap_grid_apply()

static void snap_grid_apply ( TransInfo t,
const int  max_index,
const float  grid_dist,
const float  loc[3],
float  r_out[3] 
)
static

Definition at line 1452 of file transform_snap.c.

References BLI_assert, CON_APPLY, copy_v3_v3(), NULL, snap_target_grid_ensure(), and t.

Referenced by transform_snap_grid().

◆ snap_increment_apply()

static void snap_increment_apply ( TransInfo t,
int  max_index,
const float  increment_dist,
float r_val 
)
static

◆ snap_increment_apply_ex()

static void snap_increment_apply_ex ( TransInfo UNUSEDt,
const int  max_index,
const float  increment_val,
const float  aspect[3],
const float  loc[3],
float  r_out[3] 
)
static

Definition at line 1506 of file transform_snap.c.

Referenced by snap_increment_apply().

◆ snap_target_grid_ensure()

static void snap_target_grid_ensure ( TransInfo t)
static

◆ snap_target_median_impl()

static void snap_target_median_impl ( TransInfo t,
float  r_median[3] 
)
static

◆ snap_use_backface_culling()

static bool snap_use_backface_culling ( const TransInfo t)
static

◆ snapFrameTransform()

void snapFrameTransform ( TransInfo t,
const eAnimEdit_AutoSnap  autosnap,
const bool  is_frame_value,
const float  delta,
float r_val 
)

◆ snapNode()

static bool snapNode ( ToolSettings ts,
SpaceNode UNUSEDsnode,
ARegion region,
bNode node,
const int  mval[2],
float  r_loc[2],
float r_dist_px,
char *  r_node_border 
)
static

◆ snapNodeBorder()

static NodeBorder snapNodeBorder ( int  snap_node_mode)
static

Definition at line 1277 of file transform_snap.c.

References NODE_BOTTOM, NODE_LEFT, NODE_RIGHT, NODE_TOP, SCE_SNAP_MODE_NODE_X, and SCE_SNAP_MODE_NODE_Y.

Referenced by snapNode().

◆ snapNodes()

static bool snapNodes ( ToolSettings ts,
SpaceNode snode,
ARegion region,
const int  mval[2],
eSnapSelect  snap_select,
float  r_loc[2],
float r_dist_px,
char *  r_node_border 
)
static

◆ snapNodesTransform()

bool snapNodesTransform ( TransInfo t,
const int  mval[2],
float  r_loc[2],
float r_dist_px,
char *  r_node_border 
)

Definition at line 1373 of file transform_snap.c.

References snapNodes(), and t.

Referenced by CalcSnapGeometry().

◆ snapNodeTest()

static bool snapNodeTest ( View2D v2d,
bNode node,
eSnapSelect  snap_select 
)
static

◆ snapObjectsTransform()

short snapObjectsTransform ( TransInfo t,
const float  mval[2],
float dist_px,
float  r_loc[3],
float  r_no[3] 
)

◆ snapSequenceBounds()

void snapSequenceBounds ( TransInfo t,
const int  mval[2] 
)

◆ TargetSnapActive()

static void TargetSnapActive ( TransInfo t)
static

◆ TargetSnapCenter()

static void TargetSnapCenter ( TransInfo t)
static

Definition at line 1023 of file transform_snap.c.

References copy_v3_v3(), NULL, t, TARGET_INIT, and TargetSnapOffset().

Referenced by setSnappingCallback().

◆ TargetSnapClosest()

static void TargetSnapClosest ( TransInfo t)
static

◆ TargetSnapMedian()

static void TargetSnapMedian ( TransInfo t)
static

Definition at line 1052 of file transform_snap.c.

References snap_target_median_impl(), t, and TARGET_INIT.

Referenced by setSnappingCallback(), and TargetSnapActive().

◆ TargetSnapOffset()

static void TargetSnapOffset ( TransInfo t,
TransData td 
)
static

◆ transform_snap_distance_len_squared_fn()

float transform_snap_distance_len_squared_fn ( TransInfo UNUSEDt,
const float  p1[3],
const float  p2[3] 
)

Definition at line 1595 of file transform_snap.c.

References len_squared_v3v3().

Referenced by initEdgeSlide_ex(), initTranslation(), and initVertSlide_ex().

◆ transform_snap_grid()

bool transform_snap_grid ( TransInfo t,
float val 
)

◆ transform_snap_increment()

bool transform_snap_increment ( TransInfo t,
float r_val 
)

◆ transform_snap_increment_ex()

bool transform_snap_increment_ex ( TransInfo t,
bool  use_local_space,
float r_val 
)

◆ transformModeUseSnap()

bool transformModeUseSnap ( const TransInfo t)

◆ updateSelectedSnapPoint()

eRedrawFlag updateSelectedSnapPoint ( TransInfo t)

◆ usingSnappingNormal()

bool usingSnappingNormal ( const TransInfo t)

Definition at line 496 of file transform_snap.c.

References t.

Referenced by applyTranslationValue(), createTransEditVerts(), and drawSnapping().

◆ validSnap()

bool validSnap ( const TransInfo t)

◆ validSnappingNormal()

bool validSnappingNormal ( const TransInfo t)

Definition at line 501 of file transform_snap.c.

References is_zero_v3(), t, and validSnap().

Referenced by applyTranslationValue(), and drawSnapping().