nodevalue: begin abstracting qvariant

This commit is contained in:
itsmattkc
2022-05-09 13:07:34 -07:00
parent 839f63d78f
commit 58c4600d04
36 changed files with 235 additions and 229 deletions
+13 -13
View File
@@ -103,47 +103,47 @@ QMatrix4x4 MatrixGenerator::GenerateMatrix(const NodeValueRow &value, bool take,
if (!ignore_anchor) {
if (take) {
// Take and store
anchor = value[kAnchorInput].data().value<QVector2D>();
anchor = value[kAnchorInput].toVec2();
} else {
// Get and store
anchor = value[kAnchorInput].data().value<QVector2D>();
anchor = value[kAnchorInput].toVec2();
}
} else if (take) {
// Just take
value[kAnchorInput].data().value<QVector2D>();
value[kAnchorInput].toVec2();
}
if (!ignore_scale) {
if (take) {
scale = value[kScaleInput].data().value<QVector2D>();
scale = value[kScaleInput].toVec2();
} else {
scale = value[kScaleInput].data().value<QVector2D>();
scale = value[kScaleInput].toVec2();
}
} else if (take) {
value[kScaleInput].data().value<QVector2D>();
value[kScaleInput].toVec2();
}
if (!ignore_position) {
if (take) {
position = value[kPositionInput].data().value<QVector2D>();
position = value[kPositionInput].toVec2();
} else {
position = value[kPositionInput].data().value<QVector2D>();
position = value[kPositionInput].toVec2();
}
} else if (take) {
value[kPositionInput].data().value<QVector2D>();
value[kPositionInput].toVec2();
}
if (take) {
return GenerateMatrix(position,
value[kRotationInput].data().toFloat(),
value[kRotationInput].toDouble(),
scale,
value[kUniformScaleInput].data().toBool(),
value[kUniformScaleInput].toBool(),
anchor);
} else {
return GenerateMatrix(position,
value[kRotationInput].data().toFloat(),
value[kRotationInput].toDouble(),
scale,
value[kUniformScaleInput].data().toBool(),
value[kUniformScaleInput].toBool(),
anchor);
}
+7 -7
View File
@@ -116,7 +116,7 @@ void PolygonGenerator::GenerateFrame(FramePtr frame, const GenerateJob &job) con
QImage img(frame->width(), frame->height(), QImage::Format_Grayscale8);
img.fill(Qt::transparent);
QVector<NodeValue> points = job.GetValue(kPointsInput).data().value< QVector<NodeValue> >();
QVector<NodeValue> points = job.GetValue(kPointsInput).value< QVector<NodeValue> >();
QPainterPath path = GeneratePath(points);
@@ -130,7 +130,7 @@ void PolygonGenerator::GenerateFrame(FramePtr frame, const GenerateJob &job) con
p.drawPath(path);
// Transplant alpha channel to frame
Color rgba = job.GetValue(kColorInput).data().value<Color>();
Color rgba = job.GetValue(kColorInput).toColor();
#if defined(Q_PROCESSOR_X86) || defined(Q_PROCESSOR_ARM)
__m128 sse_color = _mm_loadu_ps(rgba.data());
#endif
@@ -196,7 +196,7 @@ void PolygonGenerator::UpdateGizmoPositions(const NodeValueRow &row, const NodeG
{
QPointF half_res(globals.resolution_by_par().x()/2, globals.resolution_by_par().y()/2);
QVector<NodeValue> points = row[kPointsInput].data().value< QVector<NodeValue> >();
QVector<NodeValue> points = row[kPointsInput].value< QVector<NodeValue> >();
int current_pos_sz = gizmo_position_handles_.size();
@@ -223,7 +223,7 @@ void PolygonGenerator::UpdateGizmoPositions(const NodeValueRow &row, const NodeG
if (!points.isEmpty()) {
for (int i=0; i<points.size(); i++) {
const Bezier &pt = points.at(i).data().value<Bezier>();
const Bezier &pt = points.at(i).toBezier();
QPointF main = pt.ToPointF() + half_res;
QPointF cp1 = main + pt.ControlPoint1ToPointF();
@@ -267,14 +267,14 @@ QPainterPath PolygonGenerator::GeneratePath(const QVector<NodeValue> &points)
QPainterPath path;
if (!points.isEmpty()) {
const Bezier &first_pt = points.first().data().value<Bezier>();
const Bezier &first_pt = points.first().toBezier();
path.moveTo(first_pt.ToPointF());
for (int i=1; i<points.size(); i++) {
AddPointToPath(&path, points.at(i-1).data().value<Bezier>(), points.at(i).data().value<Bezier>());
AddPointToPath(&path, points.at(i-1).toBezier(), points.at(i).toBezier());
}
AddPointToPath(&path, points.last().data().value<Bezier>(), first_pt);
AddPointToPath(&path, points.last().toBezier(), first_pt);
}
return path;
@@ -53,7 +53,7 @@ ShaderCode GeneratorWithMerge::GetShaderCode(const ShaderRequest &request) const
void GeneratorWithMerge::PushMergableJob(const NodeValueRow &value, const QVariant &job, NodeValueTable *table) const
{
if (!value[kBaseInput].data().isNull()) {
if (value[kBaseInput].toTexture()) {
// Push as merge node
ShaderJob merge;
+2 -2
View File
@@ -79,8 +79,8 @@ void ShapeNodeBase::UpdateGizmoPositions(const NodeValueRow &row, const NodeGlob
QVector2D center_pt = globals.resolution() * 0.5;
SetInputProperty(kPositionInput, QStringLiteral("offset"), center_pt);
QVector2D pos = row[kPositionInput].data().value<QVector2D>();
QVector2D sz = row[kSizeInput].data().value<QVector2D>();
QVector2D pos = row[kPositionInput].toVec2();
QVector2D sz = row[kSizeInput].toVec2();
QVector2D half_sz = sz * 0.5;
double left_pt = pos.x() + center_pt.x() - half_sz.x();
+7 -7
View File
@@ -96,7 +96,7 @@ void TextGeneratorV1::Value(const NodeValueRow &value, const NodeGlobals &global
job.InsertValue(value);
job.SetAlphaChannelRequired(GenerateJob::kAlphaForceOn);
if (!job.GetValue(kTextInput).data().toString().isEmpty()) {
if (!job.GetValue(kTextInput).toString().isEmpty()) {
table->Push(NodeValue::kTexture, QVariant::fromValue(job), this);
}
}
@@ -114,15 +114,15 @@ void TextGeneratorV1::GenerateFrame(FramePtr frame, const GenerateJob& job) cons
// Set default font
QFont default_font;
default_font.setFamily(job.GetValue(kFontInput).data().toString());
default_font.setPointSizeF(job.GetValue(kFontSizeInput).data().toFloat());
default_font.setFamily(job.GetValue(kFontInput).toString());
default_font.setPointSizeF(job.GetValue(kFontSizeInput).toDouble());
text_doc.setDefaultFont(default_font);
// Center by default
text_doc.setDefaultTextOption(QTextOption(Qt::AlignCenter));
QString html = job.GetValue(kTextInput).data().toString();
if (job.GetValue(kHtmlInput).data().toBool()) {
QString html = job.GetValue(kTextInput).toString();
if (job.GetValue(kHtmlInput).toBool()) {
html.replace('\n', QStringLiteral("<br>"));
text_doc.setHtml(html);
} else {
@@ -140,7 +140,7 @@ void TextGeneratorV1::GenerateFrame(FramePtr frame, const GenerateJob& job) cons
// Push 10% inwards to compensate for title safe area
p.translate(tenth_of_width, 0);
TextVerticalAlign valign = static_cast<TextVerticalAlign>(job.GetValue(kVAlignInput).data().toInt());
TextVerticalAlign valign = static_cast<TextVerticalAlign>(job.GetValue(kVAlignInput).toInt());
int doc_height = text_doc.size().height();
switch (valign) {
@@ -163,7 +163,7 @@ void TextGeneratorV1::GenerateFrame(FramePtr frame, const GenerateJob& job) cons
text_doc.documentLayout()->draw(&p, ctx);
// Transplant alpha channel to frame
Color rgb = job.GetValue(kColorInput).data().value<Color>();
Color rgb = job.GetValue(kColorInput).toColor();
for (int x=0; x<frame->width(); x++) {
for (int y=0; y<frame->height(); y++) {
uchar src_alpha = img.bits()[img.bytesPerLine() * y + x];
+9 -9
View File
@@ -100,7 +100,7 @@ void TextGeneratorV2::Value(const NodeValueRow &value, const NodeGlobals &global
job.SetAlphaChannelRequired(GenerateJob::kAlphaForceOn);
job.SetRequestedFormat(VideoParams::kFormatFloat32);
if (!job.GetValue(kTextInput).data().toString().isEmpty()) {
if (!job.GetValue(kTextInput).toString().isEmpty()) {
table->Push(NodeValue::kTexture, QVariant::fromValue(job), this);
}
}
@@ -124,19 +124,19 @@ void TextGeneratorV2::GenerateFrame(FramePtr frame, const GenerateJob& job) cons
// Set default font
QFont default_font;
default_font.setFamily(job.GetValue(kFontInput).data().toString());
default_font.setPointSizeF(job.GetValue(kFontSizeInput).data().toFloat());
default_font.setFamily(job.GetValue(kFontInput).toString());
default_font.setPointSizeF(job.GetValue(kFontSizeInput).toDouble());
text_doc.setDefaultFont(default_font);
QString html = job.GetValue(kTextInput).data().toString();
if (job.GetValue(kHtmlInput).data().toBool()) {
QString html = job.GetValue(kTextInput).toString();
if (job.GetValue(kHtmlInput).toBool()) {
html.replace('\n', QStringLiteral("<br>"));
text_doc.setHtml(html);
} else {
text_doc.setPlainText(html);
}
QVector2D size = job.GetValue(kSizeInput).data().value<QVector2D>();
QVector2D size = job.GetValue(kSizeInput).toVec2();
text_doc.setTextWidth(size.x());
// Draw rich text onto image
@@ -144,12 +144,12 @@ void TextGeneratorV2::GenerateFrame(FramePtr frame, const GenerateJob& job) cons
p.scale(1.0 / frame->video_params().divider(), 1.0 / frame->video_params().divider());
QVector2D pos = job.GetValue(kPositionInput).data().value<QVector2D>();
QVector2D pos = job.GetValue(kPositionInput).toVec2();
p.translate(pos.x() - size.x()/2, pos.y() - size.y()/2);
p.translate(frame->video_params().width()/2, frame->video_params().height()/2);
p.setClipRect(0, 0, size.x(), size.y());
TextVerticalAlign valign = static_cast<TextVerticalAlign>(job.GetValue(kVAlignInput).data().toInt());
TextVerticalAlign valign = static_cast<TextVerticalAlign>(job.GetValue(kVAlignInput).toInt());
int doc_height = text_doc.size().height();
switch (valign) {
@@ -171,7 +171,7 @@ void TextGeneratorV2::GenerateFrame(FramePtr frame, const GenerateJob& job) cons
text_doc.documentLayout()->draw(&p, ctx);
// Transplant alpha channel to frame
Color rgba = job.GetValue(kColorInput).data().value<Color>();
Color rgba = job.GetValue(kColorInput).toColor();
#if defined(Q_PROCESSOR_X86) || defined(Q_PROCESSOR_ARM)
__m128 sse_color = _mm_loadu_ps(rgba.data());
#endif
+6 -6
View File
@@ -88,9 +88,9 @@ void TextGeneratorV3::Value(const NodeValueRow &value, const NodeGlobals &global
// FIXME: Provide user override for this
job.SetColorspace(project()->color_manager()->GetDefaultInputColorSpace());
if (!job.GetValue(kTextInput).data().toString().isEmpty()) {
if (!job.GetValue(kTextInput).toString().isEmpty()) {
PushMergableJob(value, QVariant::fromValue(job), table);
} else if (!value[kBaseInput].data().isNull()) {
} else if (value[kBaseInput].toTexture()) {
table->Push(value[kBaseInput]);
}
}
@@ -108,17 +108,17 @@ void TextGeneratorV3::GenerateFrame(FramePtr frame, const GenerateJob& job) cons
QTextDocument text_doc;
text_doc.documentLayout()->setPaintDevice(&img);
QString html = job.GetValue(kTextInput).data().toString();
QString html = job.GetValue(kTextInput).toString();
Html::HtmlToDoc(&text_doc, html);
QVector2D size = job.GetValue(kSizeInput).data().value<QVector2D>();
QVector2D size = job.GetValue(kSizeInput).toVec2();
text_doc.setTextWidth(size.x());
// Draw rich text onto image
QPainter p(&img);
p.scale(1.0 / frame->video_params().divider(), 1.0 / frame->video_params().divider());
QVector2D pos = job.GetValue(kPositionInput).data().value<QVector2D>();
QVector2D pos = job.GetValue(kPositionInput).toVec2();
p.translate(pos.x() - size.x()/2, pos.y() - size.y()/2);
p.translate(frame->video_params().width()/2, frame->video_params().height()/2);
p.setClipRect(0, 0, size.x(), size.y());
@@ -136,7 +136,7 @@ void TextGeneratorV3::UpdateGizmoPositions(const NodeValueRow &row, const NodeGl
QRectF rect = poly_gizmo()->GetPolygon().boundingRect();
text_gizmo_->SetRect(rect);
text_gizmo_->SetHtml(row[kTextInput].data().toString());
text_gizmo_->SetHtml(row[kTextInput].toString());
}
}