X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Frender-tasks%2Frender-task-impl.h;h=90d5cc357291ca651aa580ca63caeafd337f4cec;hb=462cbee2270984cdca45488f3733d664dcf49187;hp=589537570ade1e07503d5884cd4dc11dce111020;hpb=7c51ca2f62b1fa560cb567080d858dbb357ef1b4;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/render-tasks/render-task-impl.h b/dali/internal/event/render-tasks/render-task-impl.h index 5895375..90d5cc3 100644 --- a/dali/internal/event/render-tasks/render-task-impl.h +++ b/dali/internal/event/render-tasks/render-task-impl.h @@ -2,7 +2,7 @@ #define __DALI_INTERNAL_RENDER_TASK_H__ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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. @@ -21,8 +21,9 @@ // INTERNAL INCLUDES #include #include -#include -#include +#include +#include +#include namespace Dali { @@ -32,14 +33,15 @@ namespace Internal class Actor; class CameraActor; -class EventToUpdate; +class EventThreadServices; namespace SceneGraph { class RenderTask; +class Camera; } -class RenderTask : public ProxyObject +class RenderTask : public Object { public: @@ -94,12 +96,22 @@ public: /** * @copydoc Dali::RenderTask::SetTargetFrameBuffer() */ - void SetTargetFrameBuffer( Dali::FrameBufferImage frameBuffer ); + void SetTargetFrameBuffer( FrameBufferImagePtr frameBuffer ); /** * @copydoc Dali::RenderTask::GetTargetFrameBuffer */ - Dali::FrameBufferImage GetTargetFrameBuffer() const; + FrameBufferImage* GetTargetFrameBuffer() const; + + /** + * @copydoc Dali::RenderTask::SetFrameBuffer() + */ + void SetFrameBuffer( FrameBufferPtr frameBuffer ); + + /** + * @copydoc Dali::RenderTask::GetFrameBuffer + */ + FrameBuffer* GetFrameBuffer() const; /** * @copydoc Dali::RenderTask::SetScreenToFrameBufferFunction @@ -162,6 +174,18 @@ public: const Vector4& GetClearColor() const; /** + * Indicate whether GL sync is required for native render target. + * @param[in] requiresSync whether GL sync is required. + */ + void SetSyncRequired( bool requiresSync ); + + /** + * Query whether the sync object is required for native render target. + * @return True if the sync object is required, false otherwise. + */ + bool IsSyncRequired() const; + + /** * @copydoc Dali::RenderTask::SetClearEnabled() */ void SetClearEnabled( bool enabled ); @@ -211,6 +235,16 @@ public: */ bool IsSystemLevel() const; + /** + * @copydoc Dali::RenderTask::WorldToViewport() + */ + bool WorldToViewport(const Vector3 &position, float& viewportX, float& viewportY) const; + + /** + * @copydoc Dali::RenderTask::ViewportToLocal() + */ + bool ViewportToLocal(Actor* actor, float viewportX, float viewportY, float &localX, float &localY) const; + public: // Used by RenderTaskList, which owns the SceneGraph::RenderTasks /** @@ -231,85 +265,80 @@ public: // Used by RenderTaskList, which owns the SceneGraph::RenderTasks */ void DiscardSceneObject(); -public: // Implementation of ProxyObject - - /** - * @copydoc Dali::Internal::ProxyObject::IsSceneObjectRemovable() - */ - virtual bool IsSceneObjectRemovable() const; +public: // Implementation of Object /** - * @copydoc Dali::Internal::ProxyObject::GetDefaultPropertyCount() + * @copydoc Dali::Internal::Object::GetDefaultPropertyCount() */ virtual unsigned int GetDefaultPropertyCount() const; /** - * @copydoc Dali::Internal::ProxyObject::GetDefaultPropertyIndices() + * @copydoc Dali::Internal::Object::GetDefaultPropertyIndices() */ virtual void GetDefaultPropertyIndices( Property::IndexContainer& indices ) const; /** - * @copydoc Dali::Internal::ProxyObject::GetDefaultPropertyName() + * @copydoc Dali::Internal::Object::GetDefaultPropertyName() */ virtual const char* GetDefaultPropertyName(Property::Index index) const; /** - * @copydoc Dali::Internal::ProxyObject::GetDefaultPropertyIndex() + * @copydoc Dali::Internal::Object::GetDefaultPropertyIndex() */ virtual Property::Index GetDefaultPropertyIndex(const std::string& name) const; /** - * @copydoc Dali::Internal::ProxyObject::IsDefaultPropertyWritable() + * @copydoc Dali::Internal::Object::IsDefaultPropertyWritable() */ virtual bool IsDefaultPropertyWritable(Property::Index index) const; /** - * @copydoc Dali::Internal::ProxyObject::IsDefaultPropertyAnimatable() + * @copydoc Dali::Internal::Object::IsDefaultPropertyAnimatable() */ virtual bool IsDefaultPropertyAnimatable(Property::Index index) const; /** - * @copydoc Dali::Internal::ProxyObject::IsDefaultPropertyAConstraintInput() + * @copydoc Dali::Internal::Object::IsDefaultPropertyAConstraintInput() */ virtual bool IsDefaultPropertyAConstraintInput( Property::Index index ) const; /** - * @copydoc Dali::Internal::ProxyObject::GetDefaultPropertyType() + * @copydoc Dali::Internal::Object::GetDefaultPropertyType() */ virtual Property::Type GetDefaultPropertyType(Property::Index index) const; /** - * @copydoc Dali::Internal::ProxyObject::SetDefaultProperty() + * @copydoc Dali::Internal::Object::SetDefaultProperty() */ virtual void SetDefaultProperty(Property::Index index, const Property::Value& propertyValue); /** - * @copydoc Dali::Internal::ProxyObject::SetCustomProperty() + * @copydoc Dali::Internal::Object::GetDefaultProperty() */ - virtual void SetCustomProperty( Property::Index index, const CustomProperty& entry, const Property::Value& value ); + virtual Property::Value GetDefaultProperty( Property::Index index ) const; /** - * @copydoc Dali::Internal::ProxyObject::GetDefaultProperty() + * @copydoc Dali::Internal::Object::GetDefaultPropertyCurrentValue() */ - virtual Property::Value GetDefaultProperty( Property::Index index ) const; + virtual Property::Value GetDefaultPropertyCurrentValue( Property::Index index ) const; /** - * @copydoc Dali::Internal::ProxyObject::InstallSceneObjectProperty() + * @copydoc Dali::Internal::Object::OnNotifyDefaultPropertyAnimation() */ - virtual void InstallSceneObjectProperty( SceneGraph::PropertyBase& newProperty, const std::string& name, unsigned int index ); + virtual void OnNotifyDefaultPropertyAnimation( Animation& animation, Property::Index index, const Property::Value& value ); /** - * @copydoc Dali::Internal::ProxyObject::GetSceneObject() + * @copydoc Dali::Internal::Object::GetSceneObject() */ virtual const SceneGraph::PropertyOwner* GetSceneObject() const; /** - * @copydoc Dali::Internal::ProxyObject::GetSceneObjectAnimatableProperty() + * @copydoc Dali::Internal::Object::GetSceneObjectAnimatableProperty() */ virtual const SceneGraph::PropertyBase* GetSceneObjectAnimatableProperty( Property::Index index ) const; /** - * @copydoc Dali::Internal::ProxyObject::GetSceneObjectInputProperty() + * @copydoc Dali::Internal::Object::GetSceneObjectInputProperty() */ virtual const PropertyInputImpl* GetSceneObjectInputProperty( Property::Index index ) const; @@ -332,7 +361,7 @@ public: //signals /** * @copydoc Dali::RenderTask::FinishedSignal() */ - Dali::RenderTask::RenderTaskSignalV2& FinishedSignal(); + Dali::RenderTask::RenderTaskSignalType& FinishedSignal(); /** * Connects a callback function with the object's signals. @@ -349,10 +378,9 @@ protected: /** * Construct a new RenderTask. - * @param[in] eventToUpdate Used to send messages to the update-thread. * @param[in] isSystemLevel Whether the RenderTask is on the system level task list. */ - RenderTask( EventToUpdate& eventToUpdate, bool isSystemLevel ); + RenderTask( bool isSystemLevel ); /** * A reference counted object may only be deleted by calling Unreference() @@ -362,7 +390,7 @@ protected: /** * Helper class for connecting Nodes to the scene-graph RenderTask */ - class Connector : public ProxyObject::Observer + class Connector : public Object::Observer { public: @@ -394,22 +422,22 @@ protected: */ void UpdateRenderTask(); - public: // From ProxyObject::Observer + public: // From Object::Observer /** - * @copydoc Dali::Internal::ProxyObject::Observer::SceneObjectAdded + * @copydoc Dali::Internal::Object::Observer::SceneObjectAdded */ - virtual void SceneObjectAdded( ProxyObject& proxy ); + virtual void SceneObjectAdded( Object& object ); /** - * @copydoc Dali::Internal::ProxyObject::Observer::SceneObjectAdded + * @copydoc Dali::Internal::Object::Observer::SceneObjectAdded */ - virtual void SceneObjectRemoved( ProxyObject& proxy ); + virtual void SceneObjectRemoved( Object& object ); /** - * @copydoc Dali::Internal::ProxyObject::Observer::ProxyDestroyed + * @copydoc Dali::Internal::Object::Observer::ObjectDestroyed */ - virtual void ProxyDestroyed( ProxyObject& proxy ); + virtual void ObjectDestroyed( Object& object ); private: @@ -426,25 +454,29 @@ protected: RenderTask& mRenderTask; Actor* mActor; ///< Raw-pointer to the actor; not owned. + const SceneGraph::Camera* mCamera; ///< Raw-pointer to camera scene-graph object; not owned. }; private: - EventToUpdate& mEventToUpdate; - SceneGraph::RenderTask* mSceneObject; ///< Raw-pointer to the scene-graph object; not owned. Connector mSourceConnector; ///< Responsible for connecting/disconnecting source Nodes Connector mCameraConnector; ///< Responsible for connecting/disconnecting camera Nodes - Connector mMappingConnector; /// Responsible for connecting/disconnection actor node, which used to mapping screen to frame buffer coordinate + Connector mMappingConnector; /// Responsible for connecting/disconnecting actor node, which used to mapping screen to frame buffer coordinate Vector4 mClearColor; ///< Optional clear color + Vector2 mViewportPosition; ///< The cached viewport position + Vector2 mViewportSize; ///< The cached viewport size + unsigned int mRefreshRate; ///< Determines how often the task is processed. unsigned int mRefreshOnceCounter; - Dali::FrameBufferImage mFrameBufferImage; ///< Optional off-screen render target. + FrameBufferImagePtr mFrameBufferImage; ///< Optional off-screen render target. + FrameBufferPtr mFrameBuffer; + Dali::RenderTask::ScreenToFrameBufferFunction mScreenToFrameBufferFunction; ///< Used to convert screen to frame-buffer coordinates @@ -453,9 +485,10 @@ private: bool mClearEnabled : 1; ///< True if the render-task should be clear the color buffer. bool mCullMode : 1; ///< True if the render-task's actors should be culled bool mIsSystemLevel : 1; ///< True if the render-task is on the system level task list. + bool mRequiresSync : 1; ///< True if the GL sync is required to track the render of. //Signals - Dali::RenderTask::RenderTaskSignalV2 mSignalFinishedV2; ///< Signal emmited when the render task has been processed. + Dali::RenderTask::RenderTaskSignalType mSignalFinished; ///< Signal emmited when the render task has been processed. }; } // namespace Internal