From 7d910e8a4f7ee1841cd4d4aa1d540dcd7f2f418f Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 15 Dec 2019 02:35:21 +1100 Subject: [PATCH] added function to convert a string to a data type Used for external node XML parsing. --- app/node/param.cpp | 31 +++++++++++++++++++++++++++++++ app/node/param.h | 5 +++++ 2 files changed, 36 insertions(+) diff --git a/app/node/param.cpp b/app/node/param.cpp index bdb531bd6..2c01a2d25 100644 --- a/app/node/param.cpp +++ b/app/node/param.cpp @@ -223,6 +223,37 @@ QByteArray NodeParam::ValueToBytes(const NodeParam::DataType &type, const QVaria return QByteArray(); } +NodeParam::DataType NodeParam::StringToDataType(const QString &s) +{ + QString type_id = s.toLower(); + + if (type_id == "float") { + return kFloat; + } else if (type_id == "int") { + return kInt; + } else if (type_id == "rational") { + return kRational; + } else if (type_id == "bool") { + return kBoolean; + } else if (type_id == "color") { + return kColor; + } else if (type_id == "matrix") { + return kMatrix; + } else if (type_id == "text") { + return kText; + } else if (type_id == "texture") { + return kTexture; + } else if (type_id == "vec2") { + return kVec2; + } else if (type_id == "vec3") { + return kVec3; + } else if (type_id == "vec4") { + return kVec4; + } + + return kAny; +} + template QByteArray NodeParam::ValueToBytesInternal(const QVariant &v) { diff --git a/app/node/param.h b/app/node/param.h index d8a438968..1c84d612c 100644 --- a/app/node/param.h +++ b/app/node/param.h @@ -342,6 +342,11 @@ public: */ static QByteArray ValueToBytes(const DataType &type, const QVariant& value); + /** + * @brief Convert a string to a data type + */ + static DataType StringToDataType(const QString& s); + signals: /** * @brief Signal emitted when an edge is added to this parameter