您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 页面描述语言与格式-第三章
页面描述语言与格式PostScript&PDF甘朝华第三章页面图形描述基本方法※PostScript语言的成像模型与图形状态※坐标系及其转换※路径构造※着色处理与图形生成※裁剪路径的使用※程序举例除了像其他计算机语言那样具有一定的语法特点外,PostScript语言最显著的特点就是它具有强大的页面描述功能。PostScript语言根据Adobe公司所提出的成像模型,把对页面上图形的描述简化为构造路径和着色路径两个基本过程。通过这两个基本操作便可产生任意形状的几何图形。3.1PostScript语言的成像模型与图形状态成像模型是PostScript语言描述图形时最基本的理论依据,它使得对任意图形的描述变得简单而快速。图形状态则包含了图形描述时所需要的一系列特征参数。它决定了页面上图形的基本属性和外在表现。3.1PostScript语言的成像模型与图形状态PostScript语言的成像模型:基本成像理论在PostScript语言中,页面上的任何对象都相当于一个二维图形,这些图形的产生就好像是在页面的某个指定区域上喷上某种不透明的颜料而得到的。这个指定的区域可以是文字形状区域,也可以是一条直线或曲线,由直线或曲线所构成的任意形状区域或取样图像喷涂到指定区域上的颜料可以是彩色的,也可以是黑色、白色或任意灰度等级的灰色,甚至可以是由用户自定义的重复图案。3.1PostScript语言的成像模型与图形状态PostScript语言的成像模型:基本成像理论因此,在PostScript语言中,描述和生成页面图形的基本过程包括在当前页进行“区域的指定”与“颜料的喷涂”两个步骤,其中区域的指定将通过构造路径来实现,颜料的喷涂则通过着色操作来完成。3.1PostScript语言的成像模型与图形状态PostScript语言的成像模型:基本成像理论因此,在PostScript语言中,描述和生成页面图形的基本过程包括在当前页进行“区域的指定”与“颜料的喷涂”两个步骤,其中区域的指定将通过构造路径来实现,颜料的喷涂则通过着色操作来完成。3.1PostScript语言的成像模型与图形状态PostScript语言的成像模型:基本成像理论构造路径可使用PostScript语言所提供的路径构造操作符,其中最常用的操作符如newpath、moveto、lineto、rlineto、curveto、arc和closepath等。路径构造结束后,在当前页面上就存在一条当前路径,它指定了当前页上的哪些区域可以进行“颜料的喷涂”。这一后续处理可以通过着色操作符来完成。3.1PostScript语言的成像模型与图形状态PostScript语言的成像模型:基本成像理论PostScript语言中最基本的着色操作符有fill、stroke、image和show。fill:用当前色去填充一个指定的区域;stroke:用当前色和当前线型、线宽等特点去描绘当前路径;image:对一个取样图像进行着色处理;show:用当前色和当前字库对字符形状进行着色处理。3.1PostScript语言的成像模型与图形状态PostScript语言的成像模型:基本成像理论所有这些着色操作符都将在当前页面上产生一定的图形、图像或文字内容。在着色操作过程中,各着色操作符都将隐式地使用一些图形参数,这些参数都保存在图形状态中。如果图形状态中的某些参数值不符合当前着色处理的要求,则可在着色操作之前修改这些参数。3.1PostScript语言的成像模型与图形状态PostScript语言的成像模型:当前页及其特点在PostScript语言中,每一个准备进行页面内容描述的页面都被当作当前页进行处理。默认当前页showpage操作符3.1PostScript语言的成像模型与图形状态PostScript语言的成像模型:裁剪路径的概念与作用PostScript语言的成像模型中还包括这样一条基本理论:任何页面内容在输出到页面上的时候可以被裁剪成任何形状,这种裁剪操作将由裁剪路径来完成,即通过裁剪路径来规定当前页上可以进行着色操作的区域轮廓。着色操作符执行后产生的页面内容位于裁剪路径内,那么这些图形内容将最终出现在输出页面上,而所有落在裁剪路径外的图形内容最终将不会在页面上输出。3.1PostScript语言的成像模型与图形状态PostScript语言的成像模型:裁剪路径的概念与作用缺省裁剪路径:当前页面的这个可成像区域。clip操作符3.1PostScript语言的成像模型与图形状态PostScript语言的成像模型:页面描述基本过程按照PostScript语言的成像模型理论,描述页面上的图形内容包括以下四个基本步骤:(1)使用路径构造操作符创建当前路径,即指定成像区域,但此时不会产生任何可见的图形。(2)根据实际需要设置隐式图形状态参数,如修改线宽,设置当前字库和当前彩色修改裁剪路径的轮廓等。但如果直接利用缺省的图形状态参数,则这一步骤可以省略。3.1PostScript语言的成像模型与图形状态PostScript语言的成像模型:页面描述基本过程按照PostScript语言的成像模型理论,描述页面上的图形内容包括以下四个基本步骤:(3)使用着色操作符对当前路径进行着色处理,将图形真正放置到当前页面上,生成实际的页面图形。(4)使用输出操作符showpage把当前页面上的图形内容送到输出设备上(如显示器、打印机和照排机)进行输出。%!psEPSF-3.0/inch{72mul}def0.5inch1.0inchmoveto3.5inch0rlineto03.5inchrlineto-3.5inch0rlinetoclosepath0.5setgrayfillshowpage3.1PostScript语言的成像模型与图形状态图形状态:在PostScript语言的成像模型中,对页面图形的描述将隐式地使用一些图形控制参数,这些图形参数都存放在图形状态中。3.1PostScript语言的成像模型与图形状态图形状态:图形状态的概念图形状态存储区就是用于存放图形状态参数的一块内存区。图形状态是一个保存了一组当前图形状态参数的数据结构,其中的图形状态参数提供了图形操作符执行时所需要的一些隐式参数。图形状态本身不是一个对象,而相当于一个数据集合。在该结构中包含了一系列对象,而且几乎所有的对象都能由各自特定的图形状态操作符来读取和改变。3.1PostScript语言的成像模型与图形状态图形状态:图形状态参数详述图形状态中包含的参数很多,它们大多数是普通的PostScript对象,且都有确定的值。这些参数可分为两大类,一类是与设备无关的参数,它们用于页面上图形的描述控制,用户可以根据需要自行修改;另一类则是与设备有关的参数,它们用于控制还原处理过程细节,即用于控制扫描转换这些参数值通常是与输出设备有关,它们在安装时由相关的设备决定,尽可能不要在程序中对它们作任何改动。3.1PostScript语言的成像模型与图形状态图形状态:图形状态参数详述--与设备无关的参数1)当前变换矩阵(CTM)当前变换矩阵用CTM表示,它是一个数组类型的对象,用于把用户空间坐标系转换到设备空间坐标系,其初始值是一个把默认的用户坐标转换成设备坐标的矩阵,但可利用坐标系统操作符进行修改。(第3节介绍)2)颜色空间(ColorSpace)该参数是一个数组类型的对象,它决定了当前的颜色空间模型及其特点,决定了当前彩色值的类型。其初始值为DeviceGray颜色空间3.1PostScript语言的成像模型与图形状态图形状态:图形状态参数详述--与设备无关的参数3)颜色(color)这个参数将根据当前空间的不同而具有不同的类型。它根据当前颜色空间的特点描述了当前颜色的值,并为着色操作符提供相应的颜色。其初始值为0,表示当前色为黑色。4)当前点位置(position)该参数包含两个数值对象,用于指定页面上构造当前路径时的起始点在当前用户空间中的坐标位置。通常是最后一个路径段的终点坐标。这一参数没有初始值,在页面描述过程中,一般总是要先使用moveto操作符来确定一个当前点。3.1PostScript语言的成像模型与图形状态图形状态:图形状态参数详述--与设备无关的参数5)当前路径(path)6)当前裁剪路径(clippingpath)7)裁剪路径栈(clippingpathstack)8)字库(font)9)线宽(linewidth)10)线端类型(linecap)11)线的连接形状(linejion)12)斜接限制(miterlimit)13)虚线样式(dashpattern)14)笔画调整(strokeadjust)3.1PostScript语言的成像模型与图形状态图形状态:图形状态参数详述--与设备有关的参数1)色彩还原机制(colorrendering)2)叠印(overprint)3)黑版生成(Blackgeneration)4)底色去除(Undercolorremoval)5)变换函数(Transferfunction)6)半色调(Halftone)7)平直度(flateness)8)光滑度(smoothness)9)设备(device)3.1PostScript语言的成像模型与图形状态图形状态的保存与恢复:图形状态中包含了许多为图形操作符的执行提供依据的参数,尽管这些参数具有一定的初始值,但是在描述页面上的具体图形的过程中,某些参数的初始值可能不能满足实际描述的要求,因而程序中将通过一些图形状态操作符对这些图形状态参数进行修改。然而,在后继的页面描述过程中又往往希望回到修改前的图形状态,因此,在图形状态参数的修改过程中,我们常常需要对整个图形状态作保存和恢复的操作。PostScript语言中用于保存和恢复整个图形状态的方法有两种。第一种方法是使用图形状态栈,这一种方法较常用;另一种则是使用VM中的gstate对象。3.1PostScript语言的成像模型与图形状态图形状态的保存与恢复:使用图形状态栈这一方法需要使用gsave和grestore两个操作符;利用gsave操作符把当前图形状态的一个拷贝压入图形状态栈中进行保存;利用grestore操作符则从图形状态栈中弹出保存在其中的图形状态,并使其成为当前图形状态,由此使得当前图形状态恢复到gsave前的值。3.1PostScript语言的成像模型与图形状态图形状态的保存与恢复:使用图形状态栈事实上,gsave操作符和grestore操作符总是成对使用,在程序中使用这两个操作符可以使包含在其中的内容具有封装性,它们使得为某些图形描述而所作的参数修改不会影响到其他图形的描述。%!ps/inch{72mul}def0.5inch1.0inchmoveto1.5inch0rlineto01.5inchrlineto-1.5inch0rlinetoclosepathgsave0.8setgrayfillgrestoregsave15setlinewidthstrokegrestore6setlinewidth0.5setgraystrokeshowpage3.1PostScript语言的成像模型与图形状态图形状态的保存与恢复:使用VM中的gstate对象PostScript语言的Level2版本支持gstate对象,该对象存放在VM中。gstate操作符创建一个新的gstate对象;currentgstate操作符把整个图形状态复制到gstate;利用setgstate操作符恢复到原图形状态。%!ps/inch{72mul}def0.5inch1.0inchmoveto1.5inch0rlineto01.5inchrlineto-1.5inch0rlinetoclosepathgsavecurrentgstate0.8setgrayfillgstatesetgstate15setlinewidthstrokeshowpage3.2坐标系及其转换在PostScript语言中,当前页面上任意形状的路径都可以通过直角坐标系
本文标题:页面描述语言与格式-第三章
链接地址:https://www.777doc.com/doc-5727192 .html