implemented text shadow angles #490 #523

This commit is contained in:
itsmattkc
2019-02-19 17:48:55 -08:00
parent c833e4849d
commit e0b2cf3b7a
2 changed files with 14 additions and 6 deletions
+12 -5
View File
@@ -81,7 +81,8 @@ TextEffect::TextEffect(ClipPtr c, const EffectMeta* em) :
outline_width->set_double_minimum_value(0);
shadow_bool = add_row(tr("Shadow"))->add_field(EFFECT_FIELD_BOOL, "shadow", 2);
shadow_color = add_row(tr("Shadow Color"))->add_field(EFFECT_FIELD_COLOR, "shadowcolor", 2);
shadow_color = add_row(tr("Shadow Color"))->add_field(EFFECT_FIELD_COLOR, "shadowcolor", 2);
shadow_angle = add_row(tr("Shadow Angle"))->add_field(EFFECT_FIELD_DOUBLE, "shadowangle", 2);
shadow_distance = add_row(tr("Shadow Distance"))->add_field(EFFECT_FIELD_DOUBLE, "shadowdistance", 2);
shadow_distance->set_double_minimum_value(0);
shadow_softness = add_row(tr("Shadow Softness"))->add_field(EFFECT_FIELD_DOUBLE, "shadowsoftness", 2);
@@ -97,6 +98,7 @@ TextEffect::TextEffect(ClipPtr c, const EffectMeta* em) :
word_wrap_field->set_bool_value(true);
outline_color->set_color_value(Qt::black);
shadow_color->set_color_value(Qt::black);
shadow_angle->set_double_default_value(45);
shadow_opacity->set_double_default_value(100);
shadow_softness->set_double_default_value(5);
shadow_distance->set_double_default_value(5);
@@ -277,10 +279,15 @@ void TextEffect::redraw(double timecode) {
// draw software shadow
if (shadow_bool->get_bool_value(timecode)) {
p.setPen(Qt::NoPen);
int shadow_offset = shadow_distance->get_double_value(timecode);
// calculate offset using distance and angle
double angle = shadow_angle->get_double_value(timecode) * M_PI / 180.0;
double distance = qFloor(shadow_distance->get_double_value(timecode));
int shadow_x_offset = qRound(qCos(angle) * distance);
int shadow_y_offset = qRound(qSin(angle) * distance);
QPainterPath shadow_path(path);
shadow_path.translate(shadow_offset, shadow_offset);
shadow_path.translate(shadow_x_offset, shadow_y_offset);
QColor col = shadow_color->get_color_value(timecode);
col.setAlpha(0);
@@ -290,8 +297,8 @@ void TextEffect::redraw(double timecode) {
p.setBrush(col);
p.drawPath(shadow_path);
int blurSoftness = shadow_softness->get_double_value(timecode);
if (blurSoftness > 0) blurred2(img, img.rect(), blurSoftness, false);
int blurSoftness = qFloor(shadow_softness->get_double_value(timecode));
if (blurSoftness > 0) blurred2(img, img.rect(), blurSoftness, true);
}
// draw outline
+2 -1
View File
@@ -45,7 +45,8 @@ public:
EffectField* outline_color;
EffectField* shadow_bool;
EffectField* shadow_distance;
EffectField* shadow_angle;
EffectField* shadow_distance;
EffectField* shadow_color;
EffectField* shadow_softness;
EffectField* shadow_opacity;