X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Fcommon%2Fstage-impl.h;h=1f524318b064850a86994c01c39a80ab61292a43;hb=d8944bba8449a3c5bce03041eccccf2eba4a7ae3;hp=a0e9d6a76f5d4eacafad1c676593d09105ba06e2;hpb=a416e02739d885d7469ddba790c15974df6091e1;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/common/stage-impl.h b/dali/internal/event/common/stage-impl.h index a0e9d6a..1f52431 100644 --- a/dali/internal/event/common/stage-impl.h +++ b/dali/internal/event/common/stage-impl.h @@ -1,8 +1,8 @@ -#ifndef __DALI_INTERNAL_STAGE_H__ -#define __DALI_INTERNAL_STAGE_H__ +#ifndef DALI_INTERNAL_STAGE_H +#define DALI_INTERNAL_STAGE_H /* - * Copyright (c) 2014 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. @@ -19,26 +19,22 @@ */ // INTERNAL INCLUDES -#include #include +#include #include +#include +#include +#include +#include #include #include #include +#include #include #include #include #include -#include -#include -#include -#include -#include - -#ifdef DYNAMICS_SUPPORT -#include -#include -#endif +#include namespace Dali { @@ -47,8 +43,7 @@ struct Vector2; namespace Integration { -class SystemOverlay; -class DynamicsFactory; +class RenderController; } namespace Internal @@ -63,9 +58,9 @@ class AnimationPlaylist; class PropertyNotificationManager; class Layer; class LayerList; -class SystemOverlay; class CameraActor; class RenderTaskList; +class Scene; /** * Implementation of Stage @@ -76,28 +71,19 @@ public: /** * Create the stage - * @param[in] playlist for animations - * @param[in] propertyNotificationManager * @param[in] updateManager - * @param[in] notificationManager */ - static StagePtr New( AnimationPlaylist& playlist, - PropertyNotificationManager& propertyNotificationManager, - SceneGraph::UpdateManager& updateManager, - NotificationManager& notificationManager ); + static StagePtr New( SceneGraph::UpdateManager& updateManager ); /** * Initialize the stage. + * @param[in] scene The default scene (for main window). */ - void Initialize(); - - /** - * Uninitialize the stage. - */ - void Uninitialize(); + void Initialize( Scene& scene ); /** * @copydoc Dali::Stage::GetCurrent() + * @note this version is for internal usage so it does not assert */ static StagePtr GetCurrent(); @@ -117,40 +103,6 @@ public: */ Layer& GetRootActor(); - /** - * Retrieve the UpdateManager associated with this Stage - * @return The UpdateManager. - */ - SceneGraph::UpdateManager& GetUpdateManager(); - - /** - * Helper for actors, to retrieve the current Event buffer index. - * @return The buffer index. - */ - BufferIndex GetEventBufferIndex() const - { - // inlined as its called often from event thread - return mUpdateManager.GetEventBufferIndex(); - } - - /** - * Retrieve the interface for accessing update-thread data. - * @return The EventToUpdate interface. - */ - EventToUpdate& GetUpdateInterface(); - - /** - * Returns the animation playlist. - * @return reference to the animation playlist. - */ - AnimationPlaylist& GetAnimationPlaylist(); - - /** - * Returns the property notification manager. - * @return reference to the property notification manager. - */ - PropertyNotificationManager& GetPropertyNotificationManager(); - // Root actor accessors /** @@ -164,13 +116,6 @@ public: void Remove( Actor& actor ); /** - * Sets the size of the stage and indirectly, the root actor. - * @param [in] width The new width. - * @param [in] height The new height. - */ - void SetSize( float width, float height ); - - /** * Returns the size of the Stage in pixels as a Vector. * The x component will be the width of the Stage in pixels * The y component will be the height of the Stage in pixels @@ -184,11 +129,6 @@ public: RenderTaskList& GetRenderTaskList() const; /** - * Create a default camera actor - */ - void CreateDefaultCameraActor(); - - /** * From RenderTaskDefaults; retrieve the default root actor. * @return The default root actor. */ @@ -205,12 +145,12 @@ public: /** * @copydoc Dali::Stage::GetLayerCount() */ - unsigned int GetLayerCount() const; + uint32_t GetLayerCount() const; /** * @copydoc Dali::Stage::GetLayer() */ - Dali::Layer GetLayer( unsigned int depth ) const; + Dali::Layer GetLayer( uint32_t depth ) const; /** * @copydoc Dali::Stage::GetRootLayer() @@ -223,164 +163,141 @@ public: */ LayerList& GetLayerList(); - // System-level overlay actors - - /** - * @copydoc Dali::Integration::Core::GetSystemOverlay() - */ - Integration::SystemOverlay& GetSystemOverlay(); + // Misc /** - * Retrieve the internal implementation of the SystemOverlay. - * @return The implementation, or NULL if this has never been requested from Integration API. + * @copydoc Dali::Stage::SetBackgroundColor */ - SystemOverlay* GetSystemOverlayInternal(); - - // Stereoscopy + void SetBackgroundColor(Vector4 color); /** - * @copydoc Dali::Integration::Core::SetViewMode() + * @copydoc Dali::Stage::GetBackgroundColor */ - void SetViewMode( ViewMode viewMode ); + Vector4 GetBackgroundColor() const; /** - * @copydoc Dali::Integration::Core::GetViewMode() + * @copydoc Dali::Stage::GetDpi */ - ViewMode GetViewMode() const; + Vector2 GetDpi() const; /** - * @copydoc Dali::Integration::Core::SetStereoBase() + * @copydoc Dali::Stage::KeepRendering() */ - void SetStereoBase( float stereoBase ); + void KeepRendering( float durationSeconds ); /** - * @copydoc Dali::Integration::Core::GetStereoBase() + * @copydoc Dali::DevelStage::SetRenderingBehavior() */ - float GetStereoBase() const; - - // Keyboard stuff + void SetRenderingBehavior( DevelStage::Rendering renderingBehavior ); /** - * As one virtual keyboard per stage, the stage will hold a pointer to the Actor currently - * set to receive keyboard input. - * @param[in] actor to receive keyboard input + * @copydoc Dali::DevelStage::GetRenderingBehavior() */ - void SetKeyboardFocusActor( Actor* actor ); + DevelStage::Rendering GetRenderingBehavior() const; /** - * Get the actor that is currently set to receive keyboard inputs - * @return Pointer to the actor set to receive keyboard inputs. + * Used by the EventProcessor to emit key event signals. + * @param[in] event The key event. */ - Actor* GetKeyboardFocusActor() const; + void EmitKeyEventSignal(const KeyEvent& event); /** - * Removes the given actor from keyboard focus so it will no longer receive key events from keyboard. - * @param [in] actor which should be removed from focus. + * Used by the KeyEventProcessor to emit KeyEventGenerated signals. + * @param[in] event The key event. + * @return The return is true if KeyEvent is consumed, otherwise false. */ - void RemoveActorFromKeyFocus( Actor* actor ); - - // Misc + bool EmitKeyEventGeneratedSignal(const KeyEvent& event); /** - * @copydoc Dali::Stage::SetBackgroundColor + * Emits the event processing finished signal. + * + * @see Dali::Stage::SignalEventProcessingFinished() */ - void SetBackgroundColor(Vector4 color); + void EmitEventProcessingFinishedSignal(); /** - * @copydoc Dali::Stage::GetBackgroundColor + * Emits the touched signal. + * @param[in] touchEvent The touch event details (Old API). + * @param[in] touch The touch event details. */ - Vector4 GetBackgroundColor() const; + void EmitTouchedSignal( const TouchEvent& touchEvent, const Dali::TouchData& touch ); /** - * @copydoc Dali::Stage::GetDpi + * Used by the EventProcessor to emit wheel event signals. + * @param[in] event The wheel event. */ - Vector2 GetDpi() const; + void EmitWheelEventSignal( const WheelEvent& event ); /** - * Sets horizontal and vertical pixels per inch value that is used by the display - * @param[in] dpi Horizontal and vertical dpi value + * Emits the scene created. */ - void SetDpi( Vector2 dpi ); - -#ifdef DYNAMICS_SUPPORT + void EmitSceneCreatedSignal(); /** - * Return the Dynamics Simulation Notifier object - * @return The Dynamics Simulation Notifier object + * @copydoc Dali::Stage::KeyEventSignal() */ - DynamicsNotifier& GetDynamicsNotifier(); + Dali::Stage::KeyEventSignalType& KeyEventSignal(); /** - * @copydoc Dali::Stage::InitializeDynamics + * @copydoc Dali::Stage::SignalEventProcessingFinished() */ - DynamicsWorldPtr InitializeDynamics(DynamicsWorldConfigPtr config); + Dali::Stage::EventProcessingFinishedSignalType& EventProcessingFinishedSignal(); /** - * @copydoc Dali::Stage::GetDynamicsWorld - */ - DynamicsWorldPtr GetDynamicsWorld(); + * @copydoc Dali::Stage::TouchedSignal() + */ + Dali::Stage::TouchedSignalType& TouchedSignal(); /** - * @copydoc Dali::Stage::TerminateDynamics - */ - void TerminateDynamics(); - -#endif // DYNAMICS_SUPPORT - - NotificationManager& GetNotificationManager() - { - return mNotificationManager; - } - + * @copydoc Dali::Stage::TouchSignal() + */ + Dali::Stage::TouchSignalType& TouchSignal(); /** - * @copydoc Dali::Stage::KeepRendering() + * @copydoc Dali::Stage::WheelEventSignal() */ - void KeepRendering( float durationSeconds ); + Dali::Stage::WheelEventSignalType& WheelEventSignal(); /** - * Used by the EventProcessor to emit key event signals. - * @param[in] event The key event. + * @copydoc Dali::Stage::ContextLostSignal() */ - void EmitKeyEventSignal(const KeyEvent& event); + Dali::Stage::ContextStatusSignal& ContextLostSignal(); /** - * Emits the event processing finished signal. - * - * @see Dali::Stage::SignalEventProcessingFinished() + * @copydoc Dali::Stage::ContextRegainedSignal() */ - void EmitEventProcessingFinishedSignal(); + Dali::Stage::ContextStatusSignal& ContextRegainedSignal(); /** - * Emits the touched signal. - * @param[in] touch The touch event details. + * @copydoc Dali::Stage::SceneCreatedSignal() */ - void EmitTouchedSignal( const TouchEvent& touch ); + Dali::Stage::SceneCreatedSignalType& SceneCreatedSignal(); /** - * @copydoc Dali::Stage::KeyEventSignal() + * @copydoc Dali::DevelStage::KeyEventGeneratedSignal() */ - Dali::Stage::KeyEventSignalV2& KeyEventSignal(); + Dali::DevelStage::KeyEventGeneratedSignalType& KeyEventGeneratedSignal(); /** - * @copydoc Dali::Stage::SignalEventProcessingFinished() + * @copydoc Dali::DevelStage::AddFrameCallback() */ - Dali::Stage::EventProcessingFinishedSignalV2& EventProcessingFinishedSignal(); - - /** - * @copydoc Dali::Stage::TouchedSignal() - */ - Dali::Stage::TouchedSignalV2& TouchedSignal(); + void AddFrameCallback( FrameCallbackInterface& frameCallback, Actor& rootActor ); /** - * @copydoc Dali::Stage::ContextLostSignal() + * @copydoc Dali::DevelStage::RemoveFrameCallback() */ - Dali::Stage::ContextStatusSignal& ContextLostSignal(); + void RemoveFrameCallback( FrameCallbackInterface& frameCallback ); /** - * @copydoc Dali::Stage::ContextRegainedSignal() + * Connects a callback function with the object's signals. + * @param[in] object The object providing the signal. + * @param[in] tracker Used to disconnect the signal. + * @param[in] signalName The signal to connect to. + * @param[in] functor A newly allocated FunctorDelegate. + * @return True if the signal was connected. + * @post If a signal was connected, ownership of functor was passed to CallbackBase. Otherwise the caller is responsible for deleting the unused functor. */ - Dali::Stage::ContextStatusSignal& ContextRegainedSignal(); + static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ); private: // Implementation of ContextNotificationInterface: @@ -399,10 +316,7 @@ private: /** * Protected constructor; see also Stage::New() */ - Stage( AnimationPlaylist& playlist, - PropertyNotificationManager& propertyNotificationManager, - SceneGraph::UpdateManager& updateManager, - NotificationManager& notificationManager ); + Stage( SceneGraph::UpdateManager& updateManager ); /** * A reference counted object may only be deleted by calling Unreference() @@ -411,67 +325,30 @@ private: private: - // For 'Fire and forget' animation support - AnimationPlaylist& mAnimationPlaylist; - - PropertyNotificationManager& mPropertyNotificationManager; - SceneGraph::UpdateManager& mUpdateManager; - NotificationManager& mNotificationManager; - - // The Actual size of the stage. - Vector2 mSize; - - // Cached for public GetBackgroundColor() - Vector4 mBackgroundColor; - - LayerPtr mRootLayer; - - // Ordered list of currently on-stage layers - OwnerPointer mLayerList; - - IntrusivePtr mDefaultCamera; - - ViewMode mViewMode; - float mStereoBase; - - Vector2 mDpi; - - // The object registry - ObjectRegistryPtr mObjectRegistry; - -#ifdef DYNAMICS_SUPPORT - - DynamicsNotifier mDynamicsNotifier; - - // The Dynamics simulation world object - Integration::DynamicsFactory* mDynamicsFactory; // Not owned pointer to DynamicsFactory (PlatformAbstraction will clean up) - DynamicsWorldPtr mDynamicsWorld; - -#endif // DYNAMICS_SUPPORT - - // The list of render-tasks - IntrusivePtr mRenderTaskList; - - Dali::RenderTask mRightRenderTask; - IntrusivePtr mRightCamera; - Dali::RenderTask mLeftRenderTask; - IntrusivePtr mLeftCamera; - - Integration::SystemOverlay* mSystemOverlay; ///< SystemOverlay stage access + IntrusivePtr mScene; // The key event signal - Dali::Stage::KeyEventSignalV2 mKeyEventSignalV2; + Dali::Stage::KeyEventSignalType mKeyEventSignal; + Dali::DevelStage::KeyEventGeneratedSignalType mKeyEventGeneratedSignal; // The event processing finished signal - Dali::Stage::EventProcessingFinishedSignalV2 mEventProcessingFinishedSignalV2; + Dali::Stage::EventProcessingFinishedSignalType mEventProcessingFinishedSignal; - // The touched signal - Dali::Stage::TouchedSignalV2 mTouchedSignalV2; + // The touched signals + Dali::Stage::TouchedSignalType mTouchedSignal; + Dali::Stage::TouchSignalType mTouchSignal; + + // The wheel event signal + Dali::Stage::WheelEventSignalType mWheelEventSignal; Dali::Stage::ContextStatusSignal mContextLostSignal; Dali::Stage::ContextStatusSignal mContextRegainedSignal; + + Dali::Stage::SceneCreatedSignalType mSceneCreatedSignal; + + DevelStage::Rendering mRenderingBehavior; ///< The rendering behavior }; } // namespace Internal @@ -498,4 +375,4 @@ inline const Internal::Stage& GetImplementation(const Dali::Stage& stage) } // namespace Dali -#endif // __DALI_INTERNAL_STAGE_H__ +#endif // DALI_INTERNAL_STAGE_H