X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Fpublic-api%2Factors%2Fcamera-actor.h;h=00337f220c886f39f9735f639957f620c8a07c34;hb=9c6cd5cbe26eb355f2f0daeaae85a28a8d81a3b3;hp=d02a83529f84a58c635271896bab9b6f2daf0924;hpb=da2e24f853c2f463df2f4b743c3b2241a537cefd;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/public-api/actors/camera-actor.h b/dali/public-api/actors/camera-actor.h index d02a835..00337f2 100644 --- a/dali/public-api/actors/camera-actor.h +++ b/dali/public-api/actors/camera-actor.h @@ -1,8 +1,8 @@ -#ifndef __DALI_CAMERA_ACTOR_H__ -#define __DALI_CAMERA_ACTOR_H__ +#ifndef DALI_CAMERA_ACTOR_H +#define DALI_CAMERA_ACTOR_H /* - * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 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. @@ -54,8 +54,8 @@ enum Type */ enum ProjectionMode { - PERSPECTIVE_PROJECTION, ///< Distance causes foreshortening; objects further from the camera appear smaller @SINCE_1_0.0 - ORTHOGRAPHIC_PROJECTION, ///< Relative distance from the camera does not affect the size of objects @SINCE_1_0.0 + PERSPECTIVE_PROJECTION, ///< Distance causes foreshortening; objects further from the camera appear smaller @SINCE_1_0.0 + ORTHOGRAPHIC_PROJECTION, ///< Relative distance from the camera does not affect the size of objects @SINCE_1_0.0 }; } // namespace Camera @@ -72,7 +72,8 @@ enum ProjectionMode * (configured to have the origin of the coordinate system at the top-left corner of the screen, and unit 1 as 1 pixel of the screen). * This is a typical way. * - * - For 3D applications, you can change the view by manipulating the camera. You can translate or rotate the camera in this case. + * - For 3D applications, you can change the view by manipulating the camera. If you config some camera properties, + * or create camera by @see New3DCamera(), you can translate or rotate the camera whatever you want. * Note that the top-left corner of the screen and unit 1 no longer are (0,0,0) and 1 pixel after manipulating the camera. * * There are two types of camera actor, FREE_LOOK and LOOK_AT_TARGET. By default, @@ -86,10 +87,9 @@ enum ProjectionMode * * @SINCE_1_0.0 */ -class DALI_IMPORT_API CameraActor : public Actor +class DALI_CORE_API CameraActor : public Actor { public: - /** * @brief Enumeration for the instance of properties belonging to the CameraActor class. * @@ -135,7 +135,10 @@ public: /** * @brief Creates a CameraActor object. * - * Sets the default camera perspective projection for the stage's size. @see SetPerspectiveProjection(). + * @note Sets the default camera perspective projection for the size of the scene this is added to. @see SetPerspectiveProjection(). + * @note When this actor gets added to a scene, then it's Z position will be modified according to the required perspective projection. + * After modified Z position, 1-world-unit become 1-pixel. + * * @SINCE_1_0.0 * @return The newly created camera actor */ @@ -150,7 +153,18 @@ public: * @param[in] size The canvas size * @return The newly created camera actor */ - static CameraActor New( const Size& size ); + static CameraActor New(const Size& size); + + /** + * @brief Creates a CameraActor object initialize by 3D parameter. + * + * Intialize default perspective camera s.t. properties as good to be used on 3D app case. + * Default camera positioned at +Z axis, and fit to see 1-world-unit sized cube on world origin. + * + * @SINCE_2_2.15 + * @return The newly created camera actor + */ + static CameraActor New3DCamera(); /** * @brief Downcasts a handle to CameraActor handle. @@ -161,7 +175,7 @@ public: * @param[in] handle to An object * @return Handle to a CameraActor or an uninitialized handle */ - static CameraActor DownCast( BaseHandle handle ); + static CameraActor DownCast(BaseHandle handle); /** * @brief Destructor. @@ -189,12 +203,29 @@ public: CameraActor& operator=(const CameraActor& rhs); /** + * @brief Move constructor. + * + * @SINCE_2_2.4 + * @param[in] rhs A reference to the actor to move + */ + CameraActor(CameraActor&& rhs); + + /** + * @brief Move assignment operator. + * + * @SINCE_2_2.4 + * @param[in] rhs A reference to the actor to move + * @return A reference to this + */ + CameraActor& operator=(CameraActor&& rhs); + + /** * @brief Sets the camera type. * The default type is Dali::Camera::FREE_LOOK * @SINCE_1_0.0 * @param[in] type The camera type */ - void SetType( Dali::Camera::Type type ); + void SetType(Dali::Camera::Type type); /** * @brief Gets the type of the camera. @@ -210,7 +241,7 @@ public: * @SINCE_1_0.0 * @param[in] mode One of PERSPECTIVE_PROJECTION or ORTHOGRAPHIC_PROJECTION */ - void SetProjectionMode( Dali::Camera::ProjectionMode mode ); + void SetProjectionMode(Dali::Camera::ProjectionMode mode); /** * @brief Gets the projection mode. @@ -222,11 +253,12 @@ public: /** * @brief Sets the field of view. + * Field of view will be used when ProjectionMode is PERSPECTIVE_PROJECTION. * * @SINCE_1_0.0 * @param[in] fieldOfView The field of view in radians */ - void SetFieldOfView( float fieldOfView ); + void SetFieldOfView(float fieldOfView); /** * @brief Gets the field of view in Radians. @@ -235,7 +267,7 @@ public: * @SINCE_1_0.0 * @return The field of view in radians */ - float GetFieldOfView( ); + float GetFieldOfView(); /** * @brief Sets the aspect ratio. @@ -243,7 +275,7 @@ public: * @SINCE_1_0.0 * @param[in] aspectRatio The aspect ratio */ - void SetAspectRatio( float aspectRatio ); + void SetAspectRatio(float aspectRatio); /** * @brief Gets the aspect ratio of the camera. @@ -252,7 +284,7 @@ public: * @SINCE_1_0.0 * @return The aspect ratio */ - float GetAspectRatio( ); + float GetAspectRatio(); /** * @brief Sets the near clipping plane distance. @@ -260,7 +292,7 @@ public: * @SINCE_1_0.0 * @param[in] nearClippingPlane Distance of the near clipping plane */ - void SetNearClippingPlane( float nearClippingPlane ); + void SetNearClippingPlane(float nearClippingPlane); /** * @brief Gets the near clipping plane distance. @@ -270,7 +302,7 @@ public: * @SINCE_1_0.0 * @return The near clipping plane value */ - float GetNearClippingPlane( ); + float GetNearClippingPlane(); /** * @brief Sets the far clipping plane distance. @@ -278,7 +310,7 @@ public: * @SINCE_1_0.0 * @param[in] farClippingPlane Distance of the far clipping plane */ - void SetFarClippingPlane( float farClippingPlane ); + void SetFarClippingPlane(float farClippingPlane); /** * @brief Gets the far clipping plane distance. @@ -287,7 +319,7 @@ public: * @SINCE_1_0.0 * @return The far clipping plane value */ - float GetFarClippingPlane( ); + float GetFarClippingPlane(); /** * @brief Sets the target position of the camera. @@ -296,7 +328,7 @@ public: * @param[in] targetPosition The position of the target to look at * @pre Camera type is LOOK_AT_TARGET. */ - void SetTargetPosition( const Vector3& targetPosition ); + void SetTargetPosition(const Vector3& targetPosition); /** * @brief Gets the Camera Target position. @@ -331,16 +363,15 @@ public: * Sets the near and far clipping planes, the field of view, the aspect ratio, * and the Z position of the actor based on the canvas size so that 1 unit in * XY (z=0) plane is 1 pixel on screen. - * - * If the canvas size is ZERO, it sets the default camera perspective - * projection for the stage's size. + * Also, It will set orthographic size be fitted as XY plane. * * @SINCE_1_0.0 * @param[in] size The canvas size - * @pre If size is non ZERO, \e width and \e height must be greater than zero. - * + * @pre The canvas size must be greater than zero. + * @note If either of the values of size is 0.0f, then we use the default perspective projection for the size of the scene this actor is added to. + * @note This modifies the Z position property of this actor as well. */ - void SetPerspectiveProjection( const Size& size ); + void SetPerspectiveProjection(const Size& size); /** * @brief Sets the camera projection to use orthographic projection. @@ -356,22 +387,7 @@ public: * @SINCE_1_0.0 * @param[in] size Size of XY plane (normal to camera axis) */ - void SetOrthographicProjection( const Size& size ); - - /** - * @brief Sets the camera projection to use orthographic projection with the given clip planes. - * - * This does not change the Z value of the camera actor. - * - * @SINCE_1_0.0 - * @param[in] left Distance to left clip plane (normal to camera axis) - * @param[in] right Distance to right clip plane (normal to camera axis) - * @param[in] top Distance to top clip plane (normal to camera axis) - * @param[in] bottom Distance to bottom clip plane (normal to camera axis) - * @param[in] near Distance to the near clip plane (along camera axis) - * @param[in] far Distance to the far clip plane (along camera axis) - */ - void SetOrthographicProjection( float left, float right, float top, float bottom, float near, float far ); + void SetOrthographicProjection(const Size& size); public: // Not intended for use by Application developers /// @cond internal @@ -390,4 +406,4 @@ public: // Not intended for use by Application developers */ } // namespace Dali -#endif // __DALI_CAMERA_ACTOR_H__ +#endif // DALI_CAMERA_ACTOR_H