]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/gdraw/gdlens.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / gdraw / gdlens.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:20:23 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.26 by S.Giani
11*-- Author :
12 SUBROUTINE GDLENS(ISEL1,KLSA)
13C.
14C. ******************************************************************
15C. * *
16C. * Zoom by the factors ZOOMFU,ZOOMFV *
17C. * around screen coordinates UUZ0,VVZ0 *
18C. * and places the resulting picture at UU0,VV0 *
19C. * *
20C. * After GDZOOM has been CALLed, any drawing operation *
21C. * will actually draw accordingly to last GDZOOM parameters *
22C. * *
23C. * If ZOOMFU or ZOOMFV is 0 (or negative) the zoom *
24C. * parameters (GZUA,...,GZVC in common GCDRAW) are reset *
25C. * *
26C. * It is now possible to show in different windows the *
27C. * `zoomed-views' obtained just clicking in different *
28C. * points of the main picture or of the zoomed-pictures *
29C. * *
30C. * ==>Called by : <USER>, <GXINT> *
31C. * Author: S. Giani 1992 *
32C. * *
33C. ******************************************************************
34C.
35#include "geant321/gcdraw.inc"
36C.
37C. ------------------------------------------------------------------
38C.
39 DIMENSION RVAL(2)
40 CHARACTER*4 KLSA
41*
42 IPX1=1
43 IPXSAV=0
44 INGR=0
45 ISTR=0
46 10 GZUA=1
47 GZVA=1
48 GZUB=0
49 GZVB=0
50 GZUC=0
51 GZVC=0
52 MO=0
53 CALL IGLOC2(1,NT,UZ1,VZ1,UZ2,VZ2,ISTAT,'R')
54 IF (ISTAT.EQ.0)THEN
55*** CALL IGCHWK(9,0,0,600,600)
56 GZUA=1
57 GZVA=1
58 GZUB=0
59 GZVB=0
60 GZUC=0
61 GZVC=0
62 GO TO 999
63 ENDIF
64 PLTX=20.
65 PLTY=20.
66 IF (UZ2-UZ1.EQ.0.) UZ2=UZ1+PLTX*.005
67 IF (VZ2-VZ1.EQ.0.) VZ2=VZ1+PLTY*.005
68 ZOOMFU=PLTX/ABS(UZ2-UZ1)
69 ZOOMFV=PLTY/ABS(VZ2-VZ1)
70 ZZFU=ZOOMFU
71 ZZFV=ZOOMFV
72 UUZ0=(UZ2+UZ1)*.5
73 VVZ0=(VZ2+VZ1)*.5
74 UU0=(ABS(UZ2-UZ1))*.5
75 VV0=20.-(ABS(VZ2-VZ1))*.5
76*** CALL IDAWK(1)
77 GZUA=GZUA*ZOOMFU
78 GZVA=GZVA*ZOOMFV
79 GZUB=(GZUB+GZUC)*ZOOMFU
80 GZVB=(GZVB+GZVC)*ZOOMFV
81 GZUC=UU0-UUZ0*ZOOMFU
82 GZVC=VV0-VVZ0*ZOOMFV
83 CALL IGQWK(1,'MXDS',RVAL)
84 ISU1=UZ1*RVAL(1)*.05
85 ISV1=(20.-VZ1)*RVAL(2)*.05
86 ISU21=(UZ2-UZ1)*RVAL(1)*.05
87 ISV21=(VZ1-VZ2)*RVAL(2)*.05
88 IPXSAV=2+IPXSAV
89 CALL IGPXMP(IPXSAV,ISU21,ISV21,'OC')
90 CALL IGPXMP(IPXSAV,ISU1,ISV1,'S')
91 IPX1=2+IPX1
92* CALL GDSHOW(ISEL1)
93 CALL IGPXMP(IPX1,ISU21,ISV21,'O')
94*** CALL IGCHWK(9,ISU1,ISV1,ISU21,ISV21)
95*** CALL IOPWK(2,1,9)
96*** CALL IACWK(2)
97 CALL GDSHOW(ISEL1)
98 CALL IGPXMP(IPX1,ISU1,ISV1,'CDR')
99 20 CONTINUE
100 CALL IRQLC(1,MO,JISTA,NT,PX,PY)
101 IF(MO.NE.-2.AND.MO.NE.2)THEN
102 IF(JISTA.EQ.0)THEN
103*** CALL IDAWK(2)
104*** CALL ICLWK(2)
105*** CALL IACWK(1)
106 IF(INGR.EQ.1)THEN
107 CALL IGPXMP(IPXSAV,ISU1,ISV1,'DR')
108 ELSE
109 CALL IGPXMP(IPXSAV,IPXX,IPYY,'DR')
110 ENDIF
111 GOTO 10
112 ELSEIF(JISTA.EQ.1)THEN
113 INGR=1
114 ISTR=0
115 IF(KLSA.EQ.'ON')THEN
116 MO=-2
117 ELSE
118 MO=2
119 ENDIF
120 GZUA=1
121 GZVA=1
122 GZUB=0
123 GZVB=0
124 GZUC=0
125 GZVC=0
126 ZOOMFU=(.5*PY*PLTX)/ABS(UZ2-UZ1)
127 ZOOMFV=(.5*PY*PLTY)/ABS(VZ2-VZ1)
128 ZZFU=ZOOMFU
129 ZZFV=ZOOMFV
130 GZUA=GZUA*ZOOMFU
131 GZVA=GZVA*ZOOMFV
132 GZUB=(GZUB+GZUC)*ZOOMFU
133 GZVB=(GZVB+GZVC)*ZOOMFV
134 GZUC=UU0-UUZ0*ZOOMFU
135 GZVC=VV0-VVZ0*ZOOMFV
136*** CALL ISFAIS(1)
137*** CALL ISFACI(0)
138*** CALL IGBOX(0.,20.,20.,0.)
139 IPX1=IPX1+2
140 CALL IGPXMP(IPX1,ISU21,ISV21,'O')
141 CALL GDSHOW(ISEL1)
142 CALL IGPXMP(IPX1,ISU1,ISV1,'CDR')
143 GOTO 20
144 ELSEIF(JISTA.EQ.2)THEN
145 ISTR=1
146 INGR=0
147 IF(KLSA.EQ.'ON')THEN
148 MO=-2
149 ELSE
150 MO=2
151 ENDIF
152 GZUA=1
153 GZVA=1
154 GZUB=0
155 GZVB=0
156 GZUC=0
157 GZVC=0
158 UUZ0=PX
159 VVZ0=PY
160 GZUA=GZUA*ZOOMFU
161 GZVA=GZVA*ZOOMFV
162 GZUB=(GZUB+GZUC)*ZOOMFU
163 GZVB=(GZVB+GZVC)*ZOOMFV
164 GZUC=UU0-UUZ0*ZOOMFU
165 GZVC=VV0-VVZ0*ZOOMFV
166 IPX1=IPX1+2
167 CALL IGPXMP(IPX1,ISU21,ISV21,'O')
168 CALL GDSHOW(ISEL1)
169 IPXX=PX*RVAL(1)*.05-ISU21*.5
170 IPYY=(20.-PY)*RVAL(2)*.05-ISV21*.5
171 CALL IGPXMP(IPX1,IPXX,IPYY,'C')
172 CALL IGPXMP(IPXSAV,ISU1,ISV1,'DR')
173 IPXSAV=IPXSAV+2
174 CALL IGPXMP(IPXSAV,ISU21,ISV21,'OC')
175 CALL IGPXMP(IPXSAV,IPXX,IPYY,'S')
176 CALL IGPXMP(IPX1,IPXX,IPYY,'DR')
177 GOTO 20
178 ENDIF
179 ELSE
180 IF(JISTA.EQ.0)THEN
181 IF(INGR.EQ.1)THEN
182* CALL IGPXMP(IPXSAV,ISU1,ISV1,'DR')
183 MO=0
184 GOTO 20
185 ELSE
186* CALL IGPXMP(IPXSAV,IPXX,IPYY,'DR')
187 MO=0
188 ISU1=IPXX
189 ISV1=IPYY
190 GOTO 20
191 ENDIF
192* GOTO 15
193 ELSEIF((JISTA.EQ.-1.AND.INGR.EQ.1).OR. (JISTA.GT.0.AND.INGR.EQ
194 + .1.AND.MO.EQ.2))THEN
195 GZUA=1
196 GZVA=1
197 GZUB=0
198 GZVB=0
199 GZUC=0
200 GZVC=0
201 ZOOMFU=(.5*PY*PLTX)/ABS(UZ2-UZ1)
202 ZOOMFV=(.5*PY*PLTY)/ABS(VZ2-VZ1)
203 ZZFU=ZOOMFU
204 ZZFV=ZOOMFV
205 GZUA=GZUA*ZOOMFU
206 GZVA=GZVA*ZOOMFV
207 GZUB=(GZUB+GZUC)*ZOOMFU
208 GZVB=(GZVB+GZVC)*ZOOMFV
209 GZUC=UU0-UUZ0*ZOOMFU
210 GZVC=VV0-VVZ0*ZOOMFV
211* CALL ICLRWK(2,1)
212*** CALL ISFAIS(1)
213*** CALL ISFACI(0)
214*** CALL IGBOX(0.,20.,20.,0.)
215 IPX1=IPX1+2
216 CALL IGPXMP(IPX1,ISU21,ISV21,'O')
217 CALL GDSHOW(ISEL1)
218 CALL IGPXMP(IPX1,ISU1,ISV1,'CDR')
219 GOTO 20
220 ELSEIF((JISTA.EQ.-1.AND.ISTR.EQ.1).OR. (JISTA.GT.0.AND.ISTR.EQ
221 + .1.AND.MO.EQ.2))THEN
222 GZUA=1
223 GZVA=1
224 GZUB=0
225 GZVB=0
226 GZUC=0
227 GZVC=0
228 UUZ0=PX
229 VVZ0=PY
230 GZUA=GZUA*ZOOMFU
231 GZVA=GZVA*ZOOMFV
232 GZUB=(GZUB+GZUC)*ZOOMFU
233 GZVB=(GZVB+GZVC)*ZOOMFV
234 GZUC=UU0-UUZ0*ZOOMFU
235 GZVC=VV0-VVZ0*ZOOMFV
236 IPX1=IPX1+2
237 CALL IGPXMP(IPX1,ISU21,ISV21,'O')
238 CALL GDSHOW(ISEL1)
239 CALL IGPXMP(IPX1,IPXX,IPYY,'C')
240 CALL IGPXMP(IPXSAV,IPXX,IPYY,'DR')
241 IPXX=PX*RVAL(1)*.05-ISU21*.5
242 IPYY=(20.-PY)*RVAL(2)*.05-ISV21*.5
243 IPXSAV=IPXSAV+2
244 CALL IGPXMP(IPXSAV,ISU21,ISV21,'OC')
245 CALL IGPXMP(IPXSAV,IPXX,IPYY,'S')
246 CALL IGPXMP(IPX1,IPXX,IPYY,'DR')
247 GOTO 20
248 ENDIF
249 ENDIF
250C
251 999 END