[Bf-blender-cvs] [ca253df6239] master: Cleanup: move transform_snap to C++
Jacques Lucke
noreply at git.blender.org
Thu Nov 17 17:14:11 CET 2022
Commit: ca253df62392b4fe7ddb301711ec4a1415d33d8d
Author: Jacques Lucke
Date: Thu Nov 17 17:13:38 2022 +0100
Branches: master
https://developer.blender.org/rBca253df62392b4fe7ddb301711ec4a1415d33d8d
Cleanup: move transform_snap to C++
===================================================================
M source/blender/editors/include/ED_node.h
M source/blender/editors/transform/CMakeLists.txt
M source/blender/editors/transform/transform.h
R084 source/blender/editors/transform/transform_snap.c source/blender/editors/transform/transform_snap.cc
M source/blender/makesdna/DNA_scene_types.h
===================================================================
diff --git a/source/blender/editors/include/ED_node.h b/source/blender/editors/include/ED_node.h
index 24e14fdce72..805c5b0b155 100644
--- a/source/blender/editors/include/ED_node.h
+++ b/source/blender/editors/include/ED_node.h
@@ -32,6 +32,7 @@ typedef enum {
NODE_LEFT = 4,
NODE_RIGHT = 8,
} NodeBorder;
+ENUM_OPERATORS(NodeBorder, NODE_RIGHT)
#define NODE_GRID_STEP_SIZE U.widget_unit /* Based on the grid nodes snap to. */
#define NODE_EDGE_PAN_INSIDE_PAD 2
@@ -191,4 +192,4 @@ void node_insert_on_link_flags_clear(bNodeTree &node_tree);
} // namespace blender::ed::space_node
-#endif
\ No newline at end of file
+#endif
diff --git a/source/blender/editors/transform/CMakeLists.txt b/source/blender/editors/transform/CMakeLists.txt
index 3787a59c83c..6c9b834d34b 100644
--- a/source/blender/editors/transform/CMakeLists.txt
+++ b/source/blender/editors/transform/CMakeLists.txt
@@ -88,7 +88,7 @@ set(SRC
transform_mode_vert_slide.c
transform_ops.c
transform_orientations.c
- transform_snap.c
+ transform_snap.cc
transform_snap_animation.c
transform_snap_object.cc
transform_snap_sequencer.c
diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h
index 1e260ecd292..8e299576492 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -158,6 +158,7 @@ typedef enum {
MOD_SNAP_INVERT = 1 << 3,
MOD_CONSTRAINT_SELECT_PLANE = 1 << 4,
} eTModifier;
+ENUM_OPERATORS(eTModifier, MOD_CONSTRAINT_SELECT_PLANE)
/** #TransSnap.status */
typedef enum eTSnap {
@@ -169,6 +170,7 @@ typedef enum eTSnap {
POINT_INIT = 1 << 3,
MULTI_POINTS = 1 << 4,
} eTSnap;
+ENUM_OPERATORS(eTSnap, MULTI_POINTS)
/** #TransCon.mode, #TransInfo.con.mode */
typedef enum {
@@ -198,6 +200,7 @@ typedef enum {
TREDRAW_SOFT = (1 << 0),
TREDRAW_HARD = (1 << 1) | TREDRAW_SOFT,
} eRedrawFlag;
+ENUM_OPERATORS(eRedrawFlag, TREDRAW_HARD)
/** #TransInfo.helpline */
typedef enum {
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.cc
similarity index 84%
rename from source/blender/editors/transform/transform_snap.c
rename to source/blender/editors/transform/transform_snap.cc
index 11cb57dc911..a56ef9b1a95 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.cc
@@ -13,6 +13,7 @@
#include "BLI_blenlib.h"
#include "BLI_math.h"
+#include "BLI_utildefines.h"
#include "GPU_immediate.h"
#include "GPU_matrix.h"
@@ -85,7 +86,7 @@ int BIF_snappingSupported(Object *obedit)
int status = 0;
/* only support object mesh, armature, curves */
- if (obedit == NULL || ELEM(obedit->type, OB_MESH, OB_ARMATURE, OB_CURVES_LEGACY, OB_LATTICE, OB_MBALL)) {
+ if (obedit == nullptr || ELEM(obedit->type, OB_MESH, OB_ARMATURE, OB_CURVES_LEGACY, OB_LATTICE, OB_MBALL)) {
status = 1;
}
@@ -96,7 +97,7 @@ int BIF_snappingSupported(Object *obedit)
static bool snap_use_backface_culling(const TransInfo *t)
{
BLI_assert(t->spacetype == SPACE_VIEW3D);
- View3D *v3d = t->view;
+ View3D *v3d = static_cast<View3D *>(t->view);
if ((v3d->shading.type == OB_SOLID) && (v3d->shading.flag & V3D_SHADING_BACKFACE_CULLING)) {
return true;
}
@@ -215,9 +216,9 @@ void drawSnapping(const struct bContext *C, TransInfo *t)
}
if (t->spacetype == SPACE_VIEW3D) {
- const float *loc_cur = NULL;
- const float *loc_prev = NULL;
- const float *normal = NULL;
+ const float *loc_cur = nullptr;
+ const float *loc_prev = nullptr;
+ const float *normal = nullptr;
GPU_depth_test(GPU_DEPTH_NONE);
@@ -299,7 +300,7 @@ void drawSnapping(const struct bContext *C, TransInfo *t)
immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR);
- for (p = t->tsnap.points.first; p; p = p->next) {
+ for (p = static_cast<TransSnapPoint *>(t->tsnap.points.first); p; p = p->next) {
if (p == t->tsnap.selectedPoint) {
immUniformColor4ubv(selectedCol);
}
@@ -307,13 +308,14 @@ void drawSnapping(const struct bContext *C, TransInfo *t)
immUniformColor4ubv(col);
}
- ED_node_draw_snap(®ion->v2d, p->co, size, 0, pos);
+ ED_node_draw_snap(®ion->v2d, p->co, size, NodeBorder(0), pos);
}
if (t->tsnap.status & POINT_INIT) {
immUniformColor4ubv(activeCol);
- ED_node_draw_snap(®ion->v2d, t->tsnap.snapPoint, size, t->tsnap.snapNodeBorder, pos);
+ ED_node_draw_snap(
+ ®ion->v2d, t->tsnap.snapPoint, size, NodeBorder(t->tsnap.snapNodeBorder), pos);
}
immUnbindProgram();
@@ -346,7 +348,7 @@ eRedrawFlag handleSnapping(TransInfo *t, const wmEvent *event)
(event->modifier & KM_SHIFT)) {
/* toggle snap and reinit */
t->settings->snap_flag ^= SCE_SNAP;
- initSnapping(t, NULL);
+ initSnapping(t, nullptr);
status = TREDRAW_HARD;
}
#endif
@@ -380,24 +382,24 @@ static bool applyFaceProject(TransInfo *t, TransDataContainer *tc, TransData *td
return false;
}
- eSnapMode hit = ED_transform_snap_object_project_view3d(
- t->tsnap.object_context,
- t->depsgraph,
- t->region,
- t->view,
- SCE_SNAP_MODE_FACE_RAYCAST,
- &(const struct SnapObjectParams){
- .snap_target_select = t->tsnap.target_select,
- .edit_mode_type = (t->flag & T_EDIT) != 0 ? SNAP_GEOM_EDIT : SNAP_GEOM_FINAL,
- .use_occlusion_test = false,
- .use_backface_culling = t->tsnap.use_backface_culling,
- },
- NULL,
- mval_fl,
- NULL,
- 0,
- loc,
- no);
+ SnapObjectParams snap_object_params{};
+ snap_object_params.snap_target_select = t->tsnap.target_select;
+ snap_object_params.edit_mode_type = (t->flag & T_EDIT) != 0 ? SNAP_GEOM_EDIT : SNAP_GEOM_FINAL;
+ snap_object_params.use_occlusion_test = false;
+ snap_object_params.use_backface_culling = t->tsnap.use_backface_culling;
+
+ eSnapMode hit = ED_transform_snap_object_project_view3d(t->tsnap.object_context,
+ t->depsgraph,
+ t->region,
+ static_cast<const View3D *>(t->view),
+ SCE_SNAP_MODE_FACE_RAYCAST,
+ &snap_object_params,
+ nullptr,
+ mval_fl,
+ nullptr,
+ 0,
+ loc,
+ no);
if (hit != SCE_SNAP_MODE_FACE_RAYCAST) {
return false;
}
@@ -447,26 +449,26 @@ static void applyFaceNearest(TransInfo *t, TransDataContainer *tc, TransData *td
copy_v3_v3(init_loc, td->ob->object_to_world[3]);
}
- eSnapMode hit = ED_transform_snap_object_project_view3d(
- t->tsnap.object_context,
- t->depsgraph,
- t->region,
- t->view,
- SCE_SNAP_MODE_FACE_NEAREST,
- &(const struct SnapObjectParams){
- .snap_target_select = t->tsnap.target_select,
- .edit_mode_type = (t->flag & T_EDIT) != 0 ? SNAP_GEOM_EDIT : SNAP_GEOM_FINAL,
- .use_occlusion_test = false,
- .use_backface_culling = false,
- .face_nearest_steps = t->tsnap.face_nearest_steps,
- .keep_on_same_target = t->tsnap.flag & SCE_SNAP_KEEP_ON_SAME_OBJECT,
- },
- init_loc,
- NULL,
- prev_loc,
- 0,
- snap_loc,
- snap_no);
+ SnapObjectParams snap_object_params{};
+ snap_object_params.snap_target_select = t->tsnap.target_select;
+ snap_object_params.edit_mode_type = (t->flag & T_EDIT) != 0 ? SNAP_GEOM_EDIT : SNAP_GEOM_FINAL;
+ snap_object_params.use_occlusion_test = false;
+ snap_object_params.use_backface_culling = false;
+ snap_object_params.face_nearest_steps = t->tsnap.face_nearest_steps;
+ snap_object_params.keep_on_same_target = t->tsnap.flag & SCE_SNAP_KEEP_ON_SAME_OBJECT;
+
+ eSnapMode hit = ED_transform_snap_object_project_view3d(t->tsnap.object_context,
+ t->depsgraph,
+ t->region,
+ static_cast<const View3D *>(t->view),
+ SCE_SNAP_MODE_FACE_NEAREST,
+ &snap_object_params,
+ init_loc,
+ nullptr,
+ prev_loc,
+ 0,
+ snap_loc,
+ snap_no);
if (hit != SCE_SNAP_MODE_FACE_NEAREST) {
return;
@@ -610,15 +612,15 @@ static eSnapFlag snap_flag_from_spacetype(TransInfo *t)
{
ToolSettings *ts = t->settings;
if (t->spacetype == SPACE_NODE) {
- return ts->snap_flag_node;
+ return eSnapFlag(ts->snap_flag_node);
}
if (t->spacetype == SPACE_IMAGE) {
- return ts->snap_uv_flag;
+ return eSnapFlag(ts->snap_uv_flag);
}
if (t->spacetype == SPACE_SEQ) {
- return ts->snap_flag_seq;
+ return eSnapFlag(ts->snap_flag_seq);
}
- return ts->snap_flag;
+ return eSnapFlag(ts->snap_flag);
}
static eSnapMode snap_mode_from_spacetype(TransInfo *t)
@@ -626,11 +628,11 @@ static eSnapMode snap_mode_from_spacetype(TransInfo *t)
ToolSettings *ts = t->settings;
if (t->spacetype == SPACE_NODE) {
- return ts->snap_node_mode;
+ return eSnapMode(ts->snap_node_mode);
}
if (t->spacetype == SPACE_IMAGE) {
- eSnapMode snap_mode = ts->snap_uv_mode;
+ eSnapMode snap_mode = eSnapMode(ts->snap_uv_mode);
if ((snap_mode & SCE_SNAP_MODE_INCRE
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list