VSE: Text strip improvements

- Position text in center of image
 - Increase default font size so it's more visible
 - Increase font size limit
 - Increase limit for location, so text can be scolled off screen
 - Wrap text by default
 - Tweak default box and shadow color
 - Change text shadow position
 - Text box no longer casts shadow

Reviewed By: ISS

Differential Revision: https://developer.blender.org/D10571
This commit is contained in:
Peter Fog 2021-03-20 00:43:40 +01:00 committed by Richard Antalik
parent 913b71bb8b
commit 1c095203c2
2 changed files with 13 additions and 27 deletions

View File

@ -2865,7 +2865,7 @@ static void rna_def_text(StructRNA *srna)
RNA_def_property_int_sdna(prop, NULL, "text_size");
RNA_def_property_ui_text(prop, "Size", "Size of the text");
RNA_def_property_range(prop, 0.0, 2000);
RNA_def_property_ui_range(prop, 0.0f, 1000, 1, -1);
RNA_def_property_ui_range(prop, 0.0f, 2000, 1, -1);
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_invalidate_raw_update");
prop = RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR_GAMMA);
@ -2887,7 +2887,7 @@ static void rna_def_text(StructRNA *srna)
RNA_def_property_float_sdna(prop, NULL, "loc");
RNA_def_property_ui_text(prop, "Location", "Location of the text");
RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0, 1.0, 1, -1);
RNA_def_property_ui_range(prop, -10.0, 10.0, 1, -1);
RNA_def_property_update(prop, NC_SCENE | ND_SEQUENCER, "rna_Sequence_invalidate_raw_update");
prop = RNA_def_property(srna, "wrap_width", PROP_FLOAT, PROP_NONE);

View File

@ -3806,21 +3806,23 @@ static void init_text_effect(Sequence *seq)
data = seq->effectdata = MEM_callocN(sizeof(TextVars), "textvars");
data->text_font = NULL;
data->text_blf_id = -1;
data->text_size = 30;
data->text_size = 60;
copy_v4_fl(data->color, 1.0f);
data->shadow_color[3] = 1.0f;
data->box_color[0] = 0.5f;
data->box_color[1] = 0.5f;
data->box_color[2] = 0.5f;
data->box_color[3] = 1.0f;
data->shadow_color[3] = 0.7f;
data->box_color[0] = 0.2f;
data->box_color[1] = 0.2f;
data->box_color[2] = 0.2f;
data->box_color[3] = 0.7f;
data->box_margin = 0.01f;
BLI_strncpy(data->text, "Text", sizeof(data->text));
data->loc[0] = 0.5f;
data->loc[1] = 0.5f;
data->align = SEQ_TEXT_ALIGN_X_CENTER;
data->align_y = SEQ_TEXT_ALIGN_Y_BOTTOM;
data->align_y = SEQ_TEXT_ALIGN_Y_CENTER;
data->wrap_width = 1.0f;
}
void SEQ_effect_text_font_unload(TextVars *data, const bool do_id_user)
@ -4001,31 +4003,15 @@ static ImBuf *do_text_effect(const SeqRenderData *context,
const int maxx = x + wrap.rect.xmax + margin;
const int miny = y + wrap.rect.ymin - margin;
const int maxy = y + wrap.rect.ymax + margin;
if (data->flag & SEQ_TEXT_SHADOW) {
/* draw a shadow behind the box */
int shadow_offset = 0.005f * width;
if (shadow_offset == 0) {
shadow_offset = 1;
}
IMB_rectfill_area_replace(out,
data->shadow_color,
minx + shadow_offset,
miny - shadow_offset,
maxx + shadow_offset,
maxy - shadow_offset);
}
IMB_rectfill_area_replace(out, data->box_color, minx, miny, maxx, maxy);
}
}
/* BLF_SHADOW won't work with buffers, instead use cheap shadow trick */
else if (data->flag & SEQ_TEXT_SHADOW) {
if (data->flag & SEQ_TEXT_SHADOW) {
int fontx, fonty;
fontx = BLF_width_max(font);
fonty = line_height;
BLF_position(font, x + max_ii(fontx / 25, 1), y + max_ii(fonty / 25, 1), 0.0f);
BLF_position(font, x + max_ii(fontx / 55, 1), y - max_ii(fonty / 30, 1), 0.0f);
BLF_buffer_col(font, data->shadow_color);
BLF_draw_buffer(font, data->text, BLF_DRAW_STR_DUMMY_MAX);
}