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

上一节: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、数码相框编写程序之图标显示

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值