Texture size reduction on the fly for 3D model using metadata
[platform/core/uifw/dali-toolkit.git] / dali-scene3d / internal / loader / gltf2-asset.h
index 3fa2705..19d56b6 100644 (file)
 #include "dali/public-api/math/quaternion.h"
 #include "dali/public-api/math/vector4.h"
 
+#define ENUM_STRING_MAPPING(t, x) \
+  {                               \
+#x, t::x                      \
+  }
+
+#define ENUM_TYPE_FROM_STRING(structName, table)                             \
+  structName::Type structName::FromString(const char* s, size_t len)         \
+  {                                                                          \
+    std::string target(s, len);                                              \
+    std::transform(target.begin(), target.end(), target.begin(), ::toupper); \
+                                                                             \
+    auto iFind = table.find(std::string_view(target.c_str(), len));          \
+    if(iFind != table.end())                                                 \
+    {                                                                        \
+      return iFind->second;                                                  \
+    }                                                                        \
+    return structName::INVALID;                                              \
+  }
+
 namespace gltf2
 {
 using Index = Dali::Scene3D::Loader::Index;
@@ -365,14 +384,14 @@ struct Material : Named
     //TODO: extras
   };
 
-  Pbr               mPbrMetallicRoughness;
-  TextureInfo       mNormalTexture;
-  TextureInfo       mOcclusionTexture;
-  TextureInfo       mEmissiveTexture;
-  Dali::Vector3     mEmissiveFactor;
-  AlphaMode::Type   mAlphaMode   = AlphaMode::OPAQUE;
-  float             mAlphaCutoff = .5f;
-  bool              mDoubleSided = false;
+  Pbr             mPbrMetallicRoughness;
+  TextureInfo     mNormalTexture;
+  TextureInfo     mOcclusionTexture;
+  TextureInfo     mEmissiveTexture;
+  Dali::Vector3   mEmissiveFactor;
+  AlphaMode::Type mAlphaMode   = AlphaMode::OPAQUE;
+  float           mAlphaCutoff = .5f;
+  bool            mDoubleSided = false;
 
   //extensions
   MaterialExtensions mMaterialExtensions;