1.22.2. Конфигурация окна вывода

Значения параметров окна устанавливается путем обращения к функции SETWINDOWCONFIG, а запрашивается с помощью функции GETWINDOWCONFIG. Установка конфигурации окна не обязательна, но при необходимости можно задавать конфигурацию окна обратившись к функции SETWINDOWCONFIG так

sl4= SETWINDOWCONFIG(gs), gs – переменная производного типа windowconfig, она содержит параметры конфигурации окна. При обращении к функции SETWINDOWCONFIG значение всех полей должно быть определено. Функция возвращает значение .TRUE., если конфигурация окна  установлена, и .FALSE., если конфигурация не может быть установлена по той или иной причине. Если конфигурация не устанавливается, то автоматически задается наилучшее возможное в  системе разрешение и размер шрифта 816. Число допустимых цветов определяется  видеоадаптером. Значение параметров окна возвращается функцией GETWINDOWCONFIG, обращение к которой имеет вид: sl4=SETWINDOWCONFIG(gs). Если конфигурация не устанавливалась, то возвращаются значения полей записи gs, принятые по умолчанию.

Закрыть

Производный тип или структура в Фортране, в отличие от встроенных типов, задается программистом. К производным типам относятся тип-запись. Для объявления типа запись используется оператор TYPEEND TYPE. Тип WINDOWCONFIG определен в модуле DFLIB.

TYPE WINDOWCONFIG

INTEGER(2) NUMXPIXELS        ! Число пикселей по оси х

INTEGER(2) NUMYPIXELS        ! Число пикселей по оси y

INTEGER(2) NUMTEXTCOLS       ! Число доступных столбцов текста

INTEGER(2) NUMTEXTROWS      ! Число доступных строк текста

...

END TYPE WINDOWCONFIG.

Кроме перечисленных полей (компонентов записи), имеются поля, которые позволяют изменять шрифты, размеры шрифтов, задавать заголовок видеоокна. Более подробно можно прочитать описание компонентов в книгах [Бартеньев О. В. Visual Fortran: Новые возможности.].

В некоторых входных языках можно задать окно вывода, связав его с математической декартовой системой координат, для этого используем обращение к функции

Sl2=SETWINDOW(f,wx1,wy1,wx2,wy2)

Fпараметр типа LOGICAL(2), который определяет направление координатной оси y: если значение f=.TRUE., то ось у увеличивается от нижней границы видового окно до верхней, если f=.FALSE., то ось у увеличивается от верхней границы видового окна до нижней;

wx1, wy1 – левый верхний угол окна в математической системе координат;

wx1, wy1 – правый нижний угол окна в математической системе координат.

Тип параметров wx1,wy1,wx2,wy2- REAL(8). Тип функции INTEGER(2). Функция возвращает значение отличное от нуля, если открытие окна произошло успешно, и нуль в противном случае.

ПРИМЕР: Построить график функции .

PROGRAM Graph

USE DFLIB

REAL(8), PARAMETER :: A=-3.0D0, B=3.0D0, &

  C=-5.0D0, D=10.0D0, M=4.0D2

INTEGER(2)  SL2

iNTEGER(4) SL4

REAL(8) X, Y, Y1, H

LOGICAL(2) :: F=.TRUE._2

SL2=SETWINDOW(F,A,D,B,C)

SL4=SETBKCOLORRGB(#D01F01)

CALL CLEARSCREEN($GVIEWPORT)

SL2=SETCOLOR(10_2)

H=(B-A)/M

X=A

SL2=SETPIXEL_W(X,Y)

 DO   WHILE(X<=B)

  Y=DSIN(4*X)+X*X

 SL2=SETPIXEL_W(X,Y)

 X=X+H

 CALL SLEEPQQ(10)

 END DO

 STOP

 END

В этой программе для задания цвета пера использована функция SETCOLOR(nc), здесь

Ncпараметр типа INTEGER(2), определяющий номер цвета по таблице цветов.Для очистки окна (заливки текущим цветом фона) использовано обращение к процедуре CLEARSCREEN($GVIEWPORT).

ЗАДАНИЕ:

Запустите программу и пронаблюдайте ее работу (Grrrrr_m).

Закрыть

Обращение к процедуре

CALL CLEARSCREEN(<встроенная именованная константа >)

приводит к очистке видеоокна, текущего видеопорта или текущего текстового окна, в зависимости от значения константы:

  • $GCLEARSCREEN – очистка всего видеоокна;
  • $GVIEWPORT – очистка текущего видового порта;
  • $GWINDOW – очистка текущего текстового окна.
Закрыть

Таблица .Палитра VGA( шестнадцать цветов)

Цвет

Значение

Цвет

Значение

0

Черный

#000000

8

Серый

#202020

1

Синий

#200000

9

Светло-синий

#3F0000

2

Зеленый

#002000

10

Светло-зеленый

#003F00

3

Голубой

#202000

11

Светло-голубой

#3F3F00

4

Красный

#000020

12

Светло-красный

#00003F

5

Фиолетовый

#200020

13

Светло-фиолетовый

#3F003F

6

Коричневый

#002020

14

Желтый

#003F3F

7

Белый

#303030

15

Ярко-белый

#3F3F3F