电子书项目分析
三个重要底层的结构体:
1.T_DispOpr
记录了LCD的相关信息
1 typedef struct DispOpr {
2 char *name;
3 int iXres; /* X分辨率 */
4 int iYres; /* Y分辨率 */
5 int iBpp; /* BPP */
6 int (*DeviceInit)(void); /* 设备初始化,设置显示器的相关参数 */
7 int (*ShowPixel)(int iPenX, int iPenY, unsigned int dwColor);/* 像素显示函数 */
8 int (*CleanScreen)(unsigned int dwBackColor);/* 清屏幕函数 */
9 struct DispOpr *ptNext;/* 指向下一个结构 (链表)*/
10 }T_DispOpr, *PT_DispOpr;/* 一个结构体,一个结构体指针 */
2.T_FontOpr
记录了字体位图的相关信息
1 typedef struct FontOpr {
2 char *name;
3 int (*FontInit)(char *pcFontFile, unsigned int dwFontSize);/* 字体初始化 */
4 int (*GetFontBitmap)(unsigned int dwCode, PT_FontBitMap ptFontBitMap);/* 获得字体的位图 */
5 struct FontOpr *ptNext;/* 指向下一个结构体(链表) */
6 }T_FontOpr, *PT_FontOpr;/* 一个结构体,一个指向结构体的指针 */
3.T_EncodingOpr
记录了文件内容的编码的相关信息
1 typedef struct EncodingOpr {
2 char *name;
3 int iHeadLen;/* 文件头部的长度,支持这种编码的点阵图像 */
4 PT_FontOpr ptFontOprSupportedHead;
5 int (*isSupport)(unsigned char *pucBufHead);/* 是否支持这种编码 */
6 int (*GetCodeFrmBuf)(unsigned char *pucBufStart, unsigned char *pucBufEnd, unsigned int *pdwCode);/* 获取这个文件的编码 */
7 struct EncodingOpr *ptNext;/* 指向下一个结构体 */
8 }T_EncodingOpr, *PT_EncodingOpr;
函数的调用关系
目录结构:
.
├── display
│ ├── disp_manager.c
│ ├── disp_manager.c~
│ ├── fb.c
│ └── fb.c~
├── draw
│ ├── draw.c
│ └── draw.c~
├── encoding
│ ├── ascii.c
│ ├── ascii.c~
│ ├── encoding_manager.c
│ ├── utf-16be.c
│ ├── utf-16be.c~
│ ├── utf-16le.c
│ ├── utf-16le.c~
│ ├── utf-8.c
│ └── utf-8.c~
├── fonts
│ ├── ascii.c
│ ├── fonts_manager.c
│ ├── fonts_manager.c~
│ ├── freetype.c
│ ├── freetype.c~
│ ├── gbk.c
│ └── gbk.c~
├── include
│ ├── config.h
│ ├── disp_manager.h
│ ├── draw.h
│ ├── encoding_manager.h
│ └── fonts_manager.h
├── main.c
├── main.c~
├── Makefile
└── 测试文件
├── HZK16
├── MSYH.TTF
├── utf16be.txt
├── utf16le.txt
├── utf8.txt
├── zhutaoansi.txt
├── zhutaounicode.txt
├── zhutaoutf-8.txt
├── 使用方法
└── 使用方法~
end