我有一个关于当前图形状态和PostScript中的图形状态堆栈的问题。PostScript当前图形状态实现
在我的代码中,我现在有一个代表当前图形状态的堆栈。 当我初始化我的解释器时,它创建一个新的GraphicsState对象并将它添加到'gsstack'中。
我当前的图形状态实现为:'gsstack'.Peek(),它总是返回最上面的图形状态。
使用gsave运算符我创建了当前图形状态的克隆并将其推送到'gsstack',因此我在堆栈上有一个新的最高图形状态(这意味着我有一个新的Current Graphics State对象) 。
现在用grestore我读这从http://www.tailrecursive.org/postscript/operators.html#grestore
“设置当前图形状态的图形状态栈最上面的图形状态并弹出该状态出栈。”
grestore是如何工作的,因为我目前的图形状态已经是最顶层的图形状态了......我应该从堆栈中弹出它吗?
或者是我的执行错误? 当我初始化我的解释器时,我应该创建一个新的当前图形状态对象,但不会将它添加到'gsstack',并且只有在调用gsave操作符时才将它推送到'gsstack'?
在此先感谢
使用正确的PostScript参考手册http://www.adobe.com/products/postscript/pdfs/PLRM.pdf非第三方教程 – piokuc 2013-04-26 09:43:20
“最顶级的图形状态总是当前的图形状态。”令人困惑的信息http://stackoverflow.com/a/11139870/187650 – juFo 2013-04-26 10:09:47
如果它对你有用,我可以在C中找到一个大部分完整的Level-1解释器[here](http://code.google.com /p/xpost/downloads/detail?name=xpost2g.zip)(它缺少一些像'definefont'这样的非常困难的操作符。) – 2013-04-27 13:22:45