X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Frendering%2Fframe-buffer-impl.h;h=16c61f5d0d463d6738f24185b6c9c30b21396bbe;hb=55827866fcb8c7ee47581ac4335a3390472090e8;hp=f15b4bdbf6c4674deb6779418146df8e91da5efe;hpb=9e6fd5c8ae44b09b759674e98135d57b29bd88e4;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/rendering/frame-buffer-impl.h b/dali/internal/event/rendering/frame-buffer-impl.h old mode 100644 new mode 100755 index f15b4bd..16c61f5 --- a/dali/internal/event/rendering/frame-buffer-impl.h +++ b/dali/internal/event/rendering/frame-buffer-impl.h @@ -2,7 +2,7 @@ #define DALI_INTERNAL_FRAME_BUFFER_H /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 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. @@ -28,6 +28,12 @@ namespace Dali { + +namespace Integration +{ +class RenderSurface; +} + namespace Internal { namespace Render @@ -42,17 +48,31 @@ class FrameBuffer : public BaseObject { public: - typedef Dali::FrameBuffer::Format Format; + using Mask = Dali::FrameBuffer::Attachment::Mask; + + /** + * @brief Create a new FrameBuffer + * + * @param[in] width The width of the FrameBuffer + * @param[in] height The height of the FrameBuffer + * @param[in] attachments The attachments comprising the format of the FrameBuffer (bit-mask) + * @return A smart-pointer to the newly allocated Texture. + */ + static FrameBufferPtr New( uint32_t width, uint32_t height, Mask attachments ); /** * @brief Create a new FrameBuffer * - * @param[in] width The width of the FrameBuffer - * @param[in] height The height of the FrameBuffer - * @param[in] format The format of the FrameBuffer + * @param[in] renderSurface The render surface + * @param[in] attachments The attachments comprising the format of the FrameBuffer (bit-mask) * @return A smart-pointer to the newly allocated Texture. */ - static FrameBufferPtr New( unsigned int width, unsigned int height, Format format ); + static FrameBufferPtr New( Dali::Integration::RenderSurface& renderSurface, Mask attachments ); + + /** + * A reference counted object may only be deleted by calling Unreference() + */ + virtual ~FrameBuffer(); /** * @brief Get the FrameBuffer render object @@ -64,48 +84,76 @@ public: /** * @copydoc Dali::FrameBuffer::AttachColorTexture() */ - void AttachColorTexture( NewTexturePtr texture, unsigned int mipmapLevel, unsigned int layer ); + void AttachColorTexture( TexturePtr texture, uint32_t mipmapLevel, uint32_t layer ); /** * @copydoc Dali::FrameBuffer::GetColorTexture() */ - NewTexture* GetColorTexture(); + Texture* GetColorTexture(); + + /** + * @brief Sets the frame buffer size. + * @param[in] width The width size + * @param[in] height The height size + */ + void SetSize( uint32_t width, uint32_t height ); + + /** + * @brief Sets the background color + * @param[in] color The new background color + */ + void SetBackgroundColor( const Vector4& color ); + + /** + * @brief Mark the render surface as invalid + * + * The render surface is maked as invalid when it is deleted. + * + * @note Only for FrameBuffer backed by a render surface. + * @return True if the FrameBuffer is backed by a render surface + */ + void MarkSurfaceAsInvalid(); + + /** + * @brief Sets whether partial update is required for partial update + * @param[in] value whether partial update or not + */ + void SetPartialUpdateEnabled( bool value ); private: // implementation /** * Constructor - * @param[in] width The width of the FrameBuffer - * @param[in] height The height of the FrameBuffer - * @param[in] format The format of the FrameBuffer + * @param[in] width The width of the FrameBuffer + * @param[in] height The height of the FrameBuffer + * @param[in] attachments The attachments comprising the format of the FrameBuffer (bit-mask) */ - FrameBuffer( unsigned int width, unsigned int height, Format format ); + FrameBuffer( uint32_t width, uint32_t height, Mask attachments ); /** * Second stage initialization of the Texture */ - void Initialize(); + void Initialize( Integration::RenderSurface* renderSurface = nullptr ); protected: - /** - * A reference counted object may only be deleted by calling Unreference() - */ - virtual ~FrameBuffer(); - private: // unimplemented methods - FrameBuffer( const FrameBuffer& ); - FrameBuffer& operator=( const FrameBuffer& ); + + FrameBuffer() = delete; + FrameBuffer( const FrameBuffer& ) = delete; + FrameBuffer& operator=( const FrameBuffer& ) = delete; private: // data - Internal::EventThreadServices& mEventThreadServices; ///