Blender V4.3
transform_snap.cc File Reference
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_time.h"
#include "GPU_immediate.hh"
#include "GPU_matrix.hh"
#include "BKE_editmesh.hh"
#include "BKE_layer.hh"
#include "BKE_node_runtime.hh"
#include "BKE_object.hh"
#include "BKE_scene.hh"
#include "RNA_access.hh"
#include "RNA_prototypes.hh"
#include "WM_api.hh"
#include "ED_image.hh"
#include "ED_node.hh"
#include "ED_transform_snap_object_context.hh"
#include "ED_uvedit.hh"
#include "UI_resources.hh"
#include "UI_view2d.hh"
#include "SEQ_sequencer.hh"
#include "transform.hh"
#include "transform_constraints.hh"
#include "transform_convert.hh"
#include "transform_mode.hh"
#include "transform_snap.hh"

Go to the source code of this file.

Functions

Prototypes
static void setSnappingCallback (TransInfo *t)
 
static void snap_target_view3d_fn (TransInfo *t, float *vec)
 
static void snap_target_uv_fn (TransInfo *t, float *vec)
 
static void snap_target_node_fn (TransInfo *t, float *vec)
 
static void snap_target_sequencer_fn (TransInfo *t, float *vec)
 
static void snap_target_nla_fn (TransInfo *t, float *vec)
 
static void snap_source_median_fn (TransInfo *t)
 
static void snap_source_center_fn (TransInfo *t)
 
static void snap_source_closest_fn (TransInfo *t)
 
static void snap_source_active_fn (TransInfo *t)
 
static eSnapMode snapObjectsTransform (TransInfo *t, const float mval[2], float *dist_px, float r_loc[3], float r_no[3])
 
Implementations
static bool snapNodeTest (View2D *v2d, bNode *node, eSnapTargetOP snap_target_select)
 
static NodeBorder snapNodeBorder (eSnapMode snap_node_mode)
 
static bool snap_use_backface_culling (const TransInfo *t)
 
bool validSnap (const TransInfo *t)
 
void transform_snap_flag_from_modifiers_set (TransInfo *t)
 
bool transform_snap_is_active (const TransInfo *t)
 
bool transformModeUseSnap (const TransInfo *t)
 
static bool doForceIncrementSnap (const TransInfo *t)
 
void drawSnapping (TransInfo *t)
 
eRedrawFlag handleSnapping (TransInfo *t, const wmEvent *event)
 
static bool applyFaceProject (TransInfo *t, TransDataContainer *tc, TransData *td)
 
static void applyFaceNearest (TransInfo *t, TransDataContainer *tc, TransData *td)
 
bool transform_snap_project_individual_is_active (const TransInfo *t)
 
void transform_snap_project_individual_apply (TransInfo *t)
 
static bool transform_snap_mixed_is_active (const TransInfo *t)
 
void transform_snap_mixed_apply (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 *)
 
static bool bm_face_is_snap_target (BMFace *f, void *)
 
short * transform_snap_flag_from_spacetype_ptr (TransInfo *t, const PropertyRNA **r_prop=nullptr)
 
static eSnapFlag snap_flag_from_spacetype (TransInfo *t)
 
static eSnapMode snap_mode_from_spacetype (TransInfo *t)
 
static eSnapTargetOP snap_target_select_from_spacetype (TransInfo *t)
 
static void snap_object_context_init (TransInfo *t)
 
static void initSnappingMode (TransInfo *t)
 
void transform_snap_grid_init (const TransInfo *t, float r_snap[3], float *r_snap_precision)
 
void initSnapping (TransInfo *t, wmOperator *op)
 
void freeSnapping (TransInfo *t)
 
void initSnapAngleIncrements (TransInfo *t)
 
void addSnapPoint (TransInfo *t)
 
eRedrawFlag updateSelectedSnapPoint (TransInfo *t)
 
void removeSnapPoint (TransInfo *t)
 
void getSnapPoint (const TransInfo *t, float vec[3])
 
static void snap_multipoints_free (TransInfo *t)
 
Calc Snap
static void snap_grid_uv_apply (TransInfo *t, const float grid_dist[2], float r_out[2])
 
static bool snap_grid_uv (TransInfo *t, float r_val[2])
 
Target
void tranform_snap_target_median_calc (const TransInfo *t, float r_median[3])
 
static void TargetSnapOffset (TransInfo *t, TransData *td)
 
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 *, ARegion *region, bNode *node, const float2 &mval, float r_loc[2], float *r_dist_px, char *r_node_border)
 
static bool snapNodes (ToolSettings *ts, SpaceNode *snode, ARegion *region, const float2 &mval, eSnapTargetOP snap_target_select, float r_loc[2], float *r_dist_px, char *r_node_border)
 
bool snapNodesTransform (TransInfo *t, const float2 &mval, float r_loc[2], float *r_dist_px, char *r_node_border)
 
snap Grid
static void snap_increment_apply_ex (const TransInfo *, 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 (const TransInfo *t, const int max_index, const float increment_dist, float *r_val)
 
bool transform_snap_increment_ex (const TransInfo *t, bool use_local_space, float *r_val)
 
bool transform_snap_increment (const TransInfo *t, float *r_val)
 
float transform_snap_increment_get (const TransInfo *t)
 
void tranform_snap_source_restore_context (TransInfo *t)
 
Generic callbacks
float transform_snap_distance_len_squared_fn (TransInfo *, const float p1[3], const float p2[3])
 

Function Documentation

◆ addSnapPoint()

◆ applyFaceNearest()

◆ applyFaceProject()

◆ bm_edge_is_snap_target()

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

Definition at line 639 of file transform_snap.cc.

References BM_elem_flag_test, BM_ELEM_HIDDEN, BM_ELEM_SELECT, and e.

Referenced by snap_object_context_init().

◆ bm_face_is_snap_target()

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

◆ doForceIncrementSnap()

static bool doForceIncrementSnap ( const TransInfo * t)
static

◆ drawSnapping()

void drawSnapping ( TransInfo * t)

Definition at line 200 of file transform_snap.cc.

References TransInfo::aspect, BLI_listbase_is_empty(), BLI_rctf_size_x(), BLI_rcti_size_x(), col, copy_m4_m4(), DIR_GLOBAL_X, DIR_GLOBAL_Y, TransSnap::direction, ED_node_draw_snap(), ED_view3d_cursor_snap_draw_util(), ED_view3d_pixel_size(), TransInfo::flag, GPU_blend(), GPU_BLEND_ALPHA, GPU_BLEND_NONE, GPU_COMP_F32, GPU_DEPTH_LESS_EQUAL, GPU_DEPTH_NONE, GPU_depth_test(), GPU_FETCH_FLOAT, GPU_matrix_pop_projection(), GPU_matrix_push_projection(), GPU_PRIM_LINES, GPU_SHADER_3D_UNIFORM_COLOR, GPU_vertformat_attr_add(), imm_draw_circle_wire_2d(), imm_drawcircball(), immBegin(), immBindBuiltinProgram(), immEnd(), immRectf(), immUnbindProgram(), immUniformColor3ub(), immUniformColor4ubv(), immVertex3f(), immVertex3fv(), immVertexFormat(), LISTBASE_FOREACH, MOD_EDIT_SNAP_SOURCE, TransInfo::modifiers, TransSnap::points, pos, TransInfo::region, ARegion::regiondata, RGN_TYPE_PREVIEW, TransSnap::selectedPoint, size(), SNAP_MULTI_POINTS, TransSnap::snap_source, SNAP_SOURCE_FOUND, TransSnap::snap_target, SNAP_TARGET_FOUND, TransSnap::snapNodeBorder, TransSnap::snapNormal, TransSnap::source_type, SPACE_IMAGE, SPACE_NODE, SPACE_SEQ, SPACE_VIEW3D, TransInfo::spacetype, TransSnap::status, T_DRAW_SNAP_SOURCE, TransSnap::target_type, TH_ACTIVE, TH_SELECT, TH_SEQ_ACTIVE, TH_TRANSFORM, TH_VERTEX_SIZE, transform_snap_is_active(), TransInfo::tsnap, UI_GetThemeColor3ubv(), UI_GetThemeValuef(), UI_view2d_view_to_region_fl(), UNPACK2, usingSnappingNormal(), ARegion::v2d, validSnappingNormal(), RegionView3D::viewinv, wmOrtho2_region_pixelspace(), x, and y.

Referenced by drawTransformView(), and ED_draw_sequencer_snap_point().

◆ freeSnapping()

◆ getSnapPoint()

◆ handleSnapping()

◆ initSnapAngleIncrements()

◆ initSnapping()

◆ initSnappingMode()

◆ peelObjectsTransform()

◆ removeSnapPoint()

◆ resetSnapping()

◆ setSnappingCallback()

◆ snap_flag_from_spacetype()

static eSnapFlag snap_flag_from_spacetype ( TransInfo * t)
static

Definition at line 704 of file transform_snap.cc.

References transform_snap_flag_from_spacetype_ptr().

Referenced by initSnapping().

◆ snap_grid_uv()

◆ snap_grid_uv_apply()

◆ snap_increment_apply()

◆ snap_increment_apply_ex()

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

Definition at line 1846 of file transform_snap.cc.

Referenced by snap_increment_apply().

◆ snap_mode_from_spacetype()

◆ snap_multipoints_free()

static void snap_multipoints_free ( TransInfo * t)
static

◆ snap_object_context_init()

◆ snap_source_active_fn()

◆ snap_source_center_fn()

◆ snap_source_closest_fn()

◆ snap_source_median_fn()

◆ snap_target_nla_fn()

static void snap_target_nla_fn ( TransInfo * t,
float * vec )
static

◆ snap_target_node_fn()

◆ snap_target_select_from_spacetype()

◆ snap_target_sequencer_fn()

static void snap_target_sequencer_fn ( TransInfo * t,
float * vec )
static

◆ snap_target_uv_fn()

◆ snap_target_view3d_fn()

◆ snap_use_backface_culling()

◆ snapNode()

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

◆ snapNodeBorder()

static NodeBorder snapNodeBorder ( eSnapMode snap_node_mode)
static

Definition at line 1732 of file transform_snap.cc.

References flag, NODE_BOTTOM, NODE_LEFT, NODE_RIGHT, NODE_TOP, SCE_SNAP_TO_NODE_X, and SCE_SNAP_TO_NODE_Y.

Referenced by snapNode().

◆ snapNodes()

static bool snapNodes ( ToolSettings * ts,
SpaceNode * snode,
ARegion * region,
const float2 & mval,
eSnapTargetOP snap_target_select,
float r_loc[2],
float * r_dist_px,
char * r_node_border )
static

◆ snapNodesTransform()

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

◆ snapNodeTest()

static bool snapNodeTest ( View2D * v2d,
bNode * node,
eSnapTargetOP snap_target_select )
static

◆ snapObjectsTransform()

◆ TargetSnapOffset()

◆ tranform_snap_source_restore_context()

void tranform_snap_source_restore_context ( TransInfo * t)

◆ tranform_snap_target_median_calc()

void tranform_snap_target_median_calc ( const TransInfo * t,
float r_median[3] )

◆ transform_snap_distance_len_squared_fn()

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

Definition at line 1952 of file transform_snap.cc.

References len_squared_v3v3().

◆ transform_snap_flag_from_modifiers_set()

◆ transform_snap_flag_from_spacetype_ptr()

◆ transform_snap_grid_init()

◆ transform_snap_increment()

◆ transform_snap_increment_ex()

◆ transform_snap_increment_get()

◆ transform_snap_is_active()

◆ transform_snap_mixed_apply()

◆ transform_snap_mixed_is_active()

◆ transform_snap_project_individual_apply()

◆ transform_snap_project_individual_is_active()

bool transform_snap_project_individual_is_active ( const TransInfo * t)

◆ transformModeUseSnap()

◆ updateSelectedSnapPoint()

◆ usingSnappingNormal()

bool usingSnappingNormal ( const TransInfo * t)

◆ validSnap()

◆ validSnappingNormal()

bool validSnappingNormal ( const TransInfo * t)