Revert "[Tizen] Revert "Use Texture for not file save case"
authorBowon Ryu <bowon.ryu@samsung.com>
Tue, 26 Nov 2024 08:00:16 +0000 (17:00 +0900)
committerBowon Ryu <bowon.ryu@samsung.com>
Tue, 26 Nov 2024 08:00:16 +0000 (17:00 +0900)
This reverts commit e4ecdc4014db308b2635f1ca123998ad0d27f6d3.

dali/internal/system/common/capture-impl.cpp
dali/internal/system/common/capture-impl.h
dali/public-api/capture/capture.cpp
dali/public-api/capture/capture.h

index 0cd3660480175d4be68a978ef471782b4ae4c614..88fd60f5ab71a2c588b6e063d9eab48f3fa602c5 100644 (file)
@@ -43,7 +43,6 @@ namespace
 static constexpr uint32_t ORDER_INDEX_CAPTURE_RENDER_TASK              = 1000;
 constexpr int32_t         SHADER_VERSION_NATIVE_IMAGE_SOURCE_AVAILABLE = 300;
 constexpr uint32_t        TIME_OUT_DURATION                            = 1000;
-constexpr int32_t  GL_VERSION_NATIVE_IMAGE_SOURCE_AVAILABLE = 30;
 } // namespace
 
 Capture::Capture()
@@ -160,6 +159,11 @@ Dali::NativeImageSourcePtr Capture::GetNativeImageSource() const
   return mNativeImageSourcePtr;
 }
 
+Dali::Texture Capture::GetTexture() const
+{
+  return mTexture;
+}
+
 Dali::Devel::PixelBuffer Capture::GetCapturedBuffer()
 {
   if(!mPixelBuffer || (mPixelBuffer && !mPixelBuffer.GetBuffer()))
@@ -184,10 +188,17 @@ Dali::Capture::CaptureFinishedSignalType& Capture::FinishedSignal()
 
 void Capture::CreateTexture(const Vector2& size)
 {
-  if(!mNativeImageSourcePtr)
+  if(mFileSave)
+  {
+    if(!mNativeImageSourcePtr)
+    {
+      mNativeImageSourcePtr = Dali::NativeImageSource::New(size.width, size.height, Dali::NativeImageSource::COLOR_DEPTH_DEFAULT);
+      mTexture              = Dali::Texture::New(*mNativeImageSourcePtr);
+    }
+  }
+  else
   {
-    mNativeImageSourcePtr = Dali::NativeImageSource::New(size.width, size.height, Dali::NativeImageSource::COLOR_DEPTH_DEFAULT);
-    mTexture              = Dali::Texture::New(*mNativeImageSourcePtr);
+    mTexture = Dali::Texture::New(TextureType::TEXTURE_2D, Pixel::RGBA8888, unsigned(size.width), unsigned(size.height));
   }
 }
 
@@ -320,6 +331,12 @@ bool Capture::IsRenderTaskSetup()
 
 void Capture::SetupResources(const Dali::Vector2& position, const Dali::Vector2& size, const Dali::Vector4& clearColor, Dali::Actor source)
 {
+  if(mFileSave && Dali::Shader::GetShaderLanguageVersion() < SHADER_VERSION_NATIVE_IMAGE_SOURCE_AVAILABLE)
+  {
+    DALI_LOG_ERROR("GLES is 2.0, we can't use native image source \n");
+    mFileSave = false;
+  }
+
   CreateTexture(size);
 
   CreateFrameBuffer();
@@ -397,6 +414,7 @@ bool Capture::SaveFile()
   {
     return Dali::DevelNativeImageSource::EncodeToFile(*mNativeImageSourcePtr, mPath, mQuality);
   }
+
   return false;
 }
 
index 0258efcf83b1474ccd57830b3930663139afd732..446e7d8da53bdbc7b0b9321aa983096558e11a87 100644 (file)
@@ -103,6 +103,11 @@ public:
    */
   Dali::Devel::PixelBuffer GetCapturedBuffer();
 
+  /**
+   * @copydoc Dali::Capture::GetTexture
+   */
+  Dali::Texture GetTexture() const;
+
   /**
    * @copydoc Dali::Capture::FinishedSignal
    */
index ce9cd16dec6f055207b9923a175e284795669227..4c96a617b51c673d96be4a870b95c3240f0fa557 100644 (file)
@@ -98,6 +98,11 @@ Dali::NativeImageSourcePtr Capture::GetNativeImageSource() const
   return GetImpl(*this).GetNativeImageSource();
 }
 
+Dali::Texture Capture::GetTexture() const
+{
+  return GetImpl(*this).GetTexture();
+}
+
 Capture::CaptureFinishedSignalType& Capture::FinishedSignal()
 {
   return GetImpl(*this).FinishedSignal();
index b202576c93a737b27ce3c3eb69941499775fc30a..6f133da644b25f27c18f1d058c0be339a9f81ed9 100644 (file)
@@ -21,6 +21,7 @@
 // EXTERNAL HEADERS
 #include <dali/public-api/actors/actor.h>
 #include <dali/public-api/actors/camera-actor.h>
+#include <dali/public-api/rendering/texture.h>
 #include <dali/public-api/signals/dali-signal.h>
 
 // INTERNAL INCLUDES
@@ -273,6 +274,13 @@ public:
    */
   Dali::NativeImageSourcePtr GetNativeImageSource() const;
 
+  /**
+   * @brief Get Texture of captured image.
+   *
+   * @return Texture Captured result
+   */
+  Dali::Texture GetTexture() const;
+
   /**
    * @brief Get finished signal.
    *