X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Fintegration-api%2Fscene.h;h=ad414797042edcb07e193dd538b6e610759b6860;hb=3f5099b7e8b501e5d4a808869faf5889b0701454;hp=cced7dd331f4a07c5a9336993b44250583676404;hpb=34745e42eed50817085b2e4868d301f8d43f9003;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/integration-api/scene.h b/dali/integration-api/scene.h old mode 100755 new mode 100644 index cced7dd..ad41479 --- a/dali/integration-api/scene.h +++ b/dali/integration-api/scene.h @@ -2,7 +2,7 @@ #define DALI_SCENE_H /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -22,14 +22,15 @@ #include // INTERNAL INCLUDES -#include +#include +#include +#include #include #include -#include +#include namespace Dali { - class Actor; class KeyEvent; class Layer; @@ -39,12 +40,16 @@ class WheelEvent; namespace Internal DALI_INTERNAL { - class Scene; +class Scene; } -namespace Integration +namespace Graphics { +class RenderTarget; +} +namespace Integration +{ struct Event; /** @@ -56,22 +61,23 @@ struct Event; class DALI_CORE_API Scene : public BaseHandle { public: - typedef Signal< void () > EventProcessingFinishedSignalType; ///< Event Processing finished signal type - typedef Signal< void (const Dali::KeyEvent&) > KeyEventSignalType; ///< Key event signal type - typedef Signal< bool (const Dali::KeyEvent&) > KeyEventGeneratedSignalType; ///< key event generated signal type - typedef Signal< void (const Dali::TouchEvent&) > TouchEventSignalType; ///< Touch signal type - typedef Signal< void (const Dali::WheelEvent&) > WheelEventSignalType; ///< WheelEvent signal type + using EventProcessingFinishedSignalType = Signal; ///< Event Processing finished signal type + using KeyEventSignalType = Signal; ///< Key event signal type + using KeyEventGeneratedSignalType = Signal; ///< key event generated signal type + using TouchEventSignalType = Signal; ///< Touch signal type + using WheelEventSignalType = Signal; ///< WheelEvent signal type - using FrameCallbackContainer = std::vector< std::pair< std::unique_ptr< CallbackBase >, int32_t > >; + using FrameCallbackContainer = std::vector, int32_t> >; /** * @brief Create an initialized Scene handle. * * @param[in] size The size of the set surface for this scene + * @param[in] orientation The rotated angle of the set surface for this scene * * @return a handle to a newly allocated Dali resource. */ - static Scene New( Size size ); + static Scene New(Size size, int32_t orientation = 0); /** * @brief Downcast an Object handle to Scene handle. @@ -81,7 +87,7 @@ public: * @param[in] handle to An object * @return handle to a Scene object or an uninitialized handle */ - static Scene DownCast( BaseHandle handle ); + static Scene DownCast(BaseHandle handle); /** * @brief Create an uninitialized Scene handle. @@ -146,7 +152,7 @@ public: * Sets horizontal and vertical pixels per inch value that is used by the display * @param[in] dpi Horizontal and vertical dpi value */ - void SetDpi( Vector2 dpi ); + void SetDpi(Vector2 dpi); /** * @brief Retrieves the DPI of the display device to which the scene is connected. @@ -160,7 +166,7 @@ public: * * @param[in] color The new background color */ - void SetBackgroundColor( const Vector4& color ); + void SetBackgroundColor(const Vector4& color); /** * @brief Gets the background color of the render surface. @@ -198,7 +204,7 @@ public: * @return The layer found at the given depth * @pre Depth is less than layer count; see GetLayerCount(). */ - Layer GetLayer( uint32_t depth ) const; + Layer GetLayer(uint32_t depth) const; /** * @brief Informs the scene that the set surface has been resized. @@ -206,7 +212,7 @@ public: * @param[in] width The new width of the set surface * @param[in] height The new height of the set surface */ - void SurfaceResized( float width, float height ); + void SurfaceResized(float width, float height); /** * @brief Informs the scene that the surface has been replaced. @@ -219,16 +225,23 @@ public: void Discard(); /** + * @brief Sets the render target for the surface. + * + * @param[in] renderTarget The render target create info for the surface + */ + void SetSurfaceRenderTarget(const Graphics::RenderTargetCreateInfo& createInfo); + + /** * @brief Retrieve the Scene that the given actor belongs to. * @return The Scene. */ - static Integration::Scene Get( Actor actor ); + static Integration::Scene Get(Actor actor); /** * This function is called when an event is queued. * @param[in] event A event to queue. */ - void QueueEvent( const Integration::Event& event ); + void QueueEvent(const Integration::Event& event); /** * This function is called by Core when events are processed. @@ -243,13 +256,13 @@ public: * * @note A callback of the following type may be used: * @code - * void MyFunction( int frameId ); + * void MyFunction( int32_t frameId ); * @endcode * This callback will be deleted once it is called. * * @note Ownership of the callback is passed onto this class. */ - void AddFrameRenderedCallback( std::unique_ptr< CallbackBase > callback, int32_t frameId ); + void AddFrameRenderedCallback(std::unique_ptr callback, int32_t frameId); /** * @brief Adds a callback that is called when the frame is displayed on the display. @@ -259,13 +272,13 @@ public: * * @note A callback of the following type may be used: * @code - * void MyFunction( int frameId ); + * void MyFunction( int32_t frameId ); * @endcode * This callback will be deleted once it is called. * * @note Ownership of the callback is passed onto this class. */ - void AddFramePresentedCallback( std::unique_ptr< CallbackBase > callback, int32_t frameId ); + void AddFramePresentedCallback(std::unique_ptr callback, int32_t frameId); /** * @brief Gets the callback list that is called when the frame rendering is done by the graphics driver. @@ -274,7 +287,7 @@ public: * * @note This is called in the update thread. */ - void GetFrameRenderedCallback( FrameCallbackContainer& callbacks ); + void GetFrameRenderedCallback(FrameCallbackContainer& callbacks); /** * @brief Gets the callback list that is called when the frame is displayed on the display. @@ -283,7 +296,60 @@ public: * * @note This is called in the update thread. */ - void GetFramePresentedCallback( FrameCallbackContainer& callbacks ); + void GetFramePresentedCallback(FrameCallbackContainer& callbacks); + + /** + * @brief Informs the scene that the set surface has been rotated. + * + * @param[in] width The width of rotated surface + * @param[in] height The height of rotated surface + * @param[in] orientation The orientation of rotated surface + */ + void SurfaceRotated(float width, float height, int32_t orientation); + + /** + * @brief Gets the current surface orientation. It gets the value from the scene object. + * + * @return The current surface orientation. + */ + int32_t GetCurrentSurfaceOrientation() const; + + /** + * @brief Gets the current surface rectangle. It gets the value from the scene object. + * + * @return The current surface rectangle + */ + const Rect& GetCurrentSurfaceRect() const; + + /** + * Query wheter the surface rect is changed or not. + * @return true if the surface rect is changed. + */ + bool IsSurfaceRectChanged() const; + + /** + * @brief Send message to acknowledge for completing window rotation with current window orientation. + * + * If this function is called, the message is sent to render thread, then mSurfaceRectChanged in scene-graph-scene is set with true. + * After that, render thread checks whether window rotation event is received, mSurfaceRectChanged and the neccessary flag are set. + * If they are all true, rotation done function is called to complete window rotation. + */ + void SetRotationCompletedAcknowledgement(); + + /** + * @brief Query wheter is set to acknowledge for completing surface rotation. + * @return true it should be acknowledged. + * + * If SetRotationCompletedAcknowledgement() is called and the related message is received to scene-graph-scene, + * then mSurfaceRectChanged in scene-graph-scene is set with true. + * + * When this function is called, the mSurfaceRectChanged in scene-graph-scene is return. + * Then, the flag will be reset. + * + * @note This function should be not called the application's main thread. + * Because this function should be called in windwow surface's postrender() function to complete window rotation manually. + */ + bool IsRotationCompletedAcknowledgementSet() const; /** * @brief This signal is emitted just after the event processing is finished. @@ -348,7 +414,6 @@ public: WheelEventSignalType& WheelEventSignal(); public: // Not intended for application developers - /** * @brief This constructor is used by Dali::New() methods. *