Kenji Arai / Mbed OS DISCO-F769NI_several_example

Dependencies:   BD_SD_DISCO_F769NI BSP_DISCO_F769NI LCD_DISCO_F769NI TS_DISCO_F769NI USBHost_F769NI

Committer:
kenjiArai
Date:
Wed Aug 07 05:39:01 2019 +0000
Revision:
3:35ac9ee7d2d6
1st trial revision (Not finalized yet)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 3:35ac9ee7d2d6 1 // https://os.mbed.com/users/okano/code/bmp_8bit_per_pixel_format/
kenjiArai 3:35ac9ee7d2d6 2
kenjiArai 3:35ac9ee7d2d6 3 #if 0
kenjiArai 3:35ac9ee7d2d6 4
kenjiArai 3:35ac9ee7d2d6 5 #include "mbed.h" // for mbed
kenjiArai 3:35ac9ee7d2d6 6 LocalFileSystem local("local"); // for mbed to access local file system
kenjiArai 3:35ac9ee7d2d6 7
kenjiArai 3:35ac9ee7d2d6 8 /*
kenjiArai 3:35ac9ee7d2d6 9 *
kenjiArai 3:35ac9ee7d2d6 10 * BMP file data handler sample
kenjiArai 3:35ac9ee7d2d6 11 *
kenjiArai 3:35ac9ee7d2d6 12 * reference : http://www.umekkii.jp/data/computer/file_format/bitmap.cgi
kenjiArai 3:35ac9ee7d2d6 13 *
kenjiArai 3:35ac9ee7d2d6 14 */
kenjiArai 3:35ac9ee7d2d6 15
kenjiArai 3:35ac9ee7d2d6 16 #include <stdio.h>
kenjiArai 3:35ac9ee7d2d6 17
kenjiArai 3:35ac9ee7d2d6 18 //#define SOURCE_FILE "/local/small.bmp"
kenjiArai 3:35ac9ee7d2d6 19 #define SOURCE_FILE "/local/pre4.bmp"
kenjiArai 3:35ac9ee7d2d6 20 //#define SOURCE_FILE "pre_dsp_4.bmp"
kenjiArai 3:35ac9ee7d2d6 21
kenjiArai 3:35ac9ee7d2d6 22 #define BUFFER_SIZE 1024
kenjiArai 3:35ac9ee7d2d6 23
kenjiArai 3:35ac9ee7d2d6 24 typedef struct bmp_header_st {
kenjiArai 3:35ac9ee7d2d6 25 unsigned short bfType __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 26 unsigned long bfSize __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 27 unsigned short bfReserved1 __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 28 unsigned short bfReserved2 __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 29 unsigned long bfOffBits __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 30
kenjiArai 3:35ac9ee7d2d6 31 unsigned long biSize __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 32 long biWidth __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 33 long biHeight __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 34 unsigned short biPlanes __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 35 unsigned short biBitCount __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 36 unsigned long biCompression __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 37 unsigned long biSizeImage __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 38 long biXPixPerMeter __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 39 long biYPixPerMeter __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 40 unsigned long biClrUsed __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 41 unsigned long biCirImportant __attribute__((packed));
kenjiArai 3:35ac9ee7d2d6 42 }
kenjiArai 3:35ac9ee7d2d6 43 bmp_header;
kenjiArai 3:35ac9ee7d2d6 44
kenjiArai 3:35ac9ee7d2d6 45 typedef struct color_palette_st {
kenjiArai 3:35ac9ee7d2d6 46 unsigned char red;
kenjiArai 3:35ac9ee7d2d6 47 unsigned char green;
kenjiArai 3:35ac9ee7d2d6 48 unsigned char blue;
kenjiArai 3:35ac9ee7d2d6 49 unsigned char dummy;
kenjiArai 3:35ac9ee7d2d6 50 }
kenjiArai 3:35ac9ee7d2d6 51 color_palette;
kenjiArai 3:35ac9ee7d2d6 52
kenjiArai 3:35ac9ee7d2d6 53
kenjiArai 3:35ac9ee7d2d6 54 int main() {
kenjiArai 3:35ac9ee7d2d6 55 unsigned char buffer[ BUFFER_SIZE ];
kenjiArai 3:35ac9ee7d2d6 56 FILE *fs;
kenjiArai 3:35ac9ee7d2d6 57 bmp_header bh;
kenjiArai 3:35ac9ee7d2d6 58 color_palette cp[256];
kenjiArai 3:35ac9ee7d2d6 59 unsigned long readsize;
kenjiArai 3:35ac9ee7d2d6 60 unsigned long i;
kenjiArai 3:35ac9ee7d2d6 61 unsigned long ofset = 0;
kenjiArai 3:35ac9ee7d2d6 62
kenjiArai 3:35ac9ee7d2d6 63 printf( "BMP file access sample\r\n");
kenjiArai 3:35ac9ee7d2d6 64
kenjiArai 3:35ac9ee7d2d6 65 if ( NULL == (fs = fopen( SOURCE_FILE, "rb" )) ) {
kenjiArai 3:35ac9ee7d2d6 66 printf( "file open error when oening file \"%s\"\r\n", SOURCE_FILE );
kenjiArai 3:35ac9ee7d2d6 67 return ( 1 );
kenjiArai 3:35ac9ee7d2d6 68 }
kenjiArai 3:35ac9ee7d2d6 69
kenjiArai 3:35ac9ee7d2d6 70 /*
kenjiArai 3:35ac9ee7d2d6 71 * reading header
kenjiArai 3:35ac9ee7d2d6 72 */
kenjiArai 3:35ac9ee7d2d6 73
kenjiArai 3:35ac9ee7d2d6 74 fread( &bh, sizeof( bh ), 1, fs );
kenjiArai 3:35ac9ee7d2d6 75
kenjiArai 3:35ac9ee7d2d6 76 printf( " bfType : 0x%04X\r\n", bh.bfType );
kenjiArai 3:35ac9ee7d2d6 77 printf( " bfSize : %ld\r\n", bh.bfSize );
kenjiArai 3:35ac9ee7d2d6 78 printf( " bfOffBits : %ld\r\n", bh.bfOffBits );
kenjiArai 3:35ac9ee7d2d6 79 printf( " biSize : %lu\r\n", bh.biSize );
kenjiArai 3:35ac9ee7d2d6 80 printf( " biWidth : %ld\r\n", bh.biWidth );
kenjiArai 3:35ac9ee7d2d6 81 printf( " biHeight : %ld\r\n", bh.biHeight );
kenjiArai 3:35ac9ee7d2d6 82 printf( " biPlanes : %d\r\n", bh.biPlanes );
kenjiArai 3:35ac9ee7d2d6 83 printf( " biBitCount : %d\r\n", bh.biBitCount );
kenjiArai 3:35ac9ee7d2d6 84 printf( " biCompression : %lu\r\n", bh.biCompression );
kenjiArai 3:35ac9ee7d2d6 85 printf( " biSizeImage : %lu\r\n", bh.biSizeImage );
kenjiArai 3:35ac9ee7d2d6 86 printf( " biXPixPerMeter : %ld\r\n", bh.biXPixPerMeter );
kenjiArai 3:35ac9ee7d2d6 87 printf( " biYPixPerMeter : %ld\r\n", bh.biYPixPerMeter );
kenjiArai 3:35ac9ee7d2d6 88 printf( " biClrUsed : %lu\r\n", bh.biClrUsed );
kenjiArai 3:35ac9ee7d2d6 89 printf( " biCirImportant : %lu\r\n", bh.biCirImportant );
kenjiArai 3:35ac9ee7d2d6 90
kenjiArai 3:35ac9ee7d2d6 91 /*
kenjiArai 3:35ac9ee7d2d6 92 * checking header
kenjiArai 3:35ac9ee7d2d6 93 */
kenjiArai 3:35ac9ee7d2d6 94
kenjiArai 3:35ac9ee7d2d6 95 if ( (bh.bfType != 0x4D42)
kenjiArai 3:35ac9ee7d2d6 96 || (bh.bfOffBits != 54 + 256 * sizeof( color_palette ) )
kenjiArai 3:35ac9ee7d2d6 97 || (bh.biBitCount != 8)
kenjiArai 3:35ac9ee7d2d6 98 || (bh.biCompression != 0)
kenjiArai 3:35ac9ee7d2d6 99 ) {
kenjiArai 3:35ac9ee7d2d6 100 printf( "unsupported file format\r\n" );
kenjiArai 3:35ac9ee7d2d6 101 return ( 1 );
kenjiArai 3:35ac9ee7d2d6 102 }
kenjiArai 3:35ac9ee7d2d6 103
kenjiArai 3:35ac9ee7d2d6 104 /*
kenjiArai 3:35ac9ee7d2d6 105 * header information
kenjiArai 3:35ac9ee7d2d6 106 */
kenjiArai 3:35ac9ee7d2d6 107
kenjiArai 3:35ac9ee7d2d6 108 printf( "header read, the image data size is %lu bytes\r\n", bh.bfSize );
kenjiArai 3:35ac9ee7d2d6 109 printf( " the image data size is %lu bytes\r\n", bh.biSizeImage );
kenjiArai 3:35ac9ee7d2d6 110 printf( " horizontal size %lu pixels\r\n", bh.biWidth );
kenjiArai 3:35ac9ee7d2d6 111 printf( " vertical size %lu pixels\r\n", bh.biHeight );
kenjiArai 3:35ac9ee7d2d6 112
kenjiArai 3:35ac9ee7d2d6 113 /*
kenjiArai 3:35ac9ee7d2d6 114 * read color palette
kenjiArai 3:35ac9ee7d2d6 115 */
kenjiArai 3:35ac9ee7d2d6 116
kenjiArai 3:35ac9ee7d2d6 117 for ( i = 0; i < 256; i++ ) {
kenjiArai 3:35ac9ee7d2d6 118 fread( &(cp[i]), sizeof( color_palette ), 1, fs );
kenjiArai 3:35ac9ee7d2d6 119 // printf( "cp 0x%02X : 0x%02X - 0x%02X - 0x%02X\r\n", i, (cp[i]).red, (cp[i]).green, (cp[i]).blue );
kenjiArai 3:35ac9ee7d2d6 120 }
kenjiArai 3:35ac9ee7d2d6 121
kenjiArai 3:35ac9ee7d2d6 122
kenjiArai 3:35ac9ee7d2d6 123 while ( 0 != (readsize = fread( buffer, sizeof( unsigned char ) , BUFFER_SIZE, fs )) ) {
kenjiArai 3:35ac9ee7d2d6 124 for ( i = 0; i < readsize; i++ ) {
kenjiArai 3:35ac9ee7d2d6 125 // printf( " %6lX : 0x%02X, 0x%02X, 0x%02X\r\n", ofset, cp[ buffer[i] ].red, cp[ buffer[i] ].green, cp[ buffer[i] ].blue );
kenjiArai 3:35ac9ee7d2d6 126 ofset++;
kenjiArai 3:35ac9ee7d2d6 127 }
kenjiArai 3:35ac9ee7d2d6 128 }
kenjiArai 3:35ac9ee7d2d6 129
kenjiArai 3:35ac9ee7d2d6 130 printf( "done.\r\n\r\n" );
kenjiArai 3:35ac9ee7d2d6 131 }
kenjiArai 3:35ac9ee7d2d6 132
kenjiArai 3:35ac9ee7d2d6 133 #endif