Разработка программ в среде операционной платформы Inferno


Limbo: коммуникация каналов и основные графические возможности - часть 4


Одну из важнейших ролей в Inferno играют графические возможности. На втором примере, где параметры командной строки показываются в окне, попытаемся по возможности сжато разобраться с использованием модуля Draw, в котором реализованы низкие уровни графической системы.

В 6-й строке объявляется переменная draw типа Draw, в следующей за ней импортируются основные типы библиотеки. Строки с 9-й по 11-ю (интерфейс), ref Draw->Context уже не nil, а ctxt, поскольку необходима "настоящая" графика. Переходим к реализации. После строк 15 и 16, в которых загружаются модули Sys и Draw, для обращения к типам Display и Screen происходит создание локальных переменных display и screen. Первая, типа ref Draw->Display, представляет связь с физическим устройством отображения, CRT или LCD дисплей, на котором программа будет рисовать. Вторая, типа ref Draw->Screen, является структурой данных, используемой системой для управления окнами.

Следующий этап, строки 21-25, - распределение графических единиц: цветов, прямоугольников и шрифтов. Цвет black создается посредством имени, известному Draw; grey же определяется с использованием тройки красный/зеленый/синий (red/green/blue, RGB). Копия стандартного шрифта *default* загружается в переменную, удачно названную font. Модуль Draw содержит два геометрических типа: Point, точка с целочисленными координатами x и y, описывающая верхний левый угол соответствующего пикселя, и Rect, прямоугольная область, определяемая двумя точками - верхней левой (Rect.min) и нижней правой (Rect.max). Прямоугольник wr описан размером и размещением окна: верхний левый угол (100,100), нижний правый угол (325, 150). Прямоугольник r служит блоком серого цвета. В 27-й строке создается окно win; первый подразумевающийся аргумент, Screen, описывает то, где и как окно размещается и его цвет. Наконец, в теле цикла, в 31-й и 32-й строках, окно прорисовывается: вызов win.draw создает серый блок, определенный r, а win.text выводит сообщение. Выражение r.min.add ((5,8)) идентифицирует верхний левый угол текста, добавляя точку (5,8) к координатам верхнего левого угла прямоугольника r.min.

После того как программа завершит свою работу и последняя ссылка на все частные графические ресурсы исчерпается, в дело вступит сборщик мусора, т.е. заботится об удалении окна с экрана не нужно.




Начало  Назад  Вперед



Книжный магазин