/**********************************************
* 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 之 实例图像不断右移的更多相关文章

  1. OpenCV3入门(十)图像轮廓

    1.图像轮廓 1.1图像轮廓与API函数 轮廓是一系列相连的点组成的曲线,代表了物体的基本外形,相对于边缘,轮廓是连续的,边缘并不全部连续.一般地,获取图像轮廓要经过下面几个步骤: 1)     读取 ...

  2. 昇腾CANN论文上榜CVPR,全景图像生成算法交互性再增强!

    摘要:近日,CVPR 2022放榜,基于CANN的AI论文<Interactive Image Synthesis with Panoptic Layout Generation>强势上榜 ...

  3. Bootstrap学习(3)

    Bootstrap 图片  Bootstrap 对图片的支持.Bootstrap 提供了三个可对图片应用简单样式的 class: .img-rounded:添加 border-radius:6px 来 ...

  4. HTML5新特性及详解

    什么是HTML5:HTML5 是下一代的HTML,将成为 HTML.XHTML 以及 HTML DOM 的新标准. 为 HTML5 建立的一些规则: 新特性应该基于 HTML.CSS.DOM 以及 J ...

  5. html5 基本内容 摘自W3C

    HTML5 教程(摘录自 W3C School) HTML 5 简介(HTML5 是下一代的 HTML) 什么是 HTML5? HTML5 将成为 HTML.XHTML 以及 HTML DOM 的新标 ...

  6. HTML5 学习笔记 1

    1.音频.视频 <!DOCTYPE HTML> <html> <body> <audio controls="controls"> ...

  7. CoreText 使用教程

    [iOS开发] CoreText 使用教程:以创建一个简单的杂志应用为例抢沙发 分类:iPhone开发 标签:CoreText.iOS.iOS开发.iOS开发教程.杂志应用 BBS.CHINAAPP. ...

  8. HTML5 总结-画布-4

    HTML5 画布 创建 Canvas 元素 向 HTML5 页面添加 canvas 元素. 规定元素的 id.宽度和高度: <canvas id="myCanvas" wid ...

  9. php 图像处理类

    <?php/** file: image.class.php 类名为Image 图像处理类,可以完成对各种类型的图像进行缩放.加图片水印和剪裁的操作. http://www.lai18.com ...

随机推荐

  1. JavaScript-变量的作用域面试题

    块级作用域 -      在其他的语言中,任何一对花括号中的语句都属于一个块,在这之中定义的所有变量在代码块外是不可见的 -      JavaScript中没有块级作用域 //这里只有函数中定义的变 ...

  2. JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建

    本篇博客就完整的来聊一下如何在Eclipse中创建的Maven Project.本篇博客是JavaEE开发的开篇,也是基础.本篇博客的内容干货还是比较多的,而且比较实用,并且都是采用目前最新版本的工具 ...

  3. 说说API的防重放机制

    说说API的防重放机制 我们在设计接口的时候,最怕一个接口被用户截取用于重放攻击.重放攻击是什么呢?就是把你的请求原封不动地再发送一次,两次...n次,一般正常的请求都会通过验证进入到正常逻辑中,如果 ...

  4. 基于EM的多直线拟合

    作者:桂. 时间:2017-03-22  06:13:50 链接:http://www.cnblogs.com/xingshansi/p/6597796.html 声明:欢迎被转载,不过记得注明出处哦 ...

  5. JS中有关对象的继承以及实例化、浅拷贝深拷贝的奥秘

    一.属性的归属问题 JS对象中定义的属性和方法如果不是挂在原型链上的方法和属性(直接通过如类似x的方式进行定义)都只是在该对象上,对原型链上的没有影响.对于所有实例共用的方法可直接定义在原型链上这样实 ...

  6. Hive 伪分布式下安装

    本安装过程只作为个人笔记用,非标准教程,请酌情COPY.:-D Hive下载 下载之前,需先查看兼容的Hadoop版本,并安装hadoop,参考 http://www.cnblogs.com/yong ...

  7. React Native 之 数据持久化

    前言 因为 实战项目系列 涉及到数据持久化,这边就来补充一下. 如本文有错或理解偏差欢迎联系我,会尽快改正更新! 如有什么问题,也可直接通过邮箱 277511806@qq.com 联系我. demo链 ...

  8. iPhone与iWatch连接、控制、数据传递(Swift)

    最近在做一个项目,涉及到iPhone设备和手表传输数据.控制彼此界面跳转,在网上找了很多资料,发现国内的网站这方面介绍的不多,而国外的网站写的也不是很全,所以在这写这篇博客,给大家参考一下,望大神指点 ...

  9. Asp.net SignalR 应用并实现群聊功能 开源代码

    ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务 ...

  10. adobe edge animate 和 adobe animate cc 有啥区别?

    经常有人问这两款软件的区别,每次都要打字好烦,特此总结发帖如下: 一.首先各自软件介绍 ①adobe edge animate 是adobe公司早期推出的一款网页互动工具.通过HTML+CSS+Jav ...