[Bf-blender-cvs] [352a63e4794] asset-greasepencil: GPencil: Use cage center as origin for rotation angle

Antonio Vazquez noreply at git.blender.org
Mon Jul 19 16:42:29 CEST 2021


Commit: 352a63e47941e32031165f90a94590023baea3b8
Author: Antonio Vazquez
Date:   Mon Jul 19 16:14:38 2021 +0200
Branches: asset-greasepencil
https://developer.blender.org/rB352a63e47941e32031165f90a94590023baea3b8

GPencil: Use cage center as origin for rotation angle

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

M	source/blender/editors/gpencil/gpencil_asset.c

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

diff --git a/source/blender/editors/gpencil/gpencil_asset.c b/source/blender/editors/gpencil/gpencil_asset.c
index 9cea4a88635..780f5f60a53 100644
--- a/source/blender/editors/gpencil/gpencil_asset.c
+++ b/source/blender/editors/gpencil/gpencil_asset.c
@@ -106,6 +106,8 @@ typedef struct tGPDasset {
 
   /** 2D Cage vertices. */
   rctf rect_cage;
+  /** 2D cage center. */
+  float cage_center[2];
   /** 2D cage manipulator points *
    *
    *               8 (Rotation)
@@ -521,6 +523,10 @@ static void gpencil_2d_cage_calc(tGPDasset *tgpa)
   tgpa->rect_cage.xmax = cage_max[0] + oversize;
   tgpa->rect_cage.ymax = cage_max[1] + oversize;
 
+  /* Cage center. */
+  tgpa->cage_center[0] = 0.5f * (tgpa->rect_cage.xmin + tgpa->rect_cage.xmax);
+  tgpa->cage_center[1] = 0.5f * (tgpa->rect_cage.ymin + tgpa->rect_cage.ymax);
+
   /* Manipulator points */
   tgpa->manipulator[0][0] = tgpa->rect_cage.xmin;
   tgpa->manipulator[0][1] = tgpa->rect_cage.ymax;
@@ -583,7 +589,7 @@ static void gpencil_2d_cage_area_detect(tGPDasset *tgpa, const int mouse[2])
                                                    GP_ASSET_TRANSFORM_ROT;
 
       if (tgpa->mode == GP_ASSET_TRANSFORM_ROT) {
-        WM_cursor_modal_set(tgpa->win, WM_CURSOR_NW_ARROW);
+        WM_cursor_modal_set(tgpa->win, WM_CURSOR_HAND);
         return;
       }
 
@@ -736,6 +742,7 @@ static void gpencil_asset_transform_strokes(tGPDasset *tgpa,
   float rot_matrix[4][4];
   float vr[2];
   copy_v2fl_v2i(vr, mouse);
+  sub_v2_v2v2(vr, vr, tgpa->cage_center);
   normalize_v2(vr);
   float angle = angle_signed_v2v2(tgpa->vinit_rotation, vr);
   gpencil_asset_rotation_matrix_get(angle, tgpa->normal_vec, rot_matrix);
@@ -1100,6 +1107,7 @@ static int gpencil_asset_import_modal(bContext *C, wmOperator *op, const wmEvent
 
         /* Initial orientation for rotation. */
         copy_v2fl_v2i(tgpa->vinit_rotation, tgpa->mouse);
+        sub_v2_v2v2(tgpa->vinit_rotation, tgpa->vinit_rotation, tgpa->cage_center);
         normalize_v2(tgpa->vinit_rotation);
 
         tgpa->flag &= ~GP_ASSET_FLAG_IDLE;



More information about the Bf-blender-cvs mailing list