《unix系统v第4版-程序员指南:x11/news图形窗口系统news》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2222
  • ISBN:
  • 页数:253 页
图书介绍:

前言 1

0.1 引言 1

0.2 记号约定 1

目录 1

第一章 导论 3

1.1 引言 3

1.2 NeWS程序设计概况 3

1.2.1 POSTSCRIPT语言 3

1.2.2 NeWS数据类型 3

1.2.3 NeWS操作命令 4

1.2.4 X11/NeWS服务器 4

1.2.5 客户—服务器通信 4

1.2.6 C客户接口 5

1.2.7 画布 5

1.2.9 事件 6

1.2.10 存储器管理 6

1.2.8 NeWS成像模型 6

1.2.11 颜色支撑 7

1.2.12 字型支撑 7

1.3 用于服务器的POSTSCRIPT语言文件 7

1.3.1 窗口管理程序 8

1.3.2 类 8

1.3.3 调试 8

2.1.1 扩展的类型canvastype 9

2.1 引言 9

第二章 画布 9

2.1.2 画布操作命令 10

2.2 坐标系统综述 10

2.3 创建和显示画布 11

2.3.1 创建画布 11

2.3.2 形成画布 12

2.3.3 设置当前画布 12

2.3.4 映射画布至屏幕 13

图与表 14

图2—1:在0,0处映射的画布 14

2.4.1 移动画布 14

2.4 操纵画布 14

图2—2:在25,25处映射的画布 15

2.4.2 透明与非透明画布 16

图2—3:一个被映射的子画布 17

图2—5:非透明并重涂色了的父画布 18

图2—4:透明的父画布 18

2.4.3 可保留和非保留画布 19

2.4.3.1 关于破损的进一步信息 20

图2—6:非保留画布上的破损 20

2.5.1 同辈表 21

2.5 父辈、子辈以及同辈画布 21

2.4.4 关键字SaveBehind 21

图2—8:年长的同辈遮掩了年幼者 23

图2—7:年幼的同辈遮掩了年长者 23

2.5.2 建立新辈 24

2.6 覆盖式画布 24

图2—9:画布间辈份的改变 24

2.6.1 在覆盖上绘图 25

2.7 画布剪切操作命令 25

图2—10:画布剪切操作的结果 26

2.8 光标 26

2.9 画布、文件和成像过程 27

2.9.1 把画布写入文件 27

2.9.2 从文件中读出画布 27

2.9.4 成像 28

图2—11:映射的画布 28

2.9.3 其它与文件相关的操作命令 28

2.10.1 事件 29

2.10 其它的字典关键字 29

图2—12:用buildimage操作命令映射的画布 29

2.10.5 文件共享 30

2.10.4 抓取状态 30

2.10.3 X专有特征 30

2.10.2 颜色 30

第三章 事件 31

3.1.1 扩展的类型eventtype 31

3.1 引言 31

3.1.2 事件操作命令 32

3.2 事件发布概况 32

3.3 创建事件 33

3.4.1 表示兴趣前拷贝事件 34

3.4 表示兴趣 34

3.4.2 更改和重用兴趣点 34

3.5 事件与兴趣点的匹配规则 35

3.5.2 关键字Process的匹配规则 35

3.5.1 关键字Name和Action的匹配规则 35

3.5.3 关键字Serial的匹配规则 36

3.6 事件送入发布机构 36

3.7 等待事件 36

3.8 关键字Name、Action和Canvas表示为字典 37

3.8.1 不可执行的字典值 37

3.8.2 可执行的字典值 39

3.9 使用关键字Canvas:匹配多个兴趣点 40

3.9.1 两种兴趣表 40

3.9.2.3 关键字Canvas为空值 41

3.9.2.2 关键字Canvas为数组或字典 41

3.9.2.1 关键字Canvas为单个画布 41

3.9.2 兴趣点的匹配顺序 41

3.9.3 使用关键字EventsConsumed 42

3.9.4 多个Post-child兴趣点匹配的实例 43

图3—1:画布的初始外观 45

3.9.5 多个Pre—child兴趣点匹配的实例 46

图3—2:Pre—Child兴趣点匹配后的结果 46

图3—3:多个Pre—Child兴趣点匹配后的结果 47

3.10 系统生成事件 47

3.10.1 鼠标事件 47

3.10.2.1 关键字Name的值 50

3.13 使用关键字Exclusivity 50

3.10.2 进入和退出事件 50

图3—4:FirstCanvas和SecondCanvas的初始外观 51

图3—7:第三个进入事件,被FirstCanvas匹配 52

图3—6:第二个进入事件,被SecondCanvas匹配 52

图3—5:第一个进入事件,被FirstCanvas匹配 52

3.10.3 使用关键字XLocation和YLocation 53

3.10.2.2 关键字Action的值 53

3.10.2.3 使用操作命令Postcrossings 53

表3—1:边界跨越事件 53

图3—8:鼠标生成事件的结果 54

表3—2:输入焦点 55

3.10.4 使用关键字Coordinates 55

3.10.5 焦点事件 55

3.10.6 键盘事件 55

3.10.6.1 重复键字典 56

3.10.7 破损事件 56

3.10.8 废弃事件 56

3.11 使用关键字ClientData 57

3.10.9 ProcessDied事件 57

3.12 使用关键字Priority 58

3.13.1 使用操作命令redistrbuteevent 60

3.14 使用关键字TimeStamp 61

3.14.1 使用操作命令recallevent 62

3.15 使用关键字Process 63

3.16 多进程的输入同步 64

3.17 事件登录 65

3.16.1 使用blockinputqueue 65

4.2 基本术语和概念 67

第四章 类 67

4.1 引言 67

4.2.1 类与实例 67

4.2.2 继承性与类树 68

4.2.2.1 超类与子类 68

图4—1:一个简单的类树 69

4.2.2.2 直接超类 69

4.2.2.3 继承性 69

4.2.2.4 单继承性与多继承性 69

4.2.2.5 继承性数组 70

图4—2:一个带有多继承性的类树 70

4.2.3 单继承性实例 71

图4—3:一个单继承性的例子 71

4.2.4 术语摘要 72

表4—1:术语摘要 73

4.3.1 定义类 73

4.3 创建新类 73

4.3.3 操作命令classend 74

4.3.4 操作命令redef 74

4.3.5 初始化新类 74

4.3.2 操作命令classbegin 74

4.4 用操作命令send发送消息 75

4.4.1 send的通常形式 75

4.4.1.1 send中执行步骤 75

4.4.2 用send调用方法 76

4.4.3 嵌套式send 76

图4—4:一个嵌套式send执行之前和其间的字典堆栈 77

4.4.4 用send创建新实例 78

4.4.5 send的另一种形式 78

4.4.6 用send改变实例变量的值 78

4.4.7 用send改变类变量的值 79

4.5 伪变量self和super 79

4.5.1 伪变量self 81

4.5.2 super伪变量 82

4.5.3 super将消息沿着超类链上传 83

4.5.4 self和super使用限制 84

4.6 方法编译 84

4.6.1 编译selfsend 84

4.6.2 编译supersend 85

4.6.3 本地字典 85

4.6.4 控制方法编译 86

4.6.5 /methodcompile 86

4.6.7 /doit 87

4.6.6 /installmethod 87

4.6.8 SetLocalDicts 88

4.7 创建新实例 90

4.7.1 /new 90

4.7.2 /newobject 91

4.7.3 /newinit 92

4.7.4 /newmagic 93

4.8 内部类 94

4.8.1 /newdefault 95

4.8.2 /defaultclass 95

4.8 /SubClassResponsibility 96

4.9 用UserProfile取代类变量 96

4.9.1 取代DefaultClass 97

4.10.1 promote 97

4.10 将类变量提升为实例变量 97

4.10.2 unpromote 98

4.10.3 promoted? 98

4.10.4 避免意外的提升 98

4.11.2 classdestroy 99

4.12 类系统中的废弃对象 99

4.11.3 /cleanoutclass 99

4.11 消毁类和实例 99

4.11.1 /destroy 99

4.13 多重继承性 100

4.12.1 /obsolete 100

4.13.1 简单的多重继承性例子:一个公用类 101

图4—5:多继承性例子中基本的类层次结构 101

图4—6:具有utility类的层次结构 102

4.13.2 复杂多重继承性的例子 103

图4—7:LabeledDial例子中的类树 104

4.13.2.2 例中可能的继承性数组 104

4.13.2.1 有效继承性数组次序的规则 104

图4—8:LabeledDial的继承性数组中的广度优先次序 105

4.13.2.3 次序选择 106

图4—9:LabeledDial的继承性数组中的深度优先次序 106

4.13.2.4 限制继承性数组的次序 107

4.13.2.5 super与多重继承性 107

4.14 设置和找取类的Name和Classname的公用程序 108

4.14.1 /name 108

4.14.2 /setname 108

4.14.3 /classname 109

4.15 询问对象状态的公用程序 109

4.15.1 isobject? 109

4.15.2 isclass? 109

4.15.3 isinstance? 109

4.16 询问对象继承者的公用程序 109

4.16.1 /superclasses 109

4.16.3 /instanceof? 110

4.17 send堆栈上查找对象的公用程序 110

4.16.6 /class 110

4.16.5 /understand? 110

4.16.4 /descendantof? 110

4.16.2 /subclasses 110

4.18 类操作命令 111

4.17.3 /sendtopmost 111

4.17.2 /topmostdescendant 111

4.17.1 /topmostinstance 111

4.19 类方法 112

5.2 CPS设施 113

5.1 引言 113

第五章 客户—服务器界面 113

5.3 创建·cps文件 114

5.3.1 变元类型 115

表5—1:CPS变元类型 116

5.3.2 发送POSTSCRIPT语言代码而无返回值 116

5.3.3 接受同步回答 117

5.3.4 接收异步回答 119

5.4 创建·h文件 120

5.4.1 CPS公用程序 120

表5—2:CPS所提供的C公用子程序 121

5.5 创建·c文件 121

