PostScript език за програмиране Урок 7
Относно работата с файлове
Аргумент Име на файл трябва да отговаря на конвенциите на операционната система, в която работи интерпретаторът. В PostScript има предварително дефинирани имена на файлове като % stdin и % stdout.
Тип_достъп дадено от една от буквите:
- 'r'- входен файл (само за четене);
- 'w'- изходен файл (само за запис).
За удобство езикът има няколко оператора за четене: Прочети, четене, readhexstring и четене.
четене чете последователност от символи от файла, ограничена от символа в края на реда, и ги съхранява в аргументарния низ (самият терминатор на реда не е записан там). Ако редът е попълнен преди да се срещне символът за нов ред, възниква грешка, наречена проверка на обхвата. При успешно завършване на операцията за четене на стека, тя също се връща вярно, в противен случай - невярно.
Тъй като изображението в PostScript често се кодира като масив от шестнадесетични числа и, ако е достатъчно голямо, е неудобно да се държи в програмата, тогава специален оператор ще помогне да го прочете от файл - readhexstring.
Той последователно чете шестнадесетични цифри от файла, като ги проверява за диапазона 0-9, A-F. Има последователно образуване на един байт от две цифри и съхраняването му в низ. Всички символи като интервали, раздели и връщане на карета обаче се игнорират. Четенето приключва, когато се стигне до края на файла. Ограниченията за максималната дължина на реда се налагат от операционната система. Синтаксисът е същият като на оператора четене.
Операторът има същия синтаксис. четене. От четене той се различава само по това, че прочетените символи се третират като цели числа в диапазона от 0 до 255. Само знакът за нов ред се разглежда специално.
Информацията за броя байтове, налични за четене във файла, се връща от оператора байт-променлив. Ако резултатът е -един, достигнат край на файла.
текущ файл връща обект от тип файл, от който интерпретаторът на PostScript е чел най-скоро.
Обикновено се връща стандартният входен файл. Ако няма четене от който и да е файл, то се прави от програмния файл. В този случай указателят на текущата позиция се задава след последната дума (оператор или елемент от данни), прочетена от интерпретатора. Това свойство се използва за поставяне на текст или картина директно в програмата в променливи. Това се демонстрира от пример, взет от описанието на оператора:
близък файл прекъсва връзката между обект от тип файл и съответния реален файл.
И накрая, сред I/O операторите има редица спомагателни и очевидни оператори като статус, флъш.
Конвенции за структурата на програмата
където font1 font2 са имената на шрифтовете PostScript, използвани в документа. Тази информация може да се използва от някои помощни програми, които изтеглят шрифтове на принтера, преди да отпечатат документ. Позволено е да се посочи (atend), което означава присъствие, очакване или нещо подобно.
задава заглавието на документа. текст - заглавна лента.
съдържа името на програмиста (или програмата), генерирал дадения текст.
броя страници в документа (неотрицателно цяло число) или думата (atend).
координати на долния ляв и горен десен ъгъл в потребителската координатна система или думата (atend).
Коментари на тялото на програмата
края на раздела за пролог на програмата.
Където етикет - текста със заглавието на страницата и сериен номер - номер на страница в многостраничен документ.
указва списък с шрифтове, използвани за текущата страница на документа.
маркира края на тялото на програмата и началото на епилога.
Епилог коментари
Теглещи оператори
В PostScript, при изготвянето на изрази, е важно да се знае кога дадена точка се счита за вътрешна към текущия път (изрязване) и кога - външна. Има две правила за определяне на вътрешна точка: намотка с четно и нечетно и на нула. И двете правила се основават на преброяване на пресичането на лъчите от тестваната точка с текущия път.
Метод на ненулево въртене е както следва: лъчи се изтеглят от точката, която трябва да се провери във всички посоки, и след това се анализират пресичанията с траекторийния сегмент. Започвайки с брояч, равен на нула, добавяме един към него, ако лъчът пресича пътя отляво надясно, изваждаме такива, ако го пресича отдясно наляво. Ако броячът е нула, точката е отвън, в противен случай е вътре. Правилото не определя какво се случва, когато лъчът е тангенциален или перпендикулярен на сегмента.