[Bf-blender-cvs] [410ec3fb3a1] asset-greasepencil: New Flip option
Antonio Vazquez
noreply at git.blender.org
Sat Jan 22 16:19:33 CET 2022
Commit: 410ec3fb3a11b399c5f177697bd5c81a6a8d5bc8
Author: Antonio Vazquez
Date: Sat Jan 22 16:18:29 2022 +0100
Branches: asset-greasepencil
https://developer.blender.org/rB410ec3fb3a11b399c5f177697bd5c81a6a8d5bc8
New Flip option
Using F key (Horizontal) or Shift+F (Vertical) is possible to flip the asset.
===================================================================
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 0761d3f1313..37a163de424 100644
--- a/source/blender/editors/gpencil/gpencil_asset.c
+++ b/source/blender/editors/gpencil/gpencil_asset.c
@@ -177,6 +177,8 @@ enum eGP_CageCorners {
CAGE_CORNER_ROT_NE = 9,
CAGE_CORNER_ROT_SW = 10,
CAGE_CORNER_ROT_SE = 11,
+ CAGE_FLIP_HORZ = 12,
+ CAGE_FLIP_VERT = 13,
};
static bool gpencil_asset_generic_poll(bContext *C)
@@ -831,7 +833,7 @@ static void gpencil_asset_transform_strokes(tGPDasset *tgpa,
/* Determine pivot point. */
float pivot[3];
gpencil_point_xy_to_3d(&tgpa->gsc, tgpa->scene, tgpa->transform_center, pivot);
- if (!shift_key) {
+ if ((!shift_key) || (ELEM(tgpa->manipulator_index, CAGE_FLIP_HORZ, CAGE_FLIP_VERT))) {
if (tgpa->manipulator_index == CAGE_CORNER_N) {
gpencil_point_xy_to_3d(&tgpa->gsc, tgpa->scene, tgpa->manipulator[CAGE_CORNER_S], pivot);
}
@@ -844,6 +846,19 @@ static void gpencil_asset_transform_strokes(tGPDasset *tgpa,
else if (tgpa->manipulator_index == CAGE_CORNER_W) {
gpencil_point_xy_to_3d(&tgpa->gsc, tgpa->scene, tgpa->manipulator[CAGE_CORNER_E], pivot);
}
+ else if (ELEM(tgpa->manipulator_index, CAGE_FLIP_HORZ, CAGE_FLIP_VERT)) {
+ copy_v3_v3(pivot, tgpa->asset_center);
+ scale_factor = 1.0f;
+ zero_v3(scale_vector);
+ add_v3_fl(scale_vector, 1.0f);
+
+ if (tgpa->manipulator_index == CAGE_FLIP_HORZ) {
+ scale_vector[0] = -1.0f;
+ }
+ else {
+ scale_vector[2] = -1.0f;
+ }
+ }
}
sub_v3_v3v3(pivot, pivot, tgpa->ob->loc);
@@ -1188,8 +1203,9 @@ static void gpencil_asset_import_status_indicators(bContext *C, const tGPDasset
mode_txt[tgpa->mode]);
ED_area_status_text(tgpa->area, status_str);
- ED_workspace_status_text(
- C, TIP_("ESC/RMB to cancel, Enter/LMB(outside cage) to confirm, Shift to Scale uniform"));
+ ED_workspace_status_text(C,
+ TIP_("ESC/RMB to cancel, Enter/LMB(outside cage) to confirm, Shift to "
+ "Scale uniform, F: Flip Horiz. (Shift Vert.)"));
}
/* Update screen and stroke. */
@@ -1481,6 +1497,27 @@ static int gpencil_asset_import_modal(bContext *C, wmOperator *op, const wmEvent
gpencil_asset_import_update(C, op, tgpa);
break;
}
+ case EVT_FKEY: {
+ if (event->val == KM_PRESS) {
+ /* Flip Horizontal. */
+ tgpa->flag &= ~GP_ASSET_FLAG_IDLE;
+ tgpa->flag |= GP_ASSET_FLAG_TRANSFORMING;
+ tgpa->manipulator_index = (event->shift) ? CAGE_FLIP_VERT : CAGE_FLIP_HORZ;
+ tgpa->mode = GP_ASSET_TRANSFORM_SCALE;
+
+ gpencil_asset_transform_strokes(tgpa, event->mval, event->shift);
+ gpencil_2d_cage_calc(tgpa);
+ ED_area_tag_redraw(tgpa->area);
+
+ tgpa->flag |= GP_ASSET_FLAG_IDLE;
+ tgpa->flag &= ~GP_ASSET_FLAG_TRANSFORMING;
+ tgpa->mode = GP_ASSET_TRANSFORM_NONE;
+
+ /* Update screen. */
+ gpencil_asset_import_update(C, op, tgpa);
+ }
+ break;
+ }
default: {
/* Unhandled event - allow to pass through. */
return OPERATOR_RUNNING_MODAL | OPERATOR_PASS_THROUGH;
More information about the Bf-blender-cvs
mailing list