86 int BIF_snappingSupported(
Object *obedit)
193 uchar col[4], selectedCol[4], activeCol[4];
214 selectedCol[3] = 128;
221 const float *loc_cur =
NULL;
222 const float *loc_prev =
NULL;
232 float view_inv[4][4];
241 if (p ==
t->tsnap.selectedPoint) {
259 loc_prev =
t->tsnap.snapTarget;
263 loc_cur =
t->tsnap.snapPoint;
267 rv3d, loc_prev, loc_cur,
normal,
col, activeCol,
t->tsnap.snapElem);
275 const float snap_point[2] = {
276 t->tsnap.snapPoint[0] /
t->aspect[0],
277 t->tsnap.snapPoint[1] /
t->aspect[1],
305 for (p =
t->tsnap.points.first; p; p = p->
next) {
306 if (p ==
t->tsnap.selectedPoint) {
334 t->tsnap.snapPoint[0] - pixelx,
336 t->tsnap.snapPoint[0] + pixelx,
369 float iloc[3], loc[3], no[3];
387 t->tsnap.object_context,
393 .snap_target_select = t->tsnap.target_select,
394 .edit_mode_type = (t->flag & T_EDIT) != 0 ? SNAP_GEOM_EDIT : SNAP_GEOM_FINAL,
395 .use_occlusion_test = false,
396 .use_backface_culling = t->tsnap.use_backface_culling,
417 const float *original_normal;
421 original_normal = td->
axismtx[2];
440 float snap_loc[3], snap_no[3];
454 t->tsnap.object_context,
460 .snap_target_select = t->tsnap.target_select,
461 .edit_mode_type = (t->flag & T_EDIT) != 0 ? SNAP_GEOM_EDIT : SNAP_GEOM_FINAL,
462 .use_occlusion_test = false,
463 .use_backface_culling = false,
464 .face_nearest_steps = t->tsnap.face_nearest_steps,
465 .keep_on_same_target = t->tsnap.flag & SCE_SNAP_KEEP_ON_SAME_OBJECT,
495 for (
int i = 0; i < tc->data_len; i++, td++) {
525 float grid_size = (
t->modifiers &
MOD_PRECISION) ?
t->snap_spatial[1] :
t->snap_spatial[0];
528 if (grid_size == 0.0f) {
535 for (i = 0, td = tc->data; i < tc->data_len; i++, td++) {
536 float iloc[3], loc[3], tvec[3];
546 if (tc->use_local_mat) {
555 loc[0] = roundf(loc[0]);
556 loc[1] = roundf(loc[1]);
557 loc[2] = roundf(loc[2]);
574 t->tsnap.targetSnap(
t);
576 t->tsnap.applySnap(
t, vec);
584 if (current -
t->tsnap.last >= 0.01) {
585 if (
t->tsnap.calcSnap) {
586 t->tsnap.calcSnap(
t, vec);
588 if (
t->tsnap.targetSnap) {
589 t->tsnap.targetSnap(
t);
592 t->tsnap.last = current;
596 t->tsnap.applySnap(
t, vec);
605 t->tsnap.align =
false;
606 t->tsnap.project =
false;
612 t->tsnap.snapNormal[0] = 0;
613 t->tsnap.snapNormal[1] = 0;
614 t->tsnap.snapNormal[2] = 0;
616 t->tsnap.snapNodeBorder = 0;
621 return t->tsnap.align;
657 }
while ((l_iter = l_iter->
next) != l_first);
747 const int obedit_type =
t->obedit_type;
748 if (obedit_type != -1) {
778 t->tsnap.project =
false;
789 if (
t->tsnap.object_context ==
NULL) {
796 t->tsnap.object_context,
805 t->tsnap.object_context,
814 if (
t->tsnap.seq_context ==
NULL) {
923 t->tsnap.source_select = snap_source;
930 if ((
t->spacetype ==
SPACE_SEQ) &&
t->tsnap.seq_context) {
932 t->tsnap.seq_context =
NULL;
934 else if (
t->tsnap.object_context) {
936 t->tsnap.object_context =
NULL;
947 Object *obact =
t->view_layer->basact ?
t->view_layer->basact->object :
NULL;
951 if (is_uv_editor && has_edit_object) {
964 switch (
t->tsnap.source_select) {
991 t->tsnap.selectedPoint = p;
1008 const float mval_fl[2] = {
t->mval[0],
t->mval[1]};
1009 float screen_loc[2];
1011 for (p =
t->tsnap.points.first; p; p = p->
next) {
1021 if (dist_sq < dist_min_sq) {
1023 dist_min_sq = dist_sq;
1028 if (
t->tsnap.selectedPoint != closest_p) {
1032 t->tsnap.selectedPoint = closest_p;
1044 if (
t->tsnap.selectedPoint) {
1051 t->tsnap.selectedPoint =
NULL;
1058 if (
t->tsnap.points.first) {
1062 vec[0] = vec[1] = vec[2] = 0;
1064 for (p =
t->tsnap.points.first; p; p = p->
next, total++) {
1096 mval[0] =
t->mval[0];
1097 mval[1] =
t->mval[1];
1113 if (found ==
true) {
1123 t->tsnap.snapElem = snap_elem;
1130 uint objects_len = 0;
1132 t->view_layer,
NULL, &objects_len);
1142 t->tsnap.snapPoint)) {
1143 t->tsnap.snapPoint[0] *=
t->aspect[0];
1144 t->tsnap.snapPoint[1] *=
t->aspect[1];
1165 t->tsnap.snapNodeBorder = node_border;
1204 for (i = 0; i < tc->data_len && td->flag &
TD_SELECTED; i++, td++) {
1215 if (tc->use_local_mat) {
1254 char border =
t->tsnap.snapNodeBorder;
1258 #ifdef USE_NODE_CENTER
1260 t->tsnap.snapTarget[0] -= 0.5f *
width;
1263 t->tsnap.snapTarget[0] += 0.5f *
width;
1266 t->tsnap.snapTarget[1] -= 0.5f *
height;
1269 t->tsnap.snapTarget[1] += 0.5f *
height;
1273 t->tsnap.snapTarget[0] -= 0.0f;
1276 t->tsnap.snapTarget[0] +=
width;
1279 t->tsnap.snapTarget[1] -=
height;
1282 t->tsnap.snapTarget[1] += 0.0f;
1330 float dist_closest = 0.0f;
1338 for (td = tc->data, i = 0; i < tc->data_len && td->flag &
TD_SELECTED; i++, td++) {
1349 for (j = 0; j < 8; j++) {
1356 dist =
t->tsnap.distance(
t, loc,
t->tsnap.snapPoint);
1362 dist_closest = dist;
1373 dist =
t->tsnap.distance(
t, loc,
t->tsnap.snapPoint);
1388 for (i = 0; i < tc->data_len && td->flag &
TD_SELECTED; i++, td++) {
1394 if (tc->use_local_mat) {
1398 dist =
t->tsnap.distance(
t, loc,
t->tsnap.snapPoint);
1404 dist_closest = dist;
1423 TransInfo *
t,
const float mval[2],
float *dist_px,
float r_loc[3],
float r_no[3])
1425 float *target = (
t->tsnap.status &
TARGET_INIT) ?
t->tsnap.snapTarget :
t->center_global;
1427 t->tsnap.object_context,
1433 .snap_target_select =
t->tsnap.target_select,
1436 .use_backface_culling =
t->tsnap.use_backface_culling,
1453 const float mval[2],
1454 const bool use_peel_object,
1462 t->tsnap.object_context,
1467 .snap_target_select = t->tsnap.target_select,
1468 .edit_mode_type = (t->flag & T_EDIT) != 0 ? SNAP_GEOM_EDIT : SNAP_GEOM_FINAL,
1479 if (iter->depth < hit_min->
depth) {
1485 if (use_peel_object) {
1489 if ((iter->depth > hit_max->
depth) && (iter->ob_uuid == hit_min->
ob_uuid)) {
1497 if ((iter != hit_min) && (iter->ob_uuid == hit_min->
ob_uuid)) {
1498 if (hit_max ==
NULL) {
1501 else if (iter->depth < hit_max->
depth) {
1507 if (hit_max ==
NULL) {
1515 *r_thickness = hit_max->
depth - hit_min->
depth;
1563 char *r_node_border)
1567 bool retval =
false;
1574 new_dist =
abs(totr.
xmin - mval[0]);
1575 if (new_dist < *r_dist_px) {
1577 *r_dist_px = new_dist;
1584 new_dist =
abs(totr.
xmax - mval[0]);
1585 if (new_dist < *r_dist_px) {
1587 *r_dist_px = new_dist;
1594 new_dist =
abs(totr.
ymin - mval[1]);
1595 if (new_dist < *r_dist_px) {
1597 *r_dist_px = new_dist;
1604 new_dist =
abs(totr.
ymax - mval[1]);
1605 if (new_dist < *r_dist_px) {
1607 *r_dist_px = new_dist;
1623 char *r_node_border)
1627 bool retval =
false;
1633 retval |=
snapNode(ts, snode, region,
node, mval, r_loc, r_dist_px, r_node_border);
1641 TransInfo *
t,
const int mval[2],
float r_loc[2],
float *r_dist_px,
char *r_node_border)
1644 t->area->spacedata.first,
1647 t->tsnap.target_select,
1660 TransInfo *
t,
const int max_index,
const float grid_dist,
const float loc[3],
float r_out[3])
1664 const float *center_global =
t->tsnap.snapTargetGrid;
1665 const float *asp =
t->aspect;
1676 for (
int i = 0; i <= max_index; i++) {
1677 const float iter_fac = grid_dist * asp[i];
1678 r_out[i] = iter_fac * roundf((in[i] + center_global[i]) / iter_fac) - center_global[i];
1702 float grid_dist = (
t->modifiers &
MOD_PRECISION) ?
t->snap[1] :
t->snap[0];
1705 if (grid_dist == 0.0f) {
1715 const int max_index,
1716 const float increment_val,
1717 const float aspect[3],
1722 for (
int i = 0; i <= max_index; i++) {
1723 const float iter_fac = increment_val * aspect[i];
1724 r_out[i] = iter_fac * roundf(loc[i] / iter_fac);
1729 const int max_index,
1730 const float increment_dist,
1737 if (increment_dist == 0.0f) {
1741 float asp_local[3] = {1, 1, 1};
1743 const float *asp = use_aspect ?
t->aspect : asp_local;
1748 View2D *v2d = &
t->region->v2d;
1777 if (use_local_space) {
1782 float increment_dist = (
t->modifiers &
MOD_PRECISION) ?
t->snap[1] :
t->snap[0];
1785 if (use_local_space) {
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)
const struct BoundBox * BKE_object_boundbox_get(struct Object *ob)
bool BKE_object_is_in_editmode(const 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 max_ii(int a, int b)
MINLINE float square_f(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 int BLI_rcti_size_x(const struct rcti *rct)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
#define SET_FLAG_FROM_TEST(value, test, flag)
#define POINTER_FROM_UINT(i)
@ SCE_SNAP_TARGET_NOT_ACTIVE
@ SCE_SNAP_TARGET_NOT_NONEDITED
@ SCE_SNAP_TARGET_ONLY_SELECTABLE
@ SCE_SNAP_TARGET_NOT_SELECTED
@ SCE_SNAP_TARGET_NOT_EDITED
@ SCE_SNAP_TO_INCLUDE_EDITED
@ SCE_SNAP_TO_INCLUDE_NONEDITED
@ SCE_SNAP_BACKFACE_CULLING
@ SCE_SNAP_TO_ONLY_SELECTABLE
@ SCE_SNAP_SOURCE_CLOSEST
@ SCE_SNAP_TRANSFORM_MODE_SCALE
@ SCE_SNAP_TRANSFORM_MODE_ROTATE
@ SCE_SNAP_TRANSFORM_MODE_TRANSLATE
@ SCE_SNAP_MODE_FACE_NEAREST
@ SCE_SNAP_MODE_INCREMENT
@ SCE_SNAP_MODE_FACE_RAYCAST
@ SCE_SNAP_MODE_EDGE_PERPENDICULAR
@ V3D_SHADING_BACKFACE_CULLING
void ED_node_draw_snap(struct View2D *v2d, const float cent[2], float size, NodeBorder border, unsigned int pos)
eSnapMode ED_transform_snap_object_project_view3d(struct SnapObjectContext *sctx, struct Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const eSnapMode snap_to, const struct SnapObjectParams *params, const float init_co[3], const float mval[2], const float prev_co[3], float *dist_px, float r_loc[3], float r_no[3])
bool ED_transform_snap_object_project_all_view3d_ex(SnapObjectContext *sctx, struct Depsgraph *depsgraph, const ARegion *region, const View3D *v3d, const struct SnapObjectParams *params, const float mval[2], float ray_depth, bool sort, ListBase *r_hit_list)
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)
SnapObjectContext * ED_transform_snap_object_context_create(struct Scene *scene, int flag)
void ED_transform_snap_object_context_destroy(SnapObjectContext *sctx)
bool ED_uvedit_nearest_uv_multi(const struct View2D *v2d, const struct Scene *scene, struct Object **objects, uint objects_len, const int mval[2], const bool ignore_selected, float *dist_sq, float r_uv[2])
float ED_view3d_pixel_size(const struct RegionView3D *rv3d, const float co[3])
eV3DProjStatus ED_view3d_project_float_global(const struct ARegion *region, const float co[3], float r_co[2], eV3DProjTest flag)
void ED_view3d_cursor_snap_draw_util(struct 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], eSnapMode snap_elem_type)
_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 y
_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 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
void GPU_matrix_pop_projection(void)
void GPU_matrix_push_projection(void)
@ 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()
void UI_view2d_view_to_region_fl(const struct View2D *v2d, float x, float y, float *r_region_x, float *r_region_y) 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()
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)
void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *values)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values)
bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
short SEQ_tool_settings_snap_mode_get(Scene *scene)
struct SnapObjectHitDepth * next
struct bNodeTree * edittree
struct TransSnapPoint * next
double PIL_check_seconds_timer(void)
void wmOrtho2_region_pixelspace(const ARegion *region)