后脚本中的类型3函数过程



我是一个初学者的后脚本,刚刚开始在后脚本工作。我想创建一个后脚本程序,我可以使用后脚本的阴影效果。这个底纹可以有2种以上的颜色,所以我需要定义类型为3的拼接函数。

我正在考虑为function2定义一个过程,以后我可以在定义第3类函数时使用这个过程。

下面是我尝试的…

/Function2 {
/b2 exch def 
/g2 exch def 
/r2 exch def 
/b exch def 
/g exch def 
/r exch def
/FunctionType 2
/Domain [ 0 1 ]
/C0 [ r g b ]
/C1 [ r2 g2 b2 ]
/N 1
} def
/Function3
{
   /num exch def 
   /FunctionType 3
   /Domain [ 0 1 ]
   /Functions [1 1 num { pop  Function2 } for  ]
   /Bounds [ 1 1 num-1 { pop   } for  ]
   /Encode [ 1 1 num { pop 0 1 } for ]
} def
{
    /ShadingType 3
    /ColorSpace /DeviceRGB
    /Coords [ 200 200 0 200 200 100 ]
    /Extend [ true true ]
    /Function Function3
}
shfill

我面临的问题是如何从堆栈中读取绑定变量。我不确定这是否可行。请检查并告诉我其中的问题

我真的不知道你在这里要求什么。也许你能澄清一下这个问题。你不需要"从堆栈中读取绑定变量",堆栈对象就是堆栈上的对象。

:

   **/Bounds [ 1 1 num-1 { pop   } for  ]**

看起来不正确,'num-1'将立即求值,并且您似乎没有定义一个名称对象'/num-1',因此我认为会抛出一个未定义的错误。

当然,'**'结构同样会抛出错误。

您已经将函数定义为'过程'(在PostScript术语中实际上是可执行数组),而PostScript函数需要是字典,因此您在这里拥有的将不起作用。也就是说,当你应该使用'<<'和'>>'时,你使用了'{'和'}'。

函数字典不接受堆栈上的参数如果你真的刚刚开始使用PostScript,函数和阴影可能是最糟糕的开始,因为它们相当复杂。

下面是一个使用类型2和类型3函数的工作示例,供您阅读:

%!PS-Adobe-3.0
gsave
0.480 setlinewidth
1 setlinecap
1 setlinejoin
0.302 0.302 0.302 setrgbcolor
/stop_function
<<
    /FunctionType 2
    /Domain[0 1]
    /C0 [1 0 0]
    /C1 [0 1 0]
    /N 1
>> def
/RepFunction
<<
    /FunctionType 3
    /Domain [ -81 1 ]
    /Functions [ 82 {stop_function} repeat ]
    /Bounds [ -80 1 0 {} for ]
    /Encode [ -81 1 0 { pop 0 1 } for ]
>> def
<<
    /PatternType 2
    /Shading
    <<
      /ShadingType 3
      /ColorSpace [/DeviceRGB]
      /Extend [false false]
      /Coords [-1300.8 -468 979.2 60 504 7.2]
      /Function
      <<
        /FunctionType 3
        /Domain [0 1]
        /Bounds []
        /Encode[-80 1]
        /Functions [RepFunction]
      >>
    >> 
>>
matrix makepattern setpattern
12.000 528.000 moveto
84.000 528.000 lineto
84.000 456.000 lineto
12.000 456.000 lineto
closepath
gsave
fill
grestore
0.302 0.302 0.302 setrgbcolor
stroke
grestore
showpage

相关内容

  • 没有找到相关文章

最新更新