Merge "Refactored NativeImageInterfaceExtension into NativeImageInterface" into devel...
[platform/core/uifw/dali-core.git] / dali / public-api / rendering / geometry.h
index 14ecb11..a898e56 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_GEOMETRY_H
 
 /*
- * Copyright (c) 2016 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.
@@ -20,6 +20,7 @@
 
 // EXTERNAL INCLUDES
 #include <cstddef> // std::size_t
+#include <cstdint> // uint16_t
 
 // INTERNAL INCLUDES
 #include <dali/public-api/object/handle.h> // Dali::Handle
 
 namespace Dali
 {
+/**
+ * @addtogroup dali_core_rendering_effects
+ * @{
+ */
 
 namespace Internal DALI_INTERNAL
 {
@@ -39,28 +44,28 @@ class Geometry;
  *
  * @SINCE_1_1.43
  */
-class DALI_IMPORT_API Geometry : public BaseHandle
+class DALI_CORE_API Geometry : public BaseHandle
 {
 public:
 
   /**
-   * @brief Describes the type of geometry, used to determine how the coordinates will be used.
-   * @SINCE_1_1.43
+   * @brief Enumeration for the description of the type of geometry, used to determine how the coordinates will be used.
+   * @SINCE_1_1.45
    */
-  enum GeometryType
+  enum Type
   {
-    POINTS,        ///< Individual points                                                                                          @SINCE_1_1.43
-    LINES,         ///< Individual lines (made of 2 points each)                                                                   @SINCE_1_1.43
-    LINE_LOOP,     ///< A strip of lines (made of 1 point each) which also joins the first and last point                          @SINCE_1_1.43
-    LINE_STRIP,    ///< A strip of lines (made of 1 point each)                                                                    @SINCE_1_1.43
-    TRIANGLES,     ///< Individual triangles (made of 3 points each)                                                               @SINCE_1_1.43
-    TRIANGLE_FAN,  ///< A fan of triangles around a centre point (after the first triangle, following triangles need only 1 point) @SINCE_1_1.43
-    TRIANGLE_STRIP ///< A strip of triangles (after the first triangle, following triangles need only 1 point)                     @SINCE_1_1.43
+    POINTS,        ///< Individual points                                                                                          @SINCE_1_1.45
+    LINES,         ///< Individual lines (made of 2 points each)                                                                   @SINCE_1_1.45
+    LINE_LOOP,     ///< A strip of lines (made of 1 point each) which also joins the first and last point                          @SINCE_1_1.45
+    LINE_STRIP,    ///< A strip of lines (made of 1 point each)                                                                    @SINCE_1_1.45
+    TRIANGLES,     ///< Individual triangles (made of 3 points each)                                                               @SINCE_1_1.45
+    TRIANGLE_FAN,  ///< A fan of triangles around a centre point (after the first triangle, following triangles need only 1 point) @SINCE_1_1.45
+    TRIANGLE_STRIP ///< A strip of triangles (after the first triangle, following triangles need only 1 point)                     @SINCE_1_1.45
   };
 
 
   /**
-   * @brief Creates a new Geometry object
+   * @brief Creates a new Geometry object.
    *
    * @SINCE_1_1.43
    * @return A handle to a newly allocated Geometry object
@@ -68,21 +73,21 @@ public:
   static Geometry New();
 
   /**
-   * @brief Default constructor, creates an empty handle
+   * @brief Default constructor, creates an empty handle.
    *
    * @SINCE_1_1.43
    */
   Geometry();
 
   /**
-   * @brief Destructor
+   * @brief Destructor.
    *
    * @SINCE_1_1.43
    */
   ~Geometry();
 
   /**
-   * @brief Copy constructor, creates a new handle to the same object
+   * @brief Copy constructor, creates a new handle to the same object.
    *
    * @SINCE_1_1.43
    * @param[in] handle Handle to an object
@@ -90,17 +95,17 @@ public:
   Geometry( const Geometry& handle );
 
   /**
-   * @brief Downcast to a geometry.
-   * If not the returned handle is left uninitialized.
+   * @brief Downcasts to a geometry.
+   * If not, the returned handle is left uninitialized.
    *
    * @SINCE_1_1.43
    * @param[in] handle Handle to an object
-   * @return geometry Handle or an uninitialized handle
+   * @return Geometry handle or an uninitialized handle
    */
   static Geometry DownCast( BaseHandle handle );
 
   /**
-   * @brief Assignment operator, changes this handle to point at the same object
+   * @brief Assignment operator, changes this handle to point at the same object.
    *
    * @SINCE_1_1.43
    * @param[in] handle Handle to an object
@@ -109,7 +114,24 @@ public:
   Geometry& operator=( const Geometry& handle );
 
   /**
-   * @brief Add a PropertyBuffer to be used as source of geometry vertices
+   * @brief Move constructor.
+   *
+   * @SINCE_1_9.22
+   * @param[in] rhs A reference to the moved handle
+   */
+  Geometry( Geometry&& rhs );
+
+  /**
+   * @brief Move assignment operator.
+   *
+   * @SINCE_1_9.22
+   * @param[in] rhs A reference to the moved handle
+   * @return A reference to this handle
+   */
+  Geometry& operator=( Geometry&& rhs );
+
+  /**
+   * @brief Adds a PropertyBuffer to be used as source of geometry vertices.
    *
    * @SINCE_1_1.43
    * @param[in] vertexBuffer PropertyBuffer to be used as source of geometry vertices
@@ -119,7 +141,7 @@ public:
   std::size_t AddVertexBuffer( PropertyBuffer& vertexBuffer );
 
   /**
-   * @brief Retrieve the number of vertex buffers that have been added to this geometry
+   * @brief Retrieves the number of vertex buffers that have been added to this geometry.
    *
    * @SINCE_1_1.43
    * @return Number of vertex buffers that have been added to this geometry
@@ -127,8 +149,8 @@ public:
   std::size_t GetNumberOfVertexBuffers() const;
 
   /**
-   * @brief Remove a vertex buffer
-   * The index must be between 0 and GetNumberOfVertexBuffers()
+   * @brief Removes a vertex buffer.
+   * The index must be between 0 and GetNumberOfVertexBuffers().
    *
    * @SINCE_1_1.43
    * @param[in] index Index to the vertex buffer to remove
@@ -136,37 +158,37 @@ public:
   void RemoveVertexBuffer( std::size_t index );
 
   /**
-   * @brief Set a the index data to be used as a source of indices for the geometry
+   * @brief Sets a the index data to be used as a source of indices for the geometry
    * Setting this buffer will cause the geometry to be rendered using indices.
-   * To unset call SetIndexBuffer with a null pointer or count 0
+   * To unset call SetIndexBuffer with a null pointer or count 0.
    *
    * @SINCE_1_1.43
    * @param[in] indices Array of indices
    * @param[in] count Number of indices in the array
    */
-  void SetIndexBuffer( const unsigned short* indices, size_t count );
+  void SetIndexBuffer( const uint16_t* indices, size_t count );
 
   /**
-   * @brief Set the type of primitives this geometry contains
+   * @brief Sets the type of primitives this geometry contains.
    *
    * @SINCE_1_1.43
    * @param[in] geometryType Type of primitives this geometry contains
    */
-  void SetGeometryType( GeometryType geometryType );
+  void SetType( Type geometryType );
 
   /**
-   * @brief Get the type of primitives this geometry contains
-   * Calling this function sets the property GEOMETRY_TYPE
+   * @brief Gets the type of primitives this geometry contains.
+   * Calling this function sets the property GEOMETRY_TYPE.
    *
    * @SINCE_1_1.43
    * @return Type of primitives this geometry contains
    */
-  GeometryType GetGeometryType() const;
+  Type GetType() const;
 
 public:
 
   /**
-   * @brief The constructor
+   * @brief The constructor.
    * @note  Not intended for application developers.
    * @SINCE_1_1.43
    * @param[in] pointer A pointer to a newly allocated Geometry
@@ -174,6 +196,9 @@ public:
   explicit DALI_INTERNAL Geometry( Internal::Geometry* pointer );
 };
 
+/**
+ * @}
+ */
 } //namespace Dali
 
 #endif // DALI_GEOMETRY_H