/********************************************************************
版权所有：	
文件版本： V1.00
文件名称： fmt.c
生成日期： 2007年04月26日
作    者：xxxxxx
使用范围：

功    能： 菜单内容格式分析
更新信息：
更新日志1： 
修改者:
修改日期:
修改内容:
修改原因: 
*********************************************************************/

#ifndef FORMATIO_H
#define FORMATIO_H

#define LCD_COLUMNS        40

#define LowerToUpper( c )       (c>'`'&&c<'{') ? c-('a'-'A') : c
#define UpperToLower( c )       (c>'@'&&c<'[') ? c+('a'-'A') : c

/*菜单的反显类型*/
enum
{
	MMI_FOCUS_NO=0,    //不反显
	MMI_FOCUS_NORMAL, //正常反显
	MMI_FOCUS_DATA,  //只反显数据
	MMI_FOCUS_ASC5_7  // 5*7点阵asc显示
};


/*修改数据的结构定义*/
typedef struct Modify
{
	void *pValue;		// 数据指针
	void *pFmtstr;		// 格式描述指针
	char Fmtstr[24];	// 格式描述字符串
	char Valstr[24];	// 数据字符串
	short x,y;			// 坐标
	char Type;			// 数据类型
	char Current;		// 当前数据编辑的位置，可理解为光标位
	char Lenth;			// 数据字符串长度
	char index;			// 当前屏中正刷新的实体项
	bool bModify; 		// 当前项是否进入编辑状态
	bool bFmtstr;		// 小数点可修改
}MODIFY_DEF;


extern MODIFY_DEF g_tModify;
short fmt_GetStrLenth(char *pd,char *FmtStr);
void fmt_Printf(short x,short y,char Flags,const char *FmtStr,...);
void fmt_StrPrintf(short sx,short sy,short bytes,char model,const char *str);
void fmt_InitModify(BYTE index,short x,short y,void *p,char flag,const char *FmtStr,...);
void fmt_CursorOff(void);
void fmt_CursorOn(void);
void fmt_CursorFlush(void);
bool fmt_CursorLeft(void);
bool fmt_CursorRight(void);
void fmt_CursorAdd(void);
void fmt_CursorSubb(void);
void fmt_GetModifyValue(void);
void fmt_GetModifyValue_Single(void);
bool fmt_GetModifyType(void);
void StrToValue(char *Str,char *FmtStr,void *Varible);
unsigned char ValuePtrToStr(char *Str,char *FmtStr,va_list  ap);
unsigned char ScanFmtStr(char *Type,const char *ScanPtr,char *FmtStr);
float atof1(char *str); // 将字符串转为浮点数

#endif
