Реалізація
|
|
|
|
Схема будови Польоту
|
|
|
Ось загальна схема внутрішньої будови Польоту. Тут
прямокутниками позначено окремі модулі, а стрілками
показано їх зв'язки (скажімо, стрілка від
App до
Kernel означає
App uses Kernel). Розміри прямокутників
приблизно відповідають розмірам відповідних модулів.
Для простоти тут не показано модулі
Log,
D і
Types, якими
користується майже кожен модуль.
App (Application) - додаток, програма під Політ
WinLook - оформлення рамок вікон
Kernel - ядро системи
Ctl (Controls) - елементи керування
Mouse - підтримка мишки
Gfx (Graphics) - графічні процедури
Font - шрифти, виведення написів
Pic - підтримка графічних файлів
Log - журнал повідомлень
D (Different) - різні корисні процедури та функції
Types - типи, що використовуються Польотом
|
|
|
|
|
|
Політ: загальні поняття і принципи
|
|
|
Багатозадачність,
реалізована у Польоті - кооперативна, або ж невитісняюча.
Це значить, що за переключення задач відповідає і система,
і програми під неї: поточна задача повідомляє, коли можна
переключатись на наступну, а система власне робить переключення.
Додатки (програми під Політ)
реалізуються або як модулі (units), що підключаються до
ЕХЕ-файла Польоту (так зараз зроблені всі політівські додатки),
або як окремі DLL-бібліотеки (поки що не реалізовано). Додатки
скаладаються із набору процедур - обробників
подій, які в різних ситуаціях
і викликаються системою. В результаті ми і отримуємо
багатозадачність.
Графіка в Польоті реалізована через
окремий модуль (під який заточуються модулі шрифтів та графічних
файлів). Тобто цей модуль досить нескладно замінити на якийсь
інший. Для Польоту, що пишеться зараз, я обрав знайдену десь
бібліотечку SGRAPH.PAS, що підтримує VESA-відеорежими до
1280 х 1024 х 256. Вона маленька (десь 30К) і при цьому досить
швидко працює. А коли буде треба - замінимо її на щось крутіше.
Елементи керування - важлива
частина системи. Окремий модуль містить код деяких елементів
(кнопка, список, напис, поле вводу, лінійка прокрутки та інші).
Політівським додаткам залишається лише сказати, де у вікні
елемент розташований та що він містить, за все інше відповідає
Політ. Взагалі,
Програмування під Політ
я намагаюся зробити настільки простим, наскільки це можливо.
Реально воно сильно нагадує програмування на Delphi чи чомусь
подібному і базується на тих самих поняттях: компонентах
(елементах керування),
подіях
та їх обробниках. Щоправда, справжніх об'єктів у Польоті
нема - із міркувань ефективності.
Рамки вікон також малює окремий
модуль, який можна при бажанні замінити на щось інше. А можна
у межах програми вказати власний такий модуль, і вікна цієї програми
виглядатимуть не так, як усі інші. До речі, такий самий фокус
можна проробляти і з
елементами керування.
Ресурси у Польоті - це теоретично
будь-які файли даних, що завантажуються у пам'ять при запуску
програм та після цього можуть використовуватись різними програмами.
Практично через цей механізм робиться зберігання шрифтів,
курсорів мишки, іконок та картинок.
Події - це те, що призводить до
виклику процедур-обробників. Прикладами подій у Польоті є
запуск чи закриття додатку, малювання вікна, натиснення клавіші,
клік мишкою, повідомлення від одної програми іншій, помилка,
таймер. Тобто робиться приблизно так: скажімо, у додатку пишеться,
що треба робити при його запуску (це називається обробником події),
і коли юзер дійсно запустить цей додаток, система викличе цей самий
обробник.
|
|
|
|
|
|