Clutter调用底层原理剖析
来源:互联网 发布:景甜的神秘力量 知乎 编辑:程序博客网 时间:2024/05/01 09:50
1 初识Clutter
按照Clutter官网所述,Clutter是一个支持2D曲面的3D动画的GUI库,是一个C API集合。目前版本Clutter1.8.0-stable release,http://download.gnome.org/sources/clutter/1.8。
2 编程在Gjs
const Clutter = imports.gi.Clutter;
正是通过这条语句在Gjs编程中导入路Clutter模块,使得Gjs可以访问底层基于C语言实现的Clutter lib。
2.1 基本Class
clutter的核心概念是:stage(画布,舞台)和actor(演员)。莎士比亚说“全世界是一座舞台,所有的男人女人不过是演员”,这句话很好的表现了这点。画布相当于一个window是actor的舞台。Clutter是一种封装,封装就会有container。所以clutter程序都需要创建一个stage,它是最顶层的对象,也是一个container(容器),让其他的actor在其上面表演。actor们本身都是2D对象,是平面的,不过clutter允许我们对这些actor在3D空间进行操作,比如绕着x,y,z轴旋转。
2.2 简单编程示例(C到Gjs)
程序实现一个矩形中嵌套一个小矩形,显示文字,并接受mouse事件。
使用Gjs编程,就需要改变Mothod,使用Gjs环境下的Clutter编程。方法类的调用,可以通过Clutter-1.0.gir查阅(详见下文)。
2.3 ClutterTimeline
clutter除了可以让我们在3D空间操作2D的actor之外,最有特色的就是可以使用时间线。
以下是改动DockBar js文件中用于隐藏Bar的代码:
3 附录
关于clutter导入细节以及C到js的Clutter方法查询参考。
3.1 lib导入到Gjs(Clutter-1.0 version)
两条路径:
.typelib path:/usr/lib/girepository-1.0/
.gir path:/usr/share/gir-1.0/
GI(GObject Introspection)可以将API的信息描述成XML,再parse成typelib格式,即binary格式,方便runtime时使用。正是通过这一过程,GI使得基于GObject的native lib能轻易porting到script language。
3.2 GNOME 库被 GI 化
现在,GNOME 桌面的大部分程序库皆已 GI 化,通常可在 /usr/lib/girepository-1.0 目录中看到它们,只要在该目录中的出现的 typelib 文件,其对应的库便可在 gjs 通过 imports.gi 对象进行连接。如想查询API在js中使用的方法,可以使用command:
[alex@alex girepository-1.0]$ g-ir-generate Clutter-1.0.typelib | grep timeline
或者 可以从/usr/share/gir-1.0/对应的.gir文件查询C函数原型信息。
- Clutter调用底层原理剖析
- 分布式事务底层原理剖析
- MJExtension底层实现原理简单剖析
- fork系统调用底层实现源码剖析
- java多线程编程底层原理剖析以及volatile原理
- Gjs编程及调用底层库原理
- Storm Aggregator原理与底层框架调用
- Clutter
- NGUI所见即所得之深入剖析UIPanel,UIWidget,UIDrawCall底层原理
- NGUI所见即所得之深入剖析UIPanel,UIWidget,UIDrawCall底层原理
- NGUI所见即所得之深入剖析UIPanel,UIWidget,UIDrawCall底层原理
- NGUI的原理机制:深入剖析UIPanel,UIWidget,UIDrawCall底层原理
- Unity3d-NGUI的原理机制:深入剖析UIPanel,UIWidget,UIDrawCall底层原理
- 《大话存储2:存储系统架构与底层原理极限剖析》电子书下载
- [Unity] - NGUI所见即所得之深入剖析UIPanel,UIWidget,UIDrawCall底层原理
- [Unity] - NGUI所见即所得之深入剖析UIPanel,UIWidget,UIDrawCall底层原理
- NGUI研究——NGUI所见即所得之深入剖析UIPanel,UIWidget,UIDrawCall底层原理
- 深入php内核,从底层c语言剖析php实现原理
- Inno Setup入门(八)——有选择性的安装文件
- 主流报表制作工具之王者争夺战:功能大PK系列之背景图保存
- Inno Setup入门(七)——提供安装语言选项
- NULL,0 空指针,空指针常量等概念
- Inno Setup入门(六)——在程序目录下创建文件
- Clutter调用底层原理剖析
- Inno Setup入门(五)——添加readme文件
- Inno Setup入门(四)——为程序创建桌面快捷方式
- Inno Setup入门(三)——指定压缩方式
- Oracle里的视图和物理视图 --下
- 菜鸟成长之随机排序
- CSS样式语法基础
- 设计模式之原型模式(Prototype)
- Inno Setup入门(二十二)——Inno Setup类参考(8)