ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Визначення типу і форми курсора “миші” у графічному режимі

 

У графічному режимі роботи відеоадаптера може бути описана будь-яка власна форма курсора в межах прямокутника 16×16 пікселів. Кур­сор у графічному режимі описується двома масками розміром 16×16 бі­тів кожна. Одна з масок називається AND-маскою (маскою екрана), інша - XOR-маскою (масою курсора). При переміщенні курсора попередній вміст екрана відновлюється драйвером “миші”. Маски, комбінуючись, ви­зна­чають метод обробки поточного коду кольору піксела на екрані. Результати обробки представлені в таблиці 15.

Таблиця 15 – Формування коду кольору пікселів відображення курсора “ми­ші” у графічному режимі

Біт AND-маски Біт XOR-маски Колір піксела на ерані
Колір фону
Білий колір
Поточний колір піксела
Побітова інверсія поточного кольору піксела

 

За допомогою різних масок можна встановити будь-яку форму курсора і добитися його видимості на будь-якому фоні. Для режимів 4, 5 та 13h використовуються тільки парні стовпчики в бітових масках: в іншому випадку курсор при використанні матриці 16×16 мав би занадто великі розміри. Для інших режимів “проріджування” стовпчиків масок курсора не виконується.

У графічних режимах, окрім форми курсора, описується так звана “гаряча пляма” (hot spot) у відносних координатах, за точку відліку яких прийнято верхній лівий кут прямокутника 16×16 пікселів. “Гаряча пляма” – це той піксел, на який вказує в даний момент графічний курсор. Опис курсора “миші” у графічному режимі виконує функція АХ=0009h переривання 33h. Наведемо специфікацію цієї функції.

На вході:

АХ = 0009h– установлення курсора “миші” в графічному режимі.

ВХ = номер стовпчика “гарячої плями” курсора відносно верх­ньо­го лівого кута прямокутника курсора.

СХ = номер рядка “гарячої плями” курсора відносно верхнього лівого кута прямокутника курсора.

ES:DX = покажчик на 32 слова масок: перші 16 слів утворюють AND-маску, наступні 16 слів – XOR-маску. Використання бітів цих масок ілюструє табл..14.

На виході: функція нічого не повертає.

Для отримання графічного курсора, який би було видно на будь-якому фоні, поступають таким чином. Маску екрана (AND-маску) задають такою, що складається зі слів FFFFh, а маску курсора (XOR-маску) описують так, щоб у ній стояли одиниці у тих бітах, які утворюють обриси курсора, і нулі – в усіх інших бітах маски. Як приклад наведемо створення курсора у вигляді нахиленої стрілки. Формування бітової карти цього курсора пояснюється на рис.22.

Відразу після ініціалізації екрана областю допустимих переміщень курсора за замовчуванням приймається весь екран. Але завжди є можливість обмежити переміщення курсора окремо по горизонталі та по вертикалі, для цього програма використовує функції АХ=0007h та АХ=0008h переривання 33h.

 

Бітова карта курсора Двійкове подання Шістнадцяткове подання
                        1000 0000 0000 0000 0x8000
                        1100 0000 0000 0000 0xC000
                        1010 0000 0000 0000 0xA000
                        1001 0000 0000 0000 0x9000
                        1010 1000 0000 0000 0xA800
                        1011 0100 0000 0000 0xB400
                        1011 1010 0000 0000 0xBA00
                        1011 1101 0000 0000 0xBD00
                        1011 1110 1000 0000 0xBE80
                        1011 1111 0100 0000 0xBF40
                        1011 1111 1010 0000 0xBFA0
                        1011 1111 1101 0000 0xBFD0
                        1011 1111 1110 0000 0xBFE0
                        1010 1110 0000 0000 0xAE00
                        1010 0011 0000 0000 0xA300
                        1110 0011 0000 0000 0xE300
  Рисунок 12 – XOR-маска зображення курсора у вигляді стрілки
                             

 

На вході:

АХ=0007h – установлення вертикальних границь переміщення (обме­жують горизонтальне переміщення курсора “миші” по екрану);

AX=0008h - установлення горизонтальних границь переміщення (обме­жують вертикальне переміщення курсора “миші” по екрану);

CX = мінімальна границя переміщення курсора “миші”;

DX = максимальна границя переміщення курсора “миші”.

На виході: функція нічого не повертає.

