1 | MODULE u_graph |
---|
2 | !--------------------------------------------------------------------- |
---|
3 | !- module d'interface graphique |
---|
4 | !--------------------------------------------------------------------- |
---|
5 | USE poly_types |
---|
6 | IMPLICIT NONE |
---|
7 | !- |
---|
8 | INTEGER,SAVE :: wkid1 = 1,wkcx1 = 70,wktp1 = 1110,wkca1 |
---|
9 | INTEGER,SAVE :: ulerr = 70 |
---|
10 | !--------------------------------------------------------------------- |
---|
11 | CONTAINS |
---|
12 | !- |
---|
13 | SUBROUTINE g_deb (vxmin,vxmax,vymin,vymax) |
---|
14 | !--------------------------------------------------------------------- |
---|
15 | !- debut de graphique |
---|
16 | !--------------------------------------------------------------------- |
---|
17 | REAL (kind=rp) :: vxmin,vxmax,vymin,vymax |
---|
18 | !- |
---|
19 | INTEGER :: pgnt,dcunit,dcdxp,dcdyp,ierr |
---|
20 | INTEGER,DIMENSION(13) :: iasf = (/ 1,1,1,1,1,1,1,1,1,1,1,1,1 /) |
---|
21 | REAL (kind=rp),DIMENSION(4) :: wkvp,sndc |
---|
22 | REAL (kind=rp) :: ddd,dcdxm,dcdym |
---|
23 | REAL (kind=rp) :: dcdx,dcdy,gx,gy |
---|
24 | REAL (kind=rp) :: xmi,xms,ymi,yms |
---|
25 | !--------------------------------------------------------------------- |
---|
26 | !- extrema |
---|
27 | ddd = vxmax-vxmin; xmi = vxmin-0.1_rp*ddd; xms = vxmax+0.1_rp*ddd; |
---|
28 | ddd = vymax-vymin; ymi = vymin-0.1_rp*ddd; yms = vymax+0.1_rp*ddd; |
---|
29 | !- ouverture du fichier des messages d'erreur |
---|
30 | OPEN (unit=ulerr,file='dphierr', & |
---|
31 | status='unknown',form='formatted') |
---|
32 | !- ouverture de gks |
---|
33 | CALL gopks (ulerr,-1) |
---|
34 | !- obtention de la categorie du poste de travail |
---|
35 | CALL gqwkca (wktp1,ierr,wkca1) |
---|
36 | !- ouverture du poste de travail |
---|
37 | CALL gopwk (wkid1,wkcx1,wktp1) |
---|
38 | !- obtention de la surface maximale d'affichage |
---|
39 | CALL gqdsp (wktp1,ierr,dcunit,dcdxm,dcdym,dcdxp,dcdyp) |
---|
40 | IF (dcunit == 1) THEN |
---|
41 | dcdxm = dcdxp; dcdym = dcdyp; |
---|
42 | END IF |
---|
43 | !- activation du poste de travail |
---|
44 | CALL gacwk (wkid1) |
---|
45 | !- definition des fenetres et clotures |
---|
46 | pgnt = 1 |
---|
47 | gx = xms-xmi; gy = yms-ymi; |
---|
48 | CALL gswn (pgnt,xmi,xms,ymi,yms) |
---|
49 | sndc(1:4) = (/ 0._rp, MIN(1.,gx/gy), 0._rp, MIN(1.,gy/gx) /) |
---|
50 | CALL gsvp (pgnt,sndc(1),sndc(2),sndc(3),sndc(4)) |
---|
51 | dcdx = dcdxm*(1._rp-MIN(1._rp,(dcdym*gx)/(dcdxm*gy)))/2._rp |
---|
52 | dcdy = dcdym*(1._rp-MIN(1._rp,(dcdxm*gy)/(dcdym*gx)))/2._rp |
---|
53 | wkvp(1:4) = (/ dcdx, (dcdxm-dcdx), dcdy, (dcdym-dcdy) /) |
---|
54 | CALL gswkwn (wkid1,sndc(1),sndc(2),sndc(3),sndc(4)) |
---|
55 | CALL gswkvp (wkid1,wkvp(1),wkvp(2),wkvp(3),wkvp(4)) |
---|
56 | !- activation de la transformation de normalisation |
---|
57 | CALL gselnt (pgnt) |
---|
58 | CALL gsvpip (0,pgnt,1) |
---|
59 | CALL gsds (wkid1,0,1) |
---|
60 | !- definition du type des attributs |
---|
61 | CALL gsasf (iasf) |
---|
62 | !---------------------- |
---|
63 | END SUBROUTINE g_deb |
---|
64 | !- |
---|
65 | SUBROUTINE g_fin |
---|
66 | !--------------------------------------------------------------------- |
---|
67 | !- fin de graphique |
---|
68 | !--------------------------------------------------------------------- |
---|
69 | !- desactivation et fermeture du poste de travail |
---|
70 | CALL gdawk (wkid1) |
---|
71 | CALL gclwk (wkid1) |
---|
72 | !- fermeture de gks |
---|
73 | CALL gclks |
---|
74 | !- fermeture du fichier des messages d'erreur |
---|
75 | CLOSE (unit=ulerr) |
---|
76 | !---------------------- |
---|
77 | END SUBROUTINE g_fin |
---|
78 | !- |
---|
79 | SUBROUTINE g_fix |
---|
80 | !--------------------------------------------------------------------- |
---|
81 | !- fixation du graphique |
---|
82 | !--------------------------------------------------------------------- |
---|
83 | INTEGER :: istat,ichnb |
---|
84 | REAL (kind=rp) :: pxi,pyi |
---|
85 | !--------------------------------------------------------------------- |
---|
86 | IF (wkca1.EQ.2) THEN |
---|
87 | CALL grqlc (wkid1,1,istat,ichnb,pxi,pyi) |
---|
88 | END IF |
---|
89 | !---------------------- |
---|
90 | END SUBROUTINE g_fix |
---|
91 | !- |
---|
92 | SUBROUTINE g_pln (np,px,py,il,ic) |
---|
93 | !--------------------------------------------------------------------- |
---|
94 | !- affichage de polyligne |
---|
95 | !--------------------------------------------------------------------- |
---|
96 | INTEGER :: np,il,ic |
---|
97 | REAL (kind=rp), DIMENSION(*) :: px,py |
---|
98 | !--------------------------------------------------------------------- |
---|
99 | CALL gsln (il) |
---|
100 | CALL gsplci (ic) |
---|
101 | CALL gpl (np,px,py) |
---|
102 | !---------------------- |
---|
103 | END SUBROUTINE g_pln |
---|
104 | !- |
---|
105 | SUBROUTINE g_pmk (np,px,py,ip,ic) |
---|
106 | !--------------------------------------------------------------------- |
---|
107 | !- affichage de polymarque |
---|
108 | !--------------------------------------------------------------------- |
---|
109 | INTEGER :: np,ip,ic |
---|
110 | REAL (kind=rp), DIMENSION(*) :: px,py |
---|
111 | !--------------------------------------------------------------------- |
---|
112 | !* call gsmksc (1.) |
---|
113 | CALL gsmk (ip) |
---|
114 | CALL gspmci (ic) |
---|
115 | CALL gpm (np,px,py) |
---|
116 | !---------------------- |
---|
117 | END SUBROUTINE g_pmk |
---|
118 | !- |
---|
119 | SUBROUTINE g_pol (nv,vx,vy,is,ic) |
---|
120 | !--------------------------------------------------------------------- |
---|
121 | !- affichage de polygone |
---|
122 | !--------------------------------------------------------------------- |
---|
123 | INTEGER :: nv,is,ic |
---|
124 | REAL (kind=rp), DIMENSION(*) :: vx,vy |
---|
125 | !--------------------------------------------------------------------- |
---|
126 | CALL gsfais (is) |
---|
127 | CALL gsfaci (ic) |
---|
128 | CALL gfa (nv,vx,vy) |
---|
129 | !---------------------- |
---|
130 | END SUBROUTINE g_pol |
---|
131 | !-------------------- |
---|
132 | END MODULE u_graph |
---|