X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fvisuals%2Fprimitive%2Fprimitive-visual.h;h=6608fefe292dd1d6065c9b58f21a3ba5aceaf0e8;hb=b8da2e53925b9abb9fa362560069e8ca4aa62f81;hp=59979f84906c0deaedd0df7759a3d3f0d878ae9c;hpb=29d3264d67c7dac9c3e7059140fa7eef3592a823;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/visuals/primitive/primitive-visual.h b/dali-toolkit/internal/visuals/primitive/primitive-visual.h index 59979f8..6608fef 100644 --- a/dali-toolkit/internal/visuals/primitive/primitive-visual.h +++ b/dali-toolkit/internal/visuals/primitive/primitive-visual.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_INTERNAL_PRIMITIVE_VISUAL_H /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -48,20 +48,17 @@ #include // INTERNAL INCLUDES -#include #include +#include namespace Dali { - namespace Toolkit { - namespace Internal { - class PrimitiveVisual; -typedef IntrusivePtr< PrimitiveVisual > PrimitiveVisualPtr; +typedef IntrusivePtr PrimitiveVisualPtr; /** * The visual which renders a simple 3D shape to the control's quad @@ -79,11 +76,11 @@ typedef IntrusivePtr< PrimitiveVisual > PrimitiveVisualPtr; * | %Property Name | Type | Shapes Affected | * |-------------------|-------------|------------------------------------------| * | shapeColor | VECTOR4 | all | - * | slices | INTEGER | sphere, cone, conical frustrum, cylinder | + * | slices | INTEGER | sphere, cone, conical frustum, cylinder | * | stacks | INTEGER | sphere | - * | scaleTopRadius | FLOAT | conical frustrum | - * | scaleBottomRadius | FLOAT | cone, conical frustrum | - * | scaleHeight | FLOAT | cone, conical frustrum, cylinder | + * | scaleTopRadius | FLOAT | conical frustum | + * | scaleBottomRadius | FLOAT | cone, conical frustum | + * | scaleHeight | FLOAT | cone, conical frustum, cylinder | * | scaleRadius | FLOAT | cylinder | * | scaleDimensions | VECTOR3 | cube, octahedron, bevelled cube | * | bevelPercentage | FLOAT | bevelled cube | @@ -97,53 +94,41 @@ typedef IntrusivePtr< PrimitiveVisual > PrimitiveVisualPtr; * |-----------------|-------------|-----------------------------------------| * | lightPosition | VECTOR3 | The position (on stage) of the light | */ -class PrimitiveVisual: public Visual::Base +class PrimitiveVisual : public Visual::Base { public: - /** * @brief Create a new primitive visual. * * @param[in] factoryCache A pointer pointing to the VisualFactoryCache object + * @param[in] properties A Property::Map containing settings for this visual * @return A smart-pointer to the newly allocated visual. */ - static PrimitiveVisualPtr New( VisualFactoryCache& factoryCache ); - -public: // from Visual - - /** - * @copydoc Visual::Base::SetSize - */ - virtual void SetSize( const Vector2& size ); + static PrimitiveVisualPtr New(VisualFactoryCache& factoryCache, const Property::Map& properties); +public: // from Visual /** * @copydoc Visual::Base::GetNaturalSize */ - virtual void GetNaturalSize( Vector2& naturalSize ) const; + void GetNaturalSize(Vector2& naturalSize) override; /** * @copydoc Visual::Base::CreatePropertyMap */ - virtual void DoCreatePropertyMap( Property::Map& map ) const; - - /** - * @copydoc Visual::Base::DoSetProperty - */ - virtual void DoSetProperty( Dali::Property::Index index, const Dali::Property::Value& propertyValue ); + void DoCreatePropertyMap(Property::Map& map) const override; /** - * @copydoc Visual::Base::DoGetProperty + * @copydoc Visual::Base::CreateInstancePropertyMap */ - virtual Dali::Property::Value DoGetProperty( Dali::Property::Index index ); + void DoCreateInstancePropertyMap(Property::Map& map) const override; protected: - /** * @brief Constructor. * * @param[in] factoryCache A pointer pointing to the VisualFactoryCache object */ - PrimitiveVisual( VisualFactoryCache& factoryCache ); + PrimitiveVisual(VisualFactoryCache& factoryCache); /** * @brief A reference counted object may only be deleted by calling Unreference(). @@ -151,26 +136,38 @@ protected: virtual ~PrimitiveVisual(); /** - * @copydoc Visual::Base::DoInitialize + * @copydoc Visual::Base::OnInitialize */ - virtual void DoInitialize( Actor& actor, const Property::Map& propertyMap ); + void OnInitialize() override; /** - * @copydoc Visual::Base::DoSetOnStage + * @copydoc Visual::Base::DoSetProperties */ - virtual void DoSetOnStage( Actor& actor ); + void DoSetProperties(const Property::Map& propertyMap) override; -private: + /** + * @copydoc Visual::Base::DoSetOnScene + */ + void DoSetOnScene(Actor& actor) override; + /** + * @copydoc Visual::Base::OnSetTransform + */ + void OnSetTransform() override; + +private: //Simple struct to store the position and normal of a single vertex. struct Vertex { Vertex() - {} + { + } - Vertex( const Vector3& position, const Vector3& normal, const Vector2& textureCoord ) - : position( position ), normal( normal ) - {} + Vertex(const Vector3& position, const Vector3& normal, const Vector2& textureCoord) + : position(position), + normal(normal) + { + } Vector3 position; Vector3 normal; @@ -203,7 +200,7 @@ private: * @param[in] slices The number of slices as you go around the sphere. Affects the smoothness of the surface. * @param[in] stacks The number of stacks as you go down the sphere. Affects the smoothness of the surface. */ - void CreateSphere( Vector& vertices, Vector& indices, int slices, int stacks ); + void CreateSphere(Vector& vertices, Vector& indices, int slices, int stacks); /** * @brief Compute the vertices and the triangles for a conic shape. @@ -214,8 +211,7 @@ private: * @param[in] scaleHeight The scale of the height of the object, compared to the other dimensions. * @param[in] slices The number of slices as you go around the conic shape. Affects the smoothness of the surface. */ - void CreateConic( Vector& vertices, Vector& indices, float scaleTopRadius, - float scaleBottomRadius, float scaleHeight, int slices ); + void CreateConic(Vector& vertices, Vector& indices, float scaleTopRadius, float scaleBottomRadius, float scaleHeight, int slices); /** * @brief Compute the vertices and the triangles for a bevelled cube. @@ -225,8 +221,7 @@ private: * @param[in] bevelPercentage The ratio of the outer face widths to the cube's width. Between 0.0 and 1.0. * @param[in] bevelSmoothness The smoothness of the bevelled edges. Between 0.0 and 1.0. */ - void CreateBevelledCube( Vector& vertices, Vector& indices, Vector3 dimensions, - float bevelPercentage, float bevelSmoothness ); + void CreateBevelledCube(Vector& vertices, Vector& indices, Vector3 dimensions, float bevelPercentage, float bevelSmoothness); /** * @brief Computes look-up tables for sin and cos, over angle divisions of (2 * Pi) / divisions @@ -235,7 +230,7 @@ private: * @param[in] divisions Determines the angle coverage of the table. E.g divisions of '4' will have the sin values 0 = sin(0), 1 = sin(Pi/2), 2 = sin(Pi), 3 = sin(3Pi/2) * @Param[in] halfCircle If true, go from 0 to Pi instead of 0 to 2Pi. */ - void ComputeCircleTables( Vector& sinTable, Vector& cosTable, int divisions, bool halfCircle ); + void ComputeCircleTables(Vector& sinTable, Vector& cosTable, int divisions, bool halfCircle); /** * @brief Compute the vertices for a sphere. @@ -243,7 +238,7 @@ private: * @param[in] slices The number of slices as you go around the sphere. Affects the smoothness of the surface. * @param[in] stacks The number of stacks as you go down the sphere. Affects the smoothness of the surface. */ - void ComputeSphereVertices( Vector& vertices, int slices, int stacks ); + void ComputeSphereVertices(Vector& vertices, int slices, int stacks); /** * @brief Compute the triangles for a sphere. @@ -251,7 +246,7 @@ private: * @param[in] slices The number of slices as you go around the sphere. Affects the smoothness of the surface. * @param[in] stacks The number of stacks as you go down the sphere. Affects the smoothness of the surface. */ - void FormSphereTriangles( Vector& indices, int slices, int stacks ); + void FormSphereTriangles(Vector& indices, int slices, int stacks); /** * @brief Compute the vertices for a conical. @@ -261,8 +256,7 @@ private: * @param[in] scaleHeight The scale of the height of the object, compared to the other dimensions. * @param[in] slices The number of slices as you go around the conical. Affects the smoothness of the surface. */ - void ComputeConicVertices( Vector& vertices, float scaleTopRadius, float scaleBottomRadius, - float scaleHeight, int slices ); + void ComputeConicVertices(Vector& vertices, float scaleTopRadius, float scaleBottomRadius, float scaleHeight, int slices); /** * @brief Compute the triangles for a conic. @@ -271,21 +265,20 @@ private: * @param[in] coneBottom True if the bottom circle has a radius of zero, i.e. the object is an inverted complete cone. * @param[in] slices The number of slices as you go around the conic. Affects the smoothness of the surface. */ - void FormConicTriangles( Vector& indices, float scaleTopRadius, float scaleBottomRadius, - int slices ); + void FormConicTriangles(Vector& indices, float scaleTopRadius, float scaleBottomRadius, int slices); /** * @brief Compute the vertices for a cube. * @param[in, out] vertices The vector of vertices. * @Param[in] dimensions The dimensions of the object. */ - void ComputeCubeVertices( Vector& vertices, Vector3 dimensions ); + void ComputeCubeVertices(Vector& vertices, Vector3 dimensions); /** * @brief Compute the triangles for a cube. * @param[in, out] indices The vector of triangles, consisting of groups of three vertex indices. */ - void FormCubeTriangles( Vector& indices ); + void FormCubeTriangles(Vector& indices); /** * @brief Compute the vertices for an octahedron (maximumly bevelled cube). @@ -293,13 +286,13 @@ private: * @Param[in] dimensions The dimensions of the object. * @Param[in] smoothness Defines how rounded the edges appear under lighting. Between 0.0 and 1.0. */ - void ComputeOctahedronVertices( Vector& vertices, Vector3 dimensions, float smoothness ); + void ComputeOctahedronVertices(Vector& vertices, Vector3 dimensions, float smoothness); /** * @brief Compute the triangles for an octahedron. * @param[in, out] indices The vector of triangles, consisting of groups of three vertex indices. */ - void FormOctahedronTriangles( Vector& indices ); + void FormOctahedronTriangles(Vector& indices); /** * @brief Compute the vertices for a bevelled cube. @@ -308,29 +301,26 @@ private: * @param[in] bevelPercentage The ratio of the outer face widths to the cube's width. Between 0.0 and 1.0. * @param[in] bevelSmoothness The smoothness of the bevelled edges. Between 0.0 and 1.0. */ - void ComputeBevelledCubeVertices( Vector& vertices, Vector3 dimensions, float bevelPercentage, - float bevelSmoothness ); + void ComputeBevelledCubeVertices(Vector& vertices, Vector3 dimensions, float bevelPercentage, float bevelSmoothness); /** * @brief Compute the triangles for a bevelled cube. * @param[in, out] indices The vector of triangles, consisting of groups of three vertex indices. */ - void FormBevelledCubeTriangles( Vector& indices ); + void FormBevelledCubeTriangles(Vector& indices); private: - // Undefined - PrimitiveVisual( const PrimitiveVisual& PrimitiveVisual ); + PrimitiveVisual(const PrimitiveVisual& PrimitiveVisual); // Undefined - PrimitiveVisual& operator=( const PrimitiveVisual& PrimitiveVisual ); + PrimitiveVisual& operator=(const PrimitiveVisual& PrimitiveVisual); private: - Shader mShader; + Shader mShader; Geometry mGeometry; - Vector4 mColor; //Color of shape. - Vector3 mObjectDimensions; //Dimensions of shape, scaled to be between 0.0 and 1.0. + Vector3 mObjectDimensions; //Dimensions of shape, scaled to be between 0.0 and 1.0. Vector3 mSceneCenter; Vector3 mSceneSize; @@ -339,17 +329,17 @@ private: Vector3 mLightPosition; //Shape properties. - Vector3 mScaleDimensions; ///< Scale of dimensions of bevelled cube and sub-shapes. - float mScaleTopRadius; ///< Scale of radius of top circle, to use when creating certain objects. - float mScaleBottomRadius; ///< Scale of radius of bottom circle, to use when creating certain objects. - float mScaleHeight; ///< Scale of height, to use when creating certain objects. - float mScaleRadius; ///< Scale of radius, to use when creating certain objects. - float mBevelPercentage; ///< Used to determine bevel amount when creating certain objects. - float mBevelSmoothness; ///< Used to determine the smoothness of bevelled edges. - int mSlices; ///< Number of slices to use when creating certain objects. - int mStacks; ///< Number of stacks to use when creating certain objects. - - Toolkit::PrimitiveVisual::Shape::Type mPrimitiveType; //Shape to render, as enum. + Vector3 mScaleDimensions; ///< Scale of dimensions of bevelled cube and sub-shapes. + float mScaleTopRadius; ///< Scale of radius of top circle, to use when creating certain objects. + float mScaleBottomRadius; ///< Scale of radius of bottom circle, to use when creating certain objects. + float mScaleHeight; ///< Scale of height, to use when creating certain objects. + float mScaleRadius; ///< Scale of radius, to use when creating certain objects. + float mBevelPercentage; ///< Used to determine bevel amount when creating certain objects. + float mBevelSmoothness; ///< Used to determine the smoothness of bevelled edges. + int mSlices; ///< Number of slices to use when creating certain objects. + int mStacks; ///< Number of stacks to use when creating certain objects. + + Toolkit::PrimitiveVisual::Shape::Type mPrimitiveType; //Shape to render, as enum. }; } // namespace Internal