#define DALI_RENDER_SURFACE_INTERFACE_H
/*
- * Copyright (c) 2019 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.
*/
// EXTERNAL INCLUDES
-#include <dali/integration-api/render-surface.h>
#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.
+ */
+using PositionSize = Dali::Rect<int>;
+using SurfaceSize = Uint16Pair;
+
+/**
* @brief Interface for a render surface onto which Dali draws.
*
* Dali::Adaptor requires a render surface to draw on to. This is
* implementation of RenderSurface for the given platform
*/
-class RenderSurfaceInterface : public Dali::Integration::RenderSurface
+class RenderSurfaceInterface
{
public:
+ enum Type
+ {
+ WINDOW_RENDER_SURFACE,
+ PIXMAP_RENDER_SURFACE,
+ NATIVE_RENDER_SURFACE
+ };
+
/**
* @brief Constructor
* Inlined as this is a pure abstract interface
: mAdaptor( nullptr ),
mGraphics( nullptr ),
mDisplayConnection( nullptr ),
+ mScene(),
mDepthBufferRequired( Integration::DepthBufferAvailable::FALSE ),
mStencilBufferRequired( Integration::StencilBufferAvailable::FALSE )
{}
virtual void GetDpi( unsigned int& dpiHorizontal, unsigned int& dpiVertical ) = 0;
/**
- * @brief Return the orientation of the surface.
- * @return The orientation
- */
- virtual int GetOrientation() const = 0;
-
- /**
* @brief InitializeGraphics the platform specific graphics surface interfaces
*/
virtual void InitializeGraphics() = 0;
* 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
*/
/**
* @brief Gets the surface type
*/
- virtual Dali::Integration::RenderSurface::Type GetSurfaceType() = 0;
+ virtual Dali::RenderSurfaceInterface::Type GetSurfaceType() = 0;
/**
* @brief Makes the graphics context current
*/
virtual Integration::StencilBufferAvailable GetStencilBufferRequired() = 0;
- /**
- * @brief Sets currentframe damaged rects
- * @param[in] Sets currentframe damaged rects
- * @param[out] return merged rect
- */
- virtual void SetDamagedRect( const Dali::DamagedRect& damagedRect, Dali::DamagedRect& mergedRectArray ) = 0;
-
- /**
- * @brief Gets buffer age
- */
- virtual int32_t GetBufferAge() = 0;
-
public:
void SetAdaptor( Dali::Internal::Adaptor::AdaptorInternalServices& adaptor )
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: