#ifndef _FONT_H_
#define _FONT_H_

#define FLASH_SECTOR_SIZE 				4096
#define FAT_SECTOR_SIZE 					4096

#define FONT_FLASH_ADDR_START		0x00600000//字库在FLASH中的起始地址
#define FONT_FLASH_SENTOR_START	0x600//字库在FLASH中的起始扇区/4096
#define DISK_FONT_LIB_SIZE				0x200000//字库最大空间2MB
#define FONT_FLASH_SENTOR_NUM		(DISK_FONT_LIB_SIZE/FAT_SECTOR_SIZE)//512//字库所占的扇区数
//字库引导区1 DBR1
#define FONT_DBR1Cluster		  	0x600//起始簇
#define FONT_DBR1ClusterSize		0x01//占据簇的大小
#define FONT_DBR1Addr			    	(FONT_DBR1Cluster*FAT_SECTOR_SIZE)//起始地址(DBRCluster*4096)=0X000
#define FONT_DBR1Size			    	(FONT_DBR1ClusterSize*FAT_SECTOR_SIZE)//1*4096
//字库引导区2 DBR2
#define FONT_DBR2Cluster		  	(FONT_DBR1Cluster+FONT_DBR1ClusterSize)//0x601//起始簇
#define FONT_DBR2ClusterSize		0x01//占据簇的大小
#define FONT_DBR2Addr			    	(FONT_DBR2Cluster*FAT_SECTOR_SIZE)//起始地址(DBRCluster*4096)=0X000
#define FONT_DBR2Size			    	(FONT_DBR2ClusterSize*FAT_SECTOR_SIZE)//1*4096

//实际字库数据区DATA
#define FONT_DATACluster	 	    (FONT_DBR2Cluster+FONT_DBR2ClusterSize)//0x602//(ROOTCluster+ROOTClusterSize)//0x07//数据区起始簇
#define FONT_DATAClusterSize    (FONT_FLASH_SENTOR_NUM-FONT_DBR1ClusterSize-FONT_DBR2ClusterSize)//500//占据簇的大小
#define FONT_DATAAddr	 	        (FONT_DATACluster*FAT_SECTOR_SIZE)//起始地址DATACluster*4096 28672=0X7000
#define FONT_DATASize		        (FONT_DATAClusterSize*FAT_SECTOR_SIZE)//500*4096

//成功写入字库的标志位,根据判断字库是否写入成功/字库之后已写入flash
#define FONT_UPGRADE_FLAG				0xAA55AB56//0xAAAA5555//
#define FONT_UPGRADE_SIZE				(FONT_DATASize+FONT_DBR2Size)
#define FONT_UPGRADECluster			FONT_DBR2Cluster//FONT_DATACluster
#define FONT_CHECK_FLAG					0xAA55AB56//字库检测标志位JMDFONT.DAT 的BYTE16-BYTE19为字库标志

#define FONT_ROOT_SIZE					((FONT_DBR1Size-32)>>5)//字库包含的最大字库目录数(4096-32)/32=127

//***********************************************************************
#define LCD_ILI9325		0//旧版液晶
#define LCD_ST7789		1//新版液晶
#define LCD_ILI9341		2//新版液晶
#define LCD_RM68090		3//旧版液晶

#define FONT_TYPE_ASCII	0X0000//ASCII码
#define FONT_TYPE_CN			0X0001//汉字
#define FONT_LIB_FLAG			0X56AB55AA
//0x8006000-0x800600F//字库移到码 以0xAA,0x55,0xAB,0x56,为开头
//0x8006010-0x800601F//字库信息
//0x8006020字库起始地址
#define FONT_LIB_ADDRESS					0x8006800//0x8006000
#define FONT_LIB_INFOMADDRESS		(FONT_LIB_ADDRESS+0x10)//0x8006010
#define ASCII_LIB_SADDRESS				(FONT_LIB_ADDRESS+0x20)//0x8006020

typedef enum
{
	LCD_TYPED_NC=0,
	LCD_TYPED_ASCII_I=1,//内部flash
	LCD_TYPED_ASCII_O=2,//FLASH字库 8*16
	LCD_TYPED_CN_I=3,
	LCD_TYPED_CN_O=4//FLASH字库 16*16
}Lcd_Type_Defined;
typedef enum
{
	TYPE_ASCII_8X16=0,//ASCII 8*16
	TYPE_CN_16X16=1,//中文 16*16
	TYPE_ASCII_16X32=2,//ASCII 16*32
	TYPE_CN_32X32=3,//中文 32*32
}Font_Type_Defined;

typedef struct
{
	u16 height;//字体分辨率
	u16 width;
	u16 fwbyte;//字模宽度所占字节数据
	u16 fsize;//字库中字模个数
	u16 type;//字库类型
	u32 startaddress;//字库起始地址
	u16 fsbyte;//一个字符所占的字节数
	u8 charbyte;//一个字符所占的字节数,ASCII占1个,汉字2个
	u8 fonttype;//当前字库类型 1 ascii,2 flash ascii ,3 cn(内部)，4 flash cn
}Lcd_Lib_Typedef;

#endif
