Commit: 809fc4807a582bf6614592a3f774ac096235d146 Author: Antonio Vazquez Date: Fri Dec 1 17:27:51 2017 +0100 Branches: greasepencil-object https://developer.blender.org/rB809fc4807a582bf6614592a3f774ac096235d146
Make falloff function external to reuse Move the calculation of falloff factor to a separated function to be reused in transformations. =================================================================== M source/blender/blenkernel/BKE_gpencil.h M source/blender/blenkernel/intern/gpencil.c M source/blender/editors/gpencil/gpencil_brush.c =================================================================== diff --git a/source/blender/blenkernel/BKE_gpencil.h b/source/blender/blenkernel/BKE_gpencil.h index 5ea2c92b5b5..65783df1345 100644 --- a/source/blender/blenkernel/BKE_gpencil.h +++ b/source/blender/blenkernel/BKE_gpencil.h @@ -31,6 +31,7 @@ * \author Joshua Leung */ +struct CurveMapping; struct bContext; struct EvaluationContext; struct ToolSettings; @@ -216,5 +217,6 @@ bool BKE_gp_smooth_stroke_strength(struct bGPDstroke *gps, int i, float inf); bool BKE_gp_smooth_stroke_thickness(struct bGPDstroke *gps, int i, float inf); void BKE_gp_get_range_selected(struct bGPDlayer *gpl, int *r_initframe, int *r_endframe); +void BKE_get_falloff_factor(struct bGPDframe *gpf, int actnum, int f_init, int f_end, struct CurveMapping *cur_falloff, float *r_value); #endif /* __BKE_GPENCIL_H__ */ diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c index 977fcf61147..f08adbb7b96 100644 --- a/source/blender/blenkernel/intern/gpencil.c +++ b/source/blender/blenkernel/intern/gpencil.c @@ -2486,4 +2486,31 @@ void BKE_gp_get_range_selected(bGPDlayer *gpl, int *r_initframe, int *r_endframe } } } +} +/** +* Get Falloff factor base on frame range +* \param gpf Frame +* \param actnum Number of active frame in layer +* \param f_init Number of first selected frame +* \param f_end Number of last selected frame +* \param cur_falloff Curve with falloff factors +*/ +void BKE_get_falloff_factor(bGPDframe *gpf, int actnum, int f_init, int f_end, CurveMapping *cur_falloff, float *r_value) +{ + float fnum = 0.5f; /* default mid curve */ + /* frames to the right of the active frame */ + if (gpf->framenum < actnum) { + fnum = (float)(gpf->framenum - f_init) / (actnum - f_init); + fnum *= 0.5f; + *r_value = curvemapping_evaluateF(cur_falloff, 0, fnum); + } + /* frames to the left of the active frame */ + else if (gpf->framenum > actnum) { + fnum = (float)(gpf->framenum - actnum) / (f_end - actnum); + fnum *= 0.5f; + *r_value = curvemapping_evaluateF(cur_falloff, 0, fnum + 0.5f); + } + else { + *r_value = 1.0f; + } } \ No newline at end of file diff --git a/source/blender/editors/gpencil/gpencil_brush.c b/source/blender/editors/gpencil/gpencil_brush.c index cc81d99fac7..da0fccc3dbf 100644 --- a/source/blender/editors/gpencil/gpencil_brush.c +++ b/source/blender/editors/gpencil/gpencil_brush.c @@ -1478,22 +1478,10 @@ static bool gpsculpt_brush_apply_standard(bContext *C, tGP_BrushEditData *gso) /* compute multiframe falloff factor*/ if ((is_multiedit) && (ts->gp_sculpt.flag & GP_BRUSHEDIT_FLAG_FRAME_FALLOFF)) { - float fnum = 0.5f; /* default mid curve */ - /* frames to the right of the active frame */ - if (gpf->framenum < gpl->actframe->framenum) { - fnum = (float)(gpf->framenum - f_init) / (gpl->actframe->framenum - f_init); - fnum *= 0.5f; - gso->falloff = curvemapping_evaluateF(ts->gp_sculpt.cur_falloff, 0, fnum); - } - /* frames to the left of the active frame */ - else if (gpf->framenum > gpl->actframe->framenum) { - fnum = (float)(gpf->framenum - gpl->actframe->framenum) / (f_end - gpl->actframe->framenum); - fnum *= 0.5f; - gso->falloff = curvemapping_evaluateF(ts->gp_sculpt.cur_falloff, 0, fnum + 0.5f); - } - else { - gso->falloff = 1.0f; - } + BKE_get_falloff_factor(gpf, gpl->actframe->framenum, + f_init, f_end, + ts->gp_sculpt.cur_falloff, + &gso->falloff); } /* calculate difference matrix */ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs