《Xlib程序设计手册》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:刘连芳,廖宏,黄永宁等译
  • 出 版 社:南宁:广西科学技术出版社
  • 出版年份:1991
  • ISBN:7805654484
  • 页数:514 页
图书介绍:

引言 1

关于这本手册的说明 1

内容概要 1

目录 1

如何使用这本手册 2

实例程序 3

一些要求 3

手册中用到的字体约定 3

有关文件 3

欢迎指教 4

关于发行执照 4

致谢 4

第一章引言 6

1.1 X的版本 6

1.2 X窗口系统概念 6

图目录 7

1-1. 由多个屏幕组成的显示系统 7

1.2.2服务器-客户模式 7

1.2.1显示器和屏幕 7

1-2. 应用程序可以在横跨网络的任何系统上运行 8

1.2.3窗口管理 9

1.2.5对X的扩展 10

1.2.4事件 10

1.3 X窗口系统软件结构 10

1.4 Xlib概貌 11

1-3. 客户程序通过Xlib调用与服务器进行通信 11

1-1.Xlib按功能分组的子程序 12

表目录 12

2.1 Xlib如何工作 14

第二章X概念 14

2.1.2缓冲 15

2-1. 客户程序与服务器 15

2.1.1 X协议 15

2.1.3资源 16

2-2. 服务器的事件队列和每个客户程序的事件队列 17

2.1.4特性和标识号 17

2.1.5窗口管理程序 18

2-3. 用于建立窗口的xmh应用程序的例子 19

2.2窗口是什么? 19

2.2.1窗口特征 20

2.2.2树形层次 21

2-4. 窗口构造的组成成分 21

2-5. 屏幕上的一个窗口层次 22

2.2.3坐标系 23

2-6. 窗口层次结构的图示 23

2-7. 坐标系 24

2.2.5映射和可见性 24

2.2.4窗口叠次序(stacking order) 24

2.3.1象点和颜色 25

2.3 X图形入门 25

2-8. 用着色图把象点值映射成颜色 26

2.3.2象点和色板 26

2.3.4画图和图形信息 27

2.3.3三维象点图和可画物(drawable) 27

2.4窗口特性的进一步介绍 28

2-9. 如何用贴砖铺贴窗口的背景 28

2.3.5贴砖和贴片 28

2.4.2窗口结构 29

2.4.1窗口属性 29

2.4.4深度和着色类型 30

2.4.5缩微窗口图象 30

2.4.3类型、输入/输出和只输入窗口 30

2.4.6根窗口的特殊性质 31

2-10. 一个应用程序和它的缩微窗口图符 31

2.5事件入门 31

2.5.2事件的选择和传播 32

2.5.1事件指什么 32

2.5.3事件队列 33

2.5.4事件结构 33

2.6.1.1设计要求 34

2.6.1设计一个应用程序 34

2.6如何用Xlib进行程序设计 34

2.5.5事件循环 34

2.6.1.2用户接口 35

2.6.2.2编译和链接X程序 36

2.6.2.1用户缺省 36

2.6.2编写X应用程序 36

2.6.2.4使用结构、符号和表征码 37

2.6.2.3命名约定 37

2.6.3调试X应用程序 38

2.6.2.5运行性能的优化 38

2.6.3.2结构XErrorEvent 39

2.6.3.1错误 39

2.6.3.3同步的错误 40

第三章基本的窗口程序 41

3.1运行程序 41

3.2Basicwin的主程序 42

3-1. 程序basicwin的输出 42

3.2.1包含文件和变量说明 42

3.2.2与服务器连接 44

3.2.3显示宏命令 46

3.2.4获取窗口信息 46

3.2.5建立窗口 48

3.2.6颜色策略 49

3.2.7准备图符的三维象点图 50

3.2.8与窗口管理程序通信 51

3.2.10建立资源 54

3.2.9选择所希望的事件类型 54

3.2.13建立事件采集循环 55

3.2.12发送输出缓冲区 55

3.2.11窗口映射 55

3.2.13.1重画窗口 58

3-2. 由一个用户动作引起的多个显露事件 59

3.2.14什么时候可以画东西? 63

3.2.16管理窗口尺寸的重设 63

3.2.15所画的内容什么时候显现? 63

3.2.17退出程序 64

3.2.19小结 65

3.2.18错误管理 65

3.2.20 basicwin的全部源程序 66

4.2窗口属性结构 74

4.1建立窗口属性 74

第四章窗口属性 74

4-1. 窗口属性表征码符号 75

4.3可通过程序设置的属性 77

4-2. 可以单独设置的属性 77

4.3.1窗口背景 78

4.3.1.1 background_pixmap 78

4.3.1.2 background_pixel 79

4.3.2窗口边框 79

4.3.2.1 border_pixmap 79

4.3.2.2 border_pixel 80

4.3.3内容重定位 80

4-1. 画图程序的bit_gravity 81

4.3.4窗口重定位 82

4-2. 窗口重定位起作用的子窗口位置 82

4.3.5后备存储 83

4.3.6存储隐匿内容 84

4.3.7事件处理 85

4.3.8废除转送子结构重构请求特性 85

4.3.10光标 86

4.3.9着色图 86

4.3.11窗口属性的缺省值 87

4-3. 窗口属性的缺省值 87

4.4结构XWindowAttributes的信息 88

第五章图形信息 90

5.1建立和设置图形信息 91

5-1. 一个实心多边形的“源” 91

5-1. 设置XGCValues结构的符号 93

5.1.1建立和设置GC的例子 94

5.2图形信息之间的转换 95

5.3控制图形元语的影响 96

5-2. GC中的逻辑函数 97

5.3.1逻辑函数 97

5-2a. 逻辑函数GXcopy的作用 98

5-2b. 逻辑函数GXxor的作用 98

5-2c. 逻辑函数GXand的作用 99

5.3.2色板表征码 99

5.3.3剪辑表征码 99

5-3.plane_mask在12色板显示器上的作用 100

5.4前景和背景 100

5-5. 用XDrawlmageString画字符时,前景和背景的使用 101

5-4. 使用剪辑原点定位相对于可画物的位置 101

5.5线段特征 101

5.5.1线宽 102

5.5.4连接样式 103

5-6. 线段样式 103

5.5.2线段样式 103

5.5.3线段端点的样式 103

5-7. 线段端点的样式 104

5.5.5长划线表和间距 104

5-8. 线段连接样式 105

5-9. 8象点宽的线段JoinRound说明 105

5.5.6设置线段特征的例子 107

5-10. 用例5-6中设置的GC画出的线 108

5.6形成图案 108

5-11. 用贴砖铺贴一个区域 109

5.6.1贴砖 109

5.6.2贴片 110

5.6.3贴砖和贴片的尺寸 110

5.6.4填充方式 110

5.6.5填充规则 111

5-13. 填充封闭多边形的常量fill_rull 111

5-12. 在小三维象点图上示范fill_style 111

5.6.6用于填充的弧方式 112

5-14. 填充弧用的orc_mode常量 112

5.7图形的显露 113

5.8字体 113

5.9子窗口方式 114

5.10客户程序间共享GC 114

5-15. 拷贝部分不可用的区域 114

5-3. 图形信息缺省值 115

5.11图形信息的缺省值 115

第六章画图形和正文 116

6.1画图 116

6.1.1度量图形 117

6-1.XDrawArc或者XDrawArcs的角度度量 117

6.1.2画图实例 118

6.1.3库程序draw_box 119

6.1.5建立贴砖或贴片 120

6.1.4填充 120

6-2. 具有相同参数的XFillRectangle和XDrawRectangle画象点的效果对照 121

6.1.6拷贝和清除区域 123

6.2字体和正文 123

6.2.1字符格式 124

6.2.2装载字体 124

6-3. XClearArca—— 当width或者height参数为0时,清除的区域 124

6.2.3字符 125

6.2.3.1结构XCharStruct 126

6-4. 两个字符的尺度信息 126

