Введение
Язык сценариев
Протокол удаленного изображения и связанный с ним язык сценариев протокола удаленного изображения, RIPscrip, – это графический язык, предоставляющий систему для передачи векторной графики по каналам связи с низкой пропускной способностью, в частности, через модемы. Он был первоначально разработан Джеффом Ридером, Джимом Бергманом и Марком Хейтоном из TeleGrafix Communications в Хантингтон-Бич, Калифорния, для улучшения систем электронных досок объявлений (BBS) и других приложений. RIPscrip был представлен в 1992 году и состоял из текстовых описаний векторной графики и изображений в формате ASCII, а также средств для создания меню и интерактивных кнопок. Эти данные отправлялись из BBS вместо более распространенных экранов в текстовом режиме с кодировкой ANSI и интерпретировались на стороне пользователя терминальной программой с поддержкой RIP, такой как RIPTerm от TeleGrafix. Текст отображался на одном экране, а графика – на другом. RIPscrip нельзя было использовать в качестве основы для полноценного графического интерфейса, поскольку в нем отсутствовала система редактирования текста. RIPscript 1.5x представлял собой текстовую оболочку для Borland Graphics Interface (BGI). Все графические примитивы опирались на BGI, а шрифты ограничивались теми, что предоставлялись BGI (*.CHR). Формат файла иконок RIPscrip (.ICN) соответствовал функциям getImage и putImage в BGI. Многие считали включение функции заливки BGI ошибкой, поскольку сторонние реализации протокола RIPscrip часто не могли реализовать кривые Безье так же, как Telegrafix, что приводило к выходу заливки за пределы целевого объекта и заполнению всего экрана. Telegrafix никогда не публиковал свой алгоритм Безье или полную спецификацию RIPscrip, что вынуждало разработчиков, желающих реализовать RIPscrip, приобретать дорогостоящий комплект разработчика Telegrafix, содержащий предварительно скомпилированные DLL-файлы для оболочки BGI. Ранние версии RIPscrip были тесно связаны со стандартом EGA 640x350 и имели ярко выраженный стиль MS-DOS. Более поздние версии обеспечивали некоторую независимость от разрешения, расширенные цветовые палитры и возможность работы через telnet для доступа к Интернету. К этому времени широкая доступность World Wide Web привела к быстрому снижению интереса к системам электронных досок объявлений, что в конечном итоге привело к прекращению разработки RIPscrip и деятельности компании. Хотя RIPscrip 2.0 был выпущен, а 3.0 планировался, наиболее распространенной версией RIPscrip, используемой на практике, была серия 1.5x. Современные векторные графические стандарты, такие как Adobe Flash и SVG, имеют некоторые сходства с RIPscrip.
Описание
RIPscrip – это простой язык описания страниц, похожий по концепции на PostScript или HPGL. Графический вывод описывается серией текстовых инструкций, которые были значительно оптимизированы в RIPscrip, чтобы быть как можно более короткими и экономить время передачи. Терминал, поддерживающий RIPscrip, отслеживает строки, начинающиеся со специального управляющего символа RIPscrip, и интерпретирует следующие инструкции, передавая неэкранированные строки на экран вывода текста. RIPscrip использовал отдельные текстовый и графический дисплеи, по одному для каждого, и хотя он мог выводить текст на графический экран, скорость этого была слишком низкой для общего вывода текста или редактирования. Обычно система, использующая RIPscrip, применяла графический экран для отображения меню, а обычное редактирование и ввод осуществлялись на текстовом экране. RIPscrip обычно не использовался для создания традиционного графического интерфейса с несколькими окнами или редактированием текста с помощью мыши. Управляющий символ RIPscrip – восклицательный знак (!). Команды RIPscrip всегда начинались с вертикальной черты (|), за которой следовала одна буква команды. В более поздних версиях между вертикальной чертой и буквой команды могли добавляться цифры, указывающие версию RIPscrip, необходимую для интерпретации команды, что позволяло старым терминалам быстро отфильтровывать неподдерживаемые функции. Типичная команда в файле RIPscrip – установка размера и положения окна вывода текста, например, !|w00001B0M10, где "w" – команда "window" (окно), за которой следует ряд цифр, определяющих его местоположение и размер. Команды RIPscrip можно было объединять в одной строке для компактности. Например, !|v00001B0M10|E|c02|Thello world настраивает стандартное графическое окно просмотра (viewport) с помощью "v", стирает существующее изображение с помощью "E" (избыточно, так как окно только что было сброшено), устанавливает цвет на зеленый с помощью "c", а затем выводит текст "Hello world" с помощью "T". Более сложные рисунки обычно строились из серии объединенных команд, каждая из которых представляла часть общего рисунка, разбивая его на логические группы. Помимо базовой графики, такой как линии и окружности, RIPscrip также включал команды для интерактивных объектов, в частности кнопок. Команда "U" рисовала кнопку на дисплее в указанном месте с необязательной иконкой, горячей клавишей и меткой. При нажатии кнопки мышью или горячей клавишей последний параметр – строка команд хоста – отправлялся обратно на сервер. Таким образом, автор RIPscrip мог создавать графические меню для команд системы, например, меню, отображающее список всех доступных форумов, отправляя текст "FPA" (форумы, публичные, все). Эти строки различались для каждого программного обеспечения хоста и часто отличались от системы к системе.
A RIPscrip aware terminal watches for lines beginning with a special RIPscrip escape character and interprets the following instructions, passing along non escaped lines to the text output screen. RIPscrip used separate text and graphics displays, one each, and although it could draw text into the graphics screen, the speed of doing so was such that it was not useful for general text output or editing. Generally, a system using RIPscrip would use the graphics screen for presenting menus, with conventional editing and input taking place in the text screen. RIPscrip would not normally be used to build a conventional GUI with multiple windows or mouse driven text editing, for instance. The RIPscrip escape character was the exclamation mark, !. RIPscrip commands were always preceded by the vertical bar, |, followed by a single letter command. Later versions optionally inserted digits between the vertical bar and command letter, indicating what version of RIPscrip was needed to interpret that command, allowing older terminals to quickly filter out non supported features. A common command one would find in a RIPscrip file would be to set the size and position of the text output window, typically something like !|w00001B0M10, with the "w" command for "window", followed by a series of numbers indicating its location and size. RIPscrip commands could be stacked together on a single line for compactness. For instance, !|v00001B0M10|E|c02|Thello world sets up the standard graphics viewport output window with v, erases any existing image with E (redundant as the window was just reset), sets the color to green with c, and then draws text with T. More complex drawings would normally be built out of a series of stacked commands, each one representing some part of the overall drawing to be created, breaking it into logical groups. In addition to basic graphics like lines and circles, RIPscrip also included commands for interactive objects, notably buttons. The U command drew a button into the display at a specified location with and optional icon, hot key, and label. When the button was pressed with the mouse or hot key, the last parameter, the host command string, was sent back to the server. In this way the RIPscrip author could produce graphical menus for commands in the system, perhaps one that lists all the available forums by sending the text "FPA" for "forums, public, all". These strings would be different for every host software, and also tend to be somewhat different from system to system.