made improvements to legacy text effect

This commit is contained in:
itsmattkc
2019-03-14 20:38:28 +11:00
parent 8f923d9d92
commit a3831bbd50
12 changed files with 139 additions and 32 deletions
+20
View File
@@ -0,0 +1,20 @@
#include "richtexteffect.h"
RichTextEffect::RichTextEffect(Clip *c, const EffectMeta *em)
{
}
void RichTextEffect::redraw(double timecode)
{
QPainter p(&img);
p.setRenderHint(QPainter::Antialiasing);
int width = img.width();
int height = img.height();
img.fill(Qt::transparent);
QTextDocument td;
td.setHtml(text_val->GetStringAt(timecode));
td.drawContents(&p);
}
+15
View File
@@ -0,0 +1,15 @@
#ifndef RICHTEXTEFFECT_H
#define RICHTEXTEFFECT_H
#include "effects/effect.h"
class RichTextEffect : public Effect {
Q_OBJECT
public:
RichTextEffect(Clip* c, const EffectMeta *em);
void redraw(double timecode);
StringField* text_val;
};
#endif // RICHTEXTEFFECT_H
+13 -2
View File
@@ -80,6 +80,14 @@ TextEffect::TextEffect(Clip* c, const EffectMeta* em) :
word_wrap_field = new BoolField(word_wrap_row, "wordwrap");
word_wrap_field->SetColumnSpan(2);
EffectRow* padding_row = new EffectRow(this, tr("Padding"));
padding_field = new DoubleField(padding_row, "padding");
padding_field->SetColumnSpan(2);
EffectRow* position_row = new EffectRow(this, tr("Position"));
position_x = new DoubleField(position_row, "posx");
position_y = new DoubleField(position_row, "posy");
EffectRow* outline_row = new EffectRow(this, tr("Outline"));
outline_bool = new BoolField(outline_row, "outline");
outline_bool->SetColumnSpan(2);
@@ -217,8 +225,9 @@ void TextEffect::redraw(double timecode) {
QPainter p(&img);
p.setRenderHint(QPainter::Antialiasing);
int width = img.width();
int height = img.height();
int padding = qRound(padding_field->GetDoubleAt(timecode));
int width = img.width() - padding * 2;
int height = img.height() - padding * 2;
// set font
font.setStyleHint(QFont::Helvetica, QFont::PreferAntialias);
@@ -307,6 +316,8 @@ void TextEffect::redraw(double timecode) {
path.addText(text_x, text_y, font, lines.at(i));
}
path.translate(position_x->GetDoubleAt(timecode) + padding, position_y->GetDoubleAt(timecode) + padding);
// draw software shadow
if (shadow_bool->GetBoolAt(timecode)) {
p.setPen(Qt::NoPen);
+9 -5
View File
@@ -31,6 +31,11 @@ class TextEffect : public Effect {
public:
TextEffect(Clip* c, const EffectMeta *em);
void redraw(double timecode);
private slots:
void outline_enable(bool);
void shadow_enable(bool);
private:
QFont font;
StringField* text_val;
DoubleField* size_val;
@@ -39,6 +44,9 @@ public:
ComboField* halign_field;
ComboField* valign_field;
BoolField* word_wrap_field;
DoubleField* padding_field;
DoubleField* position_x;
DoubleField* position_y;
BoolField* outline_bool;
DoubleField* outline_width;
@@ -50,11 +58,7 @@ public:
ColorField* shadow_color;
DoubleField* shadow_softness;
DoubleField* shadow_opacity;
private slots:
void outline_enable(bool);
void shadow_enable(bool);
private:
QFont font;
};
#endif // TEXTEFFECT_H