Добро пожаловать в увлекательную разработку операционной системы «Areos!»
В прошлой серии мы сделали графическую библиотеку, которую будем использовать для создания нашего пользовательского интерфейса. Но перед этим нам нужно создать сервер управления отображением главной области. Что это за зверь?
Дело в том что весь будущий интерфейс будет состоять из такого понятия как области (Areas). Область - это само определение всех UI элементов: надписи, картинки, кнопки, текстовые поля и т. д. - это всё области.
Самая корневая область — это область приложения. Первое приложение-сервис которое увидит пользователь, это будет «Areas server». Его роль заключается в следующем:
- Создание новых областей пользовательских приложений и управления ими. Перемещение, изменение размера, скрытия закрытия и т.д.
- Обработка и перевод всех поступающих событий событий от устройств ввода: таких как клавиатура, мышь и другие.
- Отрисовка внутренних элементов, например курсор мыши.
- Объединение в единую картинку (создание кадра) свои и все пользовательские элементы рабочей области (Work Area), с последующей отправкой на видео сервер.
С помощью нашей ранее созданной графической библиотеки, мы уже можем что-то нарисовать полезное. Например нарисовать курсор любого вида, на сколько позволит наш инструмент рисования. И для этого есть 3 способа отображения курсора
Самый простой – это с помощью отображения картинки. Можно найти любое изображение курсора, загрузить в ОС и отобразить его.
Преимущество этого способа в том, что это просто, и разнообразно, т.к. курсор может выглядеть как угодно. Но а минус в том, что при масштабирования курсора (если вдруг оно понадобилось), мы потеряем качество изображения. Придётся держать несколько размеров одного курсора :)
Второй способ менее прост, но зато универсальный. Это отображение его через отрисовку текста. Если использовать шрифт иконок, то можно найти там подходящий нам курсор. Достаточно настроить размер шрифта и цвет текста, мы можем получить курсор любого оформления. Преимуществ тут больше, чем с картинкой.
Большой плюс этого способа в том, что мы можем без потери качества вывести любой размер курсора. Далее мы можем по своему усмотрению раскрасить его в любой цвет и даже сделать рамки, также любого цвета и толщины.
Ну и последнее решение, оно более сложное, что бы получить что то красивое – это самостоятельное создание фигуры курсора с помощью возможностей графической библиотеки. Применив линий, квадраты, круги и т.д, залив нужным цветом, тоже можно получить курсор. Тут уже на сколько хватит фантазии у художника.
Нарисовав курсор, который нам нужно, неплохо бы теперь начать управлять им.
Для этого мы должны научить наш сервер, обрабатывать все входящие события от мыши.
Что бы курсор перемещался, нам необходимо обработать пока 1 событие - это MOVE. В этом событии есть 2 важных параметра, перемещение по X и второе перемещение по Y. Если применить эти параметры на позицию отрисовки созданной ранее фигуры, то получится курсор, который теперь умеет перемещаться.
Теперь мы готовы на что-то наводить, и на что-то нажимать :) А это уже следующий шаг для создания нашего пользовательского графического Интерфейса!