DirectFB 之 实例图像不断右移
/**********************************************
* Author: younger.liucn@gmail.com
* File name: imgrotate.c
* Description: animation
* Modified:
* date: 2014-01-06 create
*********************************************/
#include <directfb.h> #include "animation.h" #define MAX_LOOP 2
#define INTERVAL_PIXEL 2
#define EYE_HZ 50
#define INTERVAL_TIME (1000 / EYE_HZ) static int animation(int argc, char **argv); int main(int argc, char **argv)
{
return animation(argc, argv);
} static int animation(int argc, char **argv)
{
int i, loop = 0;
int screen_width = 0, screen_height = 0;
DFBSurfaceDescription dsc;
/*
* For collecting infomation of image,
* and provide image to IDirectFBSurface
*/
IDirectFBImageProvider *provider;
IDirectFB *dfb = NULL;
IDirectFBSurface *primary = NULL;
IDirectFBSurface *logo = NULL; /* 初始化整个DirectFB库,为后续画图等操作做准备 */
DirectFBInit(&argc, &argv);
DirectFBCreate(&dfb); /* 设置协作等级为全屏模式,具体请阅读SetCooperativeLevel接口解析 */
dfb->SetCooperativeLevel(dfb, DFSCL_FULLSCREEN);
dsc.flags = DSDESC_CAPS;
dsc.caps = DSCAPS_PRIMARY | DSCAPS_FLIPPING; /* 根据dsc创建一个基本平面 */
dfb->CreateSurface(dfb, &dsc, &primary);
/* 获取该基本平面的宽度和高度 */
primary->GetSize(primary, &screen_width, &screen_height); /* 将要显示的图片及其相关信息保存在provider中 */
dfb->CreateImageProvider(dfb, BA_IMG_NAME, &provider); /* 将保存在provider中的图片信息提取出来,存于dsc中 */
provider->GetSurfaceDescription(provider, &dsc); /* 根据dsc创建一个图像平面 */
dfb->CreateSurface(dfb, &dsc, &logo); /* 将图片呈递给刚才建立的logo平面,如果大小不一,则进行缩放 */
provider->RenderTo(provider, logo, NULL); /* 释放资源provider */
provider->Release(provider); for (i = -dsc.width;
i < screen_width && !ba_check_exit(shared_mem);
i = i + INTERVAL_PIXEL) {
/* 清空屏幕 */
primary->FillRectangle(primary, 0, 0,
screen_width, screen_height);
primary->Blit(primary, logo, NULL, i,
(screen_height - dsc.height) / 2);
/*
* Blit model:将图片blit到平面
* Blit(IDirectFBSurface *thiz, IDirectFBSurface *source,
* const DFBRectangle *source_rect, int x, int y);
* if source_rect == NULL,use entire surface.
* DFBRctangle is rectangular frame defined by two points.
* (x, y):the point of top left corner.
*/ /* flit整个屏幕 */
primary->Flip(primary, NULL, DSFLIP_WAITFORSYNC); msleep(INTERVAL_TIME); if ((screen_width - INTERVAL_PIXEL) <= i && loop < MAX_LOOP) {
BA_LOG(1, "screen_width:%d, loop:%d.\n", screen_width, loop);
loop++;
i = -dsc.width;
} } logo->Release(logo);
primary->Release(primary);
dfb->Release(dfb);
return 0;
}
DirectFB 之 实例图像不断右移的更多相关文章
- OpenCV3入门(十)图像轮廓
1.图像轮廓 1.1图像轮廓与API函数 轮廓是一系列相连的点组成的曲线,代表了物体的基本外形,相对于边缘,轮廓是连续的,边缘并不全部连续.一般地,获取图像轮廓要经过下面几个步骤: 1) 读取 ...
- 昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!
摘要:近日,CVPR 2022放榜,基于CANN的AI论文<Interactive Image Synthesis with Panoptic Layout Generation>强势上榜 ...
- Bootstrap学习(3)
Bootstrap 图片 Bootstrap 对图片的支持.Bootstrap 提供了三个可对图片应用简单样式的 class: .img-rounded:添加 border-radius:6px 来 ...
- HTML5新特性及详解
什么是HTML5:HTML5 是下一代的HTML,将成为 HTML.XHTML 以及 HTML DOM 的新标准. 为 HTML5 建立的一些规则: 新特性应该基于 HTML.CSS.DOM 以及 J ...
- html5 基本内容 摘自W3C
HTML5 教程(摘录自 W3C School) HTML 5 简介(HTML5 是下一代的 HTML) 什么是 HTML5? HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标 ...
- HTML5 学习笔记 1
1.音频.视频 <!DOCTYPE HTML> <html> <body> <audio controls="controls"> ...
- CoreText 使用教程
[iOS开发] CoreText 使用教程:以创建一个简单的杂志应用为例抢沙发 分类:iPhone开发 标签:CoreText.iOS.iOS开发.iOS开发教程.杂志应用 BBS.CHINAAPP. ...
- HTML5 总结-画布-4
HTML5 画布 创建 Canvas 元素 向 HTML5 页面添加 canvas 元素. 规定元素的 id.宽度和高度: <canvas id="myCanvas" wid ...
- php 图像处理类
<?php/** file: image.class.php 类名为Image 图像处理类,可以完成对各种类型的图像进行缩放.加图片水印和剪裁的操作. http://www.lai18.com ...
随机推荐
- Centos 7 上安装使用 vscode
#系统信息 Linux localhost.localdomain 3.10.0-327.el7.x86_64 x86_64 x86_64 x86_64 GNU/Linux 进入 vscode 下载 ...
- VMware10虚拟机安装mac os x 10.9
身边越来越多盆友们购进mac本子,不断地诱惑着小编,近日一直想着买一台mac本子装逼,后来想想用来开发(非ios)可能会遇着各种问题,就先在虚拟机上玩玩看,毕竟1,2万RMB不是小数. 在mac os ...
- Delphi的Hint介绍以及用其重写气泡提示以达到好看的效果
Delphi中使用提示是如此简单,只需将欲使用Hint的控件作如下设置: ShowHint := True; Hint := ‘提示信息’; 不必写一行代码,相当方便. 但有时我们又想自己定制提示的效 ...
- JQuery和原生JS跨域加载JSON数据或HTML。
前提:有时候需要在网页上,加载另一个网站上的数据.或者加载另一个网站上的一个页面.Js的Ajax请求不具备跨域功能,可以使用JQuery来实现. 网页端JS代码: $(function () { $. ...
- 基于Intranet的零件库管理信息系统设计--part01
好吧,临近毕业的我,毕业设计还没开始做呢.时间不等人,再过两个月就要答辩了,我得开始做我的毕设了,虽然我现在还没能力完全把毕设做出来,但总得先迈出第一步吧.今天先做一小部分. 话不多说,先来看我得毕业 ...
- flask mega-tutorial 1.0 documentation学习记录
本文主要是记录在[用户登录]一节中出现的问题: 报错位置是在 if g.user is not None and g.user.is_authenticated(): return redirect( ...
- 使用Yeoman generator来规范工程的初始化
前言 随着开发团队不断发展壮大,在人员增加的同时也带来了协作成本的增加:业务项目越来越多,类型也各不相同.常见的类型有基础组件.业务组件.基于React的业务项目.基于Vue的业务项目等等.如果想要对 ...
- ATS来了,网页HTTP访问怎么办?
推荐理由 ATS(App Transport Security),是苹果在WWDC 15提出的,苹果将收紧http的访问,这样会造成我们周边的许多站点和应用均不能正常访问,这里就对ATS进行了简单分析 ...
- javascript 类型的判断
在平常写js代码,类型判断必不可少,那么我们常见有哪几种?看到了标题,先不看你会想到那些方法 ,常用呢些呢?那么今天我自己总结一些判断类型的判断,如有错,万望告知! 1:typeof 常用这种方法不错 ...
- Git与Github的使用学习
摘要 本文讲解下Git的使用,包括使用Git上传项目工程到Github,文末有彩蛋哦. 1.安装Git 使用apt-get安 sudo apt-get update sudo apt-get inst ...