[Bf-blender-cvs] [bac9c2dc7db] blender2.8: Manipulator: utility to get matrix w/o offset

Campbell Barton noreply at git.blender.org
Mon May 14 23:23:33 CEST 2018


Commit: bac9c2dc7db1861400f5b37758eb23cdb9fb7325
Author: Campbell Barton
Date:   Mon May 14 23:15:15 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBbac9c2dc7db1861400f5b37758eb23cdb9fb7325

Manipulator: utility to get matrix w/o offset

===================================================================

M	source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c
M	source/blender/windowmanager/manipulators/WM_manipulator_api.h
M	source/blender/windowmanager/manipulators/intern/wm_manipulator.c

===================================================================

diff --git a/source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c b/source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c
index 784c03be949..fe748f33d35 100644
--- a/source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c
+++ b/source/blender/editors/manipulator_library/manipulator_types/cage2d_manipulator.c
@@ -66,16 +66,6 @@
 #define MANIPULATOR_RESIZER_SIZE 10.0f
 #define MANIPULATOR_MARGIN_OFFSET_SCALE 1.5f
 
-static void manipulator_calc_matrix_final_no_offset(
-        const wmManipulator *mpr, float orig_matrix_final_no_offset[4][4])
-{
-	float mat_identity[4][4];
-	struct WM_ManipulatorMatrixParams params = {NULL};
-	unit_m4(mat_identity);
-	params.matrix_offset = mat_identity;
-	WM_manipulator_calc_matrix_final_params(mpr, &params, orig_matrix_final_no_offset);
-}
-
 static void manipulator_calc_rect_view_scale(
         const wmManipulator *mpr, const float dims[2], float scale[2])
 {
@@ -88,7 +78,7 @@ static void manipulator_calc_rect_view_scale(
 		asp[1] = dims[0] / dims[1];
 	}
 	float x_axis[3], y_axis[3];
-	manipulator_calc_matrix_final_no_offset(mpr, matrix_final_no_offset);
+	WM_manipulator_calc_matrix_final_no_offset(mpr, matrix_final_no_offset);
 	mul_v3_mat3_m4v3(x_axis, matrix_final_no_offset, mpr->matrix_offset[0]);
 	mul_v3_mat3_m4v3(y_axis, matrix_final_no_offset, mpr->matrix_offset[1]);
 
@@ -841,7 +831,7 @@ static int manipulator_cage2d_invoke(
 	RectTransformInteraction *data = MEM_callocN(sizeof(RectTransformInteraction), "cage_interaction");
 
 	copy_m4_m4(data->orig_matrix_offset, mpr->matrix_offset);
-	manipulator_calc_matrix_final_no_offset(mpr, data->orig_matrix_final_no_offset);
+	WM_manipulator_calc_matrix_final_no_offset(mpr, data->orig_matrix_final_no_offset);
 
 	if (manipulator_window_project_2d(
 	        C, mpr, (const float[2]){UNPACK2(event->mval)}, 2, false, data->orig_mouse) == 0)
diff --git a/source/blender/windowmanager/manipulators/WM_manipulator_api.h b/source/blender/windowmanager/manipulators/WM_manipulator_api.h
index 748cc18480f..b88956ac28d 100644
--- a/source/blender/windowmanager/manipulators/WM_manipulator_api.h
+++ b/source/blender/windowmanager/manipulators/WM_manipulator_api.h
@@ -125,8 +125,11 @@ struct WM_ManipulatorMatrixParams {
 void WM_manipulator_calc_matrix_final_params(
         const struct wmManipulator *mpr, const struct WM_ManipulatorMatrixParams *params,
         float r_mat[4][4]);
+void WM_manipulator_calc_matrix_final_no_offset(
+        const struct wmManipulator *mpr, float r_mat[4][4]);
 
-void WM_manipulator_calc_matrix_final(const struct wmManipulator *mpr, float r_mat[4][4]);
+void WM_manipulator_calc_matrix_final(
+        const struct wmManipulator *mpr, float r_mat[4][4]);
 
 /* properties */
 void WM_manipulator_properties_create_ptr(struct PointerRNA *ptr, struct wmManipulatorType *wt);
diff --git a/source/blender/windowmanager/manipulators/intern/wm_manipulator.c b/source/blender/windowmanager/manipulators/intern/wm_manipulator.c
index 42232950cc4..f5a8746f807 100644
--- a/source/blender/windowmanager/manipulators/intern/wm_manipulator.c
+++ b/source/blender/windowmanager/manipulators/intern/wm_manipulator.c
@@ -598,6 +598,22 @@ void WM_manipulator_calc_matrix_final_params(
 	mul_m4_m4m4(r_mat, matrix_space, final_matrix);
 }
 
+void WM_manipulator_calc_matrix_final_no_offset(const wmManipulator *mpr, float r_mat[4][4])
+{
+	float mat_identity[4][4];
+	unit_m4(mat_identity);
+
+	WM_manipulator_calc_matrix_final_params(
+	        mpr,
+	        &((struct WM_ManipulatorMatrixParams) {
+	            .matrix_space = NULL,
+	            .matrix_basis = NULL,
+	            .matrix_offset = mat_identity,
+	            .scale_final = NULL,
+	        }), r_mat
+	);
+}
+
 void WM_manipulator_calc_matrix_final(const wmManipulator *mpr, float r_mat[4][4])
 {
 	WM_manipulator_calc_matrix_final_params(



More information about the Bf-blender-cvs mailing list