PostScript - это графический интерпретируемый язык программирования, созданный с целью представления графики (текстовых фалов, рисунков, чертежей) в платформонезависимой форме [1]. С помощью графических операторов языка PostScript можно определить область рисования, отобразить прямые и кривые линии, залить цветом область, задать различные графические параметры.
Графический интерфейс пользователя является разновидностью пользовательского интерфейса и состоит из различных примитивов - окон, полей ввода, кнопок и т.д. Язык PostScript обладает базовыми возможностями для реализации внешнего вида графических примитивов.
Однако, для полноценной реализации графических интерфейсов наличие одних примитивов недостаточно. Требуется также оконный менеджер — приложение, управляющее размещением примитивов и определяющее их внешний вид. Оконный менеджер позволяет добавлять и удалять примитивы, управлять порядком отображения, пересчитывать координаты и т.д. В оконном менеджере могут быть реализованы также и визуальные эффекты, проявляющиеся во время работы с окнами (например, эффект волны и эффект упорядочивания окон). В каждой операционной системе существует свой оконный менеджер, который взаимодействует с графическими интерфейсами, созданными, например, с помощью Qt [6] или Swing [7].
Ранее в рамках проекта лаборатории JetBrains был реализован интерпретатор PostScript [2] [3] [4]. Однако с его помощью не представлялось возможным создавать графические интерфейсы, а также реализовать оконный менеджер, так как, например, в PostScript не поддерживается механизм обработки событий. Для добавления данной возможности было решено расширить язык PostScript и на его основе разработать графическую библиотеку, позволяющую создавать графические интерфейсы. Данную работу можно разделить на три направления: оптимизация интерпретатора (Д. Поздин), обработка событий (Р. Макулов) и реализация графических примитивов и оконного менеджера (А. Гудиев). То, что интерпретатор PostScript реализован на языке Java, делает потенциально создаваемые им интерфейсы кроссплатформенными.
Целью данной дипломной работы является реализация графических примитивов и оконного менеджера на языке PostScript для решения задачи реализации кроссплатформенных пользовательских интерфейсов.
В рамках дипломной работы были достигнуты следующие результаты:
• Реализованы и добавлены в графическую библиотеку PostScript следующие примитивы: кнопка, флажок, поле со списком, список, метка, поле редактирования, радиокнопка, окно.
• Разработан оконный менеджер, интегрированный с графической библиотекой.
• Проведено тестирование оконного менеджера на демонстрационных примерах.
[1] PostScript Language reference. Adobe Systems. 1999 http://www.adobe.com/products/postscript/pdfs/PLRM.pdf
[2] Дмитрий Поздин. Реализация общей поддержки времени исполнения для интерпретатора языка PostScript// Труды лаборатории языковых инструментов. Выпуск 2. 2014. с. 276-296.
[3] Артур Гудиев. Реализация графической части интерпретатора языка PostScript// Труды лаборатории языковых инструментов. Выпуск 2. 2014. с. 297-312.
[4] Рустам Макулов. Архитектура интерпретатора для исполнения программ на языке PostScript в JVM// Труды лаборатории языковых инструментов. Выпуск 2. 2014. с. 259-275.
[5] [Википедия], https://ru.wikipedia.org/wiki/Qt
[6] [Qt Developer Network Wiki], https://wiki.qt.io/IntroductionQtQuick/ru
[7] [Хакер], https://xakep.ru/2014/09/10/java-gui/
[8] [The Source for Java Technology Collaboration], https://swingx.java.net/
[9] [JGoodies], http://www.jgoodies.com/