[dali_2.3.24] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-scene3d / public-api / loader / resource-bundle.h
index 75c0c45..c701112 100644 (file)
@@ -1,7 +1,7 @@
-#ifndef DALI_SCENE3D_LOADERERERERER_RESOURCE_BUNDLE_H_
-#define DALI_SCENE3D_LOADERERERERER_RESOURCE_BUNDLE_H_
+#ifndef DALI_SCENE3D_LOADERERERER_RESOURCE_BUNDLE_H_
+#define DALI_SCENE3D_LOADERERERER_RESOURCE_BUNDLE_H_
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  *
  */
 
-// INTERNAL
+// EXTERNAL INCLUDES
+#include <dali/public-api/common/vector-wrapper.h>
+#include <dali/public-api/rendering/shader.h>
+#include <dali/public-api/rendering/texture-set.h>
+#include <functional>
+#include <memory>
+
+// INTERNAL INCLUDES
+#include <dali-scene3d/public-api/loader/buffer-definition.h>
 #include <dali-scene3d/public-api/loader/environment-definition.h>
 #include <dali-scene3d/public-api/loader/material-definition.h>
 #include <dali-scene3d/public-api/loader/mesh-definition.h>
 #include <dali-scene3d/public-api/loader/shader-definition.h>
 #include <dali-scene3d/public-api/loader/skeleton-definition.h>
-#include <dali-scene3d/public-api/loader/buffer-definition.h>
 
