摘要:本文将以Pixman Demo为例,详细说明Pixman的功能。

本文分享自华为云社区《LiteOS组件尝鲜—玩转Pixman》,作者:Lionlace。

基本介绍

Pixman是由三星工程师开发的像素操作库,广泛应用于矢量图形Cario和X服务器等。它能够提供低级像素处理能力,同时具备图像合成、图形变化以及光栅化等功能。本文将以Pixman Demo为例,详细说明Pixman的功能。

该Demo实现功能的步骤:新建一个宽高为20*20的像素图片,将目标图片划分为4个10*10的区域。第一个区域填充蓝色,第二个区域填充蓝粉渐变色,第三个区域填充径向渐变色,第四个区域填充圆形渐变色,最后输出图形到pixman.png即可。下面将介绍详细步骤。

Demo实现的环境要求

Demo需要FATFS文件系统和LIBPNG支持,可在已支持该文件系统的开发板上运行,目前已适配STM32F769IDISCOVERY开发板。

使能Pixman Demo

拷贝并重命名配置文件

在LiteOS源码根目录下根据实际使用的开发板,拷贝tools/build/config/目录下的默认配置文件${platform}.config到根目录,并重命名为.config。以Linux系统和STM32F769IDISCOVERY开发板为例,在LiteOS源码目录下,执行如下命令完成配置文件的拷贝和重命名:

cp tools/build/config/STM32F769IDISCOVERY.config .config

使能Pixman Demo

在LiteOS源码根目录下运行make menuconfig命令,按如下菜单路径使能Pixman Demo:

Demos    --->
Media Demo --->
[*] Enable Pixman Demo (NEW)

使能Pixman Demo后,会自动使能其依赖的Pixman组件、Libpng组件及FATFS文件系统并设置SD卡模式。本Demo中的文件就保存在SD卡中。保存退出menuconfig后,LiteOS会从github上自动下载Pixman源代码,并从gitee的LiteOS组件仓库LiteOS_Components下载对应的patch包,并打入patch。

关于组件下载的详细流程请参考:https://gitee.com/LiteOS/LiteOS_Components#%E5%9C%A8%E7%BA%BF%E7%BB%84%E4%BB%B6%E4%B8%8B%E8%BD%BD%E6%B5%81%E7%A8%8B

注:下载需要Linux主机可以访问互联网,并安装git工具。如果使用LiteOS Studio使能该Demo,需要在组件配置中手动设置FATFS文件系统为SD卡模式。

编译运行Pixman Demo

操作步骤如下:

  • SD卡插入开发板的卡槽内;
  • 参照上述步骤使能Pixman Demo;
  • 在LiteOS源码目录下执行make clean ; make -j命令编译LiteOS工程,编译成功后将在out/${platform}/lib目录下生成Pixman的库文件libpixman.a,Libpng的库文件libpng.a和本Demo的库文件libpixman_demo.a,系统镜像文件为Huawei_LiteOS.bin。以STM32F769IDISCOVERY开发板为例,其目录就是out/STM32F769IDISCOVERY;
  • 烧录系统镜像文件到开发板,复位后可以看到串口输出Demo运行结果如下所示。
********Hello Huawei LiteOS********
LiteOS Kernel Version : 5.0.0
build data : May 14 2021 16:05:30
**********************************
osAppInit
cpu 0 entering scheduler
app init!
Hello, welcome to liteos demo!
File system mount success.
Pixman demo task start to run.
Pixman demo task finished.
Huawei LiteOS #
  • 查看SD卡根目录,可以看到生成的图片文件为pixman.png。

至此,该Demo实现功能就完成了。

结语

未来我们还会持续新增更多组件、开发板、架构、特性等。

感谢您的阅读,有任何问题、建议,都可以留言给我们,让我们一起进步:https://gitee.com/LiteOS/LiteOS/issues。

为了更容易找到“LiteOS”代码仓,建议访问https://gitee.com/LiteOS/LiteOS,关注“ Watch”、点赞“Star”、并“Fork”到自己账号下,如图所示。

更多学习内容,请关注IoT物联网社区 

点击关注,第一时间了解华为云新鲜技术~

