Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Fortran для персонального компьютера

..pdf
Скачиваний:
22
Добавлен:
15.11.2022
Размер:
12.5 Mб
Скачать

В этой операторной функции передаются значения из диапазона 0-3, а не из диапазона 0-63. Теперь чистый красный цвет назначается следующим образом:

rl«EGARGB< 0,0,3)

6.2.3.3Цветные графические режимы EGA

АЦветная графика видео-режимов $MRES16COLOR, $HRES16COLOR или $ERESCOLOR имеет наилучшие воз­ можности при использовании адаптера EGA. Режимы CGA

также функционируют на EGA-адаптере, но при этом обеспечиватся пониженное разрешение; ограничены также и воз­ можности выбора параметров цвета.

Процедура remappalette назначает новое значение цве­ та индексу цвета. Например, при первом вводе графического режима EGA, индекс цвета 1 равен значению цвета голубой". Дляпереназначения значения чистого красного цвета индексу цвета Г используется следующая строка:

dummy4 « remappalette( 1, #000030)

либо используется символическая константа $RED, опреде­ ленная в файле FGRAPH.FI:

dummy4~ remappalette( 1, $RED)

После вызова этой процедуры любой объект, окрашенный ин­ дексом цвета 1, изменит свой цвет с голубого на красный.

Для EGA-графики первое значение есть целое в диапа­ зоне от 0 до 15, а второе значение — число типа INTEGERS, определенное как смешение красного, зеленого и синего цве­ тов.

Процедура remapallpalette изменяет все индексы цветов одновременно. ТВ эту процедуру передается массив значений цветов. Первое значение цвета в списке становится новым цветом, ассоциированным с индексом цвета 0, второе - индек­

сом цвета 1 и т.д.

Параметр, передаваемый в процедуры, устанавливаю­ щие цвета (например, процедура setcolor), есть индекс для цвета в текущей палитре. В текстовой палитре, принимаемой по умолчанию, индекс 1 относится к голубому цвету. При изменении палитры изменяются также и номера индексов цве­ та. В результате цвет, генерируемый номером заданного ин­ декса, также изменяется. Если создается рисунок, используя одну палитру, а затем палитра изменяется, то индексы цвета будут относиться к различным цветам и цвета всего рисунка при этом будут изменены. Число разрешенных для использо­ вания индексов цвета зависит от числа цветов, поддерживае­ мых в заданном видео-режиме.

Процедуры remappalette и remapallpalette работают во всех режимах, но только с техническими средствами EGA, MCGA или VoA. При неудачном завершении процедуры воз­ вращают значение -1.

Следующая программа выполняет рисование прямоу­ гольника, окрашенного в красный цвет. В палитре EGA, при­ нимаемой по умолчанию, индекс цвета 4 соответствует крас-

3. Отобразить текст, используя текущий установленный шрифт.

Далее указанные шаги описываются в деталях.

6.3.3Выбор (регистрация) шрифта

Шрифты, которые будут использоваться в программе, должны быть размещены в памяти. Этот процесс называется регистрацией шрифтов. Регистрационный список щэедоставляет информацию о доступных .FON-файлах. Операция реализуется процедурой registerfonts. Процедура выполняет чтение заголовка информации .FON-фаила и строит список файловой информации, при этом отображаемые данные из файлов не читаются. Соответствующий интерфейс процедуры объявлен в файле FGRAPH.FI. ’

Параметр процедуры registerfonts соотносится с именем требуемого .FON-файла. При регистрации нескольких шриф­ тов за один вызов процедуры имя может включать символы

униве

ьного сопоставления.

 

а компилятор успешно выполняет операцию чтения

одного или более .FON-файлов, то процедура registerfonts воз­ вращает число зарегистрированных шрифтов. В противном случае возвращается отрицательный код ошибки.

6.3.4Установка шрифта и отображение текста

Перед отображением текста конкретным шрифтом, не­ обходимо определить, какой шрифт будет использоваться. После регистрации шрифтов процедура setfont устанавливает один из шрифтов текущим, готовым для работы и использо­ вания. Затем она выполняет чтение отображаемых данных из соответствующего .FON-файла в память. Только один из за­ регистрированных шрифтов может быть текущим или актив­ ным в некоторый момент при отображении текста на экран. Включаемый файл FGRAPH.FI содержит интерфейс процеду­ ры setfont.

Параметры функции setfont задаются строкой симво­ лов, которые определяют желаемые характеристики выбран­

ного шрифта (табл.6.17).

Порядок перечисления символов в строке параметров процедуры setfont произвольный, возможны как прописные, так и строчные символы, которые могут разделяться пробе­ лами. Взаимно исключающие параметры, например f и р или ги v при их совместном указании игнорируются.

Выбор и установка наиболее подходящего шрифта осно­ вывается на четырех критериях (в порядке приоритетов): вы­ соте символов шрифта, начертании символов, их ширине, а также разрядке символов шрифта.

Параметр b указывает процедуре setfont установить те­ кущим шрифт наиболее близкий по характеристикам специ­

фикациям, заданным пользователем. Если параметр b отсут­ ствует в строке параметров, а точно соответствующего

заданному шрифту не обнаружено, то выполнение процедуры setfont прерывается. При этом любой существующий текущий

Таблица 6.17 Параметры функции setfont

Параметр -

Значение

t’fontname’

Имя шрифта. В апострофах указывается

 

одно из следующих: courier, nelv, tms rmn,

 

modern, script, roman

hy

Высота символа. При этом у есть число,

 

определяющее значение высоты в элементах

wx

изображения (пикселах).

Ширина символа. Где х есть число пикселов.

f

Выбор шрифта с фиксированной разрядкой.

p

Выбор шрифта с пропорциональной разрядкой.

VВыбор только векторного шрифта

гВыбор только битового шрифта.

b

Выбор наиболее подходящего шрифта

nx

Выбор шрифта с номером х, где х номер

 

зарегистрированного процедурой

 

registerfonts шрифта.

шрифт остается текущим. Если зарегистрирован по крайней мере один шрифт, то при использовании параметра b всегда устанавливается текущий шрифт и setfont возвращает зна­ чение, соответствующее успешному завешению процедуры.

При указании параметра пх процедурой setfont игно­ рируются все другие параметры.

Процедура setfont изменяет область данных, в которой сохраняется информация о шрифте. Эта информация сохраня­ ется в структуре, определяемой включаемым файлом FGRAPH.FD, в следующем формате:

STRiJCTURE /fontinfo/

INTEGER type ! Векторный или битовый шрифт INTEGER ascent! Расстояние в пикселах до базы INTEGER pixwidth ! Ширина символа в пикселах INTEGER pixheight! Высота символа в пикселах INTEGER avgweight! Средняя ширина символа СНARACTEK *8 1 filename ! Полное имя файла шр CHARACTER*32 facenamc ! Имя шрифта

END STRUCTURE

При необходимости определения параметров текущего шрифта, следует вызвать процедуру getfontinfo.

После установки одного из шрифтов активным или те­ кущим для отображения текста на экран следует осуществить:

1.Выбор начальной позиции текста с помощью процедуры moveto.

2.Передача текста на экран при помощи процедуры outgtext.