miniui
//android提供了一個庫minui用于簡單的UI輸出,源碼在bootable/recovery/minui中,
//gr_init()和gr_font_size()為minui庫提供方法,gr_init()為UI輸出作準備,gr_font_size()獲得字體大小
gr_init();
//res_create_surface()為minui庫中提供,用于將一張圖片生成一個surface
1、gr_init()初始化圖形設(shè)備,分配Pixelflinger庫渲染的內(nèi)存
2、gr_font_size() 將字體對應(yīng)的surface長寬賦值給char_width和char_height
intgr_init(void);/*初始化圖形顯示,主要是打開設(shè)備、分配內(nèi)存、初始化一些參數(shù)*/
voidgr_exit(void);/*注銷圖形顯示,關(guān)閉設(shè)備并釋放內(nèi)存*/
intgr_fb_width(void);/*獲取屏幕的寬度*/
intgr_fb_height(void);/*獲取屏幕的高度*/
gr_pixel*gr_fb_data(void);/*獲取顯示數(shù)據(jù)緩存的地址*/
voidgr_flip(void);/*刷新顯示內(nèi)容*/
voidgr_fb_blank(boolblank);/*清屏*/
voidgr_color(unsignedcharr,unsignedcharg,unsignedcharb,unsignedchara);/*設(shè)置字體顏色*/
voidgr_fill(intx,inty,intw,inth);/*填充矩形區(qū)域,參數(shù)分別代表起始坐標、矩形區(qū)域大小*/
intgr_text(intx,inty,constchar*s);/*顯示字符串*/
intgr_measure(constchar*s);/*獲取字符串在默認字庫中占用的像素長度*/
voidgr_font_size(int*x,int*y);/*獲取當前字庫一個字符所占的長寬*/
voidgr_blit(gr_surfacesource,intsx,intsy,intw,inth,intdx,intdy);/*填充由source指定的圖片*/
unsignedintgr_get_width(gr_surfacesurface);/*獲取圖片寬度*/
unsignedintgr_get_height(gr_surfacesurface);/*獲取圖片高度*/
/*根據(jù)圖片創(chuàng)建顯示資源數(shù)據(jù),name為圖片在mk文件指定的相對路徑*/
intres_create_surface(constchar*name,gr_surface*pSurface);
voidres_free_surface(gr_surfacesurface);/*釋放資源數(shù)據(jù)*/
主程序通過dlopen()加載一個.so的動態(tài)庫文件, 然后動態(tài)庫會自動運行 _init() 初始化函數(shù), 初始化函數(shù)打印一個提示信息, 然后調(diào)用主程序的注冊函數(shù)給結(jié)構(gòu)體重新賦值, 然后調(diào)用結(jié)構(gòu)體的函數(shù)指針, 打印該結(jié)構(gòu)體的值. 這樣就充分的達到了主程序和動態(tài)庫的函數(shù)相互調(diào)用和指針的相互傳遞.
voidres_free_surface(gr_surfacesurface);/*釋放資源數(shù)據(jù)*/
總結(jié)
- 上一篇: 钻山风糖浆_功效作用注意事项用药禁忌用法
- 下一篇: Docker入门二