文章目录

  • 1、框架分析
    • 1.1、数码相框的整体框架
    • 1.2、页面管理模块框架
    • 1.3、抽象出结构体
  • 2、框架编写

上一节:8、数码相框之libjpeg的使用

下一节:10、数码相框编写程序之图标显示

1、框架分析

1.1、数码相框的整体框架


我们最终要实现的功能如上图,分别有几个页面,其中主菜单为mainpage,通过选择mainpage中不同的功能执行跳转至不同的页面:

  • Mianpage页面—(选择浏览模式–>explore页面----(选择页面中的文件(这里是文件,而不是文件夹))—>browse页面
  • Mianpage页面—(选择连播模式–>auto页面----(连播显示过程中点击)—>browse页面
  • Mianpage页面—(选择设置–>setting页面----(点击setting中的选择目录)—>explore页面setting页面----(点击setting中的设置间隔)—>interval页面

1.2、页面管理模块框架

1.3、抽象出结构体


以main_page.c为例分析结构体:
上面我们提取出来了我们目前想到的每个页面应该涉及的共性结构体,肯定每个页面要显示当前页面的内容,所以有个run函数。每个页面肯定要根据接下来的动作做出相应的反映,所以有个getinputevent函数,我们要准备好每个页面用户可能要跳转的页面,这样在用户执行相应的操作的时候,我们就可以直接提取出来,这样就不会很卡。而且用户在点击的之前会停顿一下,我们就可以利用这段时间。

这个结构体的成员的大体框架如何?
我们以main_page.c为例:main_page.c 里面的 run 函数: 显示画面,获取事件,根据时间类型再执行下一步的run函数。

文字,图片:

由于我们显示页面的时候肯定是既有文字也有图片,所以肯定要有个渲染层,对于文字我们用freetype,对应图片我们用libjpeg

之后对于事件而言,我们触发事件可能是通过触摸笔,或者按键(这个一般不会用),所以还有个输入事件模块。

2、框架编写

代码见:第 1 个项目数码相框全部源码_图片_文档\源码(含讲课过程中即时编写的文档)\12.数码相框项目\14.digital_photo_frame_8.2 节_框架\14.digial_photo_frame

我们要显示每个页面的框架,建立一个page文件夹,里面包含每个页面。

我们暂时以mainpage.c来举例,他的程序框架是:



上面我们的MainPageGetInputEventinput_manager.c里面的GetInputEvent函数,这个GetInputEvent会让当前线程休眠,如果有触摸屏事件后就会唤醒,然后我们再处理数据,处理数据主要是用来判断触摸屏触摸了哪个位置,从而知道他按下了哪个地方。

由于我们要考虑返回上个页面的情况,所以在对事件处理的时候要先保存当前的页面执行完动作后恢复,这个怎么理解呢?比如说我们在main_page页面,用户点击了浏览模式。


我们代码就会进入main_page.c里面的run函数,进入浏览模式的case分支,然后保存页面,之后我们就要进入explore页面。

就要调用explorerun函数,进去之后如果客户想返回到上一级的main_pager的页面,当他点击了向上的位置,我们还要返回到main_page页面,所以还有个恢复的动作(我猜测在explore里面点击向上的区域,代码只要直接return就可以了,因为他和mainpage都是一个线程)点击上一个一面的时候先判断是不是explore的最顶层了,如果是就直接return,就会到我们main_page的恢复页面的动作
了。

我们在page文件夹内写了很多框架了,基本都和main_page.c一样,我们每个page里面都有个run函数,用来显示文字和图片。

所以我们要建立一个render一个渲染文件夹,他会用到font文件夹里面的freetype,还要调用一个libjepg文件夹,里面建立一个libjpeg.c,这个c文件会用来调用libjpeg库用来实现某些函数给render调用,用来来显示图片。也就是说render里面的render.c文件会调用font里面的freetype.c里面的结构体,和libjpeg里面的libjpeg.c

render.c里面调用:

上一节:8、数码相框之libjpeg的使用

下一节:10、数码相框编写程序之图标显示

9、数码相框编写程序之框架分析相关推荐

  1. 10、数码相框编写程序之图标显示

    文章目录 1.bmp数据提取 1.1.bmp 文件格式 1.2.文件信息头 1.3.位图信息头 1.4.RGB 颜色阵列 1.5.关于pic_operation.h 1.6.关于bmp.c 2.图片缩 ...

  2. 12、数码相框编写程序之效果演示与代码讲解

    文章目录 1.编译方法 2.运行 3.完整代码讲解 1.main函数先进行DebugInit()注册调试模块 2.注册调试模块之后初始化调试通道 3.注册显示设备 4.为显示页面预先分配缓存 5.初始 ...

  3. 13、数码相框编写程序之支持中文和课后作业

    文章目录 1.支持中文 2.课后作业 上一节:12.数码相框编写程序之效果演示与代码讲解 1.支持中文 这一节我们来改进数码相框的功能:支持中文代码见:第 1 个项目数码相框全部源码_图片_文档\源码 ...

  4. 1、数码相框之框架分析

    文章目录 1.需求分析 2.设计框架 3.编写代码 4.测试 下一节:2.数码相框之显示文字 设计产品时的思路大体如下: 弄清需求 设计框架 编写代码 测试 1.需求分析 2.设计框架 系统工作大致流 ...

  5. 编写程序描述影视歌三栖艺人 需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人。 实现思路及关键代码 1)分析影视歌三栖艺人的特性 a)可以演电影 b)可以演电视剧 c)可以唱歌

    编写程序描述影视歌三栖艺人 需求说明:请使用面向对象的思想,设计自定义类,描述影视歌三梄艺人. 实现思路及关键代码 1)分析影视歌三栖艺人的特性 a)可以演电影 b)可以演电视剧 c)可以唱歌 2)定 ...

  6. 微信小程序框架分析思维导图

    微信小程序框架分析思维导图

  7. 用java编写验证码程序_编写,验证和分析实时Java应用程序

    本文是" 用实时Java开发"系列的第三篇也是最后一部分,展示了如何设计,编写,验证和分析基本的实时应用程序. 我们将说明: 应用程序的时间和性能要求. 为什么传统的非实时Java ...

  8. 使用Thrift RPC编写程序

    http://dongxicheng.org/search-engine/thrift-rpc/ 1. 概述 本文以C++语言为例介绍了thrift RPC的使用方法,包括对象序列化和反序列化,数据传 ...

  9. Linux USB驱动框架分析 【转】

    转自:http://blog.chinaunix.net/uid-11848011-id-96188.html 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结 ...

