From 3fc71a06515d95076b89a69c3356a0147bf99dab Mon Sep 17 00:00:00 2001 From: "adam.b" Date: Tue, 2 Jan 2018 17:40:33 +0000 Subject: [PATCH] [4.0] Fixed BMP loader. Change-Id: Idf3f460517dd228e7c18e4c82c4ed0ed74c51d9b (cherry picked from commit b64fe6024976b2a72ff8cabba845bad0d69c1a40) --- automated-tests/images/flag-24bpp.bmp | Bin 0 -> 3210 bytes automated-tests/images/flag-24bpp.buffer | Bin 0 -> 3072 bytes .../src/dali-adaptor-internal/CMakeLists.txt | 1 + .../src/dali-adaptor-internal/image-loaders.cpp | 20 ++++++---- .../src/dali-adaptor-internal/image-loaders.h | 4 +- .../dali-adaptor-internal/utc-Dali-BmpLoader.cpp | 42 +++++++++++++++++++++ .../tizen/image-loaders/loader-bmp.cpp | 6 +++ 7 files changed, 64 insertions(+), 9 deletions(-) create mode 100644 automated-tests/images/flag-24bpp.bmp create mode 100644 automated-tests/images/flag-24bpp.buffer create mode 100644 automated-tests/src/dali-adaptor-internal/utc-Dali-BmpLoader.cpp diff --git a/automated-tests/images/flag-24bpp.bmp b/automated-tests/images/flag-24bpp.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bbc1518a2b52d96de73e1d305ad638c707faf69f GIT binary patch literal 3210 zcmdUyOKg-?6vuzxokHScV~mL_!h)y^t|YQ`L0G`TXo87}3tx$`(GU_}3xkGN0wIvt zfUN=LX&@R1U;vTue%K-%3X~$n+Crt6BBhj4=6lVZ`8@agW~MXKAvCaZa_01Wch3Fa z^PO|<|K84gb;Xm!pB19NlJDfg*Wp>Q#{ z0cXba=}#}JuYYbvef`8uYu7&Z^5dPUDQ`8rRGe-9)|EfRwhu0NMJ+}$B7@1eJSKx; zl!+7DX`jf)_3;bhcs|BYYd^wwRpOrq1ERAK#2{iP62{=7%a9X$y!gX#2)f}k^ue_l z@Hm_R(LIoh^+V(T4d23YXn}*V48UPH3G3lIxE==}xvE@ZyzvjhMre)!&%#!a6|cZw zuqA#x8f#fpvR77!@#0IuWuoL?k}O7&f6=A!#I6ip-etV_GEt%`m#UHE@lo){%q^t4 zv}i4d^7u1xb9x@0SKgnQLVwnpZu28alZ;iSy;S9LeChu%B%8$;M-1bi(Lvn*0x}jn zDdGs+0IB}1xHMzjM)5r){-GfT2kGy3ZV!DG-l%L* zi|_GAME3<6R0L1m+dUOK(t6_v1uzklla?0ZeQn0FP)wA z^l23^)S6ph z&ZIvp(_Zo)#h3bexUMv(?N1?6!ER;jtfg9b5 z*T;nmbac?t!tk)A_u>twXh=Z~p++ts&5Ex0>TwR|D%_(j%lQ_%#jcu_$=HB5Z)V{_ zmMvq+5}`zLxoS5%OK8CmX_{cEvUK}Cya97~B4Y8+Y-r>kIY6rL<@O~6xM70@U$B6$ z8|dn?D+;|-c?!PdNAUN_{X)?IU*LQRi?7Mh zPC#8=$w{6H5M3w7bx6Bxi=54?Ttus+O$W{T?rwc$yYAel`;O>=AN9rU`m#{Eux`n@ zb*k4s&Fnd-*R`|tygE6=p?;3uWbaiD3~+1~7oX?oi*g;e7u}NN5#G+-bT{_E=eeB)Ix<=a1vSuRkpFz7LJHy_hOOjDu zR^@wC?+&$VzdCSG9ZsvZQ|k0#bu96bD~&Z$zV%F*-e2|30~|lDnosdt3!8r6_g303 MvFa(d!JQQU0rXm(GXMYp literal 0 HcmV?d00001 diff --git a/automated-tests/images/flag-24bpp.buffer b/automated-tests/images/flag-24bpp.buffer new file mode 100644 index 0000000000000000000000000000000000000000..9af472649be93f47bbd893117f7453cf11cc342d GIT binary patch literal 3072 zcmd6p+fQ6o6vlsN5B0?-{{f#&eCf9TMPE!z`e5RV`d~~nO%pYJFg2ktf(NHMG3KgbMF11wTX2F1^bPB_{&Y3x`eGUvW!%!=}n0(pUY}Q_Doo}u6 z?eUc3mB3YYLFH!DtL|=Y^w9e= zUw=jaFWedCnImwP)FY3m6fT84(H!>=P=A=CO`K@t^A38x<>DeMxe{Zs3{#Q5aF6Cs z)qIx0JG5Qp{AHSsGdRps$KYeEVNa(k;Ol`E-7}>xj_Gr=x@}Qky{*5wtIvh{maF@V z#_rDkaM!TDa*5&NYN&=&`-^KK07TeiEnS_Btt2rUB3?1KT89I_d?UIrK6=j2Ha9iq0D#!na@CyLerm0C)~&_PGg zhH8OEcppBn_z=7ujGm$S6nF2GUXi_R8*isibMT-EQD0AMt9)g74slAxza9H;MtuaY z!W-~1?1AWMzN@3@Bny95_;+1$ITjX}on>T%(NTJPSzaaxDnl6m9$KhgM)klr+=E*% zZLuo+570Zr^n@o2SHQ;i2z=A2`Otih@8a2&X0BuS*(Fr_)I_Kdl|$uawUkuEPOCzs z0^f_+3^zjHtYfo*oQOdf#r@-=oVdOc%WNz>D5Onhk?p0~Hgak9JmR^4T|(3bENNOj zn%4c1zUfG)Z6Z!nLdaJLQBsRFNZ-n6=(JE9ijs)gwjsHt4N+1HDfb#=G(udRc8T27 zcJohCiv64F#ACSDiZZaG2_icpR@?S3o@0JY?H=P_`1x=A|3Cc~+d1jz>fgA|kEyS1 z1WIOKAlfMWi;|oAs@1A@3y_x)Sw~fyBL6`|;87?T7#WG{E02Y5`cwW>+5e*G6Yxj8 z%4W<6K&6ejwJyVR51E-_Y>dfC9y}2FHT^lGFa1S!R?SrP|7I+Q``|FV21BBV@#vQs zTSo7rG0uL^JNwwXm%2J5wozoQc)X~eeTi50t9Q$;#CZzmwXh!!z?bkA{I-REv5bCY zWP+oO963T$6AcY4XOx}iy`8&X=j~&vxvGCT%)$aJ!2@}Vw&2IyjptX?HIrd!iTQal z4=uldt@|8NHmd4*^k=C)C|m9p{S>{Go+JiULX`U7N`I6iJO~Lwg^(i6bbkE{{Kh) VPt>xgnG#X<2@=A~X#bb_{|$+1h@k)g literal 0 HcmV?d00001 diff --git a/automated-tests/src/dali-adaptor-internal/CMakeLists.txt b/automated-tests/src/dali-adaptor-internal/CMakeLists.txt index c953ca4..2f6845e 100644 --- a/automated-tests/src/dali-adaptor-internal/CMakeLists.txt +++ b/automated-tests/src/dali-adaptor-internal/CMakeLists.txt @@ -11,6 +11,7 @@ SET(TC_SOURCES utc-Dali-FontClient.cpp utc-Dali-GifLoader.cpp utc-Dali-IcoLoader.cpp + utc-Dali-BmpLoader.cpp utc-Dali-ImageOperations.cpp utc-Dali-Internal-PixelBuffer.cpp utc-Dali-Lifecycle-Controller.cpp diff --git a/automated-tests/src/dali-adaptor-internal/image-loaders.cpp b/automated-tests/src/dali-adaptor-internal/image-loaders.cpp index a5fd26e..c3f7abe 100644 --- a/automated-tests/src/dali-adaptor-internal/image-loaders.cpp +++ b/automated-tests/src/dali-adaptor-internal/image-loaders.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -39,8 +39,8 @@ ImageDetails::ImageDetails( const char * const _name, unsigned int _width, unsig height( _height ), reportedWidth( _width ), reportedHeight( _height ), - refBufferSize( _width * _height ), - refBuffer( new Dali::PixelBuffer[ refBufferSize ] ) + refBufferSize( 0u ), + refBuffer( nullptr ) { LoadBuffer(); } @@ -51,27 +51,33 @@ ImageDetails::ImageDetails( const char * const _name, unsigned int _width, unsig height( _height ), reportedWidth( _reportedWidth ), reportedHeight( _reportedHeight ), - refBufferSize( _width * _height ), - refBuffer( new Dali::PixelBuffer[ refBufferSize ] ) + refBufferSize( 0u ), + refBuffer( nullptr ) { LoadBuffer(); } ImageDetails::~ImageDetails() { - delete [] refBuffer; + if( refBuffer ) + { + delete[] refBuffer; + } } void ImageDetails::LoadBuffer() { // Load the reference buffer from the buffer file - std::string refBufferFilename( name + ".buffer" ); FILE *fp = fopen ( refBufferFilename.c_str(), "rb" ); AutoCloseFile autoCloseBufferFile( fp ); if ( fp ) { + fseek( fp, 0, SEEK_END ); + refBufferSize = ftell( fp ); + fseek( fp, 0, SEEK_SET ); + refBuffer = reinterpret_cast( malloc( refBufferSize ) ); fread( refBuffer, sizeof( Dali::PixelBuffer ), refBufferSize, fp ); } } diff --git a/automated-tests/src/dali-adaptor-internal/image-loaders.h b/automated-tests/src/dali-adaptor-internal/image-loaders.h index 9a3ce7a..fa7fa0d 100644 --- a/automated-tests/src/dali-adaptor-internal/image-loaders.h +++ b/automated-tests/src/dali-adaptor-internal/image-loaders.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -66,7 +66,7 @@ struct ImageDetails unsigned int reportedWidth; unsigned int reportedHeight; unsigned int refBufferSize; - Dali::PixelBuffer* const refBuffer; + Dali::PixelBuffer* refBuffer; private: diff --git a/automated-tests/src/dali-adaptor-internal/utc-Dali-BmpLoader.cpp b/automated-tests/src/dali-adaptor-internal/utc-Dali-BmpLoader.cpp new file mode 100644 index 0000000..dd8838e --- /dev/null +++ b/automated-tests/src/dali-adaptor-internal/utc-Dali-BmpLoader.cpp @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2018 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include +#include +#include + +#include "platform-abstractions/tizen/image-loaders/loader-bmp.h" +#include "image-loaders.h" + +using namespace Dali; + +namespace +{ + +static const LoadFunctions BmpLoaders( TizenPlatform::LoadBmpHeader, TizenPlatform::LoadBitmapFromBmp ); + +} // Unnamed namespace. + +int UtcDaliBmp24bpp(void) +{ + ImageDetails image( TEST_IMAGE_DIR "/flag-24bpp.bmp", 32u, 32u ); + + TestImageLoading( image, BmpLoaders ); + + END_TEST; +} + diff --git a/platform-abstractions/tizen/image-loaders/loader-bmp.cpp b/platform-abstractions/tizen/image-loaders/loader-bmp.cpp index 37f3c26..fdd0837 100644 --- a/platform-abstractions/tizen/image-loaders/loader-bmp.cpp +++ b/platform-abstractions/tizen/image-loaders/loader-bmp.cpp @@ -1242,6 +1242,12 @@ bool LoadBitmapFromBmp( const ImageLoader::Input& input, Integration::Bitmap& bi { pixels = bitmap.GetPackedPixelsProfile()->ReserveBuffer(pixelFormat, infoHeader.width, infoHeader.height); } + else + { + pixelBufferW = infoHeader.width; + pixelBufferH = infoHeader.height; + newPixelFormat = pixelFormat; + } break; } -- 2.7.4