2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 // Licensed under the Flora License, Version 1.0 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
8 // http://floralicense.org/license/
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an AS IS BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
17 #ifndef __DALI_ADAPTOR_TET_IMAGE_LOADERS_H_
18 #define __DALI_ADAPTOR_TET_IMAGE_LOADERS_H_
20 #include <dali/dali.h>
21 #include <dali/integration-api/image-data.h>
23 // Simple structure to close the file when finished with it.
26 AutoCloseFile( FILE *fp );
31 /// Structure to hold image details and the reference buffer.
37 * @param[in] _name The name of the image to open. The reference buffer file should have the same name appended with ".buffer".
38 * @param[in] _width The width of the image.
39 * @param[in] _height The height of the image.
41 ImageDetails( const char * const _name, unsigned int _width, unsigned int _height );
44 * Sometimes an image reports an incorrect size in the header than what it actually is. In such a
45 * scenario, this constructor should be used.
47 * @param[in] _name The name of the image to open. The reference buffer file should have the same name appended with ".buffer".
48 * @param[in] _width The width of the image.
49 * @param[in] _height The height of the image.
50 * @param[in] _reportedWidth The reported width of the image by reading the header.
51 * @param[in] _reportedHeight The reported height of the image by reading the header.
53 ImageDetails( const char * const _name, unsigned int _width, unsigned int _height, unsigned int _reportedWidth, unsigned int _reportedHeight );
64 unsigned int reportedWidth;
65 unsigned int reportedHeight;
66 unsigned int refBufferSize;
67 Dali::PixelBuffer* const refBuffer;
72 * Loads the reference buffer file.
78 * A structure storing the methods that should be called when reading an image's header and when
79 * reading the bitmap from the image file.
83 typedef bool (*LoadBitmapFunction)(FILE*, Dali::ImageAttributes&, Dali::Integration::ImageDataPtr&);
84 typedef bool (*LoadBitmapHeaderFunction)(FILE*, const Dali::ImageAttributes& attrs, unsigned int& width, unsigned int& height );
86 LoadFunctions( LoadBitmapHeaderFunction _header, LoadBitmapFunction _loader );
87 LoadBitmapHeaderFunction header;
88 LoadBitmapFunction loader;
91 // Helper method to test each image file.
93 * Use this method to test the header and and bitmap loading of each image.
94 * The loaded bitmap is then checked with the reference bitmap in ImageDetails.
96 * @param[in] image The image details.
97 * @param[in] functions The loader functions that need to be called.
99 void TestImageLoading( const ImageDetails& image, const LoadFunctions& functions );
102 * Helper function which should be used when first creating a reference buffer file.
103 * Set output file to a file in the /tmp/ directory e.g:
104 * DumpImageBufferToTempFile( "images/pattern.gif" , "/tmp/pattern.gif.buffer" );
106 * @param[in] filename The path of the image file.
107 * @param[in] targetFilename The path of where the buffer should be written to. This should ideally be in the "/tmp" folder.
108 * @param[in] functions The loader functions to call.
110 void DumpImageBufferToTempFile( std::string filename, std::string targetFilename, const LoadFunctions& functions );
112 #endif // __DALI_ADAPTOR_TET_IMAGE_LOADERS_H_