![]() |
![]() |
Первоначальный вариант библиотеки VinGraph был разработан Леной Винокуровой (П-83) в рамках ее дипломного проекта. Идея состояла в том, чтобы снабдить программистов в ОС QNX Neutrino простыми средствами работы с графикой, подобными тем, которые предоставлял Borland под MS-DOS. Непосредственное программирование в среде Photon, графической подсистеме QNX Neutrino, довольно громоздко и требует длительной подготовки. Затраты на написание программ в среде Photon становятся совершенно непомерными, если графика не является самоцелью, а служит лишь средством простой визуализации состояния вычислительных процессов, что нам, собственно, и нужно. Библиотека VinGraph представляет такое же простое средство для вывода графики, как Borland под MS-DOS, и даже еще более простое, если говорить об анимации созданных изображений (для нас это важно). Теперь вы можете вспомнить старые добрые времена программирования под MS-DOS с учетом того, что QNX Neutrino -- это не MS-DOS: ваши программы выполняются в чистом 32-битовом режиме, без ограничений на размер сегмента, с любым разрешением экрана, 24-битовым цветом и т.д. Что еще нужно для счастья?
Вывод графики производится в окне графического терминала VinGraph. Одновременно может быть запущено множество графических терминалов при условии, что каждому из них задается свое уникальное имя. Терминал VinGraph может быть запущен из командной строки, в этом случае он работает, пока пользователь его не закроет. Терминал VinGraph может быть также запущен из программы пользователя, в этом случае он закрывается при (успешном) завершении программы. Программа пользователя, точнее процесс, прикрепляется к какому-то одному терминалу и работает с ним. Несколько процессов могут одновременно выводить графику на один терминал. Один процесс не может делать вывод сразу на несколько терминалов, да это и не нужно. Все функции библиотеки VinGraph являются нить-безопасными (thread-safe), т.е. могут свободно вызываться из разных нитей вашего процесса. В архитектурном плане сам терминал VinGraph состоит из двух нитей: одна служит для взаимодействия со средой Photon, другая взаимодействует с прикладными программами посредством интерфейса функций библиотеки VinGraph. Пользователь вызывает библиотечную функцию, и та посылает соответствующее сообщение графическому терминалу (и принимает от него ответ). Программисту не нужно заботиться о деталях реализации этого взаимодействия.
![]() |
![]() |