Реализация простой графической системы
Автор: Андреев И.В., Мартынов А.Э.
Журнал: Компьютерная оптика @computer-optics
Статья в выпуске: 2, 1987 года.
Бесплатный доступ
Описывается реализация простой графической системы на языке Модула-2. Система предназначается для использования в области автоматизации эксперимента. Основными отличительными чертами системы являются независимость от графического устройства, простота и возможность расширения. Приводится текст модуля определений графической системы на языке Модула-2.
Короткий адрес: https://sciup.org/14058131
IDR: 14058131
Текст научной статьи Реализация простой графической системы
WSTYPE =(METAFILE,PLOTTER,DISPLAY);
AXESTYPE =(LIN,LOG,XLOG,YLOG,POLAR);
GRAPHTYPE =(DOTTED,SOLID,MARKER,HISTOGRAM);
LIMITATION =RECORD ХМ IN,XMAX,YMIN,YMAX:REAL; END;
VAR
W LIMITATION; |
( * |
ОКНО |
* ) |
V LIMITATION; |
( * |
поле вывода |
* ) |
CH:REAL ; |
( * |
высота символов |
* ) |
СЕ:REAL ; |
( * |
ширина/высота символов |
* ) |
CS:REAL ; |
( * |
расстояние между символами |
* ) |
CU:REAL; |
( * |
угол поворота символов |
* ) |
CP:PATH ; |
( * |
направление строки |
* ) |
LS:INTEGER ; |
( * |
номер типа линии |
* ) |
CL; INTEGER ; |
( * |
номер цвета |
* ) |
Рис. 1. Модуль определений графической системы
Баяковский Ю. М. и др. Г РАФОР. Графическое расширение Фортрана. - М. Наука. 1985.
PROCEDURE COLOR ( С : INTEGER ) ;
(* устанавливает цвет(номер пера) *)
PROCEDURE LINESTYLE(L : INTEGER;SIZE:REAL);
(* устанавливает тип линий *)
PROCEDURE ERASE(C: INTEGER) ;
(* очищает экран, устанавливает цвет фона *)
PROCEDURE MOVEABS(X,Y:REAL);
(* перемещает текущую позицию (ТП) в точку с указанными координатами *)
PROCEDURE MOVEREL(X,Y:REAL);
(* перемещает текущую позицию в (ТП.Х+Х,ТП.Y + Y) *)
PROCEDURE LINE(Х1,Y1.Х2.Y2:REAL);
(* проводит отрезок от (X1.Y1) до (X2.Y2) *)
PROCEDURE LINEA8S(X,Y : REAL) ;
(* проводит отрезок от текущей позиции до (x,y) *)
PROCEDURE L I N ЕREL(X,Y:RЕAL ) ;
(* проводит отрезок от текущей позиции до (ТП.Х+Х,ТП.Y + Y) *)
PROCEDURE TEXT(X,Y:REAL;TXT:ARRAY OF CHAR ; N: INTEGER) ;
(* выводит строку текста начинающуюся в (x,y) *)
PROCEDURE SETCH(С:REAL ) ;
(* устанавливает высоту символов *)
PROCEDURE SETCE(С:REAL ) ;
(* устанавливает отношение ширины к высоте символа *)
PROCEDURE SETCU(F:REAL ) :
(* устанавливает угол поворота символов *)
PROCEDURE SETCP(С:PATH ) ;
(* устанавливает направление вывода строки символов *)
PROCEDURE WINDOW(XMN,ХМХ,YMN,YMX:REAL) ;
(* устанавливает окно в координатах пользователя *)
PROCEDURE VIEWPORT(XMN,ХМХ,YMN . YMX:REAL) ; .
(* устанавливает поле вывода в нормализованных координатах *
PROCEDURE ENABLE(WSIzWSTYPE);
(* разрешает вывод на устройство *)
PROCEDURE NEWMETAFILEtMFN:ARRAY OF CHAR);
(* открывает новый метафайл *)
PROCEDURE DI SABLE(WSI :WSTYPE) ;
(* запрещает вывод на устройство *)
Рис. 1. Продолжение
PROCEDURE INVERSE(NX,NY:REAL;VAR X.Y:REAL);
(* осуществляет преобразование нормализованных координат в координаты пользователя *)
procedure terminate; (* завершает работу *)
PROCEDURE AXES(XLL,XBL,YLL,YBL:REAL;
ATYPE : AXESTYPE) ;
(* строит оси координат.
PROCEDURE GRAPH I С(DFN : ARRAY OF СНAR;GТYРЕ:GRАРНТYРЕ ;
MARKER:CHAR ) ;
(* строит график по файлу даных с именем dfn *)
END GRAPHICS.
Рис. I. Окончание
Независимость от графического устройства достигается за счет вынесения аппаратно-зависимой части программ в драйверы устройств, оформленные в виде отдельных модулей. В состав системы могут одновременно входить графические устрой
ства следующих типов: графопостроитель, телевизионный монитор и псевдоустройство для вывода в метафайл. На рис. 2 в качестве примера приведен модуль определений драйвера графопостроителя.
DEFINITION MODULE PLOT;
EXPORT QUALIFIED PLOT;
END PLOT.
Рис. 2. Модуль определений драйвера графопостроителя