随想录(我从ftk学到的)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

    ftk代码最早是由李先静同学开发的,很多地方都可以下载的到,比如。作为一个gui库,ftk本身有很多值得我们学习的地方。以下就是我自己的一些想法和体会。

1、单线程架构

    之前看minigui的时候,很多地方看不懂。但是ftk阅读起来却比较容易,因为ftk是单线程机制。这种单线程代码一般都是这种模式,

while(True){
    event = Select();
    process_event();
}
2、最简单的底层依赖

    看过ftk代码的同学可能觉得有点奇怪,为什么ftk能支持那么多系统、那么多平台,这其实因为ftk对底层要求很低,一般只需要做到这两点就可以了,

  • a、支持外部事件读取
  • b、支持bitmap更新
3、引入事件源机制

    gui作为基础软件,它的输入一般有这么几个地方:鼠标、键盘、定时器、自定义事件源,其中自定义事件源可以作为pubsub机制由其他线程调用,改进work线程和gui线程的同步策略。ftk下面所有的事件源都是可以动态添加的。这是因为事件源管理器本身也是单独添加到select当中的。通常的鼠标、键盘事件都是由窗口管理器直接接收过来处理的,大家可以在click回调函数设置断点,一下子就可以明白整个ftk的处理逻辑了。

4、抽象流程和私有数据

    ftk下面很多的代码都是控件的代码,这些控件包括label、button、slider、combobox、entry等等。大家发现,这些控件的头文件代码都是非常简洁的,使用起来很容易,大部分实现都是放在c文件里面,且实现也是根据paint、event、destroy这些函数指针来实现的。对于通用代码部分,大部分控件直接调用ftk_widget相关函数,paint就调用canvas函数,而对于私有数据,则单独用priv保存,逻辑处理上面也尽量用static函数来表示,函数上面切割地非常干净。

5、单元测试

    ftk大约是我除了redis代码之外,单元测试做的最好的c代码了。

6、丰富的demo代码

    作为一个库,ftk提供给使用者的demo代码还是相当多的。对于普通的c语言开发者来说,基本上不需要花费很长的时间就可以理解ftk给出的demo代码,这一点要给一个大大的赞。

7、意外的lua脚本

    如果你觉得ftk这些已经让你对作者的代码能力非常敬佩了,那么在顶层目录,你会发现居然还有一个script_binding目录,里面包含了和ftk相关的lua代码、c代码。换句话说,就是作者把ftk进行脚本化了。使用这些lua脚本编写ftk代码,都不用编译,实在是太方便了。从另外一方面来说,作者也真是太有才了。:-)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嵌入式-老费

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

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

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

打赏作者

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

抵扣说明:

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

余额充值