6.2.4正文的定位 129

6.2.5画正文库程序 130

6-5. 字符串的垂直定位 130

6.2.6画正文的库程序 131

6-1. 字体特性 134

6.2.7字体特性 135

6.3区 136

6.2.8设置字体路径 136

6.4 映象 137

6.3.3返回有关区的信息 137

6.3.2区的计算 137

6.3.1区的移动和重新设置尺寸 137

6.4.1管理映象 139

6-6. bitmap_unit=16的映象的位和字节次序 140

6.4.2使用映象的例子 140

7-2. 象点值到RGB的映射:序 140

6.5二维象点图的管理 141

6.6光标 141

6.6.1标准的光标字体 143

6.6.2装载和改变光标 144

7.1基本彩色项和概念 145

第七章颜色 145

7.2.2单色和灰度等级(Grayscale) 146

7.2.1中等范围彩色显示器 146

7-1. 象点值到RGB映象:彩显上利用着色图 146

7-1. 象点值到RGB映象:彩显上利用着色图 146

7.2显示硬件上的差别 146

7.2.3高性能彩色显示器 147

7-2. 象点值到RGB的映射:灰度显示器和单色显示器 147

7.2.4 X如何管理不同的显示器类型 148

7-3. 象点值到RGB的映射:高性能彩色显示器 148

7.2.5可共享与可修改性 149

7-1. 着色类型比较 149

7-4. 着色类型等级 150

7.2.6缺省着色类型 150

7-2. 各种服务器上缺省着色图的着色类型 151

7.2.7缺省着色图 151

7.3分配共享颜色 152

7.3.1 XColor结构 153

7.3.2颜色名数据库 153

7-3.颜色数据库 154

7.3.3十六进制颜色说明 155

7.3.4分配标准颜色的程序 156

7.3.5指定明确的RGB值 157

7-4. 指定粉红色的四种方法 158

7.3.6选择缺省颜色 158

7.4存贮客户私有的颜色 159

7.4.1为图形的相互覆盖分配读/写色素 160

7.4.2使用XAllocColorPlanes 163

7.4.3单色显示器里的高亮度 165

7.5建立和安装着色图 165

7.5.1处理着色图的函数 166

7.5.2事件ColormapNotify 167

7.5.3需求着色图表(The required Colormap List) 168

7.6标准着色图 168

7.6.1标准着色图特性 169

7.6.2结构XStandardColormap 170

7-5. 将象点子字段移进象点值 171

7.6.3 3/3/2标准着色图 171

7.6.4安装标准着色图 171

7.6.5 RGB值转换为象点值的例子 172

7.7编写可移植的彩色程序 174

7.7.1单色与彩色 174

7.7.2检查着色类型 175

7.7.3获取有关着色类型的信息 176

7.7.3.1选择着色类型的实例 177

7.8杂类颜色管理库程序 179

第八章事件 180

8.1事件处理概论 180

8.2事件处理 181

8.2.1事件结构 181

8.2.2事件类型和XEvent联合 182

8.2.3事件队列 183

8.2.4处理事件 183

8-1. 服务器的事件队列和每个客户程序的事件队列 183

8.2.5输出事件类型 187

8.2.6获取事件的库程序 188

8-1. 读取事件库程序 190

8.2.7判断子程序 191

8.3选择事件 193

8-2. 事件mask定义 193

8.3.1事件表征码与事件间的对应关系 195

8-3. 事件表征码,事件类型以及事件结构 195

8.3.2设备事件的传播 197

8-2a. 一种可能的选择方案 198

8-2b. 另一种可能的选择方案 198

8-2c. 又一种可能的选择方案 199

8.3.2.1键盘聚焦窗口 199

8.3.2.2独享键盘和指示器 200

8.3.3.2 ButtonPressMask,ButtonReleaseMask和OwnerGrabButtonMask 201

8.3.3事件表征码 201

8.3.3.1 KeyPressMask和KeyReleaseMask 201

8.3.3.3定位器运动表征码 202

