[Bf-blender-cvs] [4bfa9040b98] greasepencil-experimental: GP: Paint: Guides add snap distance to Parallel mode

Charlie Jolly noreply at git.blender.org
Sun Jan 6 02:58:09 CET 2019


Commit: 4bfa9040b9849abf7054d1c647e8b32a43c483cc
Author: Charlie Jolly
Date:   Sun Jan 6 01:57:42 2019 +0000
Branches: greasepencil-experimental
https://developer.blender.org/rB4bfa9040b9849abf7054d1c647e8b32a43c483cc

GP: Paint: Guides add snap distance to Parallel mode

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

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

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

diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index fc174866f46..3a92792efed 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -2554,7 +2554,6 @@ static void gp_rotate_v2_v2v2fl(float v[2], const float p[2], const float origin
 }
 
 /* Helper to snap value to grid */
-
 static float gp_snap_to_grid_fl(float v, const float offset, const float spacing)
 {
 	if (spacing > 0.0f)
@@ -2755,8 +2754,8 @@ static void gpencil_draw_apply_event(bContext *C, wmOperator *op, const wmEvent
 				{
 					float origin[2];
 					gp_origin_get(op, origin);
-					if (ts->gp_sculpt.use_snapping
-						&& (ts->gp_sculpt.guide_angle_snap > 0.0f)) {
+					if (ts->gp_sculpt.use_snapping &&
+						(ts->gp_sculpt.guide_angle_snap > 0.0f)) {
 						float xy[2];
 						sub_v2_v2v2(xy, p->mvali, origin);
 						float angle = atan2f(xy[1], xy[0]);
@@ -2780,6 +2779,7 @@ static void gpencil_draw_apply_event(bContext *C, wmOperator *op, const wmEvent
 				{
 					float origin[2];
 					gp_origin_get(op, origin);
+
 					float point[2];
 					float unit[2];
 					float angle;
@@ -2788,6 +2788,23 @@ static void gpencil_draw_apply_event(bContext *C, wmOperator *op, const wmEvent
 					angle = ts->gp_sculpt.guide_angle;
 					gp_rotate_v2_v2v2fl(point, unit, p->mvali, angle);
 					closest_to_line_v2(p->mval, p->mval, p->mvali, point);
+					
+					if (ts->gp_sculpt.use_snapping &&
+						(ts->gp_sculpt.guide_spacing > 0.0f)) {
+
+						float guide_spacing = gp_float_to_pixel(op, ts->gp_sculpt.guide_spacing);
+						float half = guide_spacing * 0.5f;
+
+						/* rotate */
+						gp_rotate_v2_v2v2fl(p->mval, p->mval, origin, -angle);
+
+						/* snap */
+						p->mval[1] = gp_snap_to_grid_fl(p->mval[1], origin[1] + half, guide_spacing);
+						p->mval[1] -= half;
+
+						/* rotate back */
+						gp_rotate_v2_v2v2fl(p->mval, p->mval, origin, angle);
+					}
 				}
 				break;
 				case GP_GUIDE_GRID:



More information about the Bf-blender-cvs mailing list