#include <uis.h>
#include <apps.h>
#include <res_def.h>
#include "..\dbg\dbg.h"
#include "uis.h"
#include "dl.h"
#include "Graphics.h"
#include "bookmarks.h"
#define FILEURI_MAX_LEN			258	//文件最大长度
#define FILENAME_MAX_LEN		63	//文件名最大长度
#define ANCHOR_RIGHT                  8 
#define ANCHOR_LEFT                   4 
#define ANCHOR_TOP                    4
#define   LEN   1024*2			//缓存


typedef struct
{
	UINT16		bufpos;		//位置
	UINT16		off;		//偏移
	
} RD_T;
extern char g2bTable[15228];
extern RD_T* SHOW;
extern UINT8 *PIC;
extern UINT32 PIC_SIZE; 
extern UINT8 r_type;		//编码格式
extern UINT8			atype;
extern WCHAR showtxt[LEN+1];  //临时缓存
extern WCHAR map_uir[100];  //临时缓存
extern WCHAR bmap_uir[100];
extern WCHAR pic_uir[100];
extern const WCHAR noname[];//未使用
extern const WCHAR edit_name[];//名称
extern const WCHAR goto_[];	//跳转
extern const WCHAR new_[];	//新建
extern const WCHAR set_y[];	//行距
extern const WCHAR set_t[];	//时间
extern const WCHAR set_c[];	//颜色
extern const WCHAR set_b[];	//备份
extern const WCHAR set_h[];	//翻页行数
extern const WCHAR set_x[];	//翻页行数
extern const WCHAR set_type_o[];//偏移
extern UINT8 SET_C_I[];		//文字背景颜色
extern UINT8 SET_Y;		//行距
extern UINT16 SET_T;		//时间
extern UINT8 SET_H;		//翻页行数
extern UINT8 SET_X;		//翻页像素
extern UINT32 map_id;		//偏移
extern UINT8 max_h;		//最大行数
extern BOOL cmd_file;		//是否插件打开
extern BOOL r_pic;		//是否图片背景
extern BOOL SET_B;		//是否备份
extern WCHAR file_dir[FILEURI_MAX_LEN+1]; //EDITTXT文件夹路径
#define LANG_BOOKMARKS				0x0100113C//书签
typedef struct
{
	WCHAR		name[68+1];
	WCHAR*		ext;
	UINT16		attrib;
} FILEINFO ;				//文件组 name-名字 ext- 后缀 attrib-属性

