版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微软统一打印机驱动程序本章叙述了微软统一打印机驱动程序 (Unidrv) , 解释了怎样增加小驱动程序来允许 Unidrv 来支持新的打印机,主要包括了下面的主题: 4.1 统一打印机驱动程序介绍 4.2GPD文件介绍 4.3 打印机属性 4.4 打印机命令 4.5 打印机特性 4.6 打印机选项 4.7 打印机字体描述 4.8 条件语句 4.9 压缩光栅数据 4.10 过滤光栅数据 4.11 处理色彩格式 4.12 用 Unidrv 进行中间色调整 4.13 控制图像质量 4.14 处理可安装的特性及选项 4.15 指定特性和选项显示的顺序 4.16 描述打印机内存配置 4.17 指定纸张大
2、小 4.18 引用场所4.1 统一打印机驱动程序介绍统一打印机驱动程序 (Unidrv) 是微软公司对非Postscritp 打印机的标准打印机驱动程序,对Unidrv 的介绍包括下列主题: 4.1.1Unidrv 能力 4.1.2Unidrv 组件 4.1.3Unidrv 小驱动程序 4.1.4Unidrv 用户接口 4.1.5Unidrv 绘制器 4.1.6GPD文件实例 4.1.7 微软小驱动程序开发工具4.1.1 Unidrv 能力Unidrv 提供以下能力: 用描述每一个打印机的特征的特定打印机Unidrv 小驱动程序,支持所有的非Postscript 打印机。 一个 Unidrv
3、的用户接口, 基于 Treeview 控件和属性表单, 它对所有的打印机 者是一致的,而且对每一个打印机的单一选项也是可以修改的。 一个单一的Unidrv绘制器,即与GDI图形引擎一起,转换微软Win32 GDI调 用从应用程序到打印机的可以发送给假脱机的命令。为提供对以前的打印机驱动程序用GPCC件编写的小驱动程序的支持,RasDD即微软小驱动程序开发工具(Microsoft Minidriver Development Tool) 提供从RasDD GPCC件到Unidrv GPD文件的自动转换。4.1.2 Unidrv 组件Unidrv组件由DLL加上文本及二进制数据文件构成,如下图所示
4、:插入 Unidrv 组件图?在图中的组件包括:应用程序一个用户应用程序,如字处理程序,它提供给用户打印的能力。gdi32.dll用户模式的DLL导出 Win32 GDI函数内核模式图形引擎实现GDI函数功能的NT的可执行代码小驱动程序文本文件基于文本的Unidrv小驱动程序,它利用 GPDC件的条目描述打印机二进制数据文件Unidrv 在解析了包含于小驱动程序文本文件中的信息后创建的临时文件( 具有 .bud 扩展名 )Unidrvui.dllUnidrv用户接口的DLL,对所有Unidrv支持的打印机提供一个通用的 UI代码。用户接口插件可选的、特定打印机的用户接口插件compstui.d
5、llCPSUI给打印机的用户接口Unidrv.dllUnidrv 绘制器,它绘制图像及发送图像数据流到打印假脱机绘制插件 可选的、特定打印机的绘制插件4.1.3 Unidrv 小驱动程序Unidrv 小驱动程序是包含打印机说明的文本文件。每一个小驱动程序描述了一种生产厂家的打印机类型。这一基于文本的说明即称为 GPD(Generic Printer D esciption),并且每一个文件都称为 GPDft:件,每一个小驱动程序由一个或多个 GPDt件构成。利用GPDC件来描述一个打印机,Unidrv支持以下能力:在许多打印机上发现的一般的、标准的打印机特性。打印机提供的唯一的、定制的打印机特
6、性。可安装的打印机选项,只要在选项被安装的情况下可以选择。选项约束,允许指定不兼容的选项。条件语句,允许指定一些依赖于其他特征的打印机的特征。打印机命令的规范说明, 它可以包括当前一大堆选择的标准变量的值, 也可以对这些变量执行算术操作。一个定制的帮助文件,它不同于 Unidrv 提供的标准的帮助文件,而是用于描述定制的特性。关于创建GPDC件的信息,参考GPDC件介绍部分。一个Unidrv小驱动程序可以由一个或多个 GPDC件构成,更多的信息,可以参 考在一个小驱动程序中使用多个GPDC件部分的内容。当一个打印机被安装,Unidrv的GPDW析阅读所有的GP汝件,GPDi:件中包含的信息被用
7、于创建打印机的临时的二进制文件。所有的 Unidrv 用户接口和 Unid rv 绘制器的参考都在这个二进制文件中。通常,小驱动程序必须提供资源,如字体、位图以及本地化文本字符串等。这些资源被置于一个资源DLL中。更多的信息,参考在小驱动程序中使用资源 DLL部 分的内容。4.1.4 Unidrv 用户接口Unidrv用户接口用CPSUI以创建以下的属性表单页面:设备设置(Device Settings) 页面:用于打印机属性表单,它在一个用户选择了来自打印文件夹或打印机窗口的“属性” 菜单项的时候被显示。 该页面列出了 特定打印机的配置信息。文档属性表单的布局(Layout) 、纸张 / 质
8、量 (Paper/Quality) 以及高级 (Advanced) 属性页面:它在一个用户选择了打印机折叠器或打印机窗口的文档默认值(Document Defaults) 菜单项时被显示,或者当一个应用程序调用了 PrinterPrope rties 或者Documentproperties函数被显示(在SDKF台文档中有描述)。该页 面列出了特定文档的配置信息。这些属性表单页包含有由一个打印机的 Unidrv 小驱动程序指定的打印机的特性及打印机的选项,它们也允许用户修改选项值。Unidrv用户接口作为一个用户模式的打印机接口DLL来实现,代码都含在DLL中,并与CPSUI连接来指定了腐卜t
9、表单的内容。DLL基于在小驱动程序中的信息, 实施哪一个打印机选项可以被组合的限制。 它也保证用户不选择没有在打印机上 安装的选项。4.1.5 Unidrv 绘制器Unidrv绘制器作为一个打印机图形 DLL来实现,并导出由微软设备驱动程序接 口 (Microsoft Device Driver Interface DDI) 为图形驱动程序定义的函数。当 一个应用程序调用图形设备接口 (Graphics Device Interface GDI) 函数以发送 图像到一个打印机设备,内核模式的图形引擎调用绘制器的DDI函数,这些DDI函数帮助GDI绘制一个打印作业的页图像。绘制器也负责与打印机的
10、命令序列一起发送已绘制的图像数据到打印假脱机, 打印假脱机然后再直接将图像和命令送到打印机硬件。 打印机绘制器发送的命令是在 Unidrv 小驱动程序被指定的。可以通过提供一个绘制的插件来修改 Unidrv 的绘制操作,该绘制插件在第 7章 定制微软打印机驱动程序部分有详细描述。4.1.6 GPD文件实例DDK&括大量的小驱动程序实例,对一些类型的打印机来说,这些实例包括GPD以及字体和资源文件。实例文件被放置于包含DD软例的树形目录的mini子目录中。4.1.7 微软小驱动程序开发工具 微软小驱动程序开发工具(Microsoft MDT),即包含在该DDW的minidev.exe , 是设计
11、用于 Unidrv 的小驱动程序开发的软件开发工具。微软的MD耽供下列特征:一般打印机描述(GPD: Generic Printer Description) 编辑器一个用于创建构成Unidrv小驱动程序的GPDC件的、可以进行语法检查的文本 编辑器。 Unidrv 字体规格 (UMF:Unidrv Font Metrics) 编辑器基于属性表单的产生Unidrv 字体规格文件的编辑器符号翻译表 (GTT:Glyph Translation Table) 编辑器基于属性表单的产生符号翻译表文件的编辑器小驱动程序工作间对Unidrv小驱动程序的基于Windows的编辑工作问,提供对小驱动程序的
12、GPD 文件、资源文件及GTTt件的存取。小驱动程序转换向导自动转换二进制小驱动程序为基于文本的 Windows 2000小驱动程序,用于以前的Windows及Windows NT版本。当使用该转换向导,它将根据转换下表列出的文件而产生一个Windows 2000 的小驱动程序。输入文件 文件内容 输出文件Windows GPCC件打印机能力描述Windows 2000GPDC 件Windows PFMt 件字体描述Windows 2000UFMC 件Windows CTTjt 件符号翻译描述Windows 2000GTTt 件另外,转换向导将用正确的文件名及资源标识符产生资源文件。 INF
13、向导对被转换的小驱动程序自动产生一个INF文件(参考安装一个Unidrv小驱动程序 部分 )关于怎样使用微软的MDT勺教学指导,可以运行该开发工具并阅读其帮助文件。4.2GPD文件介绍GPDi件用于创建Unidrv小驱动程序,一个Unidrv小驱动程序由一个基于文本 的一般打印机描述(GPD胸成,它可以包含一个或多个 GP区件。GPD5C#用GPDS言描述一个打印机,GPDC件包含用GPDS言提供下列类型信 息的GPDC件条目:描述打印机特征的打印机属性控制打印机操作的打印机命令可以被 Unidrv 控制的描述打印机能力的特性表示可以分配于打印机特性的打印机选项打印机字体描述,说明了和硬件驻留
14、与Cartridge 字体相联系的特性。描述打印机特性及打印机配置的相互依赖关系的条件语句GPW言同样定义了 GPDi件的条目,这些条目用于控制以下操作:压缩光栅数据处理色彩格式用 Unidrv 过渡调色处理可安装的特性及选项 描述打印机内存配置这一介绍性部分也包括了对在小驱动程序中使用多个中使用资源DLL的基本单位(Master Unit)的讨论GPDC件和在小驱动程序4.2.1 GPD文件条目GPDi件由条目构成,并使用描述每一个光栅打印机的特定设备的特征的GPDS言,这一部分包括以下的主题,这们描述了GPDC件的条目: GP区件条目格式 GPDS类型 行连续 (Line Continua
15、tion) .2.1.1GPD 文件条目格式所有的GPDC件和条目符合下面的格式:*条目名:条目值GPD文件条目(GPD_FileEntry) , GP应件条目,条目名总是一个预定义的GPDB析器可识别出的关键字,其前置星号。条目值必须是GPDE类型的一种。每一个GPD_FileEntry是另外一个GPDt件的条目,符合上面显示的格式。每一 个条目的子条目必须对指定的包含该它自身的条目是有效。一些条目名称不接受包含花括号或封闭的子条目。每一个GP陈目由行尾(end-of-line) 或右括号()终止。一个简单的GPDC件条目,它不接受子条目,是一个下面这样属性的条目:*MaxCopies:99
16、这一条目指定了打印机可以处理的最大的复制数量是99。下面 , 是一个更复杂的例子, 描述了一个可以两种方向 (portrait 或 landscape ,即横向或竖向 ) 打印的打印机。例子中了指定了驱动程序必须发送以选择每个方向的命令。*Feature:OrientationName:” Orientation *DefaultOption:Portrait*Option:Portrait*Name:” Portrait ”*Command:CmdSelect*Order:DOC_SETUP.7*Cmd:” &100”*Option:Landscape_CC90*Name:” Landsca
17、pe”*Command:CmdSelect*Order:DOC_SETUP.7*Cmd:” &110”4.2.1.2GPD 值类型 所有的GPDC件条目包含一个值的规范说明,GPD言定义了下列值类型: Symbolic names( 符号名称) Text strings( 文本字符串) Constants( 常量 ) Numeric values(数字值) Boolean values(布尔值) Lists( 列表 ) Pairs( 对值 ) Rectangles( 矩形 )Symbolic names符号名称是一个用作标识符的字母串,它具有如下特征:第一位字符必须是大写或小写的字母在第一位字
18、符之后的名称部分可以由大写或小写的字母、数字或下划线组成。名称是大小写敏感的。名称中的字母数不受限制。GP加言预定义了大量的符号名称,预定义的名称为打印机属性、命令名称、标 准特性、标准选项以及标准变量等而存在。可以为定制的特性、定制的选项及宏等定义符号名称。Text Strings文本字符串是文字字母的字符串,以引号作为分隔符,应用于 Unidrv 小驱动程序的字符串可以被置于以下两种位置的任一个:可以被放置在资源文件中。需要本地化的字符串,如用户接口文本, 就应放置当在资源文件中,在小驱动程序中使用资源DLL部分中已经描述过。可以包含于一个GPDC件中。字符串代表了构成打印机命令的esca
19、pe序列,这些通常都包含于GPDC件中,但这些字符串不需要被本地化。字符串必须服从以下规则:字符串必须以引号分隔开(“”)。十六进制字节值可以被置于一个尖括号中, 括起来的十六进制数就是一个字符用,如,。在一套尖括号中,每两个数字被解释为一个十六进制的字节值,因止匕,,03 1B弁口031B渚B是等同的。百分号()被用作escape字符,为了在字符串中包括引号或左尖括号(“”),先于它们之前使用一个百分号。 为了指定一个以百分号结束的字符串,必须指定百分号的十六进制值,如“”。另外,为在一个文本字符中包括一个百分号并代表一个打印机命令, 必须用另外一个百分号来处理它, 为指定一个以百分号结束的
20、打印机命令,必须指定两个十六进制的%值,如“命令字符串”一个字符串的实例是这样一个命令,它为佳能BJC-600打印机选择信纸大小的纸张,这一命令的字节序列是1B 28 67 03 00 6E 01 72, 可以被指定如下:“(gnr”每一个包含于字符串中的 ASCII 字符都被转换成为一个字节的十六进制等值。在GPDC件中包含的字符串必须服从下列附加规则:为扩展超过一个单行上的字符串, 在处理第一行之后每行之前加上一个连续字母 (+) ,并且在每一行上以引号分隔文本。 一个字符串值可以由多个文本字符串构成,例如,下列的两上GP陈目是等同的:*Name: “abc”“ def ” * % Com
21、ment+ “gh”“ ijk ”*Name: “ abcdefghijk ”对属于被定义于资源文件中的附加的字符串规则,可以参考平台的SDKt档中的STRINGTABLE旬声明的描述。更多的关于指定打印机命令escape 序列的信息,参考命令字符串格式部分的内容。Constants常量是由GP曲言预定义的名称值,常量名称通常由大写字母构成。如GPDB量可以是PAGE SERIAL TTY,它们是可以赋给ColorPlaneOrder:LIST(YELLOW , MAGENT,ACYAN, BLACK)PrinterType 属性的值。Numeric Values数字型值,所有的指定的条目值或
22、GP汝件中的参数值的Numeric Values数字值都必须是整数。十进制小数是不允许的,除非在文本字符串中。数字值被假定为正数,除非在其前有一个减号( “ - ” ) 。数字值被假定为十进制数,除非在其前有0x 的情况时,它们是非负的十六进制值。如果可适用于一个特殊的 GPDC件的设备环境,则星号(“*)可以被用于指明或者是无穷大值,或者是忽略值,Boolean Values布尔佰被定义为等于预先定义的常量TRUEE FALSE根据常规,所有打印机属性的字符名称都接受以问号标识结束的布尔值,如下例所示:*RotaterasterData?:FALSELists列表值。用于分配属性的一系列值,
23、利用 LIST 关键字,其格式为:LIST(值1,值2,值3,值n)这里,值1,值2,值3,,值n代表了一套一个或多个值,所有的类型都是为属性指定的。 例如, 打印机的色彩平面数据的顺序可以按如下指定的顺序来发送:Pairs分配一对值给属性,可利用 PAIR关键字,其格式如下:PAIR(值 1,值 2)当值 1 和值 2 是数字型值时,例如,光标的起始点位置可以被指定为基本单位,如: *CursorOrigin:PAIR(120,180)Rectangles矩形值描述在GP汝件中的一个矩形,利用 RECT1键字,其格式为:RECT(left,top,right,bottom) ,其中 left
24、,top,right,bottom 都代表基本单位格式的数字值。4.2.1.3 行连续GPDX件条目如果太长而不能在一行容纳下,则可以放在接下面的行里。为了连续一个条目,在第一行之后的每一行都必须以加号( “ + ” ) 打头,加号必须是每一行的第一个字母,不用预置空格,如下边例子所示:#DeviceFonts:+ LIST(+ =RC_FONT_courier_10pt_regular+ =RC_FONT_CGTimes_regular+ =RC_FONT_Univers_regular+ =RC_FONT_Univers_condensed_regular+ =RC_FONT_Antiqu
25、e_Olive_regular+ =RC_FONT_Albertus_Medium+ =RC_FONT_Albertus_Extra_Bold+ =RC_FONT_Courier_regular+ =RC_FONT_Letter_Gothic_regular+ =RC_FONT_Letter_Gthic_regular + =RC_FONT_Wingdings在下面行的开始,不需要使用行连接字母:以星号开始的行。以左括号开始的行。4.2.1.4 注解及忽略块GPDt件可以包含注释,注释的格式如下:* %注解字符串注解字符串可以是任何以行结束符终止的字符串。 在一个多行注解的每一行注解里都必须以
26、*%字开始,*%必须放置于空格或分行符之前。下面是一个有效的注解的例子:* % This section of the GPD file* % Contains macro definitions*Macros:HP4L* % These macros define command prefixes for the paper size featureLetterCmdPrefix: ” &12a8c1E*p0x0” Y *% Prefix for letter optio n.A4CmdPrefix: ” &126a8c1E*p0x0Y” *% Prefix for A4 optionEnv
27、10CmdPrefix: ” &181a8c1E*p0x0Y” *% Prefix for Env10 optio n.为请求GPLB析器忽略一组GP廉目,可以创建一个包含被忽略条目的被忽略块, 忽略块的格式如下:*IgnoreBlockIgnoredEntries被忽略的条目是一套GPDC件的条目,包含有相同数目左括号和右括号。在下边的例子中,GPDB析器将忽略GP陈目描述Landscape_CC90fl勺选项*Feature:Orientation* Name:” Orientation ”*DefaultOption:Portrait*Option:Portrait* Name:” Po
28、rtrait ”*Command:CmdSelect*Order:DOC_SETUP.7* Cmd:” &100”*IgnoreBlock*Option:Landscape_CC90* Name:” Landscape” *Command:CmdSelect*Order:DOC_SETUP.7* Cmd:” &110”4.2.1.5 宏GPDi言支持两种类型的宏: 块宏(Block Macros),它允许指定一套GP或件条目,并可以插入到GPD&:件 的任何条目位置。 信宏(Value Macros),它允许指定一套值,它可以被分别插入到 GP位件的任 何位置。块宏块宏用于划定一套GPD勺将重
29、复插入到GP故件中白一套GPD&:件条目。可以包括任何条目类型到块宏定义中,如特性、 选项语句、 属性说明及对值宏的引用或者其他块宏。下面的规则将应用于块宏中: 在一个GPDC件中的块宏定义必须位置于任何对它的引用之前。 在根层次(即不在括号里)的块宏定义可以通过GPDC件的定义来获得,并在 G PD定义之后。否则,块宏的范围将是设置于左括号与右括号之间的定义部分。块宏的定义可以包含另外块宏或值宏的定义。块宏的定义可以引用其他前边定义的块宏及值宏,但是它不能引用它自身。块宏不能接受参数如果括号包含于一个宏体中,它们必须成对的 ( 即,必须有相同数量的左、右括号 ) 。如果用同一个名称创建两个块
30、宏, 则直到解析器遇到第二个定义之前第一个定义一直是有效的,这时第二个将替代第一个。 如果第二个定义的范围结束, 则第 一个块宏又处于有效的任命状态。块宏格式在gpDc件中,用如下格式定义块宏:*BlockMacr : BlockMacroNameBlockMacroBodyBlockMacroName是一个唯一白名称,而BlockMacroBody则是一套一个或多个GPD文件的条目。如果BlockMacroBody包含括号,则相同数量的左括号及右括应 当被包含其中。例如,可以定义一个名为 EnvelopeDefaults 的块宏,并定义如下:*BlockMacro:EnvelopeDefau
31、lts*PrintableArea:PAIR(4646,6738)*PrintableOrigin:PAIR(150,150)*RatateSize:TRUE引用块宏引用块宏,可以用以下的格式:*InsertBlock:=BlockMacroNameBlockMacroName是一个唯一名称,之前指定在 *BlockMacro条目中定义该宏。例如 , 为了在一个选项说明中引用 EnvelopeDefaults 宏, 可以使用以下的条目:*Option:Env9*InsertBlock:=EnvelopeDefaults值宏佰宏用于指定可重复地分别插入到 GPDC件中的一套一个或多个值。值可以是
32、任 何GPDS类型。以下的规则适应于所有的值宏: 一个定义于GP汝件中的值宏必须放置在任何对它引用之前。 在根层次(即,不在括号内)的值宏定义可以通过GPDC件定义并获得,并且要 在定义之后。否则,值宏的范围将是包含在左右括号之间的定义部分。 信宏必须解析一种GPDS类型。如果所有的值都是文本字符串,值宏的定义就可以引用其他前边定义的值宏,但是一个值宏不能引用它自身。值宏不接受参数。 如果创建了具有相同名称的两上值宏,则在GPDW析器遇见第二个定义之前,第一个值宏一直是有效的, 并且第二个替换了第一个值宏。 如果第二个值宏定义的区间结束,则第一个又重回到任命状态。值宏的格式为了在GPDC件中定
33、义一个或多个值宏,可以使用以下格式:*Macros:ValueMacrogroupNameValueMacroBody这里 ValueMacroGroupNamei一个唯一名称,ValueMacroBody 是一套与值相关 的单一的值名称,如下:ValueMacroName:MacroValue 这里,ValueMacroNameH一个唯一白宏名称, MacroValue代表了一个 GPDfi类 型。(只要被解析的字符串代表了一种 GPDS类型,MacroValue就可以包括对以 前定义的值宏的引用。 )如下例,可以为一套常用的命令前缀定义值宏:*Macros:HP4LLetterCmdPre
34、fix: ” &12a8c1E*p0x0” yA4CmdPrefix: ” &126a8c1E*p0x0y”Env10CmdPrefix: ” &181a8c1E*p0x0y”但要注意,ValueMacroGroupName例中为HP4L)H可选的,并被当作注解来看待。引用值宏引用值宏,使用下边这种格式:=ValueMacroName这里ValueMacroNameH一个唯一名称,之前在定义宏的*Macros条目中被说明。例如,为了在一个命令规范说明中引用一个HP4L,可以使用以下条目:*Command:CmdSelectCmd:=LetterCmdPrefix ” *c0t5760x7680
35、y ”唯一一个可以通过联接宏引用与非宏值来分配值的时间, 是当所有的宏定义及其他值表示文本或命令子串时,如在例中所示的。 在其他情况下, 宏引用必须表示 整个被分配的值。4.2.1.6 预处理器定向GPDt件可以包含预处理器定向,它可以被用于控制对GPDC件中不同部分的条 件解析,下表描述了可用于 GPDC件中的预处理器定向。预处理器定向 定义*Define:symbolName定义一个符号*Undefine:symbolName取消以前定义的一个符号Ifdef:symbolName意指一个GPDC件条目块的开始,如果专用的符号被定义,则在该定向与下一定向SetPPPrefix:PrefixS
36、tring改变为预处理器定向准备的前置字符串,参考改变预处理器前缀部分的内容Ifdef,*Elseifdef,*Else, 或*Endif定向之间的GPDC件条目,将会由 GPD 处理器进行处理Elseifdef:SymbolName如果指定的符号被定义,并且该符号指定的由之前的*Ifdef或*Elseifdef 定向没有被定义,在这一定向及下一 *Ifdef,*Elseifdef,*Else,或*Endif定向间的GPD文件条目将会由GPDW析器来处理*Else如果由以前的 *Ifdef 或者 *Elseifdef 定向指定的符号没有被定义,在这一定向与下边的*Ifdef或*Endif定向间
37、的GPDC件条目将会由GPDB析器来处理。*Endif意指GPDC件条目块的结束*Include: ” FileName”指定一个附加GPDt件的名称,参考在小驱动程中使用多个GPDt件部分的内容条件预处理器定向可以被嵌套, 在每一个嵌套层, 使用条件预处理器定向的顺序如下:*Ifdef:symobl1GPD file setcion*Elseifdef:Symbol2GPD file seciton*elseifdef:Symbol3GPD file section*Else:GPD file section*Endif:对每一个应用的*Ifdef 定向,*Endif是必需的,*Elseif
38、def 及*Else定向是可 选的。每一个GPD勺文件部分(file seciton) 可以包含GPDC件条目以及可选择 的,一个条件预处理器定向的嵌套序列。用 *Define 定义的所有的符号明确地保留其定义,直到用 *Undefine 取消其定义 之后。*Include定义允许指定一个附加的GPDC件的名称,更多的信息,可以参考在小驱动程序中使用多个 GPDC件部分的内容。注意*IgnorBlock的GP陈目不影响预处理器定向,因为预处理器在GPD#析之前执行。改变预处理器定向前缀*SetPPPrefix 定向允许改变用于预处理器定向的前缀。也就是,可以用这一定向来将星号所代替的预处理器定
39、向替换为另外一个字母或字符串。例如,如果gpDc件包含下列定向:*SetPPPrefix:#SpecialPrefix#当预处理器停止查找以 *号开始的预处理器定向并开始寻找以 #Specialprefix#开始的定向时。接着的序列将临时改变预处理器前缀为 #Specialprefix# ,并将它再恢复为 * 。*Setppprefix:#Specialprefix#Specialprefix#Ifdef:WINNT_50#Specialprefix#Include:” ExtraGpD.gpd”#Specialprefix#Endif:#Specialprefix#Setppprefix:*
40、这一特性最初的目的是允许为以后版本的操作系统写的GPDC件可以与Windows2000兼容。例如,支持未来操作系统版本的GPDX件可以包括GPDW以星号打头的预处理器定向冲突的但是windows 2000 支持的文件条目。通过改变前缀,一个为未来操作系统版本写的 GPDC件可以在 Windows 2000中使用,如下面的 实例:#Ifdef:WINNT_70*SetPPPrefix:#SpecialPrefix#* %Do special,OS-Specific Proessing of* %GPD file entries that might confilict with* %asteri
41、sk-prefixed preprocessor directives#Endif但是要注意,这一技术只改变预处理器查找的前缀,由解析器识别的关键字必须总是前置星号* 。预定义的预处理器符号微软定义了以下预处理器符号符号 何处被定义定义WINNT_50Windows 2000 的 GPD处理器环境是 Windows 2000WINNT_40Windows NT 4.0 及 2000 的预处理器环境是 Windows NT 4.0PARSER_VER_1.0Windows NT 4.0 及 2000 的预处理器GPD析器(Version 1)WINNT_4的 WINNT_5符号对创建与 Wind
42、ows NT 4.0 及 Windows 2000都兼容的GPDS:件时是非常有用的。如果,例如 Windows 2000支持一个打印机的能力但 是Windows NT 4.0不支持,这样一能力就可以指定于一个 GPDfc件中并由*Ifd ef:WINNT_50 和*Endif 定向限定。4.2.1.7 标准变量GPW言定义了一套标准变量,它们可以在命令字符串中被引用,利用命令字符 用格式,Unidrv驱动程序对这些变量赋值。从 GPDi:件的观点来说,这些变量 是只读的。所有的标准变量以一个 DWORRD型类型存储。下面的打印机命令条目指定了当一个光栅数据块准备好时发送给一个HP Laser
43、Jet 4P 打印机的命令字符串:Command:CmdSendBlockData”: *b” %dNumOfDataBytes” W”下表包含所有的标准变量,以字母顺序排列。标准变量名称 值 注解BlueValue当前色彩的蓝色组件在 CmdDefinePaleterEntry 命令字符串中使用时是有效的 ( 也可参考 GreenValue, RedValue)CurrentFontID当前下载的软字体的标识代码如果当前打印作业包含下载的软字体就是有效的CurrentPaletterIndex目前色彩模板的索引在 CmdSelectPaletteEntry 命令字符串中使用是有效的 (也可参
44、考 GreenValue,RedValueCusorOriginX基本单位中坐标源点的 X 坐标无论何时打印机作业正在处理时都有效CusorOriginY基本单位中从标源点的 Y 坐标无论何时打印机作业正在处理时都有效DestX基本单位中坐标目标点的X 坐标在CmdXMoveAbsolut疔符用命令中使用时是有效的DestXRel档准单位中相对于当前坐标的目标点的X 坐标在CmdXMoveRelLeftM CmdXMoveRelRigh命令字符串中使用时是有效的DestY基本单位中坐标目标点的Y 坐标在CmdYMoveAbsolute令字符串中使用时是有效的DestYRel档准单位中相对于当前
45、坐标的目标点的Y 坐标在CmdYMoveRelUp CmdYMoveRelDoWn令字符串中使用时都时有效的FontBold如果当前字体是bold 则设为 1, 否则都设为 0一种字体被指定后是有效的FontHeight在基本单位中,当前字体的高度一种字体被指定后是有效的FontItalic如果当前字体是italic 则设为 1, 否则都设为 0一种字体被指定后是有效的FontStrikeThru如果当前字体允许中划线则设为 1,否则都设0一种字体被指定后是有效的FontUnderLine如果当前字体有下划线则设为 1,否则都设为 0一种字体被指定后是有效的FontWidth在基本单位中,当前
46、字体的宽度一种字体被指定后是有效的GraphicsXRes当前图形的水平精度(DPI)无论何时打印机作业正在处理时都有效GraphicsYRes当前图形的垂直精度(DPI)无论何时打印机作业正在处理时都有效GrayPercentage进行灰色填充时的级别 ( 百分比 )使用 CmdRectGrayFill 命令字符串时是有效GreenValue当前色彩的绿色组件在使用 CmdDefinePaletterEntry 命令字符串时是有效的 ( 也可参考 BlueValue 和RedValue)LinefeedSpacing垂直空间的总量,基本单位中代表一个回行在使用 CmdSetLineSpaci
47、ng 命令字符串时是有效的NextFontID下一个被下载的软字体的标识码使用CmdSetFontID命令字符串时是有效的NextGlyph要下载的下一符号的两字节代码在使用CmdSetCharCod命令字符串时是有效的NumOfCopies用户请求的打印份数无论何时打印机作业正在处理时都有效NumOfDataByes准备传送的光栅数据的字节数在使用CmdSendXXXData令字符串时是有效的,如果数据被压缩,该值是被压缩后的值PaletterIndexToProgram程序的下一个入口点的调色板索引在 CmdDefinePaletterEntry 命令字符串中使用时是有效的 (也可参考 R
48、edValue,GreeValue,BlueValue, CurrentPaletterIndex)PatternBrushID一个下载的调色板画刷的标识码与CmdDownloadPattern和CmdSelectPattern命令字符串一起使用时是有效的PatternBrushsize当前调色板画刷的字节大小与CmdDownloadPattern命令字符串一起使用时是有效的PatternBrushType当前调色板画刷的类型,其值可为:2: Shading pattern3:Cross-hatch pattern 4:User-defined pattern与CmdDownloadPatte
49、rn与CmdSelectPattern命令字符串一起使用时是有效的PhysPaperLenthy 轴基本单位中,当前打印用纸的竖向模式的长度无论何时打印机作业正在处理时都有效PhysPaperWidth基本单位中 , 当前打印用纸竖向模式的宽度无论何时打印机作业正在处理时都有效RasterDataHeightInPixels当前数据代表的图像的像素高度在任何CmdSendXXXData令字符串及在 CmdSetSrcBmpHeigh命令字符串中时都是有效的,压缩不修改该值RasterDataWidthInBytes一个扫描行中包含的字节数量在任何CmdSendXXXData令字符串及在CmdS
50、etSrcBmpWidt命令字符串中都是有效的,压缩不修改该值RectXSize矩形宽度,以 x 轴基本单位在CmdSetRectWidth命令字符串中使用时是有效的RectYSize矩形高度,以 y 轴基本单位在 CmdSetRectHeight 命令字符串中使用时是有效的RedValue当前色彩的红色组件在 CmdDefinePaletterEntry 命令字符串中使用时是有效的 (也可参考 GreenValu e,BlueValue)TextXRes文本的当前水平精度(DPI)无论何时打印机作业正在处理时都有效TextYRes文本的当前垂直精度(DPI)无论何时打印机作业正在处理时都有效
51、4.2.2 基本单位 许多打印机支持具有可变化的水平及垂直精度的命令,例如,一个特殊打印机的Immediate Line Feed 命令提供一个1/288th 每英寸的精度,而同样的打印机也可以支持垂直图像的 1/96th 每英寸精度。类似的,这一打印机可以提供水平的1/80th,1/160th 和 1/320th 每英寸的精度。Unidrv 提供一个单一的坐标系统来处理这些可变的精度,这一坐标系统中的单位就称为基本单位(master units) 。一个打印机的单位可以表示为 (x,y) 这样一对值,这时x 是一个水平平面的基本单位,而y 是垂直平面的基本单位。为了确定一个平面的基本单位,
52、必须计算实际精度的分母的最小公倍数, 利用示例的打印机,可以按如下这样去做:计算 80,160,320 的最小公倍数,结果是320。这样,水平的基本单位就是1/320th 每英寸。计算 288 和 96 的最小公倍数, 结果是 576。 这样, 垂直的基本单位就是1/576th每英寸。为了指定一个打印机的基本单位,需要使用 *MasterUnits 属性。该属性格式如下:*MasterUnits:PAIR(X_Denominator,Y_Denominator)这里, X_Denominator 是水平精度分母的最小公倍数, Y-Denominator 是垂直精 度分母的最小公倍数,下面的GP
53、陈目指定了例子中的基本单位。*MasterUnits:PAIR(320,576)一般地,在GPDC件条目中使用的位置及大小值必须以基本单位指定,例如,为指定最大的可定制页面的尺寸为 9*12 英寸,下边的条目应当被用到,这里9*320=2880,12*576=6912:*MaxSize:PAIR(2880,6912)在计算基本单位时,只使用 Unidrv 支持的设备的精度。例如,如果打印机支持水平精度1/80th,1/96th,1/160th,1/320th每英寸,但是不打算在 GPDC件中指定1/96th每英寸的精度,则在最小公倍数LCM算中,不要包含该精度即可。如果打印机在移动光标位置时支
54、持光标命令(cursor commands) ,则该值可以在*XmoveUnit及*YmoveUnit两个光标属性中指定并被包含于基本单位计算中。假 设,如一个GPDC件包含下面的条目:*XMoveUnit:60*YmoveUnit:60在计算这一打印机的基本单位时, 1/60th 每英寸则必须被包含于水平及垂直的 基本单位计算中。1.1.3 在小驱动程序中使用多个GP汝件Unidrv小驱动程序可以由多于一个的 GPDC件组成,这就允许置换对一些打印 机的一处或多处对GPDC件来说通用的特征,并将这些通用的GPDt件包含于打 印机的一个特殊GPDC件中。为包含附加的GP汝件,就必须用*Include定向,它在预处理定向中描述。可以使用多个*Include 定向,如下面的例子所示:*Include: ” Common1.gp”d*Include: ” common2.gpd”*Include: ” common3.gpd”*Include 定向的文件名参数不能是一个宏引用,也不能包含一个路径说明。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《探索抑郁症》课件
- 标本采集规范:尿液标本采集与处理课件
- 人呼吸道合胞病毒FHRA-HRB片段的表达纯化与鉴定
- 医疗护理中的患者安全与护理质量
- 医学课件-手诊面诊
- 胆石症伴胆囊炎个案护理
- GEAR系列-不锈钢齿轮参数表
- 《模糊神经网络》课件
- 《组织发展与培训》课件
- 《基因基因组结构》课件
- 2026年四川省卫生事业单位招聘考试(医学影像)历年参考题库含答案
- 肝脓肿治疗方案及监测要点
- 太阳纸业采购制度
- 2025四川成都职业技术学院四季度编制外(考试)招聘工作人员23人考试笔试备考试题及答案解析
- 《高风亮节》教学课件-2025-2026学年湘美版(2024)初中美术八年级上册
- 高等数学上册同济大学数学系教学课件全套
- 2024年12月贵州高中学业水平考试化学试卷真题(含答案详解)
- DB42∕T 2266-2024 建筑消防设施年度检测技术规程
- DB45∕T 2954-2024 农田建设项目概预算定额及其编制规程
- 施工孔洞安全管理制度
- JG/T 24-2000合成树脂乳液砂壁状建筑涂料
评论
0/150
提交评论