數碼相框 渲染模組

2021-10-08 20:31:30 字數 4358 閱讀 8574

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個執行緒 觸控...