5.5.1 POSTSCRIPT语言通信文件 122

5.5.2 读客户的输入队列 122

5.6 记号与记号表 123

5.6.1 编译·c文件 124

5.6.2 注释 124

5.7 调试CPS 124

5.8 用其它语言支持NeWS 125

5.9 字节流格式 126

5.9.1 压缩记号的编码 126

5.9.2 对象表 127

5.9.3 对照值 128

5.9.4 实例 128

表5—3:记号值 128

表5—4:编码实例中字节的意义 129

第六章 调试 131

6.1 引言 131

6.4 使用调试器 131

6.2 装载调试器 131

6.3 启动调试器 131

6.4.1 多进程调试 132

6.5 客户命令 132

6.6 用户命令 133

6.7 杂项功能 137

6.7.1 别名 137

6.7.2 多个调试连接 138

第七章 存储管理 139

7.1 引言 139

7.2 引用计数 139

7.2.1 对象 139

7.2.2 被计数对象的引用 139

7.2.2.2 非计数引用 140

7.2.2.1 被计数的引用 140

7.2.2.3 软引用 140

表7—1:非计数对象的类型 141

7.2.2.5 引用记分 141

7.2.3 对象类型 141

7.2.2.4 废弃事件 141

7.3 存储管理操作命令 142

表7—2:计数对象的类型 142

7.4 存储管理的调试操作命令 143

7.4.1 使用debugdict 143

7.4.2 调试操作命令 143

7.5 未用的字型高速缓存 146

7.5.1 指定高速缓存的容量 146

7.5.2 清除高速缓存 147

7.5.3 应用程序 147

8.1 引言 149

8.2 作为字典的NeWS类型 149

第八章 NeWS类型的扩展 149

8.3.1 POSTSCRIPT语言类型 150

8.3.2 NeWS的扩展类型 150

8.3 NeWS类型表 150

表8—1:POSTSCRIPT语言中的标准对象类型 150

表8—2:附加的NeWS对象类型 151

8.4 类型colortype 151

8.5 类型graphicsstatetype 151

8.6 类型monitortype 151

8.7 类型packedarraytype 152

8.8 类型pathtype 152

8.9 类型canvastype 152

8.10 类型colormaptype 157

8.11 类型colormapentrytype 158

8.12 类型cursortype 158

8.13 类型enviromenttype 159

8.14 类型eventtype 161

8.15 类型fonttype 165

8.16 类型processtype 165

8.17 类型visualtype 169

第九章 NeWS操作命令的扩展 171

表9—1:发送给incanvas及其父画布的事件 191

表9—2:发送给outcanvas及其父画布的事件 192

表9—3:光栅操作代码值 200

10.1 引言 205

第十章 POSTSCRIPT语言文件的扩展 205

10.2 初始化文件 205

10.3 用户创建的扩展文件 206

10.3.1 其它扩展文件 206

10.3.2 扩展文件内容 207

10.4 杂类 207

10.5 数组操作 211

10.6 条件操作命令 213

10.7 输入操作命令 213

10.8 矩形公用程序 216

表10—1:标准NeWS光标 216

10.9 类操作命令 217

10.10 图形公用程序 217

10.11 文件访问实用程序 219

10.12 CID实用程序 220

10.13 常量 221

10.14 键映射公用程序 221

10.15 重复键 222

10.16 标准颜色 223

10.17 登录事件 223

10.17.1 未登录的事件 224

附录A NeWS操作命令 225

A.1 引言 225

A.2 按字母顺序排列的NeWS操作命令 225

A.3 按功能排列的NeWS操作命令 230

A.3.1 画布操作命令 230

A.3.2 事件操作命令 231

A.3.3 数学操作符 231

A.3.4 进程操作命令 232

A.3.5 轨道操作命令 232

A.3.6 文件操作命令 233

A.3.7 颜色操作命令 233

A.3.8 键盘与鼠标操作命令 234

A.3.9 光标操作命令 234

A.3.10 字型操作命令 234

A.3.11 杂项操作命令 234

附录B 扩展的输入系统 237

B.2 Lite用户界面 237

B.1 基于NeWS输入设施 237

B.3.1 键盘输入:简单的ASCII字符 238

B.3 键盘输入 238

B.3.2 键盘输入:功能键 239

B.3.1.1 撤消对键盘事件的兴趣 239

B.3.4 键盘输入:编辑与光标控制 240

B.3.3 指派功能键 240

B.4 选择 241

B.4.1 选择数据结构 241

表B—1:选择字典关键字 242

表B—2:系统定义的选择属性 242

B.4.2 选择进程 243

表B—3:请求字典项 243

表B—4:高级的与选择有关的事件 243

B.4.3 选择事件 245

B.5 输入焦点 248

表B—5:输入焦点 248

附录C 删节和实现限制 251

C.1 操作符删节和限制 251

表C—1:实现限制 252

C.2 映像删节 252

C.3 Statusdict字典 252

C.4 实现限制 252

表C—2:各种POSTSCRIPT语言操作命令的NeWS版本 253

C.5 与POSTSCRIPT语言的其它区别 253