/* ---------------------------------------------------------------------------- * ATMEL Microcontroller Software Support * ---------------------------------------------------------------------------- * Copyright (c) 2008, Atmel Corporation * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * - Redistributions of source code must retain the above copyright notice, * this list of conditions and the disclaimer below. * * Atmel's name may not be used to endorse or promote products derived from * this software without specific prior written permission. * * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ---------------------------------------------------------------------------- */ /** * \file * \section Purpose * * Utility for BMP * */ #ifndef BMP_H #define BMP_H /** BMP magic number ('BM'). */ #define BMP_TYPE 0x4D42 /** headerSize must be set to 40 */ #define BITMAPINFOHEADER 40 /*------------------------------------------------------------------------------ * Exported types *------------------------------------------------------------------------------*/ #pragma pack( 1 ) /** BMP (Windows) Header Format */ typedef struct _BMPHeader { /* signature, must be 4D42 hex */ uint16_t type; /* size of BMP file in bytes (unreliable) */ uint32_t fileSize; /* reserved, must be zero */ uint16_t reserved1; /* reserved, must be zero */ uint16_t reserved2; /* offset to start of image data in bytes */ uint32_t offset; /* size of BITMAPINFOHEADER structure, must be 40 */ uint32_t headerSize; /* image width in pixels */ uint32_t width; /* image height in pixels */ uint32_t height; /* number of planes in the image, must be 1 */ uint16_t planes; /* number of bits per pixel (1, 4, 8, 16, 24, 32) */ uint16_t bits; /* compression type (0=none, 1=RLE-8, 2=RLE-4) */ uint32_t compression; /* size of image data in bytes (including padding) */ uint32_t imageSize; /* horizontal resolution in pixels per meter (unreliable) */ uint32_t xresolution; /* vertical resolution in pixels per meter (unreliable) */ uint32_t yresolution; /* number of colors in image, or zero */ uint32_t ncolours; /* number of important colors, or zero */ uint32_t importantcolours; } BMPHeader; #pragma pack() /*------------------------------------------------------------------------------ * Exported functions *------------------------------------------------------------------------------*/ extern uint8_t BMP_IsValid(void *file); extern uint32_t BMP_GetFileSize(void *file); extern uint8_t BMP_Decode( void *file, uint8_t *buffer, uint32_t width, uint32_t height, uint8_t bpp ); extern void WriteBMPheader( uint32_t* pAddressHeader, uint32_t bmpHSize, uint32_t bmpVSize, uint8_t nbByte_Pixels ); extern void BMP_displayHeader(uint32_t* pAddressHeader); extern void RGB565toBGR555( uint8_t *fileSource, uint8_t *fileDestination, uint32_t width, uint32_t height, uint8_t bpp ); #endif //#ifndef BMP_H