aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/effectmakernew/compositionnode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/effectmakernew/compositionnode.cpp')
-rw-r--r--src/plugins/effectmakernew/compositionnode.cpp53
1 files changed, 28 insertions, 25 deletions
diff --git a/src/plugins/effectmakernew/compositionnode.cpp b/src/plugins/effectmakernew/compositionnode.cpp
index 796b06151f9..8cd5bda971e 100644
--- a/src/plugins/effectmakernew/compositionnode.cpp
+++ b/src/plugins/effectmakernew/compositionnode.cpp
@@ -11,13 +11,36 @@
#include <QFile>
#include <QJsonArray>
#include <QJsonDocument>
-#include <QJsonObject>
namespace EffectMaker {
-CompositionNode::CompositionNode(const QString &qenPath)
+CompositionNode::CompositionNode(const QString &effectName, const QString &qenPath, const QJsonObject &jsonObject)
{
- parse(qenPath);
+ QJsonObject json;
+ if (jsonObject.isEmpty()) {
+ QFile qenFile(qenPath);
+ if (!qenFile.open(QIODevice::ReadOnly)) {
+ qWarning("Couldn't open effect file.");
+ return;
+ }
+
+ QByteArray loadData = qenFile.readAll();
+ QJsonParseError parseError;
+ QJsonDocument jsonDoc(QJsonDocument::fromJson(loadData, &parseError));
+
+ if (parseError.error != QJsonParseError::NoError) {
+ QString error = QString("Error parsing effect node");
+ QString errorDetails = QString("%1: %2").arg(parseError.offset).arg(parseError.errorString());
+ qWarning() << error;
+ qWarning() << errorDetails;
+ return;
+ }
+ json = jsonDoc.object().value("QEN").toObject();
+ parse(effectName, qenPath, json);
+ }
+ else {
+ parse(effectName, "", jsonObject);
+ }
}
QString CompositionNode::fragmentCode() const
@@ -63,28 +86,8 @@ CompositionNode::NodeType CompositionNode::type() const
return m_type;
}
-void CompositionNode::parse(const QString &qenPath)
+void CompositionNode::parse(const QString &effectName, const QString &qenPath, const QJsonObject &json)
{
- QFile qenFile(qenPath);
-
- if (!qenFile.open(QIODevice::ReadOnly)) {
- qWarning("Couldn't open effect file.");
- return;
- }
-
- QByteArray loadData = qenFile.readAll();
- QJsonParseError parseError;
- QJsonDocument jsonDoc(QJsonDocument::fromJson(loadData, &parseError));
- if (parseError.error != QJsonParseError::NoError) {
- QString error = QString("Error parsing the effect node: %1:").arg(qenPath);
- QString errorDetails = QString("%1: %2").arg(parseError.offset).arg(parseError.errorString());
- qWarning() << qPrintable(error);
- qWarning() << qPrintable(errorDetails);
- return;
- }
-
- QJsonObject json = jsonDoc.object().value("QEN").toObject();
-
int version = -1;
if (json.contains("version"))
version = json["version"].toInt(-1);
@@ -102,7 +105,7 @@ void CompositionNode::parse(const QString &qenPath)
// parse properties
QJsonArray jsonProps = json.value("properties").toArray();
for (const auto /*QJsonValueRef*/ &prop : jsonProps) {
- const auto uniform = new Uniform(prop.toObject(), qenPath);
+ const auto uniform = new Uniform(effectName, prop.toObject(), qenPath);
m_unifomrsModel.addUniform(uniform);
m_uniforms.append(uniform);
g_propertyData.insert(uniform->name(), uniform->value());