当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : Xlib介绍
帖子发表于 : 2008-05-10 10:45 

注册: 2008-04-07 11:08
帖子: 6
送出感谢: 0 次
接收感谢: 0 次
By: 王彬
Date: 2008-05-10
Version: 0.1
Emall: Locosoft@163.com
QQ: 705271307
HomePage: http://brianwang.blog.ubuntu.org.cn/

CopyRight:
本文档翻译自XLib Programming Manual, 原文链接http://tronche.com/gui/x/xlib/。
本文档版权由王彬所有,可以非商业目的任意传播和复制,对于商业目的下对本文的任何行为需经作者同意。

1.1X-Windows系统纵览

本书中的一些条款对于X-Windows来说是唯一的,也有一些和其它窗口系统相同的条款,但含意不一样。查找位于本书最后的术语表或许对你有所帮助。
X-Windows窗口系统支持一个或多个屏幕可以包含一重叠窗口或子窗口。一个屏幕是一个物理监视器,和可显示彩色、灰度色、单色的图形硬件设备。可以有多重屏幕为一个显示或工作站。一个单独的X服务器可以为任何数量的屏幕服务。有一个指示器(通常是鼠标)和一个键盘单用户的屏幕集合叫做显示。
在X服务器上所有窗口被安排在严谨的层次结构中。每一个层次结构的顶层是一个根窗口,覆盖每一个显示屏幕。每一个根窗口被子窗口部分或全部被覆盖。所有的窗口,除去根窗口中,都有一个父窗口。每一个应用程序通常至少有一个窗口。子窗口也可以依次有它们的子窗口。用这种方式,应用程序可以在屏幕上创建任意深度的窗口树。X系统为窗口提供图形、文本、光栅操作。
子窗口可以比它们的父窗口大。如果那样的话子窗口的部分或全部可以超过父窗口的边界,那么父窗口的所有输出将被省略。如果一个窗口的几个窗口有重叠区域,就会有一个子窗口处于顶层或是上升到其它窗口的上面,从而使其它窗口变暗。被其它窗口覆盖的输出目的区域将被窗口系统限制,除非该窗口已经备份。如果一个窗口被第二个窗口变灰,那么第二个窗口只能被第二个窗口的祖先窗口或是第一个窗口的祖先窗口变灰。
窗口有一个边界0点或更多像素的宽度也可以是任何模式(像素映像)或是你喜欢的纯色。窗口并不是总有背景模式,此时当窗口不被覆盖时被窗口系统重绘。子窗口使它们的父窗口不明显,并且通常使得在父窗口的图形操作被子窗口部分省略。
每一个窗口和像素映像都有它自己的坐标系统。坐标系统有一个水平X轴和一个垂直Y轴以及位于左上角的坐标原点[0, 0]。坐标都是整数,以像素为单位,与中心像素相符合。对于一个窗口原点位于内边界的内侧左上角。
X不保存窗口的内容。当窗口的一部分可全部隐藏然后回到屏幕的时候,窗口的内容将会丢失。然后服务器将发送绐客户程序一个Expose事件以通知窗口的部分或是全部需要重绘。程序必需准备着在需要的时候更新窗口内容。
X也负责保存图形对像的相对屏幕的偏移, 被叫做像素映像。单平面的(深度为1)像素映像有时做为位图而引用。像素映像可以用在大多数图形函数中用以和窗口交互,或是用在各种图形操作用以下定义模型或贴片(tiles)。窗口和像素映像在一起是被做为可绘制元素而引用的。
在Xlib的大多数函数中都需要增加输出缓冲的请求。这些请求会在X服务器上被异步执行。或是发生一个错误。函数返回信息被存储在服务器上不返回(也就是说阻塞)直到收到一个明确的应答.,或是一个错误发生。你可以提供一个错误处理,当报告错误的时候被调用。
客户程序如不想要异步请求操作,可以调用函数Xsync()实现同步请求操作。此时将被阻塞直到处于缓冲中的所有的异步事被发送或是起作用。如果那样的话会产生一个很重要的副作用,在调用其它任何函数时,Xlib中的输出缓冲区总是会被从服务器返回值或是等到的输入冲掉。
很多Xlib函数会返回一个整形资源ID,你可以通过该D访问存储在X服务器上的对像。这些对像可以是在<X11/X.h>定义的Window,Font,Pixmap,Colormap,Cursor,和Gcontext。这些资源可以请求创建也可以请求摧毁 (释放),当服务器连接断开时自动摧毁这些资源。应用程序中大多数资源是潜在共享的,事实上,窗口是被窗口管理程序直接操纵。字体和光标指针通过多重屏幕被自动共享。字体可以在需要的时候被多重应用程序加载或卸载。字体通过常被缓存在服务器上。Xlib不支持应用程序之间的图形内容共享。
客户程序会接收到事件。这些事件可以是请求的副作用 (例如, 退栈窗口时产生的Expose事件)或是完成异步操作信号(例如, 来自于键盘的事件)。客户程序需要接收事件。其它应用程序有可能绐你的应用程序发送事件,所以程序必需准备好处理(或是忽略)所有类型的事件。
输入事件(例如, 键盘按下或是指示器移动)是服务器基于异步实现的,它们会在队列中排队,除非明确请求调用它们 (例如, XNextEvent() 或 XWindowEvent())。另外, 某些库函数(例如, XRaiseWindow()) 产生 Expose 和 ConfigureRequest 事件,这些事件也是服务器基于异步实现的,但是客户程序在调用这些函数后调用想要等待它们之后调用XSync()引发服务器产生事件。


欢迎加入GCC编程群一起讨论,群号:23586475


页首
 用户资料  
 
2 楼 
 文章标题 : Re: Xlib介绍
帖子发表于 : 2010-09-24 12:00 

注册: 2010-09-08 23:35
帖子: 19
送出感谢: 0 次
接收感谢: 0 次
你有这本书中文的电子版的吗?
Xlib 手册 可以发给我吗?、、
294209593@qq.com


页首
 用户资料  
 
3 楼 
 文章标题 : Re: Xlib介绍
帖子发表于 : 2010-09-27 19:46 

注册: 2008-04-11 23:31
帖子: 185
送出感谢: 0 次
接收感谢: 0 次
是X-window,没有s


_________________
I am who I am.
代码:
 ________
( Cool )
 --------
        o    ^__^
          o  (oo)\_______
             (__)\       )\/\
                 ||----w |
                 ||     ||


页首
 用户资料  
 
4 楼 
 文章标题 : Re: Xlib介绍
帖子发表于 : 2010-09-28 13:31 

注册: 2010-09-08 23:35
帖子: 19
送出感谢: 0 次
接收感谢: 0 次
唉。。。。。。。。。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译