我对 PostScript 中的当前图形状态和图形状态堆栈有疑问。
在我的代码中,我现在有一个代表当前图形状态的堆栈。当我初始化我的解释器时,它会创建一个新的 GraphicsState 对象并将其添加到“gsstack”中。
我的当前图形状态实现为:'gsstack'.Peek(),它总是返回最顶层的图形状态。
使用 gsave 运算符,我创建了当前图形状态的克隆并将其推送到“gsstack”上,因此我在堆栈上有一个新的最顶层图形状态(这意味着我有一个新的当前图形状态对象)。
现在有了 grestore,我从http://www.tailrecursive.org/postscript/operators.html#grestore读到了这个
“将当前图形状态设置为图形状态堆栈上的最顶层图形状态,并将该状态从堆栈中弹出。”
该 grestore 是如何工作的,因为我当前的图形状态已经是最顶层的图形状态......我应该将它从堆栈中弹出吗?
还是我的实施错误?当我初始化我的解释器时,我是否应该创建一个新的 Current Graphics State 对象,但不将其添加到“gsstack”,并且只在调用 gsave 运算符时将其推送到“gsstack”?
提前致谢