最新文章

  1. 拿haojava官方过程
  2. Guidance Package Manager button doesn’t appear in the VS menu
  3. CyberDuck:Macos和Linux服务器简洁传大文件
  4. ThinkPad预装win8系统机型安装win7系统的操作指导
  5. 数字反转(洛谷-P1307)
  6. L2TP 配置实例——Client-Initiated
  7. char wchar_t ascii unicode 之旅
  8. matlab开环传递函数 求单位负反馈的系统传递函数,已知单位反馈系统开环传递函数.doc...
  9. vue-router
  10. 辐射探测 期末考试 考完后的recheck!oh,老baby,高纯锗要低温呀!!
  11. 【离散数学】二元关系中的传递关系与非传递关系
  12. ae-概述、流程、菜单01
  13. 改变 el-dialog 的宽度
  14. tracert使用与现象排查
  15. Lambert漫反射光照模型归纳
  16. Geant4在ubuntu系统的安装
  17. ubuntu 16.04 卸载软件命令
  18. java 真假_真真假假的布尔
  19. MVC区域areas添加出现错误,生成空文件夹问题
  20. ToolsOh第5批收录

热门文章

  1. 机器学习/深度学习几种典型学习范式|主动学习
  2. 当spa单页面应用遇上SEO,蛋痛的经历
  3. Excel - Calculate_Column
  4. 第六课 背景与渐变
  5. python大作业80个_大黄蜂35个彩蛋解析!!你必看的80年代大风暴
  6. 商业插画师走尺:“声音主播”的画画世界
  7. JavaScript进阶【博学谷学习记录】超强总结,用心分享
  8. 泊松重建PoissonRecon.cpp源码分析
  9. 兵马俑上我的文章(好久没来这个版(love版)逛了。想来看看。)
  10. linux Futex