1 #ifndef DALI_ENCODED_IMAGE_BUFFER_H
2 #define DALI_ENCODED_IMAGE_BUFFER_H
4 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
21 #include <dali/public-api/common/dali-vector.h>
22 #include <dali/public-api/object/base-handle.h>
25 #include <dali/public-api/dali-adaptor-common.h>
29 namespace Internal DALI_INTERNAL
31 class EncodedImageBuffer;
35 * @brief EncodedImageBuffer contains the large encoded raw buffer informations.
38 * @note Object will copy raw buffer data.
40 class DALI_ADAPTOR_API EncodedImageBuffer : public BaseHandle
43 using RawBufferType = Dali::Vector<uint8_t>;
47 * @brief Create a new EncodedImageBuffer.
50 * @param [in] buffer The encoded raw buffer
51 * @return A handle to a new EncodedImageBuffer.
53 static EncodedImageBuffer New(const RawBufferType& buffer);
56 * @brief Create an empty handle.
59 * Calling member functions of an empty handle is not allowed.
66 * This is non-virtual since derived Handle types must not contain data or virtual methods.
69 ~EncodedImageBuffer();
72 * @brief This copy constructor is required for (smart) pointer semantics.
75 * @param [in] handle A reference to the copied handle
77 EncodedImageBuffer(const EncodedImageBuffer& handle);
80 * @brief This assignment operator is required for (smart) pointer semantics.
83 * @param [in] handle A reference to the copied handle
84 * @return A reference to this
86 EncodedImageBuffer& operator=(const EncodedImageBuffer& handle);
89 * @brief This move constructor is required for (smart) pointer semantics.
92 * @param [in] handle A reference to the moved handle
94 EncodedImageBuffer(EncodedImageBuffer&& handle) noexcept;
97 * @brief This move assignment operator is required for (smart) pointer semantics.
100 * @param [in] handle A reference to the moved handle
101 * @return A reference to this
103 EncodedImageBuffer& operator=(EncodedImageBuffer&& handle) noexcept;
106 * @brief Get raw buffer data
109 * @note this method return const value. Mean, you cannot change raw buffer
110 * @return A RawBufferType this buffer have
112 const RawBufferType& GetRawBuffer() const;
115 * @brief Get the hash value of raw buffer
118 * @return A hash value of raw buffer.
120 const std::size_t GetHash() const;
122 public: // Not intended for developer use
123 explicit DALI_INTERNAL EncodedImageBuffer(Internal::EncodedImageBuffer* impl);
128 #endif // DALI_ENCODED_IMAGE_BUFFER_H