С для профессиональных программистов


Видеорежимы и цветовая палитра


Перед использованием каких-либо функций графики компьютер должен быть переведен в соответствующий видеорежим. Для компьютеров типа IBM PC это означает, что должны быть выбраны подходящие режим и палитра.

В таблице 4-1 приведены различные видеорежимы, в которых могут работать компьютеры IBM PC. Для функций, приведенных в этой главе, требуется 4 видеорежим, предполагающий использование цветного графического дисплея с размерностью экрана 320 на 200. Хотя адаптер EGA поддерживает и режимы с расширенной разрешающей способностью дисплея, 4 видеорежим выбран в качестве базового для разработки и использования функций графики в связи с тем, что он поддерживается как адаптером EGA, так и CGA. Использование особых режимов EGA требует только изменения функций записи точки (смотри книгу по использованию графики в EGA "Advance Grafics in C" Nelson Jobson Osborn/McGrow-Hall, 1987). Вам необходимо запомнить, что во всех кодах верхний левый угол имеет координаты 0,0.

BIOS-прерывание 16, функция 0, устанавливает видеорежим и используется в функции mode(), текст которой приведен ниже. Но прежде чем вы ознакомитесь с ней, предлагаем вам внимательно изучить все видеорежимы, поддерживаемые соответствующими адаптерами. Для этого обратитесь к таблице 4-1.

Таблица 4-1 Режимы терминала для машин IBM PC

Режим

Тип Размерность Адаптер экрана



0

1

2

3

4

5

6

7

8

9

10

13

14

15

-----

алфавитно-цифровой, ч/б      40х25    CGA, EGA

алфавитно-цифровой, 16 цв.   40х25    CGA, EGA

алфавитно-цифровой, ч/б      80х25    CGA, EGA

алфавитно-цифровой, 16 цв.   80х25    CGA, EGA

графический, 4 цвета       320х200    CGA, EGA

графический, 4 серых тона  320х200    CGA, EGA

графический, ч/б           640х200    CGA, EGA

алфавитно-цифровой, ч/б      80х25   монохромный

графический, 16 цветов     160х200     PCjr

графический, 16 цветов     320х200     PCjr

графический, 4 цвета-PCjr  640х200    PCjr, EGA

16 цветов-EGA

графический, 16 цветов     320х200      EGA

графический, 16 цветов     640х200      EGA

графический, 4 цвета       640х350      EGA

----------------------------------------------------------


А

теперь приведем текст функции mode().

/* Установка видеорежима */

void mode(mode_code)

int mode_code;

union REGS r;

r.h.al = mode_code;

r.h.ah = 0;

int86(0x10,&r,&r);

 

В 4- ом режиме доступны две палитры (набора цветов). Каждая палитра определяет четыре цвета, отображаемые на экране терминала. В IBM PC палитра 0 определяет желтый, зеленый и красный цвета, палитра 1 определяет белый, ярко-красный (пурпурный) и голубой цвета. Для каждой палитры четвертым цветом является цвет фона, который обычно черный. BIOS-прерывание 16, функция 11, устанавливает палитру.

Функция pallet(), приведенная ниже, устанавливает номер палитры, который задается в качестве значения ее аргумента:

/* Установка палитры */

void palette(pnum)

int pnum;

union REGS r;

r.h.bh=1;    /* код 4 графического режима */

r.h.bl=pnum; /* номер палитры */

r.h.ah=11;   /* устанавливается для вызова палитры */

int86(0x10,&r,&r);


Содержание раздела