Clutter Actor 的位置与尺寸约束
为了更好的解决 Actor 之间的相对定位问题,Clutter 提供了位置与尺寸约束的机制。例如对于 "stage" 和 "rectangle" 这两个 Actor 而言,可以通过位置约束,使得 "rectangle" 居于 "stage" 中心的位置,而无论 "stage" 的尺寸如何变化。Clutter 提供了 Align、Bind、Path 和 Snap 四种约束,也可以按照 [1] 自定义约束。文献 [2] 中已经给出了 Bind 约束与 Align 约束的示例,揭示了 Clutter 位置与尺寸约束功能的基本用法。本文主要讲述如何将 Clutter 的位置与尺寸约束通过 JSON 文本的形式记载于 Clutter 场景图中。
Clutter 的脚本
Clutter 提供了 JSON 格式的脚本机制,以便程序员或用户能够灵活定制场景图。本文通过对 [1] 中的的单一布局的示例基于 Clutter 脚本的形式进行改写,聊表 Clutter 脚本功能的基本用法。
gimp 2.7.3 算是有了单窗口
在之前的 gimp 2.7 版本中,单窗口模式是早已实现了的,但是以前一直是只能在 gimp 运行时手动切换到单窗口模式,这种状态无法保存,以致重启 gimp 时依然是多窗口。现在,这个问题在 gimp 2.7.3 中被解决了。
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 中。
五个演员
这篇文章的标题并非暗示我要写一篇影视娱乐方面的文章,它只是表示我将“Actor”这个英文单词翻译成了中文。本文主要介绍 Clutter 库提供的五个基本的 Actor 的用法。
凌乱的舞台
这篇文章的标题并非暗示我要写一篇文学作品,它只是表示我将“Clutter”与“Stage”这两个英文单词翻译成了中文。本文主要介绍 Clutter Stage 的基本知识。
GObject 学习笔记汇总
开始学习 Clutter,需要回顾 GObject 的知识。以前写了一系列的 GObject 笔记,现在汇总一下以便查阅。
- 要相信 GObject 是有用而且简单的
- 使用 GObject 库模拟类的数据封装形式
- GObject 子类对象的私有属性模拟
- GObject 子类私有属性的外部访问
- 温故而知新
- GObject 的子类继承
- 继承与接口
- GObject 对接口的模拟
- 函数指针、回调函数与 GObject 闭包
- GObject 的信号机制——概览
- GObject 子类对象的析构过程
- GObject 信号机制——信号的注册
- GObject 信号机制——信号的 Accumulator
- GObject 信号机制——信号的连接
- GObject 信号机制——信号的发射(未完成)
- GObject Introspection 的简单示例
C 库的编写 [2]
这是有关 C 库编写经验的一系列文档的第二部分,讲述了事件处理、主循环、同步与异步 I/O 等功能的实现经验。原文见:http://davidz25.blogspot.com/2011/06/writing-c-library-part-2.html
本文只是对原文的不完全翻译及意译,对其中所有错误不负任何责任。
C 库的编写 [1]
这是有关 C 库编写经验的一系列文档的一部分,原文见:http://davidz25.blogspot.com/2011/06/writing-c-library-part-1.html
本文只是对原文的不完全翻译及意译,对其中所有错误不负任何责任。