-// EXTERNAL
-#include <functional>
-#include <memory>
-#include <dali/public-api/common/vector-wrapper.h>
-#include <dali/public-api/rendering/shader.h>
-#include <dali/public-api/rendering/texture-set.h>
-
-namespace Dali
-{
-namespace Scene3D
-{
-namespace Loader
+namespace Dali::Scene3D::Loader
 {
-/*
+/**
  * @brief The types of resources that .dli may define.
+ * @SINCE_2_0.7
  */
 struct DALI_SCENE3D_API ResourceType
 {
@@ -54,17 +51,20 @@ struct DALI_SCENE3D_API ResourceType
   ResourceType() = delete;
 };
 
-/*
- * @return The string value corresponding to the given resource @a type.
+/**
+ * @brief The string value corresponding to the given resource @a type.
+ * @SINCE_2_0.7
+ * @return The string value for type.
  */
 DALI_SCENE3D_API const char* GetResourceTypeName(ResourceType::Value type);
 
 using ResourceRefCounts = std::vector<Vector<uint32_t>>;
 
-/*
+/**
  * @brief Stores all resource definitions along with the DALi resources that
  *  could be created from them, directly indexible into with values from a dli
  *  document.
+ * @SINCE_2_0.7
  */
 class DALI_SCENE3D_API ResourceBundle
 {
@@ -83,7 +83,7 @@ public:
 
   using PathProvider = std::function<std::string(ResourceType::Value)>;
 
-  ResourceBundle() = default;
+  ResourceBundle();
 
   ResourceBundle(const ResourceBundle&) = delete;
   ResourceBundle& operator=(const ResourceBundle&) = delete;
@@ -92,9 +92,11 @@ public:
   ResourceBundle& operator=(ResourceBundle&&) = default;
 
   /**
-   * @return A ResourceRefCounts object with the correct number of entries for
+   * @brief A ResourceRefCounts object with the correct number of entries for
    *  all resource types (based on the various resource definition vectors),
    *  with all reference counts set to 0.
+   * @SINCE_2_0.7
+   * @return A ResourceRefCounts object.
    */
   ResourceRefCounts CreateRefCounter() const;
 
@@ -102,54 +104,57 @@ public:
    * @brief Based on a ResourceRefCounts, and more specifically the reference
    *  count of materials therein, it will calculate the reference count of
    *  environment maps.
+   * @SINCE_2_0.7
    */
-  void CountEnvironmentReferences(ResourceRefCounts& refCounts) const;
+  void CountEnvironmentReferences();
 
   /**
-   * @brief Performs the loading of all resources based on their respective
-   * reference count in @a refCounts. Resources that had a non-zero ref count will be
-   * loaded unless we already have a handle to them (OR the ForceReload option was specified).
+   * @brief Performs the loading of all resources based on their respective reference count in @a refCounts.
+   *
+   * Resources that had a non-zero ref count will be loaded unless we already have a handle to them
+   * (OR the ForceReload option was specified).
    * Any handles we have to resources that come in with a zero ref count will be reset,
    * UNLESS the KeepUnused option was specified.
-   * @param[in] refCounts Reference Count that denote how many the resource is used.
+   *
+   * @SINCE_2_0.7
    * @param[in] pathProvider path provider for resource data.
    * @param[in] options Option to load resource
    * @note This method creates DALi objects like Dali::Texture, Dali::Geometry, etc.
    */
-  void LoadResources(const ResourceRefCounts& refCounts,
-                     PathProvider             pathProvider,
-                     Options::Type            options = Options::None);
+  void LoadResources(PathProvider  pathProvider,
+                     Options::Type options = Options::None);
 
   /**
-   * @brief Loads of all resources based on their respective
-   * reference count in @a refCounts. Resources that had a non-zero ref count will be
-   * loaded unless we already have a handle to them (OR the ForceReload option was specified).
+   * @brief Loads of all resources based on their respective reference count in @a refCounts.
+   *
+   * Resources that had a non-zero ref count will be loaded unless we already have a handle to them
+   * (OR the ForceReload option was specified).
    * Any handles we have to resources that come in with a zero ref count will be reset,
    * UNLESS the KeepUnused option was specified.
+   *
+   * @SINCE_2_2.9
    * @note This method don't create any of DALi objects.
-   * @param[in] refCounts Reference Count that denote how many the resource is used.
    * @param[in] pathProvider path provider for resource data.
    * @param[in] options Option to load resource
    * @note This method only loads raw data from resource file, and
    * doesn't create any of DALi objects. GenerateResources() method is required to be called
    * after this method to create DALi objects.
    */
-  void LoadRawResources(const ResourceRefCounts& refCounts,
-                        PathProvider             pathProvider,
-                        Options::Type            options = Options::None);
+  void LoadRawResources(PathProvider  pathProvider,
+                        Options::Type options = Options::None);
 
   /**
    * @brief Generates DALi objects from already loaded Raw Resources.
-   * @param[in] refCounts Reference Count that denote how many the resource is used.
+   * @SINCE_2_2.9
    * @param[in] options Option to load resource
    * @note This method generates DALi objects from raw data that is already
    * loaded by LoadRawResources method. Therefore, LoadRawResources should be called first
    * before this method is called.
    */
-  void GenerateResources(const ResourceRefCounts& refCounts,
-                         Options::Type            options = Options::None);
+  void GenerateResources(Options::Type options = Options::None);
 
 public: // DATA
+  ResourceRefCounts             mReferenceCounts;
   EnvironmentDefinition::Vector mEnvironmentMaps;
   ShaderDefinition::Vector      mShaders;
   MeshDefinition::Vector        mMeshes;
@@ -157,10 +162,14 @@ public: // DATA
 
   SkeletonDefinition::Vector mSkeletons;
   BufferDefinition::Vector   mBuffers;
+
+  bool mRawResourcesLoading;
+  bool mResourcesGenerating;
+
+  bool mRawResourcesLoaded;
+  bool mResourcesGenerated;
 };
 
-} // namespace Loader
-} // namespace Scene3D
-} // namespace Dali
+} // namespace Dali::Scene3D::Loader
 
-#endif //DALI_SCENE3D_LOADERERERERER_RESOURCE_BUNDLE_H_
+#endif //DALI_SCENE3D_LOADERERERER_RESOURCE_BUNDLE_H_