Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonioya <blendergit@gmail.com>2018-12-23 18:45:36 +0300
committerAntonioya <blendergit@gmail.com>2018-12-23 18:45:36 +0300
commit8746575d09394b7aec1e322fbd5af70b45399b58 (patch)
tree2611ea968323e9a96e53a162f7adc0bf434b136a /source/blender/editors
parentf5166233dbaa3f70dcd019e8d76a924651841d75 (diff)
GP: Add Shift+F to define strength for primitives
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/gpencil/gpencil_intern.h1
-rw-r--r--source/blender/editors/gpencil/gpencil_primitive.c89
2 files changed, 72 insertions, 18 deletions
diff --git a/source/blender/editors/gpencil/gpencil_intern.h b/source/blender/editors/gpencil/gpencil_intern.h
index 3fb2464aaf3..71d293d5244 100644
--- a/source/blender/editors/gpencil/gpencil_intern.h
+++ b/source/blender/editors/gpencil/gpencil_intern.h
@@ -158,6 +158,7 @@ typedef struct tGPDprimitive {
int orign_type; /* original type of primitive */
bool curve; /* type of primitive is a curve */
int brush_size; /* brush size */
+ float brush_strength; /* brush strength */
short flip; /* flip option */
tGPspoint *points; /* array of data-points for stroke */
int point_count; /* number of edges allocated */
diff --git a/source/blender/editors/gpencil/gpencil_primitive.c b/source/blender/editors/gpencil/gpencil_primitive.c
index f015c01a8e6..310f47f25cb 100644
--- a/source/blender/editors/gpencil/gpencil_primitive.c
+++ b/source/blender/editors/gpencil/gpencil_primitive.c
@@ -97,6 +97,7 @@
#define IN_CURVE_EDIT 2
#define IN_MOVE 3
#define IN_BRUSH_SIZE 4
+#define IN_BRUSH_STRENGTH 5
#define SELECT_NONE 0
#define SELECT_START 1
@@ -1329,10 +1330,34 @@ static void gpencil_primitive_edit_event_handling(bContext *C, wmOperator *op, w
}
}
+/* brush strength */
+static void gpencil_primitive_strength(tGPDprimitive *tgpi, bool reset)
+{
+ Brush *brush = tgpi->brush;
+ if (brush) {
+ if (reset) {
+ brush->gpencil_settings->draw_strength = tgpi->brush_strength;
+ tgpi->brush_strength = 0.0f;
+ }
+ else {
+ if (tgpi->brush_strength == 0.0f) {
+ tgpi->brush_strength = brush->gpencil_settings->draw_strength;
+ }
+ float move[2];
+ sub_v2_v2v2(move, tgpi->mval, tgpi->mvalo);
+ float adjust = (move[1] > 0.0f) ? 0.01f : -0.01f;
+ brush->gpencil_settings->draw_strength += adjust * fabsf(len_manhattan_v2(move));
+ }
+
+ /* limit low limit because below 0.2f the stroke is invisible */
+ CLAMP(brush->gpencil_settings->draw_strength, 0.2f, 1.0f);
+ }
+}
+
/* brush size */
static void gpencil_primitive_size(tGPDprimitive *tgpi, bool reset)
{
- Brush * brush = tgpi->brush;
+ Brush *brush = tgpi->brush;
if (brush) {
if (reset) {
brush->size = tgpi->brush_size;
@@ -1415,23 +1440,46 @@ static int gpencil_primitive_modal(bContext *C, wmOperator *op, const wmEvent *e
}
else if (tgpi->flag == IN_BRUSH_SIZE) {
switch (event->type) {
- case MOUSEMOVE:
- gpencil_primitive_size(tgpi, false);
- gpencil_primitive_update(C, op, tgpi);
- break;
- case ESCKEY:
- case MIDDLEMOUSE:
- case LEFTMOUSE:
- tgpi->brush_size = 0;
- tgpi->flag = IN_CURVE_EDIT;
- break;
- case RIGHTMOUSE:
- if (event->val == KM_RELEASE) {
+ case MOUSEMOVE:
+ gpencil_primitive_size(tgpi, false);
+ gpencil_primitive_update(C, op, tgpi);
+ break;
+ case ESCKEY:
+ case MIDDLEMOUSE:
+ case LEFTMOUSE:
+ tgpi->brush_size = 0;
tgpi->flag = IN_CURVE_EDIT;
- gpencil_primitive_size(tgpi, true);
+ break;
+ case RIGHTMOUSE:
+ if (event->val == KM_RELEASE) {
+ tgpi->flag = IN_CURVE_EDIT;
+ gpencil_primitive_size(tgpi, true);
+ gpencil_primitive_update(C, op, tgpi);
+ }
+ break;
+ }
+ copy_v2_v2(tgpi->mvalo, tgpi->mval);
+ return OPERATOR_RUNNING_MODAL;
+ }
+ else if (tgpi->flag == IN_BRUSH_STRENGTH) {
+ switch (event->type) {
+ case MOUSEMOVE:
+ gpencil_primitive_strength(tgpi, false);
gpencil_primitive_update(C, op, tgpi);
- }
- break;
+ break;
+ case ESCKEY:
+ case MIDDLEMOUSE:
+ case LEFTMOUSE:
+ tgpi->brush_strength = 0.0f;
+ tgpi->flag = IN_CURVE_EDIT;
+ break;
+ case RIGHTMOUSE:
+ if (event->val == KM_RELEASE) {
+ tgpi->flag = IN_CURVE_EDIT;
+ gpencil_primitive_strength(tgpi, true);
+ gpencil_primitive_update(C, op, tgpi);
+ }
+ break;
}
copy_v2_v2(tgpi->mvalo, tgpi->mval);
return OPERATOR_RUNNING_MODAL;
@@ -1528,10 +1576,15 @@ static int gpencil_primitive_modal(bContext *C, wmOperator *op, const wmEvent *e
}
break;
}
- case FKEY: /* brush thickness */
+ case FKEY: /* brush thickness/ brush strength */
{
if ((event->val == KM_PRESS)) {
- tgpi->flag = IN_BRUSH_SIZE;
+ if (event->shift) {
+ tgpi->flag = IN_BRUSH_STRENGTH;
+ }
+ else {
+ tgpi->flag = IN_BRUSH_SIZE;
+ }
WM_cursor_modal_set(win, BC_NS_SCROLLCURSOR);
}
break;