Remove VisualFactory::Get() code at AsyncImageLoader
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / image-loader / async-image-loader-impl.h
index 7810a8f..39e4690 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_TOOLKIT_ASYNC_IMAGE_LOADER_IMPL_H
 
 /*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 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.
 #include <dali/public-api/object/base-object.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/image-loader/async-image-loader.h>
 #include <dali-toolkit/devel-api/image-loader/async-image-loader-devel.h>
 #include <dali-toolkit/internal/image-loader/image-load-thread.h>
+#include <dali-toolkit/public-api/image-loader/async-image-loader.h>
 
 namespace Dali
 {
-
 namespace Toolkit
 {
-
 namespace Internal
 {
-
 class AsyncImageLoader : public BaseObject
 {
 public:
-
   /**
    * Constructor
    */
@@ -50,14 +46,52 @@ public:
   static IntrusivePtr<AsyncImageLoader> New();
 
   /**
+   * @copydoc Toolkit::AsyncImageLoader::LoadAnimatedImage( Dali::AnimatedImageLoading animatedImageLoading, uint32_t frameIndex )
+   */
+  uint32_t LoadAnimatedImage(Dali::AnimatedImageLoading animatedImageLoading,
+                             uint32_t                   frameIndex);
+
+  /**
    * @copydoc Toolkit::AsyncImageLoader::Load( const std::string&, ImageDimensions, FittingMode::Type, SamplingMode::Type, bool , DevelAsyncImageLoader::PreMultiplyOnLoad )
    */
-  uint32_t Load( const VisualUrl& url,
-                 ImageDimensions dimensions,
-                 FittingMode::Type fittingMode,
-                 SamplingMode::Type samplingMode,
-                 bool orientationCorrection,
-                 DevelAsyncImageLoader::PreMultiplyOnLoad preMultiplyOnLoad );
+  uint32_t Load(const VisualUrl&                         url,
+                ImageDimensions                          dimensions,
+                FittingMode::Type                        fittingMode,
+                SamplingMode::Type                       samplingMode,
+                bool                                     orientationCorrection,
+                DevelAsyncImageLoader::PreMultiplyOnLoad preMultiplyOnLoad);
+
+  /**
+   * @brief Starts an image loading task by encoded image buffer.
+   * @param[in] encodedImageBuffer The encoded buffer of the image to load
+   * @param[in] dimensions The width and height to fit the loaded image to
+   * @param[in] fittingMode The method used to fit the shape of the image before loading to the shape defined by the size parameter
+   * @param[in] samplingMode The filtering method used when sampling pixels from the input image while fitting it to desired size
+   * @param[in] orientationCorrection Reorient the image to respect any orientation metadata in its header
+   * @param[in] preMultiplyOnLoad ON if the image color should be multiplied by it's alpha. Set to OFF if there is no alpha.
+   * @return The loading task id
+   */
+  uint32_t LoadEncodedImageBuffer(const EncodedImageBuffer&                encodedImageBuffer,
+                                  ImageDimensions                          dimensions,
+                                  FittingMode::Type                        fittingMode,
+                                  SamplingMode::Type                       samplingMode,
+                                  bool                                     orientationCorrection,
+                                  DevelAsyncImageLoader::PreMultiplyOnLoad preMultiplyOnLoad);
+
+  /**
+   * @brief Starts an mask applying task.
+   * @param[in] pixelBuffer of the to be masked image
+   * @param[in] maskPixelBuffer of the mask image
+   * @param[in] contentScale The factor to scale the content
+   * @param[in] cropToMask Whether to crop the content to the mask size
+   * @param[in] preMultiplyOnLoad ON if the image color should be multiplied by it's alpha. Set to OFF if there is no alpha.
+   * @return The loading task id
+   */
+  uint32_t ApplyMask(Devel::PixelBuffer                       pixelBuffer,
+                     Devel::PixelBuffer                       maskPixelBuffer,
+                     float                                    contentScale,
+                     bool                                     cropToMask,
+                     DevelAsyncImageLoader::PreMultiplyOnLoad preMultiplyOnLoad);
 
   /**
    * @copydoc Toolkit::AsyncImageLoader::ImageLoadedSignal
@@ -72,7 +106,7 @@ public:
   /**
    * @copydoc Toolkit::AsyncImageLoader::Cancel
    */
-  bool Cancel( uint32_t loadingTaskId );
+  bool Cancel(uint32_t loadingTaskId);
 
   /**
    * @copydoc Toolkit::AsyncImageLoader::CancelAll
@@ -85,14 +119,13 @@ public:
   void ProcessLoadedImage();
 
 protected:
-
   /**
    * Destructor
    */
-  ~AsyncImageLoader();
+  ~AsyncImageLoader() override;
 
 private:
-  Toolkit::AsyncImageLoader::ImageLoadedSignalType mLoadedSignal;
+  Toolkit::AsyncImageLoader::ImageLoadedSignalType            mLoadedSignal;
   Toolkit::DevelAsyncImageLoader::PixelBufferLoadedSignalType mPixelBufferLoadedSignal;
 
   ImageLoadThread mLoadThread;
@@ -102,22 +135,22 @@ private:
 
 } // namespace Internal
 
-inline const Internal::AsyncImageLoader& GetImplementation( const Toolkit::AsyncImageLoader& handle )
+inline const Internal::AsyncImageLoader& GetImplementation(const Toolkit::AsyncImageLoader& handle)
 {
-  DALI_ASSERT_ALWAYS( handle && "AsyncImageLoader handle is empty" );
+  DALI_ASSERT_ALWAYS(handle && "AsyncImageLoader handle is empty");
 
   const BaseObject& object = handle.GetBaseObject();
 
-  return static_cast<const Internal::AsyncImageLoader&>( object );
+  return static_cast<const Internal::AsyncImageLoader&>(object);
 }
 
-inline Internal::AsyncImageLoader& GetImplementation( Toolkit::AsyncImageLoader& handle )
+inline Internal::AsyncImageLoader& GetImplementation(Toolkit::AsyncImageLoader& handle)
 {
-  DALI_ASSERT_ALWAYS( handle && "AsyncImageLoader handle is empty" );
+  DALI_ASSERT_ALWAYS(handle && "AsyncImageLoader handle is empty");
 
   BaseObject& object = handle.GetBaseObject();
 
-  return static_cast<Internal::AsyncImageLoader&>( object );
+  return static_cast<Internal::AsyncImageLoader&>(object);
 }
 
 } // namespace Toolkit