При роботі у графічному режимі границі переміщення задаються у пікселах. Для текстового режиму вони задаються у віртуальних пікселах (виходять з того, що знакомісце незалежно від режиму і типу адаптера займає матрицю 8×8 умовних пікселів). Тому для текстового режиму 25×80 максимально можливими границями переміщення по вертикалі (функція АХ=0008h) є значення СХ=0 і DX=199, а по горизонталі (функція АХ=0007h) – СХ=0 і DX=639. Для текстового режиму 50×80 (VGA- та MCGA-адаптери) граничні значення такі: по вертикалі (функція АХ=0008h) є значення СХ=0 і DX=399, по горизонталі (функція АХ=0007h) – СХ=0 і DX= 639. У разі. коли мінімальна границя більша за максимальну, функції міняють місцями значення у регістрах CX та DX. Якщо в момент установлення нової границі курсор пристрою знаходиться поза межами заданого діапазону переміщення, він “стрибає” до найближчої з границь.

 

2.11.4 Установлення чутливості курсора “миші”

 

При переміщенні пристрою “миша” по столу пропорційно руху переміщається і курсор “миші”. Регулювати швидкість переміщення курсора по екрану дозволяють пороги чутливості, що визначають число “міккі”, яке необхідно прийняти драйверу для переміщення курсора на один піксел по горизонталі або по вертикалі. Менше значення чутливості робить курсор “миші” більш рухливим. Наприклад, при переміщенні курсора по вертикалі вниз з верхньої лінії до нижньої у графічному режимі 10h (350 рядків) і при чутливості 1 міккі/піксел, для стандартної “миші” 200 міккі/дюйм необ­хідно перемістити пристрій на 350/200´25 = 44 мм. Для пере­мі­щен­ня курсора зліва направо при тих самих параметрах необхідно перемі­щен­ня “миші” по столу на 640/200´25 = 80 мм. Для установлення чутливості драйвера використовується функція АХ=000Fh, специфікація якої наведена нижче.

На вході:

AX = 000Fh – установлення чутливості драйвера “миші” по горизонталі та по вертикалі;

CX – чутливість драйвера “миші” по горизонталі в міккі на 8 пікселів;

DX – чутливість драйвера “миші” по вертикалі в міккі на 8 пікселів.

На виході: функція нічого не повертає.

Мінімальне можливе значення для CX та DX дорівнює 1, що відповідає просто “реактивній” швидкості. Навіть випадкові рухи на столі будуть приводити до переміщення курсора “миші”. Висока чутливість драйвера спрощує переміщення курсора на великі “відстані” по екрана, але одночасно утруднює установлення курсора точно в задану позицію на екрані. Наведене протиріччя між швидкістю і точністю позиціонування реалізується драйвером “миші” за допомогою алгоритму балістичного курсора. Ідея цього алгоритму полягає у наступному. Якщо “миша” переміщується по столу з високою швидкістю, то інформаційні слова в адаптер поступають з високою частотою. При досягненні “мишею” так званого порога подвоєної швидкості драйвер починає подвоювати кожний прийнятий сигнал при переміщенні. В результаті вдвічі зростає швидкість переміщення курсора пристрою на екрані. При зменшенні швидкості переміщення пристрою нижче згаданого порогу, подвоєння припи­няється і курсор по екрану пересувається зі швидкістю. що визначається параметрами чутливості. Іншими словами, для “далекого” переміщення курсора по екрану треба здійснити “мишею” по столу різкий рух у потрібному напрямку, а потім повільно підвести курсор у потрібну точку. Установлення власного значення порогу подвоєної швидкості виконує функція AX=0013h.

На вході:

AX=0013h – установлення значення порогу подвоєної швидкості DX – поріг подвоєної швидкості курсора “миші”, міккі/с.

На виході: функція нічого не повертає.

(за за­мовчуванням поріг подвоєної швидкості курсора дорівнює 64 міккі/с);

Для визначення поточних параметрів чутливості і порогу подвоєної швидкості курсора “миші” використовується функція AX=001Bh.

На вході:

AX = 001Bh – визначення поточних значень чутливості по гори­зон­талі та по вертикалі;

На виході:

BX – чутливість драйвера по горизонталі (міккі на один піксел);

CX – чутливість драйвера по вертикалі (міккі на один піксел);

DX – поріг подвоєної швидкості курсора “миші”, тобто кількість мік­кі в секунду, при досягненні якого швидкість переміщення курсора по екрану подвоюється (за за­мовчуванням поріг подвоєної швидкості курсора дорівнює 64 міккі/с).

 

 

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти