Реализация простой графической системы

Автор: Андреев И.В., Мартынов А.Э.

Журнал: Компьютерная оптика @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. Модуль определений драйвера графопостроителя

Статья научная