一起玩转LiteOS组件:Pixman的更多相关文章

  1. 一起玩转玩转LiteOS组件:TinyFrame

    摘要:TinyFrame是一个简单的用于解析串口(如 UART.telnet.套接字等)通信数据帧的库. 本文分享自华为云社区<LiteOS组件尝鲜-玩转TinyFrame>,作者:Lio ...

  2. 玩转LiteOS组件:玩转Librws

    摘要:Librws是一个跨平台的websocket客户端,使用C语言编写. 本文分享自华为云社区<LiteOS组件尝鲜-玩转Librws>,作者: W922 . 本期小编为大家带来Lite ...

  3. 带你尝鲜LiteOS 组件EasyFlash

    摘要:EasyFlash是一个开源的轻量级嵌入式闪存库. 本文分享自华为云社区<LiteOS组件尝鲜-玩转EasyFlash>,作者:Lionlace . 基本介绍 EasyFlash是一 ...

  4. 《微信小程序七日谈》- 第三天:玩转Page组件的生命周期

    <微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 前两篇 ...

  5. 《微信小程序七日谈》- 第四天:页面路径最多五层?导航可以这么玩

    <微信小程序七日谈>系列文章: 第一天:人生若只如初见: 第二天:你可能要抛弃原来的响应式开发思维: 第三天:玩转Page组件的生命周期: 第四天:页面路径最多五层?导航可以这么玩 微信小 ...

  6. openstack手动玩转

    <一,preface Important Project Network> openstack or all most cloud env Network desgine  is so m ...

  7. react初探(二)之父子组件通信、封装公共组件

    一.前言 在组件方面react和Vue一样的,核心思想玩的就是组件,下面举两个组件常用的情景. 场景一:假如我们现在有一个页面包含表格以及多个弹框,这种时候如果将这个页面的业务代码写在一个组件中,那么 ...

  8. Vue.js之组件(component)

    从结构上看,组件之于实例,就好比轮子之于汽车.从属性和方法来看,组件有实例的大部分方法,如果Vue实例是孙悟空,组件就好比实例的一个毫毛,变化多端却为Vue实例所用. 目录: 组件的注册 is的作用 ...

  9. vue - 组件的创建

    组件的创建 vue的核心基础就是组件的使用,玩好了组件才能将前面学的基础更好的运用起来.组件的使用更使我们的项目解耦合.更加符合vue的设计思想MVVM. 那接下来就跟我看一下如何在一个Vue实例中使 ...

  10. vue.js组件(component)

    简介: 组件(Component)是 Vue.js 最强大的功能之一. 组件可以扩展 HTML 元素,封装可重用的代码. 组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面 ...

随机推荐

  1. could not chdir to home directory /home/user:permission denied /bin/bash:Permiss 的原因和解决方法

    今天在vm上登录一个user 的时候,发现正确输入用户名和密码后弹出了这样的信息,登陆不上. 发现给出的信息中,permission denied 而 bin permiss; 这种情况表明自己给该用 ...

  2. RSA总结 From La神

    常用工具 分解大素数 factordb (http://www.factordb.com / API: http://factordb.com/api?query=) yafu (p q 相差过大或过 ...

  3. JVM-JAVA基本类型

    1 package javap.fload; 2 3 import static jdk.nashorn.internal.objects.Global.Infinity; 4 5 public cl ...

  4. Java中Synchronized的用法(转)

    原文:http://blog.csdn.net/luoweifu/article/details/46613015 作者:luoweifu 转载请标名出处 <编程思想之多线程与多进程(1)--以 ...

  5. ORACLE SQL语句逻辑读高优化案例

    川川找我优化SQL,逻辑读达到398,000,安排一下. SQL和执行计划: SELECT t1.*, t3.bed_number, t3.patient_name, t4.name FROM odw ...

  6. Python 利用pandas和matplotlib绘制堆叠柱状图

    在数据可视化中,堆叠柱状图是一种常用的图表类型,它能够清晰地展示多个类别的数据,并突出显示每个类别中各部分的总量和组成比例.本文将演示如何使用 Python 的 pandas 和 matplotlib ...

  7. 递归与分治思想:治思想 && 折半查找法(迭代 && 递归)

    1 //分治思想:将大问题拆成小问题逐一解决 2 //折半查找法:不断缩小一半查找的范围,知道达到目的,效率较高. 详情见:https://fishc.com.cn/thread-27964-1-1. ...

  8. MySQL数据库的四大语言

    DDL数据定义语言 DDL(Data Definition Languages) : 数据定义语言,用来定义数据库的对象(数据库,表,字段)建改库建改表 DDL代码演示 DML数据操作语言 DML(D ...

  9. AntDesignBlazor示例——列表查询条件

    本示例是AntDesign Blazor的入门示例,在学习的同时分享出来,以供新手参考. 示例代码仓库:https://gitee.com/known/AntDesignDemo 1. 学习目标 重构 ...

  10. 【scikit-learn基础】--『预处理』之 标准化

    数据的预处理是数据分析,或者机器学习训练前的重要步骤.通过数据预处理,可以 提高数据质量,处理数据的缺失值.异常值和重复值等问题,增加数据的准确性和可靠性 整合不同数据,数据的来源和结构可能多种多样, ...