[Tizen] Add DesiredWidth/Height for animated image loading 30/268630/2 accepted/tizen/6.5/unified/20220104.122940 submit/tizen_6.5/20220103.151838
authorseungho <sbsh.baek@samsung.com>
Tue, 28 Dec 2021 08:29:02 +0000 (17:29 +0900)
committerseungho <sbsh.baek@samsung.com>
Wed, 29 Dec 2021 06:59:23 +0000 (15:59 +0900)
Change-Id: I83c7ea9afadc2afb8033f0e90f8c435b31907a1c
Signed-off-by: seungho <sbsh.baek@samsung.com>
dali/devel-api/adaptor-framework/animated-image-loading.cpp
dali/devel-api/adaptor-framework/animated-image-loading.h
dali/internal/imaging/common/animated-image-loading-impl.h

index 8f6a118..0f97ef1 100644 (file)
@@ -66,9 +66,12 @@ bool AnimatedImageLoading::LoadNextNFrames(uint32_t frameStartIndex, int count,
   return GetImplementation(*this).LoadNextNFrames(frameStartIndex, count, pixelData);
 }
 
-Dali::Devel::PixelBuffer AnimatedImageLoading::LoadFrame(uint32_t frameIndex)
+Dali::Devel::PixelBuffer AnimatedImageLoading::LoadFrame(uint32_t                 frameIndex,
+                                                         ImageDimensions          size,
+                                                         FittingMode::Type        fittingMode,
+                                                         Dali::SamplingMode::Type samplingMode)
 {
-  return GetImplementation(*this).LoadFrame(frameIndex);
+  return GetImplementation(*this).LoadFrame(frameIndex, size, fittingMode, samplingMode);
 }
 
 ImageDimensions AnimatedImageLoading::GetImageSize() const
index 92d825c..d57c446 100644 (file)
@@ -22,6 +22,7 @@
 #include <dali/public-api/common/vector-wrapper.h>
 #include <dali/public-api/math/uint-16-pair.h>
 #include <dali/public-api/object/base-handle.h>
+#include <dali/public-api/images/image-operations.h>
 
 // INTERNAL INCLUDES
 #include <dali/devel-api/adaptor-framework/pixel-buffer.h>
@@ -116,10 +117,16 @@ public:
    *
    * @note This function will load the entire animated image into memory if not already loaded.
    * @param[in] frameIndex The frame index to load.
+   * @param[in] size The width and height to fit the loaded image to.
+   * @param[in] fittingMode The FittingMode of the resource to load
+   * @param[in] samplingMode The SamplingMode of the resource to load
+   *
    * @return Dali::Devel::PixelBuffer The loaded PixelBuffer. If loading is fail, return empty handle.
    */
-
-  Dali::Devel::PixelBuffer LoadFrame(uint32_t frameIndex);
+  Dali::Devel::PixelBuffer LoadFrame(uint32_t                 frameIndex,
+                                     ImageDimensions          size,
+                                     FittingMode::Type        fittingMode,
+                                     Dali::SamplingMode::Type samplingMode);
 
   /**
    * @brief Get the size of a animated image.
index d2a624c..f1dcf31 100644 (file)
@@ -27,6 +27,7 @@
 // INTERNAL INCLUDES
 #include <dali/devel-api/adaptor-framework/animated-image-loading.h>
 #include <dali/public-api/dali-adaptor-common.h>
+#include <dali/internal/imaging/common/image-operations.h>
 
 namespace Dali
 {
@@ -66,14 +67,30 @@ public:
   ~AnimatedImageLoading() override = default;
 
   /**
-   * @copydoc Dali::AnimatedImageLoading::LoadNextNFrames()
+   * @brief Load a frame of the animated image.
+   *
+   * @note This function will load the entire animated image into memory if not already loaded.
+   * @param[in] frameIndex The frame index to load.
+   * @param[in] size The width and height to fit the loaded image to.
+   * @param[in] fittingMode The FittingMode of the resource to load
+   * @param[in] samplingMode The SamplingMode of the resource to load
+   *
+   * @return Dali::Devel::PixelBuffer The loaded PixelBuffer. If loading is fail, return empty handle.
    */
-  virtual bool LoadNextNFrames(uint32_t frameStartIndex, int count, std::vector<Dali::PixelData>& pixelData) = 0;
+  Dali::Devel::PixelBuffer LoadFrame(uint32_t                 frameIndex,
+                                     ImageDimensions          size,
+                                     FittingMode::Type        fittingMode,
+                                     Dali::SamplingMode::Type samplingMode)
+  {
+    Dali::Devel::PixelBuffer pixelBuffer = LoadFrame(frameIndex);
+    return Dali::Internal::Platform::ApplyAttributesToBitmap(pixelBuffer, size, fittingMode, samplingMode);
+  }
 
+public:
   /**
-   * @copydoc Dali::AnimatedImageLoading::LoadFrame()
+   * @copydoc Dali::AnimatedImageLoading::LoadNextNFrames()
    */
-  virtual Dali::Devel::PixelBuffer LoadFrame(uint32_t frameIndex) = 0;
+  virtual bool LoadNextNFrames(uint32_t frameStartIndex, int count, std::vector<Dali::PixelData>& pixelData) = 0;
 
   /**
    * @copydoc Dali::AnimatedImageLoading::GetImageSize()
@@ -99,6 +116,16 @@ public:
    * @copydoc Dali::AnimatedImageLoading::HasLoadingSucceeded()
    */
   virtual bool HasLoadingSucceeded() const = 0;
+
+private:
+  /**
+   * @brief Load a frame of the animated image.
+   *
+   * @note This function will load the entire animated image into memory if not already loaded.
+   * @param[in] frameIndex The frame index to load.
+   * @return Dali::Devel::PixelBuffer The loaded PixelBuffer. If loading is fail, return empty handle.
+   */
+  virtual Dali::Devel::PixelBuffer LoadFrame(uint32_t frameIndex) = 0;
 };
 
 } // namespace Adaptor