]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/gdraw/gdlens.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / gdraw / gdlens.F
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)
13 C.
14 C.    ******************************************************************
15 C.    *                                                                *
16 C.    *       Zoom by the factors ZOOMFU,ZOOMFV                        *
17 C.    *       around screen coordinates UUZ0,VVZ0                      *
18 C.    *       and places the resulting picture at UU0,VV0              *
19 C.    *                                                                *
20 C.    *       After GDZOOM has been CALLed, any drawing operation      *
21 C.    *       will actually draw accordingly to last GDZOOM parameters *
22 C.    *                                                                *
23 C.    *       If ZOOMFU or ZOOMFV is 0 (or negative) the zoom          *
24 C.    *       parameters (GZUA,...,GZVC in common GCDRAW) are reset    *
25 C.    *                                                                *
26 C.    *       It is now possible to show in different windows the      *
27 C.    *       `zoomed-views' obtained just clicking in different       *
28 C.    *       points of the main picture or of the zoomed-pictures     *
29 C.    *                                                                *
30 C.    *    ==>Called by : <USER>, <GXINT>                              *
31 C.    *       Author: S. Giani 1992                                    *
32 C.    *                                                                *
33 C.    ******************************************************************
34 C.
35 #include "geant321/gcdraw.inc"
36 C.
37 C.    ------------------------------------------------------------------
38 C.
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
250 C
251   999 END