8.3.3.4 FocusChangeMask 202

8.3.3.5 EnterWindowMask和LeaveWindowMask 202

8-3. 降低窗口C产生成的Expose事件 203

8.3.3.6 KeyMapStateMask 203

8.3.3.7 ExposureMask 203

8.3.3.9 ColormapChangeMask 204

8-4. 引起VisibilityNotify事件的可见性转换 204

8.3.3.8 VisibilityChangeMask 204

8.3.3.10 PropertyChnageMask 204

8.3.3.12 SubstructRedirectMask 205

8.3.3.11 StructureNotifyMask和SubstructuredNotifyMask 205

8.3.3.13 ResizeRedirectMask 206

8.3.3.14自动选择事件 206

8.4发送事件 207

8-5. 介绍事件的其它章节 208

8.5在何处有关每一个事件的更多资料 208

9.1键盘 210

第九章键盘和定位器 210

9.1.1简单的键盘输入 212

9.1.1.1获取字符串——对话窗口 213

9.1.2键盘映射 217

9.1.2.1键盘符号到字符串的映射 218

9.1.2.2功能转换键 219

9.1.2.3键代码到键符号的映射 220

9-1. 逻辑功能转换键与一个典型的功能转换键的映射 220

9.1.3键符号的背景 221

9.1.3.1键符号的设计 221

9.1.3.2键符号意义的约定 222

9.1.4改变服务器范围的键盘映射 222

9.1.4.1改变键代码到键符号的映射 222

9.1.4.2改变功能转换 224

9.1.5其它键盘管理库程序 225

9.1.4.3改变X11.1的功能转换键映射 225

9.2.1.1 获取所有的移动事件 226

9.2定位器 226

9.2.1跟踪定位器移动 226

9.2.1.2使用定位器移动条件特性 229

9.2.1.3移动历史 232

9.2.2管理定位器按钮事件 234

9.3边界跨越和键盘聚焦改变事件 238

9.2.3改变定位器按钮映射 238

9.2.4移动定位器 238

9.3.1事件KeymapNotify 240

9.4独享键盘和定位器 240

9.5键盘缺省值 242

9.5.1设置键盘缺省 242

9-2. 键盘缺省值的设置——缺省值及范围 243

9.5.2获取键盘缺省值 244

9.6定位器缺省值 244

第十章客户程序通信 245

10.1特性和标识符 245

10.2与窗口管理程序通信 246

10.2.1客户程序的作用 246

10.2.1.1建立一个顶层窗口 246

10.2.2客户程序设置的特性 247

10-1. 窗口管理程序条件特性项 248

10.2.2.1XA_WM_NAME 248

10.2.2.4应用程序命令及参数 249

10.2.2.3 XA_WM_ICON_NAME 249

10.2.2.2 XA_WM_CLASS 249

10.2.2.5窗口尺寸条件特性——正常的和放大的窗口 250

10-2.XSizeHints标志 251

10-3. 设置和获取尺寸条件特性的库程序 252

10.2.3其它的窗口管理程序条件特性 252

10.2.3.1标志字段 253

10.2.3.2输入字段和输入聚焦 253

10-4. 窗口管理程序条件特性的标志 253

10-5. 初始状态条件特性标志 254

10.2.3.4图符条件特性 254

10.2.3.3初始状态字段 254

10.2.3.6临时窗口 256

10.2.3.5窗口组 256

10.2.5客户程序对窗口管理程序活动的响应 257

10.2.4.1 XA_WM_ICON_SIZE 257

10.2.4由窗口管理程序设置的特性 257

10.3选择区 258

10.3.1选择机构 258

10.3.2选择区的例子 259

10.3.3取得选择区所有权 260

10.3.4选择区拥有者的责任 261

10.3.5放弃选择区所有权 262

10.3.8再谈选择特性和类型 263

10.3.7大量数据的传送 263

10.3.6请求选择区 263

10.4剪裁缓冲区 264

10.3.8.1目标标识号 264

10-6. 内部特性类型 265

第十一章管理用户缺省值 266

