From 911b6c2887533265c376cd55b6f4b730a7f90723 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 10 Jul 2020 02:40:52 +1000 Subject: [PATCH] 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). --- app/node/generator/text/text.cpp | 28 +++++++++++++++++++++++++--- app/node/generator/text/text.h | 4 ++++ 2 files changed, 29 insertions(+), 3 deletions(-) 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