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()  初始化图形设备,分配Pixelflinger库渲染的内存

2、gr_font_size()  将字体对应的surface长宽赋值给char_width和char_height

 

 

    1. int gr_init(void);             /* 初始化图形显示,主要是打开设备、分配内存、初始化一些参数 */  
    2. void gr_exit(void);            /* 注销图形显示,关闭设备并释放内存 */  
    3.   
    4. int gr_fb_width(void);         /* 获取屏幕的宽度 */  
    5. int gr_fb_height(void);        /* 获取屏幕的高度 */  
    6. gr_pixel *gr_fb_data(void);    /* 获取显示数据缓存的地址 */  
    7. void gr_flip(void);            /* 刷新显示内容 */  
    8. void gr_fb_blank(bool blank);  /* 清屏 */  
    9.   
    10. void gr_color(unsigned char r, unsigned char g, unsigned char b, unsigned char a);  /* 设置字体颜色 */  
    11. void gr_fill(int x, int y, int w, int h);  /* 填充矩形区域,参数分别代表起始坐标、矩形区域大小 */  
    12. int gr_text(int x, int y, const char *s);  /* 显示字符串 */  
    13. int gr_measure(const char *s);             /* 获取字符串在默认字库中占用的像素长度 */  
    14. void gr_font_size(int *x, int *y);         /* 获取当前字库一个字符所占的长宽 */  
    15.   
    16. void gr_blit(gr_surface source, int sx, int sy, int w, int h, int dx, int dy);  /* 填充由source指定的图片 */  
    17. unsigned int gr_get_width(gr_surface surface);   /* 获取图片宽度 */  
    18. unsigned int gr_get_height(gr_surface surface);  /* 获取图片高度 */  
    19. /* 根据图片创建显示资源数据,name为图片在mk文件指定的相对路径 */  
    20. int res_create_surface(const char* name, gr_surface* pSurface);  
    21. void res_free_surface(gr_surface surface);       /* 释放资源数据 */

主程序通过dlopen()加载一个.so的动态库文件, 然后动态库会自动运行 _init() 初始化函数, 初始化函数打印一个提示信息, 然后调用主程序的注册函数给结构体重新赋值, 然后调用结构体的函数指针, 打印该结构体的值. 这样就充分的达到了主程序和动态库的函数相互调用和指针的相互传递.

  1. void res_free_surface(gr_surface surface);       /* 释放资源数据 */

 

原文地址:https://www.cnblogs.com/reality-soul/p/6184517.html