[dali_2.3.22] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / visuals / visual-factory-cache.h
index 0edda01..1b3f098 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_TOOLKIT_VISUAL_FACTORY_CACHE_H
 
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 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.
@@ -19,6 +19,7 @@
 
 // EXTERNAL INCLUDES
 #include <dali/devel-api/common/owner-container.h>
+#include <dali/integration-api/adaptor-framework/shader-precompiler.h>
 #include <dali/public-api/math/uint-16-pair.h>
 #include <dali/public-api/object/ref-object.h>
 #include <dali/public-api/rendering/geometry.h>
@@ -27,7 +28,6 @@
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/texture-manager/texture-manager-impl.h>
 #include <dali-toolkit/internal/visuals/npatch-loader.h>
-#include <dali-toolkit/internal/visuals/svg/svg-rasterize-thread.h>
 #include <dali/devel-api/rendering/renderer-devel.h>
 
 namespace Dali
@@ -94,6 +94,10 @@ public:
     IMAGE_SHADER_ROUNDED_CORNER_YUV_TO_RGB,
     IMAGE_SHADER_BORDERLINE_YUV_TO_RGB,
     IMAGE_SHADER_ROUNDED_BORDERLINE_YUV_TO_RGB,
+    IMAGE_SHADER_YUV_AND_RGB,
+    IMAGE_SHADER_ROUNDED_CORNER_YUV_AND_RGB,
+    IMAGE_SHADER_BORDERLINE_YUV_AND_RGB,
+    IMAGE_SHADER_ROUNDED_BORDERLINE_YUV_AND_RGB,
     NATIVE_IMAGE_SHADER,
     NATIVE_IMAGE_SHADER_ROUNDED_CORNER,
     NATIVE_IMAGE_SHADER_BORDERLINE,
@@ -102,6 +106,8 @@ public:
     NATIVE_IMAGE_SHADER_ROUNDED_CORNER_MASKING,
     NATIVE_IMAGE_SHADER_BORDERLINE_MASKING,
     NATIVE_IMAGE_SHADER_ROUNDED_BORDERLINE_MASKING,
+    NATIVE_IMAGE_SHADER_ATLAS_DEFAULT_WRAP,
+    NATIVE_IMAGE_SHADER_ATLAS_CUSTOM_WRAP,
     NINE_PATCH_SHADER,
     NINE_PATCH_MASK_SHADER,
     TEXT_SHADER_SINGLE_COLOR_TEXT,
@@ -180,11 +186,13 @@ public:
   Shader GetShader(ShaderType type);
 
   /**
-   * Cache the geometry of the give type.
-   * @param[in] type The geometry type.
-   * @param[in] geometry The geometry for caching.
+   * Generate and cache the shader of the give type. The name of shader will be installed to shader.
+   * @param[in] type The shder type.
+   * @param[in] vertexShader The vertex shader code.
+   * @param[in] fragmentShader The fragment shader code.
+   * @return The shader created by given vertex and fragment shader code.
    */
-  void SaveShader(ShaderType type, Shader shader);
+  Shader GenerateAndSaveShader(ShaderType type, std::string_view vertexShader, std::string_view fragmentShader);
 
   /*
    * Greate the quad geometry.
@@ -207,7 +215,7 @@ public:
   /**
    * @copydoc Toolkit::VisualFactory::GetPreMultiplyOnLoad()
    */
-  bool GetPreMultiplyOnLoad();
+  bool GetPreMultiplyOnLoad() const;
 
   /**
    * @brief Set an image to be used when a visual has failed to correctly render
@@ -225,6 +233,13 @@ public:
    */
   void UpdateBrokenImageRenderer(Renderer& renderer, const Vector2& size, const bool& rendererIsImage = true);
 
+  /**
+   * @brief Get whether we support YUV Planes load or not.
+   *
+   * @return True if we support to load YUV Planes. False otherwise.
+   */
+  bool GetLoadYuvPlanes() const;
+
 public:
   /**
    * Get the image atlas manager.
@@ -245,12 +260,6 @@ public:
   NPatchLoader& GetNPatchLoader();
 
   /**
-   * Get the SVG rasterization manager.
-   * @return A raw pointer pointing to the SVG rasterization manager.
-   */
-  SvgRasterizeManager* GetSVGRasterizationManager();
-
-  /**
    * Get the vector animation manager.
    * @return A reference to the vector animation manager.
    */
@@ -344,11 +353,12 @@ private:
   Geometry mGeometry[GEOMETRY_TYPE_MAX + 1];
   Shader   mShader[SHADER_TYPE_MAX + 1];
 
+  bool mLoadYuvPlanes; ///< A global flag to specify if the image should be loaded as yuv planes
+
   ImageAtlasManagerPtr mAtlasManager;
   TextureManager       mTextureManager;
   NPatchLoader         mNPatchLoader;
 
-  std::unique_ptr<SvgRasterizeManager>    mSvgRasterizeManager;
   std::unique_ptr<VectorAnimationManager> mVectorAnimationManager;
   bool                                    mPreMultiplyOnLoad;
   std::vector<BrokenImageInfo>            mBrokenImageInfoContainer;