Работа с проектом
Замечания по поводу параметров программы ENDPG и программ, использующих текстовые константы
Многооконный вывод
Установка размеров графических окон
Вывод текстовой информации
Получение “твердых” копий
Использование буфера обмена
Использование HP - GL
Для работы требуется наличие транслятора Microsoft Fortran PowerStation 4.0 (FPS) (установленного в Windowsâ95/98/NT) и файла GRAFOR.OBJ (который может находиться в произвольной директории на жёстком диске). Описание транслятора и приёмов работы в оболочке Microsoft Developer Studio (помимо встроенной системы помощи) можно найти в литературе [19], [20], [21], [22]. Вначале следует создать новый проект типа QuickWin. Затем в проект необходимо вставить (Insert®Files_into_Project) файл GRAFOR.OBJ и пользовательские Фортран-файлы. Дальнейшая сборка и запуск не отличаются от обычных.
Обратим внимание на следующие моменты. Параметр подпрограммы ENDPG (осуществляющей закрытие страницы), обязательно должен быть нулем. Параметры же подпрограмм, использующих текстовые константы, и относящиеся к ним (а именно сами эти константы и их длины) не должны быть нулями. Если, например, нет необходимости писать название области, достаточно задать его равным пробелу (при этом длина этой текстовой переменной задается равной единице).
В одной программе может быть открыто (с соблюдением соответствующего порядка закрытия страниц) до 38 графических окон. В случае использования стандартных операторов ввода-вывода открывается обычное текстовое окно. Необходимо отметить, что русский язык в таком окне не поддерживается, и тогда для организации диалога следует использовать соответствующие встроенные средства FPS. В операторах OPEN не следует использовать номера устройств (UNIT =), большие чем 100. Каждое окно обозначается порядковым номером и именем, задаваемым в подпрограмме PAGE, и закрывается оператором ENDPG(0). Программы GRINIT иGRFIN не используются.
Задание размеров графических окон осуществляется вызовом подпрограммы GF_SETNP. Ее параметры (NPX,NPY) означают количество пикселей по координатам X и Y соответственно. Затем, если необходимо, производится изменение размеров окна в пикселях пропорционально соотношению его размеров в сантиметрах, задаваемых в подпрограмме PAGE. Если обращения к подпрограмме GF_SETNP не было, по умолчанию (до масштабирования соответственно параметрам в PAGE) полагается NPX = 640, NPY = 480.
В существующей версии возможен вывод только заглавных букв латинского и русского алфавитов. При этом для вывода русских букв в подпрограмме SYMBOL (и в ряде других, обращающихся к ней, подпрограммах) необходимо использовать прописные латинские буквы (и некоторые другие символы). Соответствие символов показано в таблице, где приведена соответствующая "раскладка клавиатуры", т.е. четные строки соответствуют верхнему регистру, нечетные – нижнему:
Ю | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |
Ч | ! | # | $ | % | Ù | & | * | ( | ) | _ | + | |
Я | В | Е | Р | Т | Ы | У | И | О | П | [ | ] | |
Q | W | E | R | T | Y | U | I | O | P | Ш | Щ | |
А | С | Д | Ф | Г | Х | Й | К | Л | ; | ‘ | А | |
A | S | D | F | G | H | J | K | L | : | “ | ||
З | Ь | Ц | Ж | Б | Н | М | , | . | / | \ | ||
Z | X | C | V | B | N | M | < | > | ? | э |
Аналогичный рисунок получается посредством следующей программы:
call PAGE(8.0,8.0,'Буквы',5,1) call symbol(0.1, 7.05, 0.9, '`1234567890-=' , 13, 0.0) call slinst(0) call move(0.0,7.1,0) call move(8.0,7.1,1) call slinst(-1) call symbol(0.1, 6.05, 0.9, '~!@#$%^&*()_+' , 13, 0.0) call move(0.0,6.1,0) call move(8.0,6.1,1) call symbol(0.1, 5.05, 0.9, 'qwertyuiop[]' , 12, 0.0) call slinst(0) call move(0.0,5.1,0) call move(8.0,5.1,1) call slinst(-1) call symbol(0.1, 4.05, 0.9, 'QWERTYUIOP{}' , 12, 0.0) call move(0.0,4.1,0) call move(8.0,4.1,1) call symbol(0.1, 3.05, 0.9, 'asdfghjkl;''' , 12, 0.0) call slinst(0) call move(0.0,3.1,0) call move(8.0,3.1,1) call slinst(-1) call symbol(0.1, 2.05, 0.9, 'ASDFGHJKL:'' , 11, 0.0) call move(0.0,2.1,0) call move(8.0,2.1,1) call symbol(0.1, 1.05, 0.9, 'zxcvbnm,./\' , 11, 0.0) call slinst(0) call move(0.0,1.1,0) call move(8.0,1.1,1) call slinst(-1) call symbol(0.1, 0.05, 0.9, 'ZXCVBNM<>?|' , 11, 0.0) call endPG(0) END
Замечание. Название окна, использующее русские буквы, выводится корректно.
Полученные изображения могут быть переданы в буфер обмена. Для этого необходимо выделить
нужное окно и выполнить действия
При работе программы в директории проекта создаются соответствующие каждому окну файлы, содержащие операторы языка Hewlett Packard Graphic Language (HP-GL). Они имеют имена вида <№ окна>.HGL (т.е. 1.HGL, 2.HGL…). Язык HP-GL использует только коды ASCII, поэтому данные текстовые файлы могут использоваться для передачи графических результатов в другие ОС.
Вывод на графопостроитель, подключенный к ПК, осуществляется в ДОС-окне командой "COPY <ИмяФайла> COM[№]" (№ обозначает номер последовательного порта, к которому подключен плоттер). Заметим, что до этого должен быть установлен режим, соответствующий установкам плоттера, например "mode com4 9600,n,8,1,p".
Количество перьев у разных моделей графопостроителей варьируется. Настоящая версия ориентируется на использование 6 цветов. Распределение их при выводе на экран (цвета плоттера определяются установкой фломастеров в карусели) следующее:
Нулевое значение означает белый цвет при выводе на экран и эквивалентно вызову SETPEN(1) для графопостроителя. Это связано с тем, что подпрограммой SETBGR может быть установлен цвет фона на дисплее (на выводе в файл HGL работа этой подпрограммы никак не сказывается), отличный от белого, и тогда белая линия на этом фоне будет видна.
1 - черный, 2 - красный, 3 - зеленый, 4 - синий, 5 - фиолетовый, 6 - серый.
Файлы с расширением HGL (и, естественно, файлы в других графических форматах) могут быть вставлены в документ при работе в текстовом редакторе MS Word выполнением команд Insert ® Picture.