diff --git a/app/node/generator/text/text.cpp b/app/node/generator/text/text.cpp
index 993086bcb..de38f08bd 100644
--- a/app/node/generator/text/text.cpp
+++ b/app/node/generator/text/text.cpp
@@ -32,11 +32,9 @@ enum TextVerticalAlign {
TextGenerator::TextGenerator()
{
- QString default_str = QStringLiteral("
%1
").arg(tr("Sample Text"));
-
text_input_ = new NodeInput(QStringLiteral("text_in"),
NodeParam::kText,
- default_str);
+ tr("Sample Text"));
AddInput(text_input_);
color_input_ = new NodeInput(QStringLiteral("color_in"),
@@ -48,6 +46,15 @@ TextGenerator::TextGenerator()
NodeParam::kCombo,
1);
AddInput(valign_input_);
+
+ font_input_ = new NodeInput(QStringLiteral("font_in"),
+ NodeParam::kFont);
+ AddInput(font_input_);
+
+ font_size_input_ = new NodeInput(QStringLiteral("font_size_in"),
+ NodeParam::kFloat,
+ 72.0f);
+ AddInput(font_size_input_);
}
Node *TextGenerator::copy() const
@@ -78,7 +85,10 @@ QString TextGenerator::Description() const
void TextGenerator::Retranslate()
{
text_input_->set_name(tr("Text"));
+ font_input_->set_name(tr("Font"));
+ font_size_input_->set_name(tr("Font Size"));
color_input_->set_name(tr("Color"));
+ valign_input_->set_name(tr("Vertical Align"));
valign_input_->set_combobox_strings({tr("Top"), tr("Center"), tr("Bottom")});
}
@@ -88,6 +98,8 @@ NodeValueTable TextGenerator::Value(NodeValueDatabase &value) const
job.InsertValue(text_input_, value);
job.InsertValue(color_input_, value);
job.InsertValue(valign_input_, value);
+ job.InsertValue(font_input_, value);
+ job.InsertValue(font_size_input_, value);
job.SetAlphaChannelRequired(true);
NodeValueTable table = value.Merge();
@@ -109,6 +121,16 @@ void TextGenerator::GenerateFrame(FramePtr frame, const GenerateJob& job) const
img.fill(0);
QTextDocument text_doc;
+
+ // Set default font
+ QFont default_font;
+ default_font.setFamily(job.GetValue(font_input_).data().toString());
+ default_font.setPointSizeF(job.GetValue(font_size_input_).data().toFloat());
+ text_doc.setDefaultFont(default_font);
+
+ // Center by default
+ text_doc.setDefaultTextOption(QTextOption(Qt::AlignCenter));
+
text_doc.setHtml(job.GetValue(text_input_).data().toString());
// Align to 80% width because that's considered the "title safe" area
diff --git a/app/node/generator/text/text.h b/app/node/generator/text/text.h
index b94399041..e4a14b868 100644
--- a/app/node/generator/text/text.h
+++ b/app/node/generator/text/text.h
@@ -50,6 +50,10 @@ private:
NodeInput* valign_input_;
+ NodeInput* font_input_;
+
+ NodeInput* font_size_input_;
+
};
OLIVE_NAMESPACE_EXIT