Library to control a Graphics TFT connected to 4-wire SPI - revised for the Raio RA8875 Display Controller.

Dependents:   FRDM_RA8875_mPaint RA8875_Demo RA8875_KeyPadDemo SignalGenerator ... more

Fork of SPI_TFT by Peter Drescher

See Components - RA8875 Based Display

Enhanced touch-screen support - where it previous supported both the Resistive Touch and Capacitive Touch based on the FT5206 Touch Controller, now it also has support for the GSL1680 Touch Controller.

Offline Help Manual (Windows chm)

/media/uploads/WiredHome/ra8875.zip.bin (download, rename to .zip and unzip)

Bitmap.h

Committer:
WiredHome
Date:
2020-05-25
Revision:
206:83edda283d90
Parent:
197:853d08e2fb53

File content as of revision 206:83edda283d90:

//
// Windows BMP file definitions.
//
// Adapted from code written by Michael Sweet from Paul Bourke's
// web site: http://paulbourke.net/dataformats/bmp/
//

#ifndef _BITMAP_H_
#define _BITMAP_H_

#include <mbed.h>

// BITMAPFILEHEADER
// BITMAPINFOHEADER
// Optional Palette
// Raw Data

//
// Bitmap file data structures
//
// must align to 2-byte boundaries so it doesn't alter the memory image when

// bytes are read from the file system into this footprint.
#ifdef __GNUC__
#pragma pack(push, 1)
#define ALIGNMENT
#else
#define ALIGNMENT
#pragma push
#pragma pack(2)
#endif

/// Bitmap file header
typedef struct                    /**** BMP file header structure ****/
    {
    uint16_t    bfType;           ///< Magic number for file
    uint32_t    bfSize;           ///< Size of file
    uint16_t    bfReserved1;      ///< reserved placeholder for the structure footprint
    uint16_t    bfReserved2;      ///< reserved placeholder for the structure footprint
    uint32_t    bfOffBits;        ///< Offset to bitmap data

    } BITMAPFILEHEADER ALIGNMENT;           // Size: 14B
#if (defined(WIN32))
static_assert(sizeof(BITMAPFILEHEADER) == 14, "Alignment Error");
#endif

/// Bitmap information header
typedef struct                    /**** BMP file info structure ****/
    {
    uint32_t    biSize;           ///< Size of info header
    uint32_t    biWidth;          ///< Width of image
    uint32_t    biHeight;         ///< Height of image
    uint16_t    biPlanes;         ///< Number of color planes
    uint16_t    biBitCount;       ///< Number of bits per pixel
    uint32_t    biCompression;    ///< Type of compression to use
    uint32_t    biSizeImage;      ///< Size of image data
    int32_t     biXPelsPerMeter;  ///< X pixels per meter
    int32_t     biYPelsPerMeter;  ///< Y pixels per meter
    uint32_t    biClrUsed;        ///< Number of colors used
    uint32_t    biClrImportant;   ///< Number of important colors
    } BITMAPINFOHEADER ALIGNMENT;           // Size: 40B
#ifdef __GNUC__
#pragma pack(pop)
#undef ALIGNMENT
#else
#pragma pop
#endif

#define BF_TYPE 0x4D42            /* "MB" */

/*
 * Constants for the biCompression field...
 */

#  define BI_RGB       0             /* No compression - straight BGR data */
#  define BI_RLE8      1             /* 8-bit run-length compression */
#  define BI_RLE4      2             /* 4-bit run-length compression */
#  define BI_BITFIELDS 3             /* RGB bitmap with RGB masks */

/// An RGB Quad data type used by the bitmap driver.
typedef struct                       /**** Colormap entry structure ****/
    {
    uint8_t  rgbBlue;          ///< Blue value
    uint8_t  rgbGreen;         ///< Green value
    uint8_t  rgbRed;           ///< Red value
    uint8_t  rgbReserved;      ///< Reserved
    } RGBQUAD;

//typedef struct                       /**** Bitmap information structure ****/
//    {
//    BITMAPINFOHEADER bmiHeader;      /* Image header */
//    RGBQUAD          bmiColors[256]; /* Image colormap */
//    } BITMAPINFO;

#ifdef __GNUC__
#pragma pack(push, 1)
#define ALIGNMENT
#else
#pragma push
#pragma pack(2)
#endif

/// Icon file type file header.
typedef struct                  /**** ICO file header structure ****/
    {
    uint16_t    Reserved_zero;  ///< Always zero
    uint16_t    icType;         ///< 1 for .ico, 2 for .cur
    uint16_t    icImageCount;   ///< number of images in the file
    } ICOFILEHEADER;

/// Icon file type directory entry structure
typedef struct                  /**** ICO file Directory Entry structure (1 or more) ****/
    {
    uint8_t     biWidth;        ///< Width of image 
    uint8_t     biHeight;       ///< Height of image 
    uint8_t     biClrUsed;      ///< Number of colors used 
    uint8_t     Reserved_zero;  ///< reserved placeholder for the structure footprint
    uint16_t    biPlanes;       ///< Number of color planes (ICO should be 0 or 1, CUR horz hotspot 
    uint16_t    biBitCount;     ///< Number of bits per pixel (ICO bits per pixel, CUR vert hotspot 
    uint32_t    biSizeImage;    ///< Size of image data 
    uint32_t    bfOffBits;      ///< Offset into file for the bitmap data 
    } ICODIRENTRY;
#ifdef __GNUC__
#pragma pack(pop)
#undef ALIGNMENT
#else
#pragma pop
#endif

#define IC_TYPE 0x0001            /* 1 = ICO (icon), 2 = CUR (cursor) */

#endif // _BITMAP_H_