textnode: added parameters for default font and font size

Allows text node to be used without having to write HTML (but allows
the option for HTML still).
This commit is contained in:
itsmattkc
2020-07-10 02:40:52 +10:00
parent 0b4a9f4650
commit 911b6c2887
2 changed files with 29 additions and 3 deletions
+25 -3
View File
@@ -32,11 +32,9 @@ enum TextVerticalAlign {
TextGenerator::TextGenerator()
{
QString default_str = QStringLiteral("<html><div style='font-size:144pt; text-align: center;'>%1</div></html>").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
+4
View File
@@ -50,6 +50,10 @@ private:
NodeInput* valign_input_;
NodeInput* font_input_;
NodeInput* font_size_input_;
};
OLIVE_NAMESPACE_EXIT