⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bmp.c

📁 BMP头文件的源代码
💻 C
字号:
#include "uCFS.h"
#include "gui.h"
#include "bmp.h"
#include "uC_Lib.h"
#include "key.h"


BITMAPFILEHEADER BitmapFileHeader;
BITMAPINFO BitmapInfo;

void BMP(char *name)
{
	unsigned char buffer[3*320];
	FS_FILE *bmpFile;

	unsigned short dst1,*dest;
	unsigned short r1,g1,b1;
	long i,h;

	GUI_Clear();
	GUI_SetFont(&GUI_Font16B_ASCII);
	uC_memset( &BitmapFileHeader, 0x00, sizeof(BitmapFileHeader) );
	uC_memset( &BitmapInfo, 0x00, sizeof(BitmapInfo) );

	bmpFile = FS_FOpen(name, "r");
	if(!bmpFile)
	{
		GUI_DispStringAt("Can not open bmp", 20, 20);
		return;
	}
/*	GUI_DispStringAt("open bmp OK", 20, 20);

	FS_FRead(buffer,1,320, bmpFile);

	uC_memcpy( &BitmapInfo, &buffer[14], sizeof(BITMAPINFO) );
	GUI_DispDecAt( BitmapInfo.bmiHeader.biWidth, 20, 80, 4);
	GUI_DispDecAt( BitmapInfo.bmiHeader.biHeight, 20, 100, 4 );

	uC_memcpy( &BitmapFileHeader, buffer, sizeof(BITMAPFILEHEADER) );
	if( BitmapFileHeader.bfType == 0x4d42 )
		GUI_DispStringAt( "BM", 20, 40);
	else
		GUI_DispStringAt( "Other type", 20, 40);
	GUI_DispHex(BitmapFileHeader.bfType, 4);

	GUI_DispHexAt( BitmapFileHeader.bfSize, 20, 60, 8 );
*/
	for( h=239; h>=0; h-- )
	{
		dest = (unsigned short *)(0x30C00000 + h*320*2);	//short type

		FS_FRead(buffer,1,3*320, bmpFile);
		for( i=0; i<3*320; )
		{
			b1 = buffer[i++];
			g1 = buffer[i++];
			r1 = buffer[i++];

			r1 = ((r1>>3)&0x001f);
			g1 = ((g1<<3)&0x07e0);
			b1 = ((b1<<8)&0xf800);

			dst1 = r1|g1|b1;
//			*dest++ = ~dst1;
			*dest++ = dst1;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -