--- /dev/null
+c
+c Copyright (C) 1998-2001 Ljubomir Milanovic & Horst Wagner
+c This file is part of the g2 library
+c
+c This library is free software; you can redistribute it and/or
+c modify it under the terms of the GNU Lesser General Public
+c License as published by the Free Software Foundation; either
+c version 2.1 of the License, or (at your option) any later version.
+c
+c This library is distributed in the hope that it will be useful,
+c but WITHOUT ANY WARRANTY; without even the implied warranty of
+c MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+c Lesser General Public License for more details.
+c
+c You should have received a copy of the GNU Lesser General Public
+c License along with this library; if not, write to the Free Software
+c Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+c
+
+c
+c This file will be processed by cpp, the outpu g2testf.f is feeded into fortran compiler
+c See Makefile for details.
+c
+
+c program main
+c implicit none
+ integer ndev, i, j
+ real d, c, dev(0:10)
+ character str*256
+ real pts(0:10)
+ real y
+ include 'penguin.inc'
+c integer image(64)
+c data image/
+c & 0, 0, 2, 2, 2, 2, 0, 0,
+c & 0, 2, 0, 0, 0, 0, 2, 0,
+c & 2, 0, 3, 0, 0, 3, 0, 2,
+c & 2, 0, 0, 0, 0, 0, 0, 2,
+c & 2, 3, 0, 0, 0, 0, 3, 2,
+c & 2, 0, 3, 3, 3, 3, 0, 2,
+c & 0, 2, 0, 0, 0, 0, 2, 0,
+c & 0, 0, 2, 2, 2, 2, 0, 0 /
+c /*open virtual device */
+ d=g2_open_vd()
+ print*,"Adding.. VD=", d
+ ndev = 1
+
+#ifdef DO_PS
+ dev(ndev)=g2_open_ps('g2testf.ps', 4., 0.)
+ print*,"..PS=",dev(ndev)
+ call g2_attach(d, dev(ndev))
+ ndev = ndev + 1
+#endif
+#ifdef DO_X11
+ dev(ndev)=g2_open_x11(775., 575.)
+ print*,"..X11=",dev(ndev)
+ call g2_attach(d,dev(ndev))
+ ndev = ndev + 1
+#endif
+#ifdef DO_GD
+ str='g2testf.png'
+ str(12:12)=char(0)
+ dev(ndev)=g2_open_gd(str, 775., 575., 0.)
+ print*,"..GD=",dev(ndev)
+ call g2_attach(d,dev(ndev))
+ ndev = ndev + 1
+#endif
+ call g2_set_auto_flush(d,0.)
+
+c call g2_set_coordinate_system(d, 775., 575., -0.75, -1.0)
+
+ do i=0,27
+ call g2_pen(d, float(i))
+ call g2_filled_circle(d, float(i*20+10), 10., 10.)
+ call g2_pen(d, 1.)
+ call g2_circle(d, float(i*20+10), 10., 10.)
+ write(str(1:4),'(i3,a1)') i,char(0)
+ call g2_string(d, float(i*20+7), 21., str(1:4))
+ enddo
+
+ do j=1,ndev
+ if(dev(j).gt.0) then
+ do i=0,64
+ call g2_move(dev(j), float(2*i+575), 5.)
+ c = g2_ink(dev(j), float(i)/64., 0., 0.)
+ call g2_pen(dev(j), c)
+ call g2_line_r(dev(j), 0., 20.)
+ c = g2_ink(dev(j), 0., float(i)/64., 0.)
+ call g2_pen(dev(j), c )
+ call g2_line_r(dev(j), 10., 20.)
+ c = g2_ink(dev(j), 0., 0., float(i)/64.)
+ call g2_pen(dev(j), c)
+ call g2_line_r(dev(j), -10., 20.)
+ enddo
+ endif
+ enddo
+ call g2_pen(d, 1.)
+ call g2_line(d, 200., 50., 350., 50.)
+ call g2_line(d, 200., 48., 350., 48.)
+ call g2_line(d, 200., 46., 350., 46.)
+ call g2_line(d, 200., 46., 200., 75.)
+ call g2_line(d, 198., 46., 198., 75.)
+ call g2_line(d, 196., 46., 196., 75.)
+ str="012abcABC#())(\\-+~*!$%&"//char(0)
+ call g2_string(d, 200., 50., str)
+
+ call g2_pen(d, 1.)
+ do i=1,25
+ call g2_line(d, 15., float(i*20+50), 15., float(i*20+50+i))
+ call g2_set_font_size(d, 12.)
+ write(str(1:3),'(i2,a1)') i,char(0)
+ call g2_string(d, 20., float(i*20+50), str)
+ call g2_set_font_size(d, float(i))
+ str='Hello, world!'//char(0)
+ call g2_string(d, 40., float(i*20+50), str)
+ enddo
+
+
+ call g2_plot(d, 150., 70.)
+ call g2_line(d, 147., 68., 153., 68.)
+
+ y=100.
+ call g2_line(d, 100., y, 150., y+50.)
+ call g2_triangle(d, 150., y, 250., y, 200., y+50.)
+ call g2_rectangle(d, 300., y, 400., y+50.)
+ call g2_circle(d, 450., y+25., 25.)
+ call g2_ellipse(d, 550., y+25., 45., 25.)
+ call g2_arc(d, 650., y+25., 25., 45., 90., 360.)
+
+ y=200.
+ call g2_filled_triangle(d, 150., y, 250., y, 200., y+50.)
+ call g2_filled_rectangle(d, 300., y, 400., y+50.)
+ call g2_filled_circle(d, 450., y+25., 25.)
+ call g2_filled_ellipse(d, 550., y+25., 45., 25.)
+ call g2_filled_arc(d, 650., y+25., 25., 45., 90., 360.)
+
+
+ y=300.
+ pts(0)=150.
+ pts(1)=y
+ pts(2)=175.
+ pts(3)=y+100.
+ pts(4)=200.
+ pts(5)=y
+ pts(6)=225.
+ pts(7)=y+100.
+ pts(8)=250.
+ pts(9)=y
+ call g2_poly_line(d, 5., pts)
+ call g2_pen(d, 19.)
+ call g2_b_spline(d, 5., pts, 20.)
+ call g2_pen(d, 1.)
+
+ pts(0)=300.
+ pts(1)=y
+ pts(2)=350.
+ pts(3)=y
+ pts(4)=375.
+ pts(5)=y+50.
+ pts(6)=325.
+ pts(7)=y+90.
+ pts(8)=275.
+ pts(9)=y+50.
+ call g2_polygon(d, 5., pts)
+
+ pts(0)=450.
+ pts(1)=y
+ pts(2)=500.
+ pts(3)=y
+ pts(4)=525.
+ pts(5)=y+50.
+ pts(6)=475.
+ pts(7)=y+90.
+ pts(8)=425.
+ pts(9)=y+50.
+ call g2_filled_polygon(d, 5, pts)
+
+ call g2_image(d, 55., 50., 53., 62., penguin)
+ call g2_image(d, 75., 130., 53., 62., penguin)
+ call g2_pen(d, 1.)
+
+ call g2_line(d, 225., 448., float(200+19*25), 448.)
+ do i=1,20
+ call g2_pen(d,float(i+1))
+ call g2_set_line_width(d, float(i))
+ call g2_move(d, float(200+i*25), 450.)
+ call g2_line_to(d, float(200+i*25), 550.)
+ enddo
+ call g2_pen(d,1.)
+
+ call g2_set_line_width(d, 5.)
+ do i=1,10
+ pts(0)=float(1*i)
+ pts(1)=float(2*i)
+ pts(2)=float(3*i)
+ call g2_set_dash(d, 3., pts)
+ call g2_line(d, 550., float(300+i*8), 750., float(350+i*8))
+ enddo
+
+ call g2_set_dash(d, 0., pts)
+ call g2_set_line_width(d, 5.)
+ call g2_arc(d, 740., 180., 25., 100., -45.+15., -45.-15.)
+ call g2_filled_arc(d, 740., 180., 12., 50., -45.+15., -45.-15.)
+c----------------------------------------------------------
+ call g2_flush(d)
+ print*,"Done...(Enter)"
+ read(*,'(a)') str
+ call g2_close(d)
+ end
+c #eof#