render模組包含三個部分:format,operation和render.c,其中format為檔案解析模組,operation為操作模組,render.c為渲染函式。
format目錄 operation目錄 render.c
picfmt_manager.c zoom.c merge.c
||bmp.c jpg.c
檔案解析模組中,picfmt_manager.c管理底層支援的兩種格式:bmp格式和jpg格式,它們分別向上註冊picfileparser結構體,提供底層的操作函式,並且解析得到的資訊儲存在pixeldatas結構體中。
解析模組
typedef
struct picfileparser t_picfileparser,
*pt_picfileparser;
的象素數據
typedef
struct pixeldatas t_pixeldatas,
*pt_pixeldatas;
picfmt_manager.c通過鍊錶管理底層註冊的picfileparser解析模組結構體。
//註冊"檔案解析模組", "檔案解析模組"就是怎麼從bmp/jpg等檔案中解析出象素數據
intregisterpicfileparser
(pt_picfileparser ptpicfileparser)
//根據名字取出指定的"檔案解析模組"
pt_picfileparser parser
(char
*pcname)
//找到能支援指定檔案的"檔案解析模組"
pt_picfileparser getparser
(pt_filemap ptfilemap)
解析後得到的資訊存放在pixeldatas結構體中,以它為引數的函式可以對進行放大,合併等操作。
render.c借助上述函式,可以根據pixeldatas中的內容渲染videomem記憶體。其中上部分都是關於的渲染,後部分是關於字型的渲染。
//把緩衝區中的資料刷到顯示裝置上去,即在顯示裝置上顯示緩衝區中的影象
void
flushvideomemtodev
(pt_videomem ptvideomem)
//取出bmp格式的圖示檔案中的象素數據
intgetpixeldatasforicon
(char
*strfilename, pt_pixeldatas ptpixeldatas)
//釋放影象資料所佔緩衝區
void
freepixeldatasforicon
(pt_pixeldatas ptpixeldatas)
//判斷本程式能否支援該檔案,目前只能支援bmp/jpg格式的檔案
intispicturefilesupported
(char
*strfilename)
//從檔案中取出象素數據
intgetpixeldatasfrmfile
(char
*strfilename, pt_pixeldatas ptpixeldatas)
//getpixeldatasfrmfile從檔案中取出象素數據時是動態分配記憶體的,freepixeldatasfrmfile把分配的記憶體釋放掉
void
freepixeldatasfrmfile
(pt_pixeldatas ptpixeldatas)
//設定videomem中某個座標象素的顏色
static
intsetcolorforpixelinvideomem
(int ix,
int iy, pt_videomem ptvideomem,
unsigned
int dwcolor)
//清除videomem中某個矩形區域,設為某顏色
void
clearrectangleinvideomem
(int itopleftx,
int itoplefty,
int ibotrightx,
int ibotrighty, pt_videomem ptvideomem,
unsigned
int dwcolor)
//是把顯示裝置上指定區域裡每個象素的顏色取反
static
void
invertbutton
(pt_layout ptlayout)
//要顯示的字元是否完全在指定矩形區域內
static
intisfontinarea
(int itopleftx,
int itoplefty,
int ibotrightx,
int ibotrighty, pt_fontbitmap ptfontbitmap)
//根據點陣圖中的資料把字元顯示到videomem中
static
intmergeonefonttovideomem
(pt_fontbitmap ptfontbitmap, pt_videomem ptvideomem)
//在videomem的指定矩形居中顯示字串
intmergerstringtocenterofrectangleinvideomem
(int itopleftx,
int itoplefty,
int ibotrightx,
int ibotrighty,
unsigned
char
*puctextstring, pt_videomem ptvideomem)
把緩衝區中的資料刷到顯示裝置上去,即在顯示裝置上顯示緩衝區中的影象,引數為videomem結構體。
void
flushvideomemtodev
(pt_videomem ptvideomem)
取出bmp格式的圖示檔案中的象素數據,其中需要對映檔案,將它當做記憶體處理。
int
getpixeldatasforicon
(char
*strfilename, pt_pixeldatas ptpixeldatas)
void
freepixeldatasforicon
(pt_pixeldatas ptpixeldatas)
判斷本程式能否支援該檔案,目前只能支援bmp/jpg格式的檔案
int
ispicturefilesupported
(char
*strfilename)
unmapfile
(&tfilemap)
;//取消對映
return1;
}
從檔案中取出象素數據
int
getpixeldatasfrmfile
(char
*strfilename, pt_pixeldatas ptpixeldatas)
void
freepixeldatasfrmfile
(pt_pixeldatas ptpixeldatas)
設定videomem中某個座標象素的顏色
static
intsetcolorforpixelinvideomem
(int ix,
int iy, pt_videomem ptvideomem,
unsigned
int dwcolor)
case16:
case32:
default:}
return-1
;}
清除videomem中某個矩形區域,設為某顏色
void
clearrectangleinvideomem
(int itopleftx,
int itoplefty,
int ibotrightx,
int ibotrighty, pt_videomem ptvideomem,
unsigned
int dwcolor)
是把顯示裝置上指定區域裡每個象素的顏色取反
static
void
invertbutton
(pt_layout ptlayout)
}
數碼相框 頁面模組
typedef struct pageaction t pageaction,pt pageaction typedef struct pagelayout t pagelayout,pt pagelayout static t layout g atmainpageiconslayout stat...
數碼相框專案模組 二 UART
如果要想在串列埠工具dwn上顯示列印資訊,使用c語言的標準庫是沒有效果的,必須利用開發板上的串列埠,經過cpu來進行輸出列印資訊,uart模組可以實現輸入和輸出的功能 一 配置i 0 暫存器 要在原理圖上找到串列埠,這裡我們使用串列埠0 u12 需要在原理圖上找到接收資料訊號 xrxd0 和 傳送資...
1 數碼相框 相框框架分析 1
專案流程 弄清需求 1 上電,lcd顯示一副 2 根據配置檔案,決定停留當前介面還是自動顯示下一張 3 點選一下,出現乙個對話方塊 手動顯示,自動顯示 4 上放大,下縮小,左右滑動切換 5 左右滑動很快時,切換上上 下下一張 設計框架 通過兩部分來完成 1 輸入程序 如下圖所示 建立3個執行緒 觸控...