Merge "Sync UTC harness" into devel/master
[platform/core/uifw/dali-core.git] / dali / public-api / images / pixel-data.h
index f1f4921..70e80da 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_PIXEL_DATA_H
 
 /*
- * Copyright (c) 2016 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.
  *
  */
 
+// EXTERNAL INCLUDES
+#include <cstdint> // uint8_t, uint32_t
+
+// INTERNAL INCLUDES
 #include <dali/public-api/images/pixel.h>
 #include <dali/public-api/object/base-handle.h>
 
 namespace Dali
 {
+/**
+ * @addtogroup dali_core_images
+ * @{
+ */
 
 namespace Internal
 {
@@ -36,18 +44,17 @@ class PixelData;
  *
  * @SINCE_1_1.43
  */
-class DALI_IMPORT_API PixelData : public BaseHandle
+class DALI_CORE_API PixelData : public BaseHandle
 {
 public:
-
   /**
    * @brief Enumeration for Function to release the pixel buffer.
    * @SINCE_1_1.43
    */
   enum ReleaseFunction
   {
-    FREE,          ///< Use free function to release the pixel buffer     @SINCE_1_1.43
-    DELETE_ARRAY,  ///< Use delete[] operator to release the pixel buffer @SINCE_1_1.43
+    FREE,         ///< Use free function to release the pixel buffer     @SINCE_1_1.43
+    DELETE_ARRAY, ///< Use delete[] operator to release the pixel buffer @SINCE_1_1.43
   };
 
   /**
@@ -62,14 +69,34 @@ public:
    * @param[in] releaseFunction The function used to release the memory
    * @return A handle to the PixelData
    */
-  static PixelData New( unsigned char* buffer,
-                        unsigned int bufferSize,
-                        unsigned int width,
-                        unsigned int height,
-                        Pixel::Format pixelFormat,
-                        ReleaseFunction releaseFunction);
+  static PixelData New(uint8_t*        buffer,
+                       uint32_t        bufferSize,
+                       uint32_t        width,
+                       uint32_t        height,
+                       Pixel::Format   pixelFormat,
+                       ReleaseFunction releaseFunction);
 
   /**
+   * @brief Creates a PixelData object.
+   *
+   * @SINCE_2_1.10
+   * @param[in] buffer          The raw pixel data
+   * @param[in] bufferSize      The size of the buffer in bytes
+   * @param[in] width           Buffer width in pixels
+   * @param[in] height          Buffer height in pixels
+   * @param[in] stride          Buffer stride in pixels, 0 means the buffer is tightly packed
+   * @param[in] pixelFormat     The pixel format
+   * @param[in] releaseFunction The function used to release the memory
+   * @return A handle to the PixelData
+   */
+  static PixelData New(uint8_t*        buffer,
+                       uint32_t        bufferSize,
+                       uint32_t        width,
+                       uint32_t        height,
+                       uint32_t        stride,
+                       Pixel::Format   pixelFormat,
+                       ReleaseFunction releaseFunction);
+  /**
    * @brief Creates an empty handle.
    * Use PixelData::New() to create an initialized object.
    *
@@ -102,12 +129,29 @@ public:
   PixelData& operator=(const PixelData& rhs);
 
   /**
+   * @brief Move constructor.
+   *
+   * @SINCE_1_9.22
+   * @param[in] rhs A reference to the moved handle
+   */
+  PixelData(PixelData&& rhs);
+
+  /**
+   * @brief Move assignment operator.
+   *
+   * @SINCE_1_9.22
+   * @param[in] rhs A reference to the moved handle
+   * @return A reference to this handle
+   */
+  PixelData& operator=(PixelData&& rhs);
+
+  /**
    * @brief Gets the width of the buffer in pixels.
    *
    * @SINCE_1_1.43
    * @return The width of the buffer in pixels
    */
-  unsigned int GetWidth() const;
+  uint32_t GetWidth() const;
 
   /**
    * @brief Gets the height of the buffer in pixels.
@@ -115,7 +159,7 @@ public:
    * @SINCE_1_1.43
    * @return The height of the buffer in pixels
    */
-  unsigned int GetHeight() const;
+  uint32_t GetHeight() const;
 
   /**
    * @brief Gets the pixel format.
@@ -125,18 +169,32 @@ public:
    */
   Pixel::Format GetPixelFormat() const;
 
-public:
+  /**
+   * @brief Gets the stride of the buffer in pixels.
+   *
+   * @SINCE_2_1.10
+   * @return The stride of the buffer in pixels. 0 means the buffer is tightly packed.
+   */
+  uint32_t GetStride() const;
+
+  /**
+   * Class method to get the total currently allocated size of pixel buffers
+   */
+  static uint32_t GetTotalAllocatedSize();
 
+public:
   /**
    * @brief The constructor.
    * @note  Not intended for application developers.
    * @SINCE_1_1.43
    * @param[in] pointer A pointer to a newly allocated PixelData
    */
-  explicit DALI_INTERNAL PixelData( Internal::PixelData* pointer );
+  explicit DALI_INTERNAL PixelData(Internal::PixelData* pointer);
 };
 
-
-} //namespace Dali
+/**
+ * @}
+ */
+} // namespace Dali
 
 #endif // DALI_PIXEL_DATA_H