Fortran для персонального компьютера
..pdfВ этой операторной функции передаются значения из диапазона 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.