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:
@@ -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
|
||||
|
||||
@@ -50,6 +50,10 @@ private:
|
||||
|
||||
NodeInput* valign_input_;
|
||||
|
||||
NodeInput* font_input_;
|
||||
|
||||
NodeInput* font_size_input_;
|
||||
|
||||
};
|
||||
|
||||
OLIVE_NAMESPACE_EXIT
|
||||
|
||||
Reference in New Issue
Block a user