From 98709ce485e68c7d3d8c6d990208f384c94ac34e Mon Sep 17 00:00:00 2001 From: Xiangyin Ma Date: Wed, 28 Oct 2015 17:29:55 +0000 Subject: [PATCH] Update BitmapLoader to use PixelData Change-Id: I2785810d7eeb5c66c1c2de00429d5027826ef6f3 --- adaptors/common/bitmap-loader-impl.cpp | 65 ++++------ adaptors/common/bitmap-loader-impl.h | 25 +--- .../devel-api/adaptor-framework/bitmap-loader.cpp | 18 +-- .../devel-api/adaptor-framework/bitmap-loader.h | 29 ++--- automated-tests/resources/gallery-small-1.jpg | Bin 0 -> 12797 bytes automated-tests/resources/icon-edit.png | Bin 0 -> 2356 bytes automated-tests/src/dali-adaptor/CMakeLists.txt | 1 + .../src/dali-adaptor/utc-Dali-BitmapLoader.cpp | 140 +++++++++++++++++++++ 8 files changed, 183 insertions(+), 95 deletions(-) create mode 100644 automated-tests/resources/gallery-small-1.jpg create mode 100644 automated-tests/resources/icon-edit.png create mode 100644 automated-tests/src/dali-adaptor/utc-Dali-BitmapLoader.cpp diff --git a/adaptors/common/bitmap-loader-impl.cpp b/adaptors/common/bitmap-loader-impl.cpp index 1e6c545..7af4351 100644 --- a/adaptors/common/bitmap-loader-impl.cpp +++ b/adaptors/common/bitmap-loader-impl.cpp @@ -37,14 +37,13 @@ IntrusivePtr BitmapLoader::New(const std::string& url, } BitmapLoader::BitmapLoader(const std::string& url, - ImageDimensions size, - FittingMode::Type fittingMode, - SamplingMode::Type samplingMode, - bool orientationCorrection) + ImageDimensions size, + FittingMode::Type fittingMode, + SamplingMode::Type samplingMode, + bool orientationCorrection) : mResourceType( size, fittingMode, samplingMode, orientationCorrection ), - mBitmap(NULL), - mUrl(url), - mIsLoaded( false ) + mPixelData(), + mUrl(url) { } @@ -56,53 +55,33 @@ void BitmapLoader::Load() { IntrusivePtr resource = TizenPlatform::ImageLoader::LoadResourceSynchronously( mResourceType, mUrl ); - mBitmap = static_cast(resource.Get()); - mIsLoaded = true; -} - -bool BitmapLoader::IsLoaded() -{ - return mIsLoaded; -} - -unsigned char* BitmapLoader::GetPixelData() const -{ - if( mIsLoaded ) + if( resource ) { - return mBitmap->GetBuffer(); + Integration::Bitmap* bitmap = static_cast(resource.Get()); + + // Use bitmap->GetBufferOwnership() to transfer the buffer ownership to pixelData. + // The destroy of bitmap will not release the buffer, instead, the pixelData is responsible for releasing when its reference count falls to zero. + mPixelData = PixelData::New( bitmap->GetBufferOwnership(), + bitmap->GetImageWidth(), + bitmap->GetImageHeight(), + bitmap->GetPixelFormat(), + PixelData::FREE); } - - return NULL; } -unsigned int BitmapLoader::GetImageHeight() const +bool BitmapLoader::IsLoaded() { - if( mIsLoaded ) - { - return mBitmap->GetImageHeight(); - } - - return 0u; + return mPixelData ? true : false ; } -unsigned int BitmapLoader::GetImageWidth() const +const std::string& BitmapLoader::GetUrl() const { - if( mIsLoaded ) - { - return mBitmap->GetImageWidth(); - } - - return 0u; + return mUrl; } -Pixel::Format BitmapLoader::GetPixelFormat() const +PixelDataPtr BitmapLoader::GetPixelData() const { - if( mIsLoaded ) - { - return mBitmap->GetPixelFormat(); - } - - return Pixel::RGBA8888; + return mPixelData; } } // namespace Internal diff --git a/adaptors/common/bitmap-loader-impl.h b/adaptors/common/bitmap-loader-impl.h index 143fef1..cde518b 100644 --- a/adaptors/common/bitmap-loader-impl.h +++ b/adaptors/common/bitmap-loader-impl.h @@ -74,34 +74,19 @@ public: bool IsLoaded(); /** - * Get the raw pixel data. - * @return The pixel data. Use the GetHeight(), GetWidth(), GetStride() and GetPixelFormat() methods - * to decode the data. + * @copydoc Dali::BitmapLoader::GetUrl() */ - unsigned char* GetPixelData() const; + const std::string& GetUrl() const; /** - * Get the buffer height in pixels - * @return the height of the buffer in pixels + * @copydoc Dali::BitmapLoader::GetPixelData */ - unsigned int GetImageHeight() const; - - /** - * Get the buffer width in pixels - * @return the width of the buffer in pixels - */ - unsigned int GetImageWidth() const; - - /** - * Get the pixel format of the loaded bitmap. - */ - Pixel::Format GetPixelFormat() const; + PixelDataPtr GetPixelData() const; private: Integration::BitmapResourceType mResourceType; - Integration::BitmapPtr mBitmap; + PixelDataPtr mPixelData; const std::string mUrl; - bool mIsLoaded; }; } // Internal diff --git a/adaptors/devel-api/adaptor-framework/bitmap-loader.cpp b/adaptors/devel-api/adaptor-framework/bitmap-loader.cpp index dabfbd1..6f25a81 100644 --- a/adaptors/devel-api/adaptor-framework/bitmap-loader.cpp +++ b/adaptors/devel-api/adaptor-framework/bitmap-loader.cpp @@ -70,24 +70,14 @@ bool BitmapLoader::IsLoaded() return GetImplementation(*this).IsLoaded(); } -unsigned char* BitmapLoader::GetPixelData() const +std::string BitmapLoader::GetUrl() const { - return GetImplementation(*this).GetPixelData(); -} - -unsigned int BitmapLoader::GetImageHeight() const -{ - return GetImplementation(*this).GetImageHeight(); + return GetImplementation(*this).GetUrl(); } -unsigned int BitmapLoader::GetImageWidth() const +PixelDataPtr BitmapLoader::GetPixelData() const { - return GetImplementation(*this).GetImageWidth(); -} - -Pixel::Format BitmapLoader::GetPixelFormat() const -{ - return GetImplementation(*this).GetPixelFormat(); + return GetImplementation(*this).GetPixelData(); } } // namespace Dali diff --git a/adaptors/devel-api/adaptor-framework/bitmap-loader.h b/adaptors/devel-api/adaptor-framework/bitmap-loader.h index af5ac92..9dba69a 100644 --- a/adaptors/devel-api/adaptor-framework/bitmap-loader.h +++ b/adaptors/devel-api/adaptor-framework/bitmap-loader.h @@ -23,6 +23,7 @@ #include #include #include +#include namespace Dali { @@ -101,28 +102,20 @@ public: bool IsLoaded(); /** - * Get the raw pixel data. - * @return The pixel data. Use the GetHeight(), GetWidth(), GetStride() and GetPixelFormat() methods - * to decode the data. - */ - unsigned char* GetPixelData() const; - - /** - * Get the buffer height in pixels - * @return the height of the buffer in pixels - */ - unsigned int GetImageHeight() const; - - /** - * Get the buffer width in pixels - * @return the width of the buffer in pixels + * @brief Returns the URL of the image. + * + * @return The URL of the image file. */ - unsigned int GetImageWidth() const; + std::string GetUrl() const; /** - * Get the pixel format of the loaded bitmap. + * @brief Get the pixel data. + * + * The returned pixel data is still valid after the BitmapLoader been destroyed. + * + * @return The pixel data. */ - Pixel::Format GetPixelFormat() const; + PixelDataPtr GetPixelData() const; public: // Not intended for application developers diff --git a/automated-tests/resources/gallery-small-1.jpg b/automated-tests/resources/gallery-small-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..92923109320188ba92173b32afe3b3a3da41a279 GIT binary patch literal 12797 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 literal 0 HcmV?d00001 diff --git a/automated-tests/resources/icon-edit.png b/automated-tests/resources/icon-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..ce3e3279c6c7acb9dc741d61201c93dd82cab427 GIT binary patch literal 2356 zcmZuzdpuNY7v3~UG}4()3TZd$xQ>}&+@^7hA)(wx>LkX@#xVAbxiC6)T#_itJqm?V zh;m6Z@s(>AQZ6~UgpN`PA*o1bhU)A5zVDB{-@V@VSQ2r002na z9ahew6)k?Gr9^L{jcgqNNIqn^y7Sx}?1?m1pbnMJ@`iK-fo#z^0FcZCflM$M;&2%( z*aVH&!J$D2rm^S@*w+M2aka)6q0LNXNCKiLBM{#LZj0l0@hQd6m00VPX#S}{%RuGrQVX%23$)K2%>doTwOwef2Irv>) zAo~Y7%>7ohsC=w|%EpSS#QqHCF?{|j()LK8Lxenoh$)Oehe7d0Y`5 zzeF!;8PSphQF$zmD~rW6LEACd3=Ese_hrCbjINHpsM})A;=d4GSU$WEDhK+%C~@f^ ziB2PO7`}cy?qayq3kxQ1DOw7d3~>X9OsaT%0t_AUq4JqLw5cVF9lDqcs?#(;T^ybO zx=;hTeApKxGa(v}!-5$!t~SVr=@19x`9Yusn@STc_6!;Xb0KZeZOJ2`t`3d}{xmk~ zB5tt>%q1)rYj0~w-sM6Tm53u@#S>yOzDZt;zH267|5ecv^rzv9a+dZ)rV)7%`@@8$ zGJ$S6`Xc*o;E~;V-#Z6bh^-CU22yJvEORYoZPskY z1T5?g)=1f{KI9?`|E@H=$FFpLrPK*?hEpQpQIn?oyJi077_zi~;pK2^ty~Fh`M6&; zSF|gdN;Lx3$x^g^u>^xo@Y&v@t7o2~t?ANE%N@v@KGCOo1mdv0i< zt-HFda)Zrr`Oj^CuKm+4+ENM;VRUu$bL*huQOZdRi}jb}w`<~?l7}))-gtKLDIFEb zXA0p?UX6TT-wuZ(yR07QQOsZk5cl zcHkbS|2^JOQ9t44My1RE%~|^V)LiP3GW1yxCs$0fH+Di*^}TnBjkcCvo^e}g>jlg6 z?@{O4d><*Mst;j>A79V`wqw$Zk0oGBPf*|aKPL@Ow>_x#1E`*$y#22o*;gJV6pUZ? z3V)?XCl{vDx2mMqq7b*fQjd)qM*75zmxXmA08g6ba_mAGvbTxCqmCXI92wemvvJiP!)ur#G znUhYNmHV*&Q*0o?AWEQx5fwkM+;<;Qqp=P(CO;Ic-asxOO+l1+1$lt^6R(@DDf;#N>`s{*RF1c;$bmj{pzc-~u$ zj8_{wuDip9U!tHKSMcyK+^8r0(K55%%_%HrC^6SKxt7zYnLRjj#N%W@k;?s&4X-%s z#!L_P*ey5Rn@G0O7&q86>y1p&_(du5cAI(BZVEr;^XHM~kYcU$!&ZZ@dSnOql&gy>{C{rOqXeSxvnZlAS4CPmUdukukpr>D{Cv} zzZ7lU=$`=pw%x8;L+%j%RbhI_DM zT0HGH?tSQB>C<$u*Gp=~d0h*1F;qa^(B?{{7(@>M(>Hej~X-v@lVHxPM?og zO_kz$^k2WxquuK~gYxC&!ay=PXj{r?kZ3+bK8@=$5|a7|toa(H4GGUUE5Z@#TYTJu zC~m+LB;Fvj6qIR7+hpoks)6P2_^K7Um+?YtV7}sv!~`b9^$+A~bFWiFPy2d*ZFncK zGEApsXIS2Fam}W}Gtb5rILF-aZH0N3c>e2+#y6Fj`p-`oXEcDqBr|M z@@qSaH8F~-2*974e5)ld33WzzTMd@`Z`g6WBB8psQo(0nmK>*@mRegr&^$BA0Ltmh zP|C$EH5P|PkwTlh`@B#w=y$dA_g*(=23PaCgk36Y33{??BqiDjdYZg zy6_;$Ps1vrTcXM!Y(AZZ%KGrUYn$Buj%}x8)~LEFBKHMYB?WLF$4%DzV;A1Q3!^uu zt%bYGT=ztFEl+NLxXK|;EA-$<&bn!dHD8KW5bpONlL(YFZT0;rscwjo_RUG!2L|Ly m^O++#1Ak3(2)hfvO5*_e6 +#include +#include +#include + +using namespace Dali; + +namespace +{ +// resolution: 34*34, pixel format: RGBA8888 +static const char* gImage_34_RGBA = TEST_RESOURCE_DIR "/icon-edit.png"; +// resolution: 128*128, pixel format: RGB888 +static const char* gImage_128_RGB = TEST_RESOURCE_DIR "/gallery-small-1.jpg"; + +// this is image is not exist, for negative test +static const char* gImageNonExist = "non-exist.jpg"; +} + +void utc_dali_bitmap_loader_startup(void) +{ + test_return_value = TET_UNDEF; +} + +void utc_dali_bitmap_loader_cleanup(void) +{ + test_return_value = TET_PASS; +} + +int UtcDaliBitmapLoaderNew(void) +{ + TestApplication application; + + // invoke default handle constructor + BitmapLoader loader; + + DALI_TEST_CHECK( !loader ); + + // initialise handle + loader = BitmapLoader::New( gImage_34_RGBA ); + + DALI_TEST_CHECK( loader ); + END_TEST; +} + +int UtcDaliBitmapLoaderCopyConstructor(void) +{ + TestApplication application; + + BitmapLoader loader = BitmapLoader::New( gImage_34_RGBA); + BitmapLoader loaderCopy(loader); + + DALI_TEST_EQUALS( (bool)loaderCopy, true, TEST_LOCATION ); + END_TEST; +} + +int UtcDaliBitmapLoaderAssignmentOperator(void) +{ + TestApplication application; + + BitmapLoader loader = BitmapLoader::New( gImage_34_RGBA ); + + BitmapLoader loader2; + DALI_TEST_EQUALS( (bool)loader2, false, TEST_LOCATION ); + + loader2 = loader; + DALI_TEST_EQUALS( (bool)loader2, true, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliBitmapLoaderGetUrl(void) +{ + TestApplication application; + + BitmapLoader loader = BitmapLoader::New( gImage_34_RGBA ); + DALI_TEST_CHECK( loader.GetUrl() == gImage_34_RGBA ); + + END_TEST; +} + + +int UtcDaliBitmapLoaderLoadP(void) +{ + TestApplication application; + + BitmapLoader loader1 = BitmapLoader::New( gImage_34_RGBA ); + DALI_TEST_CHECK( ! loader1.IsLoaded() ); + loader1.Load(); + DALI_TEST_CHECK( loader1.IsLoaded() ); + PixelDataPtr pixelData1 = loader1.GetPixelData(); + DALI_TEST_CHECK( pixelData1 ); + DALI_TEST_CHECK( pixelData1->GetWidth() == 34u ); + DALI_TEST_CHECK( pixelData1->GetHeight() == 34u ); + DALI_TEST_CHECK( pixelData1->GetPixelFormat() == Pixel::RGBA8888 ); + + BitmapLoader loader2 = BitmapLoader::New( gImage_128_RGB ); + DALI_TEST_CHECK( ! loader2.IsLoaded() ); + loader2.Load(); + DALI_TEST_CHECK( loader2.IsLoaded() ); + PixelDataPtr pixelData2 = loader2.GetPixelData(); + DALI_TEST_CHECK( pixelData2 ); + DALI_TEST_CHECK( pixelData2->GetWidth() == 128u ); + DALI_TEST_CHECK( pixelData2->GetHeight() == 128u ); + DALI_TEST_CHECK( pixelData2->GetPixelFormat() == Pixel::RGB888 ); + + END_TEST; +} + +int UtcDaliBitmapLoaderLoadN(void) +{ + TestApplication application; + + BitmapLoader loader = BitmapLoader::New( gImageNonExist ); + DALI_TEST_CHECK( ! loader.IsLoaded() ); + loader.Load(); + + // cannot load image that is not exist + DALI_TEST_CHECK( ! loader.IsLoaded() ); + PixelDataPtr pixelData = loader.GetPixelData(); + DALI_TEST_CHECK( !pixelData); + + END_TEST; +} -- 2.7.4