[Tizen] Make possible to capture on the old driver devices.
[platform/core/uifw/dali-adaptor.git] / dali / internal / system / common / capture-impl.h
index 61e116a..273e8f0 100644 (file)
@@ -24,7 +24,6 @@
 #include <dali/public-api/object/ref-object.h>
 #include <dali/public-api/object/base-object.h>
 #include <dali/public-api/render-tasks/render-task.h>
-#include <dali/public-api/rendering/texture.h>
 #include <dali/public-api/rendering/frame-buffer.h>
 
 // INTERNAL INCLUDES
@@ -48,6 +47,9 @@ typedef IntrusivePtr<Capture> CapturePtr;
 class Capture : public BaseObject, public ConnectionTracker
 {
 public:
+
+  static constexpr uint32_t DEFAULT_QUALITY = 100;
+
   /**
    * @brief Constructor.
    */
@@ -68,7 +70,17 @@ public:
   /**
    * @copydoc Dali::Capture::Start
    */
-  void Start( Dali::Actor source, const Dali::Vector2& size, const std::string &path, const Dali::Vector4& clearColor );
+  void Start( Dali::Actor source, const Dali::Vector2& position, const Dali::Vector2& size, const std::string &path, const Dali::Vector4& clearColor, const uint32_t quality );
+
+  /**
+   * @copydoc Dali::Capture::Start
+   */
+  void Start( Dali::Actor source, const Dali::Vector2& position, const Dali::Vector2& size, const std::string &path, const Dali::Vector4& clearColor );
+
+  /**
+   * @copydoc Dali::Capture::SetImageQuality
+   */
+  void SetImageQuality( uint32_t quality );
 
   /**
    * @copydoc Dali::Capture::GetNativeImageSource
@@ -76,6 +88,11 @@ public:
   Dali::NativeImageSourcePtr GetNativeImageSource() const;
 
   /**
+   * @copydoc Dali::Capture::GetTexture
+   */
+  Dali::Texture GetTexture();
+
+  /**
    * @copydoc Dali::Capture::FinishedSignal
    */
   Dali::Capture::CaptureFinishedSignalType& FinishedSignal();
@@ -91,7 +108,7 @@ private:
   /**
    * @brief Create native image source.
    */
-  void CreateNativeImageSource( const Dali::Vector2& size );
+  void CreateTexture( const Dali::Vector2& size );
 
   /**
    * @brief Delete native image source.
@@ -99,13 +116,6 @@ private:
   void DeleteNativeImageSource();
 
   /**
-   * @brief Query whether native image source is created or not.
-   *
-   * @return True is native image source is created.
-   */
-  bool IsNativeImageSourceCreated();
-
-  /**
    * @brief Create frame buffer.
    */
   void CreateFrameBuffer();
@@ -125,10 +135,13 @@ private:
   /**
    * @brief Setup render task.
    *
-   * @param[in] source is captured.
+   * @param[in] position top-left position of area to be captured
+   *            this position is defined in the window.
+   * @param[in] size two dimensional size of area to be captured
+   * @param[in] source sub-scene tree to be captured.
    * @param[in] clearColor background color
    */
-  void SetupRenderTask( Dali::Actor source, const Dali::Vector4& clearColor );
+  void SetupRenderTask( const Dali::Vector2& position, const Dali::Vector2& size, Dali::Actor source, const Dali::Vector4& clearColor );
 
   /**
    * @brief Unset render task.
@@ -145,11 +158,13 @@ private:
   /**
    * @brief Setup resources for capture.
    *
-   * @param[in] size is surface size.
-   * @param[in] clearColor is clear color of surface.
-   * @param[in] source is captured.
+   * @param[in] position top-left position of area to be captured
+   *            this position is defined in the window.
+   * @param[in] size two dimensional size of area to be captured
+   * @param[in] clearColor color to clear background surface.
+   * @param[in] source sub-scene tree to be captured.
    */
-  void SetupResources( const Dali::Vector2& size, const Dali::Vector4& clearColor, Dali::Actor source );
+  void SetupResources( const Dali::Vector2& position, const Dali::Vector2& size, const Dali::Vector4& clearColor, Dali::Actor source );
 
   /**
    * @brief Unset resources for capture.
@@ -186,17 +201,18 @@ private:
   Capture& operator=( const Capture& rhs );
 
 private:
-  Dali::Texture                               mNativeTexture;
+  uint32_t                                    mQuality;
+  Dali::Texture                               mTexture;
   Dali::FrameBuffer                           mFrameBuffer;
   Dali::RenderTask                            mRenderTask;
-  Dali::Actor                                 mParent;
   Dali::Actor                                 mSource;
   Dali::CameraActor                           mCameraActor;
-  Dali::Timer                                 mTimer;           ///< For timeout.
+  Dali::Timer                                 mTimer; ///< For timeout.
   Dali::Capture::CaptureFinishedSignalType    mFinishedSignal;
   std::string                                 mPath;
-  Dali::NativeImageSourcePtr                  mNativeImageSourcePtr;  ///< pointer to surface image
+  Dali::NativeImageSourcePtr                  mNativeImageSourcePtr; ///< pointer to surface image
   bool                                        mFileSave;
+  bool                                        mIsNativeImageSourcePossible;
 };
 
 }  // End of namespace Adaptor