X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fevent%2Factors%2Fcamera-actor-impl.h;h=a817811c989edfbbf9b645660ba2f335693f65e0;hb=65a298ff258cc898f11b042175f95a10a1bc1179;hp=30f9bc6d790cd24ce84f24daa499111cb09a438b;hpb=81dc8fa898dcdaaf3f1780b909ad6e4f7e33bd92;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/event/actors/camera-actor-impl.h b/dali/internal/event/actors/camera-actor-impl.h index 30f9bc6..a817811 100644 --- a/dali/internal/event/actors/camera-actor-impl.h +++ b/dali/internal/event/actors/camera-actor-impl.h @@ -1,8 +1,8 @@ -#ifndef __DALI_INTERNAL_CAMERA_ACTOR_H__ -#define __DALI_INTERNAL_CAMERA_ACTOR_H__ +#ifndef DALI_INTERNAL_CAMERA_ACTOR_H +#define DALI_INTERNAL_CAMERA_ACTOR_H /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 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,16 +19,15 @@ */ // INTERNAL INCLUES -#include -#include +#include #include +#include +#include namespace Dali { - namespace Internal { - namespace SceneGraph { class Camera; @@ -40,7 +39,6 @@ class Camera; class CameraActor : public Actor { public: - /** * Create an initialised camera actor. * @@ -50,12 +48,21 @@ public: * * @return A smart-pointer to a newly allocated camera actor. */ - static CameraActorPtr New( const Size& size ); + static CameraActorPtr New(const Size& size); + + /** + * Sets the reflection plane for the camera + * + * @param[in] plane Plane parameters + * + * @note plane.xyz are normal vector of the plane. + */ + void SetReflectByPlane(const Vector4& plane); /** * @copydoc Dali::CameraActor::SetTargetPosition */ - void SetTarget( const Vector3& targetPosition ); + void SetTarget(const Vector3& targetPosition); /** * @copydoc Dali::CameraActor::GetTargetPosition @@ -65,7 +72,7 @@ public: /** * @copydoc Dali::CameraActor::SetType */ - void SetType( Dali::Camera::Type type ); + void SetType(Dali::Camera::Type type); /** * @copydoc Dali::CameraActor::GetType @@ -75,7 +82,7 @@ public: /** * @copydoc Dali::CameraActor::SetProjectionMode */ - void SetProjectionMode( Dali::Camera::ProjectionMode mode ); + void SetProjectionMode(Dali::Camera::ProjectionMode mode); /** * @copydoc Dali::CameraActor::GetProjectionMode @@ -83,9 +90,16 @@ public: Dali::Camera::ProjectionMode GetProjectionMode() const; /** + * @brief Set the projection direction + * + * @param[in] direction Direction of projection + */ + void SetProjectionDirection(Dali::DevelCameraActor::ProjectionDirection direction); + + /** * @copydoc Dali::CameraActor::SetFieldOfView */ - void SetFieldOfView( float fieldOfView ); + void SetFieldOfView(float fieldOfView); /** * @copydoc Dali::CameraActor::GetFieldOfView @@ -95,7 +109,7 @@ public: /** * @copydoc Dali::CameraActor::SetAspectRatio */ - void SetAspectRatio( float aspectRatio ); + void SetAspectRatio(float aspectRatio); /** * @copydoc Dali::CameraActor::GetAspectRatio @@ -105,7 +119,7 @@ public: /** * @copydoc Dali::CameraActor::SetNearClippingPlane */ - void SetNearClippingPlane( float nearClippingPlane ); + void SetNearClippingPlane(float nearClippingPlane); /** * @copydoc Dali::CameraActor::GetNearClippingPlane @@ -115,7 +129,7 @@ public: /** * @copydoc Dali::CameraActor::SetFarClippingPlane */ - void SetFarClippingPlane( float farClippingPlane ); + void SetFarClippingPlane(float farClippingPlane); /** * @copydoc Dali::CameraActor::GetFarClippingPlane @@ -125,27 +139,27 @@ public: /** * @param leftClippingPlane to use */ - void SetLeftClippingPlane( float leftClippingPlane ); + void SetLeftClippingPlane(float leftClippingPlane); /** * @param rightClippingPlane to use */ - void SetRightClippingPlane( float rightClippingPlane ); + void SetRightClippingPlane(float rightClippingPlane); /** * @param topClippingPlane to use */ - void SetTopClippingPlane( float topClippingPlane ); + void SetTopClippingPlane(float topClippingPlane); /** * @param bottomClippingPlane to use */ - void SetBottomClippingPlane( float bottomClippingPlane ); + void SetBottomClippingPlane(float bottomClippingPlane); /** * @copydoc Dali::CameraActor::SetInvertYAxis */ - void SetInvertYAxis( bool invertYAxis ); + void SetInvertYAxis(bool invertYAxis); /** * @copydoc Dali::CameraActor::GetCurrentInvertYAxis @@ -154,19 +168,18 @@ public: /** * @copydoc Dali::CameraActor::SetPerspectiveProjection() - * @param[in] stereoBias The frustum horizontal and vertical offset for stereoscopic cameras */ - void SetPerspectiveProjection( const Size& size, const Vector2& stereoBias = Vector2::ZERO ); + void SetPerspectiveProjection(const Size& size); /** * @copydoc Dali::CameraActor::SetOrthographicProjection(const Vector2& size); */ - void SetOrthographicProjection( const Vector2& size ); + void SetOrthographicProjection(const Vector2& size); /** * @copydoc Dali::CameraActor::SetOrthographicProjection(float left, float right, float top, float bottom, float near, float far); */ - void SetOrthographicProjection( float left, float right, float top, float bottom, float near, float far ); + void SetOrthographicProjection(float left, float right, float top, float bottom, float near, float far); /** * Build a picking ray with this camera and given screen coordinates @@ -176,7 +189,7 @@ public: * @param [out] rayDirection for the picking ray * @return true if the building was successful, false if its not possible (camera is not valid for hit testing) */ - bool BuildPickingRay( const Vector2& screenCoordinates, const Viewport& viewport, Vector4& rayOrigin, Vector4& rayDirection ); + bool BuildPickingRay(const Vector2& screenCoordinates, const Viewport& viewport, Vector4& rayOrigin, Vector4& rayDirection); /** * Retrieve the view-matrix; This will only be valid when the actor is on-stage. @@ -196,102 +209,79 @@ public: */ const SceneGraph::Camera* GetCamera() const; -public: // properties - - /** - * copydoc Dali::Internal::Object - */ - virtual unsigned int GetDefaultPropertyCount() const; - - /** - * @copydoc Dali::Internal::Object::GetDefaultPropertyIndices() - */ - virtual void GetDefaultPropertyIndices( Property::IndexContainer& indices ) const; - /** - * copydoc Dali::Internal::Object + * Rotate the projection. + * It is used in case that the target buffer direction is different from the window direction. + * @param [in] rotationAngle The rotation angle */ - virtual bool IsDefaultPropertyAnimatable( Property::Index index ) const; - - /** - * @copydoc Dali::Internal::Object::IsDefaultPropertyAConstraintInput() - */ - virtual bool IsDefaultPropertyAConstraintInput( Property::Index index ) const; - - /** - * copydoc Dali::Internal::Object - */ - virtual Property::Type GetDefaultPropertyType( Property::Index index ) const; - - /** - * copydoc Dali::Internal::Object - */ - virtual const char* GetDefaultPropertyName( Property::Index index ) const; - - /** - * @copydoc Dali::Internal::Object::GetDefaultPropertyIndex() - */ - virtual Property::Index GetDefaultPropertyIndex(const std::string& name) const; + void RotateProjection(int rotationAngle); +public: // properties /** * copydoc Dali::Internal::Object::SetDefaultProperty() */ - virtual void SetDefaultProperty( Property::Index index, const Property::Value& propertyValue ); + void SetDefaultProperty(Property::Index index, const Property::Value& propertyValue) override; /** * copydoc Dali::Internal::Object::GetDefaultProperty() */ - virtual Property::Value GetDefaultProperty( Property::Index index ) const; + Property::Value GetDefaultProperty(Property::Index index) const override; /** * copydoc Dali::Internal::Object::GetDefaultPropertyCurrentValue() */ - virtual Property::Value GetDefaultPropertyCurrentValue( Property::Index index ) const; + Property::Value GetDefaultPropertyCurrentValue(Property::Index index) const override; /** - * copydoc Dali::Internal::Object + * @copydoc Dali::Internal::Object::GetSceneObjectInputProperty() */ - virtual bool IsDefaultPropertyWritable( Property::Index index ) const ; + const PropertyInputImpl* GetSceneObjectInputProperty(Property::Index index) const override; +private: /** - * @copydoc Dali::Internal::Object::GetSceneObjectAnimatableProperty() + * Constructor; see also CameraActor::New() + * @param node the scene graph node */ - virtual const SceneGraph::PropertyBase* GetSceneObjectAnimatableProperty( Property::Index index ) const; + CameraActor(const SceneGraph::Node& node); /** - * @copydoc Dali::Internal::Object::GetSceneObjectInputProperty() + * A reference counted object may only be deleted by calling Unreference() */ - virtual const PropertyInputImpl* GetSceneObjectInputProperty( Property::Index index ) const; - -private: + ~CameraActor() override; /** - * Constructor; see also CameraActor::New() + * @copydoc Dali::Internal::Actor::OnInitialize() */ - CameraActor(); + void OnInitialize() override; /** - * A reference counted object may only be deleted by calling Unreference() + * @copydoc Dali::Internal::Actor::OnSceneConnectionInternal() */ - virtual ~CameraActor(); + void OnSceneConnectionInternal() override; -private: // Data + /** + * @copydoc Internal::Object::OnPropertySet + */ + void OnPropertySet(Property::Index index, const Property::Value& propertyValue) override; +private: // Data const SceneGraph::Camera* mSceneObject; ///< Not owned - Vector3 mTarget; - Dali::Camera::Type mType; - Dali::Camera::ProjectionMode mProjectionMode; - float mFieldOfView; - float mAspectRatio; - float mNearClippingPlane; - float mFarClippingPlane; - float mLeftClippingPlane; - float mRightClippingPlane; - float mTopClippingPlane; - float mBottomClippingPlane; - bool mInvertYAxis; - + Vector3 mTarget; + Vector2 mCanvasSize; + Dali::Camera::Type mType; + Dali::Camera::ProjectionMode mProjectionMode; + Dali::DevelCameraActor::ProjectionDirection mProjectionDirection; + float mFieldOfView; + float mAspectRatio; + float mNearClippingPlane; + float mFarClippingPlane; + float mLeftClippingPlane; + float mRightClippingPlane; + float mTopClippingPlane; + float mBottomClippingPlane; + bool mInvertYAxis; + bool mPropertyChanged; }; } // namespace Internal @@ -318,4 +308,4 @@ inline const Internal::CameraActor& GetImplementation(const Dali::CameraActor& c } // namespace Dali -#endif // __DALI_INTERNAL_CAMERA_ACTOR_H__ +#endif // DALI_INTERNAL_CAMERA_ACTOR_H