Cikada 0.0.2 发布
距 2011 年 9 月 26 日发布 0.0.1 版恰好一个月。现在将 Cikada 的小版本号发布周期定为 1 个月。
Cikada 0.0.2 增加的新功能:
- 时钟模式的概览视图,用于显示演示进度以及页面跳转;
- 增强了快捷键设置:将 F11 键设定为全屏模式开关键(全屏模式不再使用 Esc 键退出),并将 Left 与 Right 键也作为页面切换键;
- 大量的代码重构,将各个模块均已 GObject 化;
- 增加了 PDF 格式的中文使用手册。
PDF 演示工具 Cikada 0.0.1 发布
Cikada 是一款 PDF 演示工具,基于 clutter 与 poppler 实现,详见 https://github.com/liyanrui/cikada/tree/v0.0.1
现在发布 0.0.1 版,具有以下功能:
- 窗口显示与全屏显示
- 可设置 PDF 页面缓冲数量
- 淡入淡出的页面切换效果
视频演示地址:
http://cikada.diandian.com/post/d07a7cc0-d0d3-11e0-87f1-782bcb383994
截图:
DIY 一个用于显示 PDF 页面的 Clutter Actor
最近打算基于 Clutter 做一个 PDF 文档的演示工具,首先要解决在 Clutter 场景中渲染 PDF 页面的问题。可以通过 Poppler 库将 PDF 页面转换为 Cairo 图形,进而利用 Clutter 的 CairoTexture Actor 进行 Cairo 图形渲染解决这一问题 [1]。本文将上述过程中的一些细节(例如尺寸与位置的控制)封装为一个便于使用的 Clutter Actor。
Clutter 布局管理
[1] 中的各个 Actor 在 Stage 中的定位都是硬编码的方式实现的,当 Stage 的尺寸发生变化时,这些 Actor 的位置通常难以进行适应调整。Clutter 提供了布局管理机制,用来实现 Actor 的尺寸与位置控制。
Clutter (1.7.4)提供了五种布局方式:
- 固定布局(ClutterFixedLayout):跟 Actor 硬编码定位没有太多区别,通常不使用它;
- 单一布局(ClutterBinLayout):将 Actor 叠放成一摞,通常可用于将多个 Actor 复合在一起;
- 流布局(ClutterFlowLayout):当你不知道有多少个 Actor 的时候,并且又想让它们按照水平方向或竖直方向均匀排列,那么就可以使用流布局;
- 盒子布局(ClutterBoxLayout):将 Actor 单行水平或竖直均匀排列;
- 表格布局(ClutterTableLayout):将 Actor 按表格的方式均匀排列。
本文只介绍单一布局与流布局,其他布局方式与这两种布局大同小异。
在 Clutter 场景中显示 PDF 页面
之所以开始学习 Clutter 主要是因为 Pinpoint [1] 引起了一些兴趣,用 Clutter 来制作 PDF 文档的演示工具,效果应该会很好。对 Clutter 的一些基本的 Actor 有所了解之后,发现要实现这个 PDF 演示工具不是很困难。按照 Clutter cookbook [2] 的提示,可以利用 Poppler 库轻易的载入 PDF 页面并将其渲染到 Cairo 环境中,继而使用 ClutterCairoTexture 将 PDF 页面显示在 Stage 中。