typedef struct
{ 
    APPLICATION_T	apt;
    FILEINFO   		*flist; 
 //   WCHAR 		name[FILEURI_MAX_LEN+1];			
    WCHAR 		filedir[FILEURI_MAX_LEN+1];	//打开的文件夹
    WCHAR 		openfile[FILEURI_MAX_LEN+1];	//文件路径
    UINT16		cont;				//当前文件个数
    UINT8			mode;			//模式
    UINT8			setmode;		//设置模式
    int           		startoff;		//阅读时当前偏移
    UINT16          		endoff;			//当前页偏移大小  编辑的时候用到
    BM_LIST_T*			mark;			//书签
    UINT16			cur_pos;		//书签位置
    int				tem_j;			//当前行数
    UINT8			tem_x;			//读取时不满屏多余行数
    int           		offset;			//读取文件的偏移
    UINT32			file_size;		//文件大小
    BOOL			set;			//是否设置状态
    //BOOL			R_TIME;			//是否自动翻页
    BOOL			READ;			//是否在画图
    BOOL			d_true;			//是否刷新界面
    UINT8			type;	

} APP_TXTEDIT_T;
typedef enum
{
	HE_STATE_ANY, 
	HE_STATE_INIT,
	HE_STATE_MAIN,		//菜单
	HE_STATE_FB,		//浏览器
	HE_STATE_READ,		//读书 预览
	HE_STATE_EDIT,		//编辑
	HE_STATE_MARK,		//书签
	HE_STATE_GOTO,		//跳转
	HE_STATE_ABOUT,
	HE_STATE_MAX 		//最大
} HE_STATES_T;
typedef enum {
	MODE_NULL,		//初始
	MODE_FB,		//浏览器进入 初始数据进入
	MODE_MARK,		//书签进入 返回阅读时候重新打开文件
	MODE_EDIT,		//编辑进入 返回阅读时候重新打开文件
	MODE_MENU,		//菜单进入 返回时 进入阅读
	MODE_SET_C,		//设置菜单
	MODE_CMD,		//插件进入
	MODE_P,			//预览
	//MODE_GB,		//简体繁体进入
	MODE_END		
} R_MODE;
typedef enum
{
	RES_LIST_CAPTION=0,	//界面名称
	RES_EDIT_CAPTION,	//编辑界面名称
	RES_NEW_CAPTION,	//新建文件
	RES_MAX
} HE_RESOURCE;
typedef enum 
{
    MAIN_OPEN=1,		//打开
    MAIN_MARK,			//书签 阅读时才能保存
    MAIN_GOTO,			//跳转 阅读时显示
    MAIN_SET,			//设置
    MAIN_ABOUT,			//关于
    MAIN_MAX=MAIN_ABOUT,	//菜单 最大列表
    MAIN_SET_Y,			//设置行距
    MAIN_SET_T,			//设置时间
    MAIN_SET_H,			//设置翻页行数
    MAIN_SET_X,			//设置翻页像素
    MAIN_TYPE,			//设置编码
    MAIN_ATYPE,			//设置默认编码
    MAIN_TYPE_OFF,		//设置 偏移
    MAIN_MAP,			//设置 map地址
    MAIN_BMAP,			//设置 BIGmap地址
    MAIN_SET_C,			//设置颜色
    MAIN_SET_B,			//设置备份
    MAIN_PIC,			//设置背景
    SET_END=MAIN_PIC,		//设置图片
    MAIN_TYPE_AUTO,		//编码 自动
    MAIN_TYPE_GB,		//编码 简体
    MAIN_TYPE_BIG,		//编码 繁体
    MAIN_TYPE_BIG5,		//编码 繁体
    MAIN_TYPE_XBIG5,		//编码 显示繁体
    MAIN_TYPE_U,		//编码 U码
    MAIN_TYPE_UL,		//编码 UL码
    MAIN_TYPE_UTF8,		//编码 UL码
    TYPE_END=MAIN_TYPE_UTF8,
    MAIN_NEW,			//创建
    MAIN_END,			//设置文字背景颜色的时候用到
    MENU_MAX=MAIN_ABOUT,		//菜单	最大列表
    SET_MAX=SET_END-MAIN_MAX,	//设置最大列表
    TYPE_MAX=MAIN_END-MAIN_TYPE_AUTO-1	//编码最大列表 
} MAIN_ITEMS_T;			//菜单中的模式
typedef enum 
{
    TYPE_NULL,
    TYPE_AUTO,			
    TYPE_ANSI,
    TYPE_BIG,
    TYPE_BIG5,
    TYPE_XBIG5,
    TYPE_UCS,
    TYPE_UCL,
    TYPE_UTF8,
    TYPE_LANGMAX
} TYPE_T;  //编码 

extern UINT32 SetStringRes( RESOURCE_ID * res, const WCHAR * text );  //设置标题
extern const EVENT_HANDLER_ENTRY_T fb_state_handlers[];			//浏览器框架
extern const EVENT_HANDLER_ENTRY_T read_state_handlers[];		//看前面的英文推举吧
extern const EVENT_HANDLER_ENTRY_T edit_state_handlers[];
extern const EVENT_HANDLER_ENTRY_T mark_state_handlers[];
extern const EVENT_HANDLER_ENTRY_T goto_state_handlers[];
extern const EVENT_HANDLER_ENTRY_T about_state_handlers[];
//extern const EVENT_HANDLER_ENTRY_T set_state_handlers[];
extern GRAPHIC_POINT_T         display_size;	//手机屏幕尺寸
extern RESOURCE_ID Resources[RES_MAX];		//标题
extern UIS_DIALOG_T            dialog;		//俺只会用 不知道专业中这叫什么
UINT32 FbrowserStateEnter( EVENT_STACK_T *ev_st,  void *app,  ENTER_STATE_TYPE_T type );//进入
UINT32 ReadStateEnter( EVENT_STACK_T *ev_st,  void *app,  ENTER_STATE_TYPE_T type );
UINT32 editStateEnter( EVENT_STACK_T *ev_st,  void *app,  ENTER_STATE_TYPE_T type );
UINT32 MarkStateEnter( EVENT_STACK_T *ev_st,  void *app,  ENTER_STATE_TYPE_T type );
UINT32 GotoStateEnter( EVENT_STACK_T *ev_st,  void *app,  ENTER_STATE_TYPE_T type );
UINT32 AboutStateEnter( EVENT_STACK_T * ev_st, void * app, ENTER_STATE_TYPE_T type );
UINT32 destroyApp( EVENT_STACK_T *ev_st,  void *app );  //退出
UINT16 GBtoU(char *str,UINT8 i);
UINT16 GBKtoU(char *str,UINT8 i);
UINT16 GBTOU(char *g_buf,WCHAR *u_buf,UINT8 type ,UINT16 len);
UINT32 saveset(void * app);
UINT32 booksave( EVENT_STACK_T *ev_st,  void *app );
void readpic(void);
UINT16 readmap(void);
RESOURCE_ID GetIconByExt( WCHAR * ext1 );		//得到图标
