// EXTERNAL INCLUDES
#include <dali/integration-api/core-enumerations.h>
+#include <dali/public-api/common/vector-wrapper.h>
#include <dali/public-api/math/vector4.h>
#include <dali/public-api/math/rect.h>
#include <dali/public-api/object/any.h>
+#include <dali/public-api/object/weak-handle.h>
+#include <dali/integration-api/scene.h>
+#include <dali/public-api/math/uint-16-pair.h>
namespace Dali
{
/**
* @brief The position and size of the render surface.
*/
-typedef Dali::Rect<int> PositionSize;
+using PositionSize = Dali::Rect<int>;
+using SurfaceSize = Uint16Pair;
/**
* @brief Interface for a render surface onto which Dali draws.
: mAdaptor( nullptr ),
mGraphics( nullptr ),
mDisplayConnection( nullptr ),
+ mScene(),
mDepthBufferRequired( Integration::DepthBufferAvailable::FALSE ),
mStencilBufferRequired( Integration::StencilBufferAvailable::FALSE )
{}
* If the operation fails, then Core::Render should not be called until there is
* a surface to render onto.
* @param[in] resizingSurface True if the surface is being resized
+ * @param[in] damagedRects List of damaged rects this render pass
* @return True if the operation is successful, False if the operation failed
*/
- virtual bool PreRender( bool resizingSurface ) = 0;
+ virtual bool PreRender( bool resizingSurface, const std::vector<Rect<int>>& damagedRects, Rect<int>& clippingRect ) = 0;
/**
* @brief Invoked by render thread after Core::Render
* @param[in] replacingSurface True if the surface is being replaced.
* @param[in] resizingSurface True if the surface is being resized.
*/
- virtual void PostRender( bool renderToFbo, bool replacingSurface, bool resizingSurface ) = 0;
+ virtual void PostRender( bool renderToFbo, bool replacingSurface, bool resizingSurface, const std::vector<Rect<int>>& damagedRects ) = 0;
+
/**
* @brief Invoked by render thread when the thread should be stop
*/
mDisplayConnection = &displayConnection;
}
+ /**
+ * @brief Sets a Scene that is rendered on this surface.
+ * @param scene The Scene object
+ */
+ void SetScene( Dali::Integration::Scene& scene )
+ {
+ mScene = scene;
+ }
+
private:
/**
Dali::Internal::Adaptor::AdaptorInternalServices* mAdaptor;
Dali::Internal::Adaptor::GraphicsInterface* mGraphics;
Dali::DisplayConnection* mDisplayConnection;
+ WeakHandle< Dali::Integration::Scene > mScene;
private: