Add API for NativeImageQueue
[platform/core/uifw/dali-adaptor.git] / dali / devel-api / adaptor-framework / native-image-source-queue.h
old mode 100755 (executable)
new mode 100644 (file)
index f1d2eec..45f8a16
@@ -2,7 +2,7 @@
 #define DALI_NATIVE_IMAGE_SOURCE_QUEUE_H
 
 /*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
@@ -39,14 +39,14 @@ namespace Adaptor
 {
 class NativeImageSourceQueue;
 }
-}
+} // namespace DALI_INTERNAL
 
 class NativeImageSourceQueue;
 
 /**
  * @brief Pointer to Dali::NativeImageSourceQueue.
  */
-typedef Dali::IntrusivePtr< Dali::NativeImageSourceQueue > NativeImageSourceQueuePtr;
+typedef Dali::IntrusivePtr<Dali::NativeImageSourceQueue> NativeImageSourceQueuePtr;
 
 /**
  * @brief Used for displaying native images.
@@ -59,16 +59,15 @@ typedef Dali::IntrusivePtr< Dali::NativeImageSourceQueue > NativeImageSourceQueu
 class DALI_ADAPTOR_API NativeImageSourceQueue : public NativeImageInterface
 {
 public:
-
-   /**
+  /**
     * @brief Enumeration for the instance when creating a native image, the color depth has to be specified.
     */
-   enum ColorDepth
-   {
-     COLOR_DEPTH_DEFAULT,     ///< Uses the current screen default depth (recommended)
-     COLOR_DEPTH_24,          ///< 24 bits per pixel
-     COLOR_DEPTH_32           ///< 32 bits per pixel
-   };
+  enum ColorDepth
+  {
+    COLOR_DEPTH_DEFAULT, ///< Uses the current screen default depth (recommended)
+    COLOR_DEPTH_24,      ///< 24 bits per pixel
+    COLOR_DEPTH_32       ///< 32 bits per pixel
+  };
 
   /**
    * @brief Creates a new NativeImageSourceQueue.
@@ -78,7 +77,7 @@ public:
    * @param[in] depth color depth of the image
    * @return A smart-pointer to a newly allocated image
    */
-  static NativeImageSourceQueuePtr New( uint32_t width, uint32_t height, ColorDepth depth );
+  static NativeImageSourceQueuePtr New(uint32_t width, uint32_t height, ColorDepth depth);
 
   /**
    * @brief Creates a new NativeImageSourceQueue from an existing native image source.
@@ -87,7 +86,7 @@ public:
    * @return A smart-pointer to a newly allocated image
    * @see NativeImageInterface
    */
-  static NativeImageSourceQueuePtr New( Any nativeImageSourceQueue );
+  static NativeImageSourceQueuePtr New(Any nativeImageSourceQueue);
 
   /**
    * @brief Retrieves the internal native image.
@@ -102,7 +101,7 @@ public:
    * @param[in] width The width of the image
    * @param[in] height The height of the image
    */
-  void SetSize( uint32_t width, uint32_t height );
+  void SetSize(uint32_t width, uint32_t height);
 
   /**
    * @brief Ignores a source image which is inserted to the queue.
@@ -112,6 +111,36 @@ public:
   void IgnoreSourceImage();
 
   /**
+   * @brief Checks if the buffer can be got from the queue.
+   *
+   * Check the available buffer using this API before call DequeueBuffer()
+   * @return True if the buffer can be got from the queue.
+   */
+  bool CanDequeueBuffer();
+
+  /**
+   * @brief Dequeue buffer from the queue.
+   *
+   * Acquire buffer and information of the queue.
+   * it returns the information of the buffer.
+   * @param[out] width The width of buffer
+   * @param[out] height The height of buffer
+   * @param[out] stride The stride of buffer
+   * @return A pointer of buffer
+   */
+  uint8_t* DequeueBuffer(uint32_t& width, uint32_t& height, uint32_t& stride);
+
+  /**
+   * @brief Enqueue buffer to the queue.
+   *
+   * Enqueue buffer to the queue
+   * this requests the release of the buffer internally.
+   * @param[in] buffer A pointer of buffer
+   * @return True if success
+   */
+  bool EnqueueBuffer(uint8_t* buffer);
+
+  /**
    * @copydoc Dali::NativeImageInterface::GetTextureTarget()
    */
   int GetTextureTarget() const override;
@@ -122,13 +151,16 @@ public:
   const char* GetCustomFragmentPrefix() const override;
 
   /**
+   * @copydoc Dali::NativeImageInterface::ApplyNativeFragmentShader()
+   */
+  bool ApplyNativeFragmentShader(std::string& shader) override;
+
+  /**
    * @copydoc Dali::NativeImageInterface::GetCustomSamplerTypename()
    */
   const char* GetCustomSamplerTypename() const override;
 
-
-private:   // native image
-
+private: // native image
   /**
    * @copydoc Dali::NativeImageInterface::CreateResource()
    */
@@ -180,7 +212,6 @@ private:   // native image
   NativeImageInterface::Extension* GetExtension() override;
 
 private:
-
   /// @cond internal
   /**
    * @brief Private constructor.
@@ -189,7 +220,7 @@ private:
    * @param[in] depth color depth of the image
    * @param[in] nativeImageSourceQueue contains either: native image source or is empty
    */
-  DALI_INTERNAL NativeImageSourceQueue( uint32_t width, uint32_t height, ColorDepth depth, Any nativeImageSourceQueue );
+  DALI_INTERNAL NativeImageSourceQueue(uint32_t width, uint32_t height, ColorDepth depth, Any nativeImageSourceQueue);
 
   /**
    * @brief A reference counted object may only be deleted by calling Unreference().
@@ -204,7 +235,7 @@ private:
    * This avoids accidental calls to a default copy constructor.
    * @param[in] nativeImageSourceQueue A reference to the object to copy
    */
-  DALI_INTERNAL NativeImageSourceQueue( const NativeImageSourceQueue& nativeImageSourceQueue );
+  DALI_INTERNAL NativeImageSourceQueue(const NativeImageSourceQueue& nativeImageSourceQueue);
 
   /**
    * @brief Undefined assignment operator.
@@ -216,9 +247,8 @@ private:
   /// @endcond
 
 private:
-
   /// @cond internal
-  std::unique_ptr< Internal::Adaptor::NativeImageSourceQueue > mImpl; ///< Implementation pointer
+  std::unique_ptr<Internal::Adaptor::NativeImageSourceQueue> mImpl; ///< Implementation pointer
   /// @endcond
 };