11-1. 用XGetDefault处理用户缺省值的过程 267

11.1使用XGetDefault 267

11.2在应用程序里使用X11.2的资源管理程序 273

11-2. 用资源管理程序处理缺省值的过程 274

11.4管理用户缺省值数据库 274

11.3标准几何参数 274

11-3. 假设xmail显示 276

11.4.1紧密粘结和松散粘结 277

11.4.3存贮/访问规则 278

11.4.2-name选择项 278

11-1. 类设置 279

11.5.1将资源放进数据库 280

11.4.4资源管理程序值及表示类型 280

11.5其它资源管理库程序 280

11.5.2资源管理程序标识码 281

第十二章一个完整的应用程序 282

12.1 basecalc介绍 282

12-1. 屏幕上的应用basecalc 283

12.2包含文件 284

12.3 basecalc的主程序 284

12.4获取用户缺省值 285

12.4.1 Basecalc的用户缺省值 286

12.4.2命令行语法分析 286

12.4.3获取数据库 290

12.4.4从数据库中获取选择项 292

12.6初始化计算器 296

12.5打印有关用法的信息 296

12.7形成窗口 301

12.8选择事件 301

12.9处理事件 302

12.10画‘按键’ 305

12.11没有列出的子程序 306

第十三章其它程序设计技巧 308

13.1屏幕保存器(Screen Saver) 308

13.2来自其它主机和结点的访问 308

13.2.1增加、删除或者列出主机 308

13.2.2允许和禁止访问控制 309

13.3窗口层次结构的获取 309

13.4关闭方式 309

13.5连接关闭操作 310

13.6数据管理 311

13.6.2相关表 311

13.6.1上下文相关管理程序 311

13.7随后库程序(The after function) 312

13.8坐标变换 312

13.9将程序移植到X环境 312

13.10 X扩展程序的使用 313

13.9.1从X10向X11移植 313

第十四章窗口管理 315

14.1外观规定 315

14.2转送子结构重构请求 316

14.3.1 阴影 317

14.3重设父窗口 317

14-1. 背景阴影 318

14-2. 背景阴影的窗口层次 318

14.4窗口安全记录 319

14-3. 阴影试验的实际效果 319

14.5.2设置图符尺寸 320

14.5.1读取条件特性 320

14-1. 窗口管理程序的条件特性 320

14.5窗口管理程序——客户程序通信 320

14.6窗口管理程序功能 321

14.7基本窗口管理程序 322

14-3. 没有兄弟窗口的叠状态的含义 322

14-2. 给出兄弟窗口的叠状态的含义 322

14.7.1程序的操作 323

14-4.winman生成的菜单 323

14.7.2主程序说明 324

14.7.4选择输入 332

14.7.3窗口分层 332

14-5. 菜单的窗口层 333

14.7.5管理输入 333

14.7.6转换区域的颜色 334

14.7.9绘制菜单 335

14.7.8独享定位器 335

14.7.7光标 335

14.7.10循环窗口 336

14.7.11提升及降低窗口 337

14.7.12移动窗口或改变窗口尺寸 338

14-6. 拖动窗口轮廓 343

14.7.13缩微或复原窗口 343

14.7.14建立图符 347

14.7.15获取图符尺寸 349

14.7.16更新图符表 351

14.7.17删除图符 352

14.7.18改变键盘焦点 352

14.7.19画聚焦窗口外框 355

14.7.20执行shell命令 356

14.8窗口管理程序未解决的问题 357

附录A术语汇编 358

附录B X10的兼容性 372

XDraw和XDrawFilled 372

B-1.顶点标志值 373

附录C编写X的扩展程序 375

基本协议支持库程序 375

连结Xlib 376

扩展程序的初始化 376

连结程序库 376

XESetCreateGC 377

XESetCopyGC 377

XESetCloseDisplay 377

XESetCreateFont 378

XESetFreeGC 378

XESetFreeFont 378

XESetWireToEvent 379

XESetEventToWire 379

XESetErrorString 380

XESetError 380

XFindOnExtensionList 381

XAddToExtensionList 381

XESetFlushGC 381

连结Xlib数据结构 381

图形批处理 382

GC缓存 382

分配一个资源ID 382

请求的格式 384

请求、回答和Xproto.h 384

编写扩展的二级程序 384

发送协议请求和参数 386

数据结构的锁定 386

开始编写二级功能程序 386

可变长度参数 387

应答 388

可移植性考虑 389

同步调用 389

内存的分配和释放 389

衍生正确的扩展程序操作码 390

附录D应用程序basecalc 391

附录E事件参考 430

公用结构成分的意义 430

ButtonPress,ButtonRelease 433

CirculateNotify 435

CirculateRequest 436

ClientMessage 437

ColormapNotify 439

ConfigureNotify 440

ConfigureRequest 442

CreateNotify 444

DestroyNotify 446

EnterNotify,LeaveNotify 447

E-1. 跨越边界事件和窗口的关系 449

E-2. 事件的detail成分和窗口关系 450

E-1. 定位指针在窗口间移动时所产生的事件 451

E-2. 在各种窗口关系情况下,指针从窗口A转移到窗口B时 451

产生的边界跨越事件和事件的detail成分 451

Expose 452

FocusIn,FocusOut 454

E-3. 事件FocusIn和FocusOut以及各窗口的关系 455

E-4. 事件的detail成分和窗口关系 456

E-3a. 事件FocusIn和FocusOut示意图 457

E-3b. 事件FocusIn和FocusOut示意图 458

GraphicsExpose,NoExpose 459

GravityNotify 461

KeymapNotify 462

KeyPress,KeyRelease 464

MapNotify,UnampNotify 466

MappingNotify 468

MapRequest 470

MotionNotify 471

PropertyNotify 473

ReparentNotify 474

ResizeRequest 475

SelectionClear 476

SelectionNotify 477

SelectionRequest 478

VisibilityNotify 479

E-5. 结构XVisibilityEvent的state值 480

选择区约定的状况 481

同级通过选择区通信 481

简介 481

附录F客户程序间通信约定提案 481

询问选择区拥有权 482

选择区拥有者的责任 483

放弃选择区的所有权 484

自愿放弃 484

强制放弃 484

请求一个选择区 485

大量数据传送 486

选择区标识符的用途 487

选择区PRIMARY 488

目标标识符 488

选择区CLIPBOARD 488

选择区SECONDARY 488

选择标识符 488

选择区特性的用途 489

STRING特性 489

INDIRECT特性 489

F-1. 目标标志符及其含义 490

INCREMENTAL特性 490

客户程序与窗口管理程序的通信 491

客户程序的动作 492

建立顶层窗口 492

客户程序特性 493

XA_WM_NAME 493

XA_WM_ICON_NAME 494

XA_WM_NORMAL_HINTS 494

XA_WM_HINTS 495

F-2. 输入方式 497

WM_TRANSIENT_FOR 498

窗口管理程序特性 498

WM_CLASS 498

配置窗口 499

映射窗口和解除对窗口的映射 499

键盘聚焦 500

着色图 501

缩微窗口图符 502

弹出式窗口 502

窗口组 502

客户程序对窗口管理程序操作的响应 503

移动 503

重新设置尺寸 503

(非)缩微化 503

着色图的修改 503

键盘聚焦 504

ClientMessages 504

窗口管理程序约定的状态 504

客户程序对会话管理程序操作的响应 505

终止 505

WM_CLIENT_MACHINE 505

终止 505

客户程序与会话管理程序的通信 505

WM_COMMAND 505

特性 505

客户程序的作用 505

会话管理程序的状态约定 506

共享资源的处理 506

键盘聚焦 506

定位器 506

着色图 507

致谢 507

附录G版本注释 508

获得X软件 509

附录H其它信息来源 509

故障修复 510

网络新闻 511

其它Xlib书籍 512

电话支持 513

培训 513

工具箱 513

H-1. X集团 513

自我发现 514

X集团 613