93 int BIF_snappingSupported(
Object *obedit)
165 uchar col[4], selectedCol[4], activeCol[4];
175 selectedCol[3] = 128;
185 const float *loc_cur =
NULL;
186 const float *loc_prev =
NULL;
196 float view_inv[4][4];
205 if (p ==
t->tsnap.selectedPoint) {
223 loc_prev =
t->tsnap.snapTarget;
227 loc_cur =
t->tsnap.snapPoint;
231 rv3d, loc_prev, loc_cur,
normal,
col, activeCol,
t->tsnap.snapElem);
257 for (p =
t->tsnap.points.first; p; p = p->
next) {
258 if (p ==
t->tsnap.selectedPoint) {
286 if (BIF_snappingSupported(
t->obedit) && event->
type == TABKEY && event->
shift) {
302 if (!
t->tsnap.project) {
320 for (i = 0; i < tc->data_len; i++, td++) {
321 float iloc[3], loc[3], no[3];
332 if (tc->use_local_mat) {
343 t->tsnap.object_context,
347 .snap_select = t->tsnap.modeSelect,
348 .use_object_edit_cage = (t->flag & T_EDIT) != 0,
349 .use_occlusion_test = false,
350 .use_backface_culling = t->tsnap.use_backface_culling,
358 if (tc->use_local_mat) {
371 const float *original_normal;
375 original_normal = td->
axismtx[2];
401 float grid_size = (
t->modifiers &
MOD_PRECISION) ?
t->snap_spatial[1] :
t->snap_spatial[0];
404 if (grid_size == 0.0f) {
411 for (i = 0, td = tc->data; i < tc->data_len; i++, td++) {
412 float iloc[3], loc[3], tvec[3];
422 if (tc->use_local_mat) {
431 loc[0] = roundf(loc[0]);
432 loc[1] = roundf(loc[1]);
433 loc[2] = roundf(loc[2]);
456 t->tsnap.targetSnap(
t);
458 t->tsnap.applySnap(
t, vec);
466 if (current -
t->tsnap.last >= 0.01) {
467 t->tsnap.calcSnap(
t, vec);
468 t->tsnap.targetSnap(
t);
470 t->tsnap.last = current;
473 t->tsnap.applySnap(
t, vec);
481 t->tsnap.snapElem = 0;
482 t->tsnap.align =
false;
483 t->tsnap.project = 0;
485 t->tsnap.modeSelect = 0;
489 t->tsnap.snapNormal[0] = 0;
490 t->tsnap.snapNormal[1] = 0;
491 t->tsnap.snapNormal[2] = 0;
493 t->tsnap.snapNodeBorder = 0;
498 return t->tsnap.align;
534 }
while ((l_iter = l_iter->
next) != l_first);
543 const int obedit_type =
t->obedit_type;
549 t->tsnap.project = 0;
555 t->tsnap.project = 0;
562 t->tsnap.project = 0;
588 else if ((obedit_type != -1) &&
601 else if ((obedit_type == -1) && base_act && base_act->
object &&
606 else if (obedit_type == -1) {
629 if (
t->tsnap.object_context ==
NULL) {
632 t->scene, 0,
t->region,
t->view);
637 t->tsnap.object_context,
650 short snap_target =
t->settings->snap_target;
699 t->tsnap.target = snap_target;
706 if (
t->tsnap.object_context) {
708 t->tsnap.object_context =
NULL;
716 switch (
t->tsnap.target) {
743 t->tsnap.selectedPoint = p;
760 const float mval_fl[2] = {
t->mval[0],
t->mval[1]};
763 for (p =
t->tsnap.points.first; p; p = p->
next) {
773 if (dist_sq < dist_min_sq) {
775 dist_min_sq = dist_sq;
780 if (
t->tsnap.selectedPoint != closest_p) {
784 t->tsnap.selectedPoint = closest_p;
796 if (
t->tsnap.selectedPoint) {
803 t->tsnap.selectedPoint =
NULL;
810 if (
t->tsnap.points.first) {
814 vec[0] = vec[1] = vec[2] = 0;
816 for (p =
t->tsnap.points.first; p; p = p->
next, total++) {
848 mval[0] =
t->mval[0];
849 mval[1] =
t->mval[1];
855 found = snap_elem != 0;
876 t->tsnap.snapElem = (char)snap_elem;
884 uint objects_len = 0;
886 t->view_layer,
NULL, &objects_len);
888 float dist_sq = FLT_MAX;
890 t->scene, objects, objects_len, co, &dist_sq,
t->tsnap.snapPoint)) {
891 t->tsnap.snapPoint[0] *=
t->aspect[0];
892 t->tsnap.snapPoint[1] *=
t->aspect[1];
910 t->tsnap.snapNodeBorder = node_border;
939 for (i = 0; i < tc->data_len && td->flag &
TD_SELECTED; i++, td++) {
950 if (tc->use_local_mat) {
989 char border =
t->tsnap.snapNodeBorder;
993 #ifdef USE_NODE_CENTER
995 t->tsnap.snapTarget[0] -= 0.5f *
width;
998 t->tsnap.snapTarget[0] += 0.5f *
width;
1001 t->tsnap.snapTarget[1] -= 0.5f *
height;
1004 t->tsnap.snapTarget[1] += 0.5f *
height;
1008 t->tsnap.snapTarget[0] -= 0.0f;
1011 t->tsnap.snapTarget[0] +=
width;
1014 t->tsnap.snapTarget[1] -=
height;
1017 t->tsnap.snapTarget[1] += 0.0f;
1065 float dist_closest = 0.0f;
1073 for (td = tc->data, i = 0; i < tc->data_len && td->flag &
TD_SELECTED; i++, td++) {
1084 for (j = 0; j < 8; j++) {
1091 dist =
t->tsnap.distance(
t, loc,
t->tsnap.snapPoint);
1097 dist_closest = dist;
1108 dist =
t->tsnap.distance(
t, loc,
t->tsnap.snapPoint);
1123 for (i = 0; i < tc->data_len && td->flag &
TD_SELECTED; i++, td++) {
1129 if (tc->use_local_mat) {
1133 dist =
t->tsnap.distance(
t, loc,
t->tsnap.snapPoint);
1139 dist_closest = dist;
1158 TransInfo *
t,
const float mval[2],
float *dist_px,
float r_loc[3],
float r_no[3])
1160 float *target = (
t->tsnap.status &
TARGET_INIT) ?
t->tsnap.snapTarget :
t->center_global;
1162 t->tsnap.object_context,
1164 t->settings->snap_mode,
1166 .snap_select =
t->tsnap.modeSelect,
1167 .use_object_edit_cage = (
t->flag &
T_EDIT) != 0,
1169 .use_backface_culling =
t->tsnap.use_backface_culling,
1188 const float mval[2],
1189 const bool use_peel_object,
1197 t->tsnap.object_context,
1200 .snap_select = t->tsnap.modeSelect,
1201 .use_object_edit_cage = (t->flag & T_EDIT) != 0,
1212 if (iter->depth < hit_min->
depth) {
1218 if (use_peel_object) {
1222 if ((iter->depth > hit_max->
depth) && (iter->ob_uuid == hit_min->
ob_uuid)) {
1230 if ((iter != hit_min) && (iter->ob_uuid == hit_min->
ob_uuid)) {
1231 if (hit_max ==
NULL) {
1234 else if (iter->depth < hit_max->
depth) {
1240 if (hit_max ==
NULL) {
1248 *r_thickness = hit_max->
depth - hit_min->
depth;
1296 char *r_node_border)
1300 bool retval =
false;
1307 new_dist =
abs(totr.
xmin - mval[0]);
1308 if (new_dist < *r_dist_px) {
1310 *r_dist_px = new_dist;
1317 new_dist =
abs(totr.
xmax - mval[0]);
1318 if (new_dist < *r_dist_px) {
1320 *r_dist_px = new_dist;
1327 new_dist =
abs(totr.
ymin - mval[1]);
1328 if (new_dist < *r_dist_px) {
1330 *r_dist_px = new_dist;
1337 new_dist =
abs(totr.
ymax - mval[1]);
1338 if (new_dist < *r_dist_px) {
1340 *r_dist_px = new_dist;
1356 char *r_node_border)
1360 bool retval =
false;
1366 retval |=
snapNode(ts, snode, region,
node, mval, r_loc, r_dist_px, r_node_border);
1374 TransInfo *
t,
const int mval[2],
float r_loc[2],
float *r_dist_px,
char *r_node_border)
1377 t->area->spacedata.first,
1380 t->tsnap.modeSelect,
1397 const bool is_frame_value,
1405 val =
floor(val + 0.5);
1416 const double secf =
FPS;
1417 val =
floor((val / secf) + 0.5);
1418 if (is_frame_value) {
1427 *r_val = (
float)val;
1440 float xmouse, ymouse;
1449 t->values[0] = frame_near - frame_snap;
1453 TransInfo *
t,
const int max_index,
const float grid_dist,
const float loc[3],
float r_out[3])
1457 const float *center_global =
t->tsnap.snapTargetGrid;
1458 const float *asp =
t->aspect;
1469 for (
int i = 0; i <= max_index; i++) {
1470 const float iter_fac = grid_dist * asp[i];
1471 r_out[i] = iter_fac * roundf((in[i] + center_global[i]) / iter_fac) - center_global[i];
1494 float grid_dist = (
t->modifiers &
MOD_PRECISION) ?
t->snap[1] :
t->snap[0];
1497 if (grid_dist == 0.0f) {
1507 const int max_index,
1508 const float increment_val,
1509 const float aspect[3],
1514 for (
int i = 0; i <= max_index; i++) {
1515 const float iter_fac = increment_val * aspect[i];
1516 r_out[i] = iter_fac * roundf(loc[i] / iter_fac);
1522 const float increment_dist,
1529 if (increment_dist == 0.0f) {
1533 float asp_local[3] = {1, 1, 1};
1535 const float *asp = use_aspect ?
t->aspect : asp_local;
1540 View2D *v2d = &
t->region->v2d;
1569 if (use_local_space) {
1574 float increment_dist = (
t->modifiers &
MOD_PRECISION) ?
t->snap[1] :
t->snap[0];
1577 if (use_local_space) {
typedef float(TangentPoint)[2]
struct ARegion * CTX_wm_region(const bContext *C)
struct RegionView3D * CTX_wm_region_view3d(const bContext *C)
#define BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(view_layer, v3d, r_len)
General operations, lookup, etc. for blender objects.
void BKE_object_eval_transform_all(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object)
struct BoundBox * BKE_object_boundbox_get(struct Object *ob)
bool BKE_scene_uses_blender_workbench(const struct Scene *scene)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
MINLINE int round_fl_to_int(float a)
void mul_m3_v3(const float M[3][3], float r[3])
void mul_m4_v3(const float M[4][4], float r[3])
void copy_m4_m4(float m1[4][4], const float m2[4][4])
void rotation_between_vecs_to_mat3(float m[3][3], const float v1[3], const float v2[3])
MINLINE float len_squared_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float normalize_v3(float r[3])
MINLINE float len_squared_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE bool is_zero_v3(const float a[3]) ATTR_WARN_UNUSED_RESULT
void mid_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void zero_v3(float r[3])
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void add_v3_v3(float r[3], const float a[3])
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
#define POINTER_FROM_UINT(i)
#define SCE_SNAP_MODE_NODE_Y
#define SCE_SNAP_TARGET_CLOSEST
#define SCE_SNAP_PEEL_OBJECT
#define SCE_SNAP_MODE_FACE
#define SCE_SNAP_TARGET_ACTIVE
#define SCE_SNAP_MODE_NODE_X
#define SCE_SNAP_ABS_GRID
#define SCE_SNAP_TARGET_CENTER
#define SCE_SNAP_MODE_VOLUME
#define SCE_SNAP_MODE_EDGE_PERPENDICULAR
#define SCE_SNAP_MODE_EDGE_MIDPOINT
#define SCE_SNAP_TARGET_MEDIAN
@ SCE_SNAP_TRANSFORM_MODE_SCALE
@ SCE_SNAP_TRANSFORM_MODE_ROTATE
@ SCE_SNAP_TRANSFORM_MODE_TRANSLATE
#define SCE_SNAP_MODE_VERTEX
#define SCE_SNAP_BACKFACE_CULLING
#define SCE_SNAP_MODE_GRID
#define SCE_SNAP_MODE_EDGE
#define SCE_SNAP_MODE_INCREMENT
@ V3D_SHADING_BACKFACE_CULLING
void ED_node_draw_snap(struct View2D *v2d, const float cent[2], float size, NodeBorder border, unsigned int pos)
SnapObjectContext * ED_transform_snap_object_context_create_view3d(struct Scene *scene, int flag, const struct ARegion *region, const struct View3D *v3d)
void ED_transform_snap_object_context_set_editmesh_callbacks(SnapObjectContext *sctx, bool(*test_vert_fn)(struct BMVert *, void *user_data), bool(*test_edge_fn)(struct BMEdge *, void *user_data), bool(*test_face_fn)(struct BMFace *, void *user_data), void *user_data)
bool ED_transform_snap_object_project_all_view3d_ex(SnapObjectContext *sctx, struct Depsgraph *depsgraph, const struct SnapObjectParams *params, const float mval[2], float ray_depth, bool sort, ListBase *r_hit_list)
short ED_transform_snap_object_project_view3d_ex(struct SnapObjectContext *sctx, struct Depsgraph *depsgraph, const unsigned short snap_to, const struct SnapObjectParams *params, const float mval[2], const float prev_co[3], float *dist_px, float r_loc[3], float r_no[3], int *r_index, struct Object **r_ob, float r_obmat[4][4])
bool ED_transform_snap_object_project_view3d(struct SnapObjectContext *sctx, struct Depsgraph *depsgraph, const unsigned short snap_to, const struct SnapObjectParams *params, const float mval[2], const float prev_co[3], float *dist_px, float r_loc[3], float r_no[3])
void ED_transform_snap_object_context_destroy(SnapObjectContext *sctx)
bool ED_uvedit_nearest_uv_multi(const struct Scene *scene, struct Object **objects, const uint objects_len, const float co[2], float *dist_sq, float r_uv[2])
float ED_view3d_pixel_size(const struct RegionView3D *rv3d, const float co[3])
void imm_drawcircball(const float cent[3], float rad, const float tmat[4][4], unsigned int pos)
eV3DProjStatus ED_view3d_project_float_global(const struct ARegion *region, const float co[3], float r_co[2], const eV3DProjTest flag)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
@ GPU_SHADER_2D_UNIFORM_COLOR
@ GPU_SHADER_3D_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_depth_test(eGPUDepthTest test)
Read Guarded memory(de)allocation.
Platform independent time functions.
void UI_GetThemeColor3ubv(int colorid, unsigned char col[3])
float UI_GetThemeValuef(int colorid)
void UI_view2d_view_to_region_rcti(const struct View2D *v2d, const struct rctf *rect_src, struct rcti *rect_dst) ATTR_NONNULL()
float UI_view2d_grid_resolution_x__frames_or_seconds(const struct View2D *v2d, const struct Scene *scene, bool display_seconds)
float UI_view2d_grid_resolution_y__values(const struct View2D *v2d)
void UI_view2d_region_to_view(const struct View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
int ED_markers_find_nearest_marker_time(ListBase *markers, float x)
bool BM_elem_cb_check_hflag_disabled(BMElem *ele, void *user_data)
#define BM_FACE_FIRST_LOOP(p)
#define BM_elem_flag_test(ele, hflag)
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
bool closest(btVector3 &v)
IconTextureDrawCall normal
IconTextureDrawCall border
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_enum_get(PointerRNA *ptr, const char *name)
void ED_gizmotypes_snap_3d_draw_util(RegionView3D *rv3d, const float loc_prev[3], const float loc_curr[3], const float normal[3], const uchar color_line[4], const uchar color_point[4], const short snap_elem_type)
int SEQ_time_find_next_prev_edit(Scene *scene, int timeline_frame, const short side, const bool do_skip_mute, const bool do_center, const bool do_unselected)
struct SnapObjectHitDepth * next
struct bNodeTree * edittree
struct TransSnapPoint * next
double PIL_check_seconds_timer(void)
__forceinline const avxi abs(const avxi &a)
ccl_device_inline float2 floor(const float2 &a)