У меня есть вопрос о текущем состоянии графики и стеке состояния графики в PostScript.Реализация состояния текущей графики PostScript
В моем коде у меня теперь есть стек, который представляет текущее состояние графики. Когда я инициализирую свой интерпретатор, он создает новый объект GraphicsState и добавляет его в «gsstack».
My Current Graphics State реализуется как: 'gsstack'.Peek(), который всегда возвращает самое верхнее графическое состояние.
с оператором gsave Я создаю клон текущего состояния графики и нажимаю его на «gsstack», поэтому у меня есть новое верхнее графическое состояние в стеке (и это означает, что у меня есть новый объект Current Graphics State) ,
Теперь с grestore я прочитал это из http://www.tailrecursive.org/postscript/operators.html#grestore
«Устанавливает текущее графическое состояние в верхней графики состояния на графическое состояние стека и выскакивает это состояние из стека.»
Как работает этот grestore, потому что мое текущее состояние графики уже является самым верхним графическим состоянием ... я должен просто выскочить из стека?
Или моя реализация неправильная? Когда я инициализирую свой интерпретатор, должен ли я создать новый объект «Текущее графическое состояние», но не добавить его в «gsstack» и только нажать его на «gsstack» при вызове оператора gsave?
Заранее спасибо
Использовать надлежащее справочное руководство по PostScript http://www.adobe.com/products/postscript/pdfs/PLRM.pdf не сторонний учебник – piokuc
«Самое высокое графическое состояние всегда является текущим графическим состоянием». путающая информация http://stackoverflow.com/a/11139870/187650 – juFo
Если это вам полезно, у меня есть полный переводчик уровня 1 в C, доступный [здесь] (http://code.google.com /p/xpost/downloads/detail?name=xpost2g.zip) (Недостаточно некоторых очень трудных операторов, таких как 'definefont'.) –