X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-adaptor-internal%2Fimage-loaders.cpp;h=3b8821c81e7897a681614e7f69e40190450fff83;hb=e8e185f7d90010214890c2cb78bdd52c732f63ba;hp=6b026f67660a4b646b655641e627897af586eb28;hpb=d4c3e36f85ffb2e2aebef5833825b65245dff4e7;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/automated-tests/src/dali-adaptor-internal/image-loaders.cpp b/automated-tests/src/dali-adaptor-internal/image-loaders.cpp old mode 100644 new mode 100755 index 6b026f6..3b8821c --- 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. @@ -17,16 +17,7 @@ #include "image-loaders.h" #include - - -class StubImageLoaderClient : public Dali::TizenPlatform::ResourceLoadingClient -{ -public: - StubImageLoaderClient() {} - ~StubImageLoaderClient() {} - - virtual void InterruptionPoint() const {} -}; +#include AutoCloseFile::AutoCloseFile( FILE *fp ) : filePtr( fp ) @@ -48,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(); } @@ -60,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 ); } } @@ -101,7 +98,7 @@ void TestImageLoading( const ImageDetails& image, const LoadFunctions& functions // Check the header file. unsigned int width(0), height(0); - const Dali::TizenPlatform::ImageLoader::Input input( fp ); + const Dali::ImageLoader::Input input( fp ); DALI_TEST_CHECK( functions.header( input, width, height ) ); DALI_TEST_EQUALS( width, image.reportedWidth, TEST_LOCATION ); @@ -110,17 +107,15 @@ void TestImageLoading( const ImageDetails& image, const LoadFunctions& functions // Loading the header moves the pointer within the file so reset to start of file. fseek( fp, 0, 0 ); - // Create a bitmap object and store a pointer to that object so it is destroyed at the end. - Dali::Integration::Bitmap * bitmap = Dali::Integration::Bitmap::New( bitmapProfile, ResourcePolicy::OWNED_RETAIN ); - Dali::Integration::BitmapPtr bitmapPtr( bitmap ); + Dali::Devel::PixelBuffer bitmap; // Load Bitmap and check its return values. - DALI_TEST_CHECK( functions.loader( StubImageLoaderClient(), input, *bitmap ) ); - DALI_TEST_EQUALS( image.width, bitmap->GetImageWidth(), TEST_LOCATION ); - DALI_TEST_EQUALS( image.height, bitmap->GetImageHeight(), TEST_LOCATION ); + DALI_TEST_CHECK( functions.loader( input, bitmap ) ); + DALI_TEST_EQUALS( image.width, bitmap.GetWidth(), TEST_LOCATION ); + DALI_TEST_EQUALS( image.height, bitmap.GetHeight(), TEST_LOCATION ); // Compare buffer generated with reference buffer. - Dali::PixelBuffer* bufferPtr( bitmapPtr->GetBuffer() ); + Dali::PixelBuffer* bufferPtr( bitmap.GetBuffer() ); Dali::PixelBuffer* refBufferPtr( image.refBuffer ); for ( unsigned int i = 0; i < image.refBufferSize; ++i, ++bufferPtr, ++refBufferPtr ) { @@ -133,20 +128,67 @@ void TestImageLoading( const ImageDetails& image, const LoadFunctions& functions } } +void CompareLoadedImageData( const ImageDetails& image, const LoadFunctions& functions, const uint32_t* master ) +{ + FILE* filePointer = fopen( image.name.c_str() , "rb" ); + AutoCloseFile autoClose( filePointer ); + DALI_TEST_CHECK( filePointer != NULL ); + + // Check the header file. + unsigned int width = 0, height = 0; + const Dali::ImageLoader::Input input( filePointer ); + DALI_TEST_CHECK( functions.header( input, width, height ) ); + + DALI_TEST_EQUALS( width, image.reportedWidth, TEST_LOCATION ); + DALI_TEST_EQUALS( height, image.reportedHeight, TEST_LOCATION ); + + // Loading the header moves the pointer within the file so reset to start of file. + fseek( filePointer, 0, SEEK_SET ); + + Dali::Devel::PixelBuffer bitmap; + + // Load Bitmap and check its return values. + DALI_TEST_CHECK( functions.loader( input, bitmap ) ); + DALI_TEST_EQUALS( image.width, bitmap.GetWidth(), TEST_LOCATION ); + DALI_TEST_EQUALS( image.height, bitmap.GetHeight(), TEST_LOCATION ); + + // Check the bytes per pixel. + const Pixel::Format pixelFormat = bitmap.GetPixelFormat(); + const unsigned int bytesPerPixel = Pixel::GetBytesPerPixel( pixelFormat ); + + // Compare buffer generated with reference buffer. + Dali::PixelBuffer* pBitmapData( bitmap.GetBuffer() ); + const uint32_t* pMaster( master ); + + // Loop through each pixel in the bitmap. + for ( unsigned int i = 0; i < image.refBufferSize; ++i, ++pMaster ) + { + unsigned int color = 0; + // Loop through each byte per pixel, to build up a color value for that pixel. + for( unsigned int j = 0; j < bytesPerPixel; ++j, ++pBitmapData ) + { + color = ( color << 8 ) | *pBitmapData; + } + + // Check the color value is what we expect. + DALI_TEST_EQUALS( color, *pMaster, TEST_LOCATION ); + } +} + void DumpImageBufferToTempFile( std::string filename, std::string targetFilename, const LoadFunctions& functions ) { FILE* fp = fopen( filename.c_str() , "rb" ); AutoCloseFile autoClose( fp ); - Dali::Integration::Bitmap* bitmap = Dali::Integration::Bitmap::New( Dali::Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_RETAIN ); - Dali::Integration::BitmapPtr bitmapPtr( bitmap ); - const Dali::TizenPlatform::ImageLoader::Input input( fp ); + Dali::Devel::PixelBuffer bitmap; + const Dali::ImageLoader::Input input( fp ); - DALI_TEST_CHECK( functions.loader( StubImageLoaderClient(), input, *bitmap ) ); + DALI_TEST_CHECK( functions.loader( input, bitmap ) ); - Dali::PixelBuffer* bufferPtr( bitmapPtr->GetBuffer() ); + Dali::PixelBuffer* bufferPtr( bitmap.GetBuffer() ); FILE* writeFp = fopen( targetFilename.c_str(), "wb" ); AutoCloseFile autoCloseWrite( writeFp ); - fwrite( bufferPtr, 1, bitmap->GetBufferSize(), writeFp ); + auto& impl = GetImplementation(bitmap); + fwrite( bufferPtr, 1, impl.GetBufferSize(), writeFp ); }