#define DALI_INTERNAL_SCENE_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.
#include <dali/public-api/math/vector2.h>
#include <dali/public-api/actors/layer.h>
#include <dali/public-api/render-tasks/render-task-list.h>
-#include <dali/integration-api/render-surface.h>
#include <dali/internal/common/owner-pointer.h>
#include <dali/internal/event/actors/layer-impl.h>
#include <dali/internal/event/events/event-processor.h>
namespace Integration
{
-class Event;
+struct Event;
}
namespace Internal
{
+namespace SceneGraph
+{
+class Scene;
+}
+
class EventProcessor;
class Layer;
class LayerList;
/**
* @copydoc Dali::Integration::Scene::New
*/
- static ScenePtr New( const Size& size );
+ static ScenePtr New( Size size );
/**
* virtual destructor
Dali::Layer GetLayer(uint32_t depth) const;
/**
- * @copydoc Dali::Integration::Scene::SetSurface
+ * Notify the surface has been resized.
+ *
+ * @param[in] width The new width of the set surface
+ * @param[in] height The new height of the set surface
*/
- void SetSurface( Integration::RenderSurface& surface );
+ void SurfaceResized( float width, float height );
/**
- * Notify the surface has been resized.
+ * @copydoc Dali::Integration::Scene::SurfaceReplaced
*/
- void SurfaceResized();
+ void SurfaceReplaced();
/**
* @copydoc Dali::Integration::Scene::Discard
void Discard();
/**
- * Retrieve the render surface the scene is binded to.
- * @return The render surface.
- */
- Integration::RenderSurface* GetSurface() const;
-
- /**
* Retrieve the ordered list of on-scene layers.
* @return The layer-list.
*/
Vector4 GetBackgroundColor() const;
/**
+ * @brief Get the Scene scene graph object
+ *
+ * @return the Scene scene graph object
+ */
+ SceneGraph::Scene* GetSceneObject() const;
+
+ /**
* Used by the EventProcessor to emit key event signals.
* @param[in] event The key event.
*/
- void EmitKeyEventSignal(const KeyEvent& event);
+ void EmitKeyEventSignal(const Dali::KeyEvent& event);
+
+ /**
+ * 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.
+ */
+ bool EmitKeyEventGeneratedSignal(const Dali::KeyEvent& event);
/**
* Emits the event processing finished signal.
/**
* Emits the touched signal.
- * @param[in] touchEvent The touch event details (Old API).
* @param[in] touch The touch event details.
*/
- void EmitTouchedSignal( const TouchEvent& touchEvent, const Dali::TouchData& touch );
+ void EmitTouchedSignal( const Dali::TouchEvent& touch );
/**
* Used by the EventProcessor to emit wheel event signals.
* @param[in] event The wheel event.
*/
- void EmitWheelEventSignal( const WheelEvent& event );
+ void EmitWheelEventSignal( const Dali::WheelEvent& event );
/**
- * @copydoc Integration::Scene::KeyEventSignal()
+ * @copydoc Dali::Integration::Scene::AddFrameRenderedCallback
*/
- Integration::Scene::KeyEventSignalType& KeyEventSignal();
+ void AddFrameRenderedCallback( std::unique_ptr< CallbackBase > callback, int32_t frameId );
/**
- * @copydoc Integration::Scene::SignalEventProcessingFinished()
+ * @copydoc Dali::Integration::Scene::AddFramePresentedCallback
*/
- Integration::Scene::EventProcessingFinishedSignalType& EventProcessingFinishedSignal();
+ void AddFramePresentedCallback( std::unique_ptr< CallbackBase > callback, int32_t frameId );
- // The touched signal, to support Stage touched signal, will be removed when deprecated in public Stage API
- using TouchedSignalType = Signal< void (const TouchEvent&) >;
+ /**
+ * @copydoc Dali::Integration::Scene::GetFrameRenderedCallback
+ */
+ void GetFrameRenderedCallback( Dali::Integration::Scene::FrameCallbackContainer& callbacks );
/**
- * Touched signal to support deprecated stage touched signal.
+ * @copydoc Dali::Integration::Scene::GetFramePresentedCallback
*/
- TouchedSignalType& TouchedSignal();
+ void GetFramePresentedCallback( Dali::Integration::Scene::FrameCallbackContainer& callbacks );
+
+ /**
+ * @copydoc Integration::Scene::KeyEventSignal()
+ */
+ Integration::Scene::KeyEventSignalType& KeyEventSignal();
+
+ /**
+ * @copydoc Integration::Scene::KeyEventGeneratedSignal()
+ */
+ Integration::Scene::KeyEventGeneratedSignalType& KeyEventGeneratedSignal();
+
+ /**
+ * @copydoc Integration::Scene::SignalEventProcessingFinished()
+ */
+ Integration::Scene::EventProcessingFinishedSignalType& EventProcessingFinishedSignal();
/**
* @copydoc Integration::Scene::TouchSignal()
private:
// Constructor
- Scene( const Size& size );
+ Scene();
/**
* Second-phase constructor.
+ *
+ * @param[in] size The size of the set surface
*/
- void Initialize();
+ void Initialize( Size size );
// Undefined
Scene(const Scene&) = delete;
Scene& operator=(const Scene& rhs) = delete;
private:
- Integration::RenderSurface* mSurface;
+ Internal::SceneGraph::Scene* mSceneObject;
- // The scene-size may be different with the surface-size
Size mSize;
- Size mSurfaceSize;
Vector2 mDpi;
// The list of render-tasks
IntrusivePtr<RenderTaskList> mRenderTaskList;
- // The frame buffer
- FrameBufferPtr mFrameBuffer;
-
bool mDepthTreeDirty:1; ///< True if the depth tree needs recalculating
EventProcessor mEventProcessor;
// The key event signal
Integration::Scene::KeyEventSignalType mKeyEventSignal;
+ Integration::Scene::KeyEventGeneratedSignalType mKeyEventGeneratedSignal;
// The event processing finished signal
Integration::Scene::EventProcessingFinishedSignalType mEventProcessingFinishedSignal;
// The touch signal
Integration::Scene::TouchSignalType mTouchSignal;
- // The touched signal
- TouchedSignalType mTouchedSignal;
-
// The wheel event signal
Integration::Scene::WheelEventSignalType mWheelEventSignal;
};