GPencil Onion Skinning: Setting before/after to -1 will turn off onionskinning in that direction

This is an experimental option that I found would have been useful to have,
when making my earlier anim test. The only contentious point is whether it's
better to use a separate boolean flag (perhaps bound to the labels) instead
of overloading this setting (and describing the usage in the tooltip).
This commit is contained in:
Joshua Leung
2016-05-09 03:03:40 +12:00
parent d6fd6d18d7
commit e2b79a0a24
2 changed files with 14 additions and 8 deletions

View File

@@ -1067,7 +1067,7 @@ static void gp_draw_onionskins(bGPDlayer *gpl, bGPDframe *gpf, int offsx, int of
copy_v3_v3(color, gpl->color); copy_v3_v3(color, gpl->color);
} }
if (gpl->gstep) { if (gpl->gstep > 0) {
bGPDframe *gf; bGPDframe *gf;
float fac; float fac;
@@ -1084,13 +1084,16 @@ static void gp_draw_onionskins(bGPDlayer *gpl, bGPDframe *gpf, int offsx, int of
break; break;
} }
} }
else { else if (gpl->gstep == 0) {
/* draw the strokes for the ghost frames (at half of the alpha set by user) */ /* draw the strokes for the ghost frames (at half of the alpha set by user) */
if (gpf->prev) { if (gpf->prev) {
color[3] = (alpha / 7); color[3] = (alpha / 7);
gp_draw_strokes(gpf->prev, offsx, offsy, winx, winy, dflag, debug, lthick, color, color); gp_draw_strokes(gpf->prev, offsx, offsy, winx, winy, dflag, debug, lthick, color, color);
} }
} }
else {
/* don't draw - disabled */
}
/* 2) Now draw next frames */ /* 2) Now draw next frames */
@@ -1101,7 +1104,7 @@ static void gp_draw_onionskins(bGPDlayer *gpl, bGPDframe *gpf, int offsx, int of
copy_v3_v3(color, gpl->color); copy_v3_v3(color, gpl->color);
} }
if (gpl->gstep_next) { if (gpl->gstep_next > 0) {
bGPDframe *gf; bGPDframe *gf;
float fac; float fac;
@@ -1118,13 +1121,16 @@ static void gp_draw_onionskins(bGPDlayer *gpl, bGPDframe *gpf, int offsx, int of
break; break;
} }
} }
else { else if (gpl->gstep_next == 0) {
/* draw the strokes for the ghost frames (at half of the alpha set by user) */ /* draw the strokes for the ghost frames (at half of the alpha set by user) */
if (gpf->next) { if (gpf->next) {
color[3] = (alpha / 4); color[3] = (alpha / 4);
gp_draw_strokes(gpf->next, offsx, offsy, winx, winy, dflag, debug, lthick, color, color); gp_draw_strokes(gpf->next, offsx, offsy, winx, winy, dflag, debug, lthick, color, color);
} }
} }
else {
/* don't draw - disabled */
}
/* 3) restore alpha */ /* 3) restore alpha */
glColor4fv(gpl->color); glColor4fv(gpl->color);

View File

@@ -770,18 +770,18 @@ static void rna_def_gpencil_layer(BlenderRNA *brna)
prop = RNA_def_property(srna, "ghost_before_range", PROP_INT, PROP_NONE); prop = RNA_def_property(srna, "ghost_before_range", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "gstep"); RNA_def_property_int_sdna(prop, NULL, "gstep");
RNA_def_property_range(prop, 0, 120); RNA_def_property_range(prop, -1, 120);
RNA_def_property_ui_text(prop, "Frames Before", RNA_def_property_ui_text(prop, "Frames Before",
"Maximum number of frames to show before current frame " "Maximum number of frames to show before current frame "
"(0 = show only the previous sketch)"); "(0 = show only the previous sketch, -1 = Don't show any frames before current)");
RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, "rna_GPencil_update"); RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, "rna_GPencil_update");
prop = RNA_def_property(srna, "ghost_after_range", PROP_INT, PROP_NONE); prop = RNA_def_property(srna, "ghost_after_range", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "gstep_next"); RNA_def_property_int_sdna(prop, NULL, "gstep_next");
RNA_def_property_range(prop, 0, 120); RNA_def_property_range(prop, -1, 120);
RNA_def_property_ui_text(prop, "Frames After", RNA_def_property_ui_text(prop, "Frames After",
"Maximum number of frames to show after current frame " "Maximum number of frames to show after current frame "
"(0 = show only the next sketch)"); "(0 = show only the next sketch, -1 = Don't show any frames after current)");
RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, "rna_GPencil_update"); RNA_def_property_update(prop, NC_GPENCIL | ND_DATA, "rna_GPencil_update");
prop = RNA_def_property(srna, "use_ghost_custom_colors", PROP_BOOLEAN, PROP_NONE); prop = RNA_def_property(srna, "use_ghost_custom_colors", PROP_BOOLEAN, PROP_NONE);