	program draw
	integer i,x,y
	real*8 q(0:639,0:639)
	real*8 qmin,qmax
	real colors(0:639,0:639)
	real grays(0:255)
	real c
	real color

	d=g2_open_vd()
c       откроем графическое окно размером 640x640
	d1=g2_open_X11(640.0, 640.0)
	call g2_attach(d, d1)

c       подготавливаем 255 возможных оттенков серого
	do i=0,254
	    grays(i)=g2_ink(d1,i/254.0,i/254.0,i/254.0)
	enddo

c  подготавливаем массив плотности (произвольным образом)  
c  вместо чтения из fifo-файла или pvm-сообщения заполняем массив вручную    
c  в реальной задаче вместо этого куска кода будет         
c  стоять один оператор чтения данных из файла или         
c  операторы приема сообщения и распаковки его в массив    
	do x=0,639
    	    do y=0,639
		q(x,y)=sqrt(abs((300.0*300.0)-(x*y*1.0)))
	    enddo
	enddo
c  ////////////////////////////////////////////////////////////


c    	вычисляем максимум и минимум плотности
	qmin=q(0,0)
	qmax=q(0,0)
	do x=0,639
    	    do y=0,639
		if(qmin.gt.q(x,y)) then
		    qmin=q(x,y)
		endif
		if(qmax.lt.q(x,y)) then
		    qmax=q(x,y)
		endif
	    enddo
	enddo


c	вычисляем цвета пикселей
	do x=0,639
    	    do y=0,639
c         	//конформно отражаем распределение плотностей
c 	 	//к диапазону 0-254 и в качестве цвета пикселя
c	 	//берем целую часть от полученной величины
		c=((254*(q(x,y)-qmin))/(qmax-qmin))
 		colors(x,y)=grays(c)
	    enddo
	enddo

c	рисуем распределение плотности в графическом окне X-Windows
	call g2_image(d1,0.0,0.0,640.0,640.0,colors)
c	call g2_line(d1,15.0,15.0,20.0,20.0)

c	рисуем белый прямоугольник в котором расположим текст 
	color = g2_ink(d1,1.0,1.0,1.0)
	call g2_pen(d1,color)
	call g2_filled_rectangle(d1,15.0,15.0,80.0,35.0)

c	рисуем черным цветом подпись к картинке в 
c	нарисованном белом прямоугольнике
	color = g2_ink(d1,0.0,0.0,0.0);
	call g2_pen(d1,color);
	call g2_string(d1,20.0,20.0,"Test field")


	call g2_flush(d1)

c	немножко поспим чтобы можно было полюбоваться 
с  	полученной картинкой 
	read (*,*) a

	call g2_close(d1)

	stop
	end
