Add Overlay Layer in scene
[platform/core/uifw/dali-core.git] / dali / internal / event / common / scene-impl.h
index 7c856ab..cda29a2 100644 (file)
@@ -62,7 +62,7 @@ public:
   /**
    * @copydoc Dali::Integration::Scene::New
    */
-  static ScenePtr New(Size size, int32_t orientation = 0);
+  static ScenePtr New(Size size, int32_t windowOrientation = 0, int32_t screenOrientation = 0);
 
   /**
    * virtual destructor
@@ -105,6 +105,11 @@ public:
   Dali::Layer GetRootLayer() const;
 
   /**
+   * @copydoc Dali::Integration::Scene::GetOverlayLayer
+   */
+  Dali::Layer GetOverlayLayer();
+
+  /**
    * @copydoc Dali::Integration::Scene::GetLayerCount
    */
   uint32_t GetLayerCount() const;
@@ -186,9 +191,10 @@ public:
    *
    * @param[in] width The width of rotated surface
    * @param[in] height The height of rotated surface
-   * @param[in] orientation The orientation of rotated surface
+   * @param[in] windowOrientation the current window orientation
+   * @param[in] screenOrientation the current screen orientation
    */
-  void SurfaceRotated(float width, float height, int32_t orientation);
+  void SurfaceRotated(float width, float height, int32_t windowOrientation, int32_t screenOrientation);
 
   /**
    * @copydoc Dali::Integration::Scene::SetRotationCompletedAcknowledgement
@@ -206,6 +212,11 @@ public:
   int32_t GetCurrentSurfaceOrientation() const;
 
   /**
+   * @copydoc Dali::Integration::Scene::GetCurrentScreenOrientation
+   */
+  int32_t GetCurrentScreenOrientation() const;
+
+  /**
    * @copydoc Dali::Integration::Scene::GetCurrentSurfaceRect
    */
   const Rect<int32_t>& GetCurrentSurfaceRect() const;
@@ -234,6 +245,13 @@ public:
   bool EmitKeyEventGeneratedSignal(const Dali::KeyEvent& event);
 
   /**
+   * Used by the KeyEventProcessor to emit InterceptKeyEventSignal signals.
+   * @param[in] event The key event.
+   * @return The return is true if KeyEvent is consumed, otherwise false.
+   */
+  bool EmitInterceptKeyEventSignal(const Dali::KeyEvent& event);
+
+  /**
    * Emits the event processing finished signal.
    *
    * @see Dali::Scene::SignalEventProcessingFinished()
@@ -290,6 +308,11 @@ public:
   Integration::Scene::KeyEventGeneratedSignalType& KeyEventGeneratedSignal();
 
   /**
+   * @copydoc Integration::Scene::InterceptKeyEventSignal()
+   */
+  Integration::Scene::KeyEventGeneratedSignalType& InterceptKeyEventSignal();
+
+  /**
    * @copydoc Integration::Scene::SignalEventProcessingFinished()
    */
   Integration::Scene::EventProcessingFinishedSignalType& EventProcessingFinishedSignal();
@@ -330,9 +353,10 @@ private:
    * Second-phase constructor.
    *
    * @param[in] size The size of the set surface
-   * @param[in] orientation The orientation of the set surface for this scene
+   * @param[in] windowOrientation The rotated angle of the set surface for this scene
+   * @param[in] screenOrientation The rotated angle of the screen
    */
-  void Initialize(Size size, int32_t orientation);
+  void Initialize(Size size, int32_t windowOrientation, int32_t screenOrientation);
 
   // Undefined
   Scene(const Scene&) = delete;
@@ -345,9 +369,10 @@ private:
    *
    * @param[in] width The width of rotated surface
    * @param[in] height The height of rotated surface
-   * @param[in] orientation The orientation of rotated surface
+   * @param[in] windowOrientation the current window orientation
+   * @param[in] screenOrientation the current screen orientation
    */
-  void ChangedSurface(float width, float height, int32_t orientation);
+  void ChangedSurface(float width, float height, int32_t windowOrientation, int32_t screenOrientation);
 
 private:
   Internal::SceneGraph::Scene* mSceneObject;
@@ -360,6 +385,8 @@ private:
 
   LayerPtr mRootLayer;
 
+  LayerPtr mOverlayLayer;
+
   // Ordered list of currently on-stage layers
   OwnerPointer<LayerList> mLayerList;
 
@@ -375,9 +402,13 @@ private:
   // The Surface's orientation
   int32_t mSurfaceOrientation;
 
+  // The Screen's orientation
+  int32_t mScreenOrientation;
+
   // The key event signal
   Integration::Scene::KeyEventSignalType          mKeyEventSignal;
   Integration::Scene::KeyEventGeneratedSignalType mKeyEventGeneratedSignal;
+  Integration::Scene::KeyEventGeneratedSignalType mInterceptKeyEventSignal;
 
   // The event processing finished signal
   Integration::Scene::EventProcessingFinishedSignalType mEventProcessingFinishedSignal;