From d984802d389ead8f407715391cc9af8b73abeeef Mon Sep 17 00:00:00 2001 From: Eunki Hong Date: Sat, 28 Oct 2023 23:55:47 +0900 Subject: [PATCH] Set the image type of encoded image buffer Let we prepare to support EncodedImageBuffer as VectorImage / VectorAnimatedImage. Change-Id: I062d7153291a10a81d48d5c250c113574a083a73 Signed-off-by: Eunki Hong --- .../dali-adaptor/utc-Dali-EncodedImageBuffer.cpp | 43 ++++++++++++++++++++- .../imaging/common/encoded-image-buffer-impl.cpp | 23 ++++++++--- .../imaging/common/encoded-image-buffer-impl.h | 23 ++++++++--- .../adaptor-framework/encoded-image-buffer.cpp | 21 +++++++++-- .../adaptor-framework/encoded-image-buffer.h | 44 +++++++++++++++++++++- 5 files changed, 137 insertions(+), 17 deletions(-) diff --git a/automated-tests/src/dali-adaptor/utc-Dali-EncodedImageBuffer.cpp b/automated-tests/src/dali-adaptor/utc-Dali-EncodedImageBuffer.cpp index 5b2da93..82bbfac 100644 --- a/automated-tests/src/dali-adaptor/utc-Dali-EncodedImageBuffer.cpp +++ b/automated-tests/src/dali-adaptor/utc-Dali-EncodedImageBuffer.cpp @@ -46,7 +46,7 @@ void dali_encoded_image_buffer_cleanup(void) test_return_value = TET_PASS; } -int UtcDaliEncodedImageBufferNew(void) +int UtcDaliEncodedImageBufferNew01(void) { // invoke default handle constructor EncodedImageBuffer buffer; @@ -60,6 +60,20 @@ int UtcDaliEncodedImageBufferNew(void) END_TEST; } +int UtcDaliEncodedImageBufferNew02(void) +{ + // invoke default handle constructor + EncodedImageBuffer buffer; + + DALI_TEST_CHECK(!buffer); + + // initialise handle + buffer = EncodedImageBuffer::New(tinybuffer(), Dali::EncodedImageBuffer::ImageType::VECTOR_IMAGE); + + DALI_TEST_CHECK(buffer); + END_TEST; +} + int UtcDaliEncodedImageBufferCopyConstructor(void) { EncodedImageBuffer buffer = EncodedImageBuffer::New(tinybuffer()); @@ -143,4 +157,31 @@ int UtcDaliEncodedImageBufferGetHash(void) DALI_TEST_CHECK(buffer2.GetHash() != buffer3.GetHash()); END_TEST; +} + + +int UtcDaliEncodedImageBufferSetGetType(void) +{ + EncodedImageBuffer buffer1 = EncodedImageBuffer::New(tinybuffer()); + EncodedImageBuffer buffer2 = buffer1; ///< Copy handle + + DALI_TEST_CHECK(buffer1); + DALI_TEST_CHECK(buffer2); + DALI_TEST_CHECK(buffer1 == buffer2); + DALI_TEST_CHECK(buffer1.GetHash() == buffer2.GetHash()); + + DALI_TEST_EQUALS(buffer1.GetImageType(), Dali::EncodedImageBuffer::ImageType::DEFAULT, TEST_LOCATION); + DALI_TEST_EQUALS(buffer2.GetImageType(), Dali::EncodedImageBuffer::ImageType::DEFAULT, TEST_LOCATION); + + buffer1.SetImageType(Dali::EncodedImageBuffer::ImageType::VECTOR_IMAGE); + + DALI_TEST_EQUALS(buffer1.GetImageType(), Dali::EncodedImageBuffer::ImageType::VECTOR_IMAGE, TEST_LOCATION); + DALI_TEST_EQUALS(buffer2.GetImageType(), Dali::EncodedImageBuffer::ImageType::VECTOR_IMAGE, TEST_LOCATION); + + buffer2.SetImageType(Dali::EncodedImageBuffer::ImageType::ANIMATED_VECTOR_IMAGE); + + DALI_TEST_EQUALS(buffer1.GetImageType(), Dali::EncodedImageBuffer::ImageType::ANIMATED_VECTOR_IMAGE, TEST_LOCATION); + DALI_TEST_EQUALS(buffer2.GetImageType(), Dali::EncodedImageBuffer::ImageType::ANIMATED_VECTOR_IMAGE, TEST_LOCATION); + + END_TEST; } \ No newline at end of file diff --git a/dali/internal/imaging/common/encoded-image-buffer-impl.cpp b/dali/internal/imaging/common/encoded-image-buffer-impl.cpp index 2f1a799..33c93d3 100644 --- a/dali/internal/imaging/common/encoded-image-buffer-impl.cpp +++ b/dali/internal/imaging/common/encoded-image-buffer-impl.cpp @@ -16,7 +16,7 @@ */ // CLASS HEADER -#include "encoded-image-buffer-impl.h" +#include // EXTERNAL INCLUDE #include @@ -25,8 +25,9 @@ namespace Dali { namespace Internal { -EncodedImageBuffer::EncodedImageBuffer(const RawBufferType& buffer) -: mBuffer(buffer) +EncodedImageBuffer::EncodedImageBuffer(const RawBufferType& buffer, ImageType type) +: mBuffer(buffer), + mType(type) { mBufferHash = CalculateHash(mBuffer); } @@ -35,9 +36,9 @@ EncodedImageBuffer::~EncodedImageBuffer() { } -IntrusivePtr EncodedImageBuffer::New(const RawBufferType& buffer) +IntrusivePtr EncodedImageBuffer::New(const RawBufferType& buffer, ImageType type) { - IntrusivePtr internal = new EncodedImageBuffer(buffer); + IntrusivePtr internal = new EncodedImageBuffer(buffer, type); return internal; } @@ -47,11 +48,21 @@ const EncodedImageBuffer::RawBufferType& EncodedImageBuffer::GetRawBuffer() cons return mBuffer; } -const std::size_t EncodedImageBuffer::GetHash() const +std::size_t EncodedImageBuffer::GetHash() const { return mBufferHash; } +void EncodedImageBuffer::SetImageType(Dali::EncodedImageBuffer::ImageType type) +{ + mType = type; +} + +Dali::EncodedImageBuffer::ImageType EncodedImageBuffer::GetImageType() const +{ + return mType; +} + } // namespace Internal } // namespace Dali diff --git a/dali/internal/imaging/common/encoded-image-buffer-impl.h b/dali/internal/imaging/common/encoded-image-buffer-impl.h index 2c8e924..f482325 100644 --- a/dali/internal/imaging/common/encoded-image-buffer-impl.h +++ b/dali/internal/imaging/common/encoded-image-buffer-impl.h @@ -2,7 +2,7 @@ #define DALI_ENCODED_IMAGE_BUFFER_IMPL_H /* - * Copyright (c) 2022 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. @@ -34,17 +34,19 @@ class EncodedImageBuffer : public BaseObject { public: using RawBufferType = Dali::EncodedImageBuffer::RawBufferType; + using ImageType = Dali::EncodedImageBuffer::ImageType; /** * Constructor - * @param [in] buffer The raw buffer of image. + * @param[in] buffer The raw buffer of image. + * @param[in] type The type of image. */ - EncodedImageBuffer(const RawBufferType& buffer); + EncodedImageBuffer(const RawBufferType& buffer, ImageType type); /** * @copydoc Dali::EncodedImageBuffer::New */ - static IntrusivePtr New(const RawBufferType& buffer); + static IntrusivePtr New(const RawBufferType& buffer, ImageType type); /** * @copydoc Dali::EncodedImageBuffer::GetRawBuffer @@ -54,7 +56,17 @@ public: /** * @copydoc Dali::EncodedImageBuffer::GetHash */ - const std::size_t GetHash() const; + std::size_t GetHash() const; + + /** + * @copydoc Dali::EncodedImageBuffer::SetImageType + */ + void SetImageType(ImageType type); + + /** + * @copydoc Dali::EncodedImageBuffer::GetImageType + */ + ImageType GetImageType() const; protected: /** @@ -72,6 +84,7 @@ private: private: Dali::Vector mBuffer; std::size_t mBufferHash; + ImageType mType; }; } // namespace Internal diff --git a/dali/public-api/adaptor-framework/encoded-image-buffer.cpp b/dali/public-api/adaptor-framework/encoded-image-buffer.cpp index 713f4c9..7710ce1 100644 --- a/dali/public-api/adaptor-framework/encoded-image-buffer.cpp +++ b/dali/public-api/adaptor-framework/encoded-image-buffer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 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. @@ -49,14 +49,29 @@ const EncodedImageBuffer::RawBufferType& EncodedImageBuffer::GetRawBuffer() cons return GetImplementation(*this).GetRawBuffer(); } -const std::size_t EncodedImageBuffer::GetHash() const +std::size_t EncodedImageBuffer::GetHash() const { return GetImplementation(*this).GetHash(); } +void EncodedImageBuffer::SetImageType(ImageType type) +{ + GetImplementation(*this).SetImageType(type); +} + +EncodedImageBuffer::ImageType EncodedImageBuffer::GetImageType() const +{ + return GetImplementation(*this).GetImageType(); +} + EncodedImageBuffer EncodedImageBuffer::New(const RawBufferType& buffer) { - IntrusivePtr internal = Internal::EncodedImageBuffer::New(buffer); + return EncodedImageBuffer::New(buffer, ImageType::DEFAULT); +} + +EncodedImageBuffer EncodedImageBuffer::New(const RawBufferType& buffer, ImageType type) +{ + IntrusivePtr internal = Internal::EncodedImageBuffer::New(buffer, type); return EncodedImageBuffer(internal.Get()); } diff --git a/dali/public-api/adaptor-framework/encoded-image-buffer.h b/dali/public-api/adaptor-framework/encoded-image-buffer.h index 71e5c8b..31bec44 100644 --- a/dali/public-api/adaptor-framework/encoded-image-buffer.h +++ b/dali/public-api/adaptor-framework/encoded-image-buffer.h @@ -42,9 +42,23 @@ class DALI_ADAPTOR_API EncodedImageBuffer : public BaseHandle public: using RawBufferType = Dali::Vector; + /** + * @brief The list of type of encoded image buffer. + * + * @SINCE_2_2.51 + */ + enum class ImageType + { + REGULAR_IMAGE, + VECTOR_IMAGE, ///< svg format. + ANIMATED_VECTOR_IMAGE, ///< lottie format. + + DEFAULT = REGULAR_IMAGE, + }; + public: /** - * @brief Create a new EncodedImageBuffer. + * @brief Create a new EncodedImageBuffer. ImageType will be setted as DEFAULT. * * @SINCE_2_0.34 * @param [in] buffer The encoded raw buffer @@ -53,6 +67,16 @@ public: static EncodedImageBuffer New(const RawBufferType& buffer); /** + * @brief Create a new EncodedImageBuffer with ImageType. + * + * @SINCE_2_2.51 + * @param [in] buffer The encoded raw buffer + * @param [in] type The type hint of encoded raw buffer + * @return A handle to a new EncodedImageBuffer. + */ + static EncodedImageBuffer New(const RawBufferType& buffer, ImageType type); + + /** * @brief Create an empty handle. * * @SINCE_2_0.34 @@ -117,7 +141,23 @@ public: * @SINCE_2_1.20 * @return A hash value of raw buffer. */ - const std::size_t GetHash() const; + std::size_t GetHash() const; + + /** + * @brief Set type of raw buffer. + * + * @SINCE_2_2.51 + * @param[in] type A ImageType for this buffer + */ + void SetImageType(ImageType type); + + /** + * @brief Get type of raw buffer. + * + * @SINCE_2_2.51 + * @return A ImageType this buffer have + */ + ImageType GetImageType() const; public: // Not intended for developer use explicit DALI_INTERNAL EncodedImageBuffer(Internal::EncodedImageBuffer* impl); -- 2.7.4