xtrini
C XTRINI SOURCE CB215821 21/07/12 21:15:25 11074 C INTERFACE POUR XWINDOW C C C C 1995 option FACE P.PEGON JRC-ISPRA IMPLICIT INTEGER(I-N) EXTERNAL LONG -INC PPARAM -INC CCOPTIO -INC CCTRACE CHARACTER*(18) HEGEND(4) CHARACTER*(500) KEGEND EQUIVALENCE(KEGEND,IEGEND) EQUIVALENCE(HEGEND,JEGEND) CHARACTER*(LOCHAI) TITRS LOGICAL VALEU,FENE,valeus DIMENSION XTR(1),YTR(1) DIMENSION XMAT(3,3) EQUIVALENCE (CHmess,ICHmes) save chmess,ichmes,titrs,valeus SAVE KEGEND,KCASE,KLONG SAVE mcouma,miso SAVE iret SAVE IDEFO SAVE DESSIN,DESSIC SAVE NBOPD,NBPD,NBCHRD,LTITRE SAVE IBOPD,IBPD,IBCHRD SEGMENT DESSIN LOGICAL VALEUR,FENET REAL XMIN,XXAX,YMIN,YYAX REAL OXMIN,OXXAX,OYMIN,OYYAX INTEGER NBOP,NBP,NBCHR INTEGER IOPER(NBOPD),IXINFO(2,NBPD) REAL X(NBPD),Y(NBPD),Z(NBPD) ENDSEGMENT * SEGMENT DESSIC CHARACTER*(NBCHRD) CARACT ENDSEGMENT POINTEUR CESSIN.DESSIN POINTEUR CESSIC.DESSIC * * DECLARATION POUR LGI DIMENSION Q(20),ICOLT(9) -INC CCREEL C+PPf (FACE) DIMENSION ITCODP(6),ITCODM(6) DATA ITCODP/3,1,5,4,6,2/ DATA ITCODM/2,6,1,4,3,5/ C+PPf DATA ICOLT/0,1,2,5,3,6,4,7,8/ DATA HEGEND/' ', > ' Framemaker ', > 'PostScript couleur', > ' PostScript NB '/ DATA MISO/0/ * Pour le lgi verification des bornes C INITIALISATION incr=0 chmess=' ' * OUVERTURE XWINDOW CALL XOPEN(NCOUMA,ICOSC,IOPOLI) * si ncouma = 0 pas de display on tente le lgi mcouma=ncouma TITRS=TITR NBPD=5000 NBOPD=5000 NBCHRD=5000 SEGINI DESSIN,DESSIC ENDIF TITRS=TITR valeus=valeu RETURN ** C====================================================================== ENTRY XDFENE(XMI,XXA,YMI,YYA,XR1,XR2,YR1,YR2,FENE) * DEFINITION FENETRE * reinitialisation du dessin if (mcouma.eq.0) return IBOPD=0 IBPD=0 IBCHRD=0 NBPD=5000 NBOPD=5000 NBCHRD=5000 SEGADJ DESSIN,DESSIC NBOP=0 NBCHR=0 NBP=0 TITRE=TITRS VALEUR=valeus * DEBUT DE DESSIN XR1=XMI XR2=XXA YR1=YMI YR2=YYA FENET=FENE XMIN=XMI XXAX=XXA YMIN=YMI YYAX=YYA OXMIN=XMI OXXAX=XXA OYMIN=YMI OYYAX=YYA RETURN ** C====================================================================== cbp ENTRY XTRLAB(XT,YT,CARAC,NCARR,HAUT,ipoli) cbp : ipoli est le 3 eme argument de xopen c (les 2 premiers étant ncouma et iscreen) * ECRITURE TEXT CODE OPERATION 1 1 POINT DES CARACTERES NBOP=NBOP+2 IF (NBOP.GT.NBOPD) THEN NBOPD=NBOPD+5000 SEGADJ DESSIN ENDIF IOPER(NBOP-1)=1 IOPER(NBOP)=NCAR NBP=NBP+1 IF (NBP.GT.NBPD) THEN NBPD=NBPD+5000 SEGADJ DESSIN ENDIF X(NBP)=XT Y(NBP)=YT Z(NBP)=0 cbp: on stocke ANGLE + IALIGN de INFOTR(1 et 2) dans IXINFO c et on n utilisera pour l instant qu en cas de sortie PS... IXINFO(1,NBP)=INFOTR(1) IXINFO(2,NBP)=INFOTR(2) c if(INFOTR(1).ne.0.or.INFOTR(1).ne.0.) write(6,*) c &'CARAC=',CARAC(1:NCAR),' IXINFO=',IXINFO(1,NBP),IXINFO(2,NBP) NBCHR=NBCHR+NCAR IF (NBCHR.GT.NBCHRD) THEN NBCHRD=NBCHRD+5000 SEGADJ DESSIC ENDIF RETURN ** C====================================================================== ENTRY XCHCOU(JCOLO) * CHANGEMENT DE COULEUR CODE OPERATION 2 1 ENTIER NBOP=NBOP+2 IF (NBOP.GT.NBOPD) THEN NBOPD=NBOPD+5000 SEGADJ DESSIN ENDIF IOPER(NBOP-1)=2 IOPER(NBOP)=JCOLO RETURN ** C====================================================================== ENTRY XINSEG(JSEG,IRESS) * CHANGEMENT SEGMENT CODE OPERATION 3 1 ENTIER NBOP=NBOP+2 IF (NBOP.GT.NBOPD) THEN NBOPD=NBOPD+5000 SEGADJ DESSIN ENDIF IOPER(NBOP-1)=3 IOPER(NBOP)=JSEG RETURN ** C====================================================================== ENTRY XPOLRL(NTRSTU,XTR,YTR) * POLYLINE CODE OPERATION 4 NBDE POINTS POINTS NBOP=NBOP+2 IF (NBOP.GT.NBOPD) THEN NBOPD=NBOPD+5000 SEGADJ DESSIN ENDIF IOPER(NBOP-1)=4 IOPER(NBOP)=NTRSTU NBP=NBP+NTRSTU IF (NBP.GT.NBPD) THEN NBPD=NBPD+5000 SEGADJ DESSIN ENDIF DO 10 I=1,NTRSTU X(NBP-NTRSTU+I)=XTR(I) Y(NBP-NTRSTU+I)=YTR(I) 10 CONTINUE RETURN ** C====================================================================== ENTRY XTRFAC(NTRSTU,XTR,YTR,ZN,ICOLE,IEFF) * FACETTE CODE OPERATION 5 NBDE POINTS COULEUR POINTS C PPf NBOP=NBOP+3 NBOP=NBOP+4 IF (NBOP.GT.NBOPD) THEN NBOPD=NBOPD+5000 SEGADJ DESSIN ENDIF C PPf IOPER(NBOP-2)=5 IOPER(NBOP-3)=5 C PPf IOPER(NBOP-1)=NTRSTU IOPER(NBOP-2)=NTRSTU C PPf IOPER(NBOP)=ICOLE IOPER(NBOP-1)=ICOLE C+PPf ZZN=ABS(ZN/REAL(XPI)*2) IF (ZZN.GT.0.99999)ZZN=0.99999 IZN=INT(6*ZZN)+1 IOPER(NBOP)=ITCODP(IZN) C write (6,*)'ZN, ZZN, IZN, IOPER(NBOP)', ZN, ZZN, IZN, IOPER(NBOP) C+PPf NBP=NBP+NTRSTU IF (NBP.GT.NBPD) THEN NBPD=NBPD+5000 SEGADJ DESSIN ENDIF DO 20 I=1,NTRSTU X(NBP-NTRSTU+I)=XTR(I) Y(NBP-NTRSTU+I)=YTR(I) Z(NBP-NTRSTU+I)=0 20 CONTINUE IEFF=1 * IEFF=0 signifie qu'on ne met pas en noir les traits (cas des iso RETURN ** C====================================================================== ENTRY XTRAIS(NP,XTR,YTR,ICOLE) * FACETTE CODE OPERATION 6 NBDE POINTS POINTS NBOP=NBOP+3 IF (NBOP.GT.NBOPD) THEN NBOPD=NBOPD+5000 SEGADJ DESSIN ENDIF IOPER(NBOP-2)=6 IOPER(NBOP-1)=NP IOPER(NBOP)=ICOLE NBP=NBP+NP IF (NBP.GT.NBPD) THEN NBPD=NBPD+5000 SEGADJ DESSIN ENDIF DO 30 I=1,NP X(NBP-NP+I)=XTR(I) Y(NBP-NP+I)=YTR(I) Z(NBP-NP+I)=0 30 CONTINUE RETURN ** C====================================================================== * AFFICHAGE DU DESSIN ATTENTE D'EVENEMENT C====================================================================== ENTRY XTRDIG(XRO,XCOL,ICLE) ICLE=0 IRDIG=1 GOTO 35 ENTRY XTRAFF(ICLE) SEGACT DESSIN,DESSIC ICLE=0 IRDIG=0 35 CONTINUE * AFFICHAGE DU DESSIN ATTENTE D'EVENEMENT IDAFF=0 ITYP=0 250 CONTINUE IBOP=IBOPD IBP=IBPD IBCHR=IBCHRD IF (IBOPD.EQ.0) THEN ENDIF CALL XFENET(XMIN,XXAX,YMIN,YYAX,FENET) 99 CONTINUE 100 CONTINUE IBOP=IBOP+1 IF (IBOP.GT.NBOP) GOTO 200 ICOD=IOPER(IBOP) IF (ICOD.EQ.1) THEN IBOP=IBOP+1 NBCAR=IOPER(IBOP) IBP=IBP+1 CALL XRLABL(X(IBP),Y(IBP),ICHAIN,NBCAR) IBCHR=IBCHR+NBCAR ELSEIF (ICOD.EQ.2) THEN IBOP=IBOP+1 ICOUL=IOPER(IBOP) CALL XHCOUL(ICOUL) ELSEIF (ICOD.EQ.3) THEN * OUVERTURE SEGMENT IBOP=IBOP+1 ELSEIF (ICOD.EQ.4) THEN IBOP=IBOP+1 N=IOPER(IBOP) CALL XOLRL(N,X(IBP+1),Y(IBP+1)) IBP=IBP+N ELSEIF (ICOD.EQ.5) THEN IBOP=IBOP+1 N=IOPER(IBOP) IBOP=IBOP+1 ICOL=IOPER(IBOP) CALL XHCOUL(ICOL) C+PPf IBOP=IBOP+1 IZN=IOPER(IBOP) C+PPf C PPf CALL XRFACE(N,X(IBP+1),Y(IBP+1)) CALL XRFACE(N,X(IBP+1),Y(IBP+1),IZN) IBP=IBP+N ELSEIF (ICOD.EQ.6) THEN IBOP=IBOP+1 N=IOPER(IBOP) IBOP=IBOP+1 ICO=IOPER(IBOP) if (ico.gt.1000.or.ico.lt.0) then * write (6,*) '1 - ico incorrect ',ico ico=0 endif C palette des iso if (mcouma.ge.16) ico=ico+100 CALL XHCOUL(ICO) if (N.GT.2) CALL XRAISO(N,X(IBP+1),Y(IBP+1)) if (N.EQ.2) CALL XOLRL(N,X(IBP+1),Y(IBP+1)) IBP=IBP+N ELSEIF (ICOD.EQ.7) THEN IBOP=IBOP+1 IFENJ=IOPER(IBOP) CALL XVALIS(IFENJ,IRESV,NHH) ELSEIF (ICOD.EQ.8) THEN * menu en blanc CALL XHCOUL(7) CALL XENU(IEGEND,KCASE,KLONG) ELSEIF (ICOD.EQ.9) THEN IBOP=IBOP+1 IMAG=IOPER(IBOP) CALL XRIMAG(IMAG) ELSEIF (ICOD.EQ.10) THEN IBOP=IBOP+1 ITYP=IOPER(IBOP) IBOP=IBOP+1 NBIMAG=IOPER(IBOP) CALL XRANIM(ITYP,NBIMAG) *** CALL XRSWAP(IRET) ELSEIF (ICOD.EQ.11) THEN * menu en blanc If(icosc.eq.1) then CALL XHCOUL(7) else CALL XHCOUL(0) endif ENDIF GOTO 100 200 CONTINUE IBPD=IBP IBOPD=IBOP-1 IBCHRD=IBCHR * cas animation et affichage initial. on swappe pour voir qqchose ** IF (ITYP.GT.0.and.iret.eq.0) CALL XRSWAP(IRET) iret=0 ICLE=-2 * on affiche un message eventuel if (chmess.ne.' ') then CALL XVALIS(3,IRESV,NHH) CALL XHCOUL(7) CALL XRLABL(0.,0.,ICHmes,NBCAR) endif CALL XRAFF(YRO,YCOL,IRDIG,ICLE) IF (IRDIG.EQ.1) THEN XRO=YRO XCOL=YCOL ENDIF * reaffichage IF (ICLE.EQ.-1) THEN IBPD=0 IBOPD=0 IBCHRD=0 GOTO 250 ENDIF * on invalide le message eventuel chmess=' ' * CLE INACTIVE IF (ICLE.GE.0) THEN IF (KEGEND(ICLE*KLONG+1:(ICLE+1)*KLONG).EQ.' ') ICLE=-2 IF(KEGEND(1+ICLE*KLONG+(klong-8)/2: # (ICLE+1)*KLONG).EQ.'Softcopy') GOTO 700 ENDIF ** IF (ICLE.EQ.7.AND.KCASE.EQ.9) THEN iou=9 ipuo=1+klong*(iou-1) * write(6,*) Kegend(IPUO:IPUO+10) * write(6,*)' icle ' , icle ipuo=1+klong*(iou-1) IF(ICLE.EQ.8.AND.Kegend(ipuo:ipuo+10).eq.' Animation') $ THEN * write(6,*) ' on tente lanimation ' * ANIMATION IDES=0 INCR=1 310 CONTINUE IDES=IDES+INCR IF (IDES.EQ.NBIMAG) INCR=-1 IF (IDES.EQ.1) INCR= 1 IBOP=0 IBP=0 IBCHR=0 ITRAC=0 CALL XFENET(XMIN,XXAX,YMIN,YYAX,FENET) 301 CONTINUE IBOP=IBOP+1 IF (IBOP.GT.NBOP) GOTO 302 ICOD=IOPER(IBOP) IF (ICOD.EQ.1) THEN IBOP=IBOP+1 NBCAR=IOPER(IBOP) IBP=IBP+1 IF (ITRAC.NE.0) CALL XRLABL(X(IBP),Y(IBP),ICHAIN,NBCAR) IBCHR=IBCHR+NBCAR ELSEIF (ICOD.EQ.2) THEN IBOP=IBOP+1 ICOUL=IOPER(IBOP) IF (ITRAC.NE.0) CALL XHCOUL(ICOUL) ELSEIF (ICOD.EQ.3) THEN * OUVERTURE SEGMENT IBOP=IBOP+1 ELSEIF (ICOD.EQ.4) THEN IBOP=IBOP+1 N=IOPER(IBOP) IF (ITRAC.NE.0) CALL XOLRL(N,X(IBP+1),Y(IBP+1)) IBP=IBP+N ELSEIF (ICOD.EQ.5) THEN IBOP=IBOP+1 N=IOPER(IBOP) IBOP=IBOP+1 ICOL=IOPER(IBOP) C+PPf IBOP=IBOP+1 C+PPf IF (ITRAC.NE.0) THEN CALL XHCOUL(ICOL) C+PPf IZN=IOPER(IBOP) C+PPf C PPf CALL XRFACE(N,X(IBP+1),Y(IBP+1)) CALL XRFACE(N,X(IBP+1),Y(IBP+1),IZN) ENDIF IBP=IBP+N ELSEIF (ICOD.EQ.6) THEN IBOP=IBOP+1 N=IOPER(IBOP) IBOP=IBOP+1 ICO=IOPER(IBOP) if (ico.gt.1000.or.ico.lt.0) then * write (6,*) '2 - ico incorrect ',ico ico=0 endif if (mcouma.ge.16) ico=ico+100 IF (ITRAC.NE.0) THEN CALL XHCOUL(ICO) if (N.GT.2) CALL XRAISO(N,X(IBP+1),Y(IBP+1)) if (N.EQ.2) CALL XOLRL(N,X(IBP+1),Y(IBP+1)) ENDIF IBP=IBP+N ELSEIF (ICOD.EQ.7) THEN IBOP=IBOP+1 IFENJ=IOPER(IBOP) IF (ITRAC.NE.0) CALL XVALIS(IFENJ,IRESV,NHH) ELSEIF (ICOD.EQ.8) THEN ELSEIF (ICOD.EQ.9) THEN IBOP=IBOP+1 IMAG=IOPER(IBOP) IF (IDES.EQ.IMAG) ITRAC=1 IF (IDES.NE.IMAG) ITRAC=0 ELSEIF (ICOD.EQ.10) THEN IBOP=IBOP+1 ITYP=IOPER(IBOP) IBOP=IBOP+1 NBIMAG=IOPER(IBOP) ELSEIF (ICOD.EQ.11) THEN ENDIF GOTO 301 302 CONTINUE CALL XRSWAP(IRET) IF (IRET.EQ.0.AND.(ITYP.NE.1.OR.INCR.EQ.1)) GOTO 310 CALL XENU(IEGEND,KCASE,KLONG) GOTO 250 ENDIF RETURN 700 CONTINUE * on propose le choix de la softcopie CALL XHCOUL(7) CALL XENU(JEGEND,4,18) CALL XRAFF(YRO,YCOL,IRDIG,ICLE) if (icle.le.0) goto 700 icle=icle+1 * on signale qu'on a compris l'instruction CALL XVALIS(3,IRESV,NHH) CALL XHCOUL(0) CALL XRLABL(0.,0.,ICHAIN,80) * on repositionne le menu CALL XENU(IEGEND,KCASE,KLONG) C--------------------------------------------------- * impression du dessin (Softcopy) * on reboucle sur la structure du trace IDAFF=0 ITYP=0 750 CONTINUE IBOP=0 IBP=0 IBCHR=0 if (icle.eq.4) then CALL sdfene(XMIN,XXAX,YMIN,YYAX,XXR1,XXR2,YYR1,YYR2,FENET) CALL sfvali(0,iresv,nhh,MISO) elseif (icle.eq.3) then CALL cdfene(XMIN,XXAX,YMIN,YYAX,XXR1,XXR2,YYR1,YYR2,FENET) CALL cfvali(0,iresv,nhh,MISO) elseif (icle.eq.2) then CALL mdfene(XMIN,XXAX,YMIN,YYAX,XXR1,XXR2,YYR1,YYR2,FENET) endif c boucle sur le objets IBOP 760 CONTINUE IBOP=IBOP+1 IF (IBOP.GT.NBOP) then if (icle.eq.4) then call straff(ibid) elseif (icle.eq.3) then call ctraff(ibid) elseif (icle.eq.2) then call mtraff(ibid) endif GOTO 200 endif ICOD=IOPER(IBOP) c il s'agit d un label IF (ICOD.EQ.1) THEN IBOP=IBOP+1 NBCAR=IOPER(IBOP) IBP=IBP+1 INFOTR(1)=IXINFO(1,IBP) INFOTR(2)=IXINFO(2,IBP) if (icle.eq.4) then elseif (icle.eq.3) then elseif (icle.eq.2) then endif INFOTR(1)=0 INFOTR(2)=0 IBCHR=IBCHR+NBCAR c il s'agit d une couleur ELSEIF (ICOD.EQ.2) THEN IBOP=IBOP+1 ICOUL=IOPER(IBOP) if (icle.eq.4) then CALL schcou(ICOUL) elseif (icle.eq.3) then CALL cchcou(ICOUL) elseif (icle.eq.2) then CALL mchcou(ICOUL) endif ELSEIF (ICOD.EQ.3) THEN * OUVERTURE SEGMENT IBOP=IBOP+1 ELSEIF (ICOD.EQ.4) THEN IBOP=IBOP+1 N=IOPER(IBOP) if (icle.eq.4) then CALL spolrl(N,X(IBP+1),Y(IBP+1)) elseif (icle.eq.3) then CALL cpolrl(N,X(IBP+1),Y(IBP+1)) elseif (icle.eq.2) then CALL mpolrl(N,X(IBP+1),Y(IBP+1)) endif IBP=IBP+N ELSEIF (ICOD.EQ.5) THEN IBOP=IBOP+1 N=IOPER(IBOP) IBOP=IBOP+1 ICOL=IOPER(IBOP) if (icle.eq.4) then CALL strfac(N,X(IBP+1),Y(IBP+1),Z(IBP+1),icol,ibid) elseif (icle.eq.3) then CALL ctrfac(N,X(IBP+1),Y(IBP+1),Z(IBP+1),icol,ibid) elseif (icle.eq.2) then C+PPf IZN=IOPER(IBOP+1) IZN=ITCODM(IZN) ZZN=(IZN-0.99999)*REAL(XPI)/12 C+PPf C PPf CALL mtrfac(N,X(IBP+1),Y(IBP+1),Z(IBP+1),icol,ibid) CALL mtrfac(N,X(IBP+1),Y(IBP+1),ZZN,icol,ibid) endif C+PPf IBOP=IBOP+1 C+PPf IBP=IBP+N ELSEIF (ICOD.EQ.6) THEN IBOP=IBOP+1 N=IOPER(IBOP) IBOP=IBOP+1 ICO=IOPER(IBOP) if (icle.eq.4) then CALL strais(N,X(IBP+1),Y(IBP+1),ico) elseif (icle.eq.3) then CALL ctrais(N,X(IBP+1),Y(IBP+1),ico) elseif (icle.eq.2) then CALL mtrais(N,X(IBP+1),Y(IBP+1),ico) endif IBP=IBP+N ELSEIF (ICOD.EQ.7) THEN IBOP=IBOP+1 IFENJ=IOPER(IBOP) if (icle.eq.4) then CALL sfvali(IFENJ,IRESV,NHH,miso) elseif (icle.eq.3) then CALL cfvali(IFENJ,IRESV,NHH,miso) elseif (icle.eq.2) then CALL mfvali(IFENJ,IRESV,NHH) endif ELSEIF (ICOD.EQ.8) THEN * pas de menu ELSEIF (ICOD.EQ.9) THEN * pas de nouvelle image IBOP=IBOP+1 ELSEIF (ICOD.EQ.10) THEN IBOP=IBOP+1 ITYP=IOPER(IBOP) IBOP=IBOP+1 NBIMAG=IOPER(IBOP) ELSEIF (ICOD.EQ.11) THEN * menu en blanc ENDIF goto 760 ** C====================================================================== * * MENU on sauve le contenu * KCASE=NCASE KLONG=LLONG * on rajoute une touche PS (certains cas seront a exclure) kcase=kcase+1 KEGEND(1+KLONG*(kcase-1):KLONG*kcase)=' ' KEGEND(1+KLONG*(kcase-1)+(klong-8)/2:KLONG*kcase)='Softcopy' C#MC 05/01/99 utilite ? IDEFOR inconuu... C IDEFO=IDEFOR * ON SE MET DANS LE SEGMENT 0 * CHANGEMENT SEGMENT CODE OPERATION 3 1 ENTIER NBOP=NBOP+2 IF (NBOP.GT.NBOPD) THEN NBOPD=NBOPD+5000 SEGADJ DESSIN ENDIF IOPER(NBOP-1)=3 IOPER(NBOP)=0 NBOP=NBOP+1 IF (NBOP.GT.NBOPD) THEN NBOPD=NBOPD+5000 SEGADJ DESSIN ENDIF IOPER(NBOP)=8 RETURN ** ENTRY XTRANI(ITYPI,NBIMAH) NBOP=NBOP+3 IF (NBOP.GT.NBOPD) THEN NBOPD=NBOPD+5000 SEGADJ DESSIN ENDIF IOPER(NBOP-2)=10 IOPER(NBOP-1)=ITYPI IOPER(NBOP)=NBIMAH RETURN ** ENTRY XTRIMA(IMAGI) NBOP=NBOP+2 IF (NBOP.GT.NBOPD) THEN NBOPD=NBOPD+5000 SEGADJ DESSIN ENDIF IOPER(NBOP-1)=9 IOPER(NBOP)=IMAGI RETURN ** ENTRY XFVALI(IFENI,IRESU,NH,NISO) * sauver le nb d'iso MISO=NISO * CHANGEMENT DE VIEW PORT IF (IFENI.EQ.1) THEN NBOP=NBOP+2 IF (NBOP.GT.NBOPD) THEN NBOPD=NBOPD+5000 SEGADJ DESSIN ENDIF IOPER(NBOP-1)=7 IOPER(NBOP)=IFENI ENDIF NH=31 RETURN ** C====================================================================== ENTRY XZOOM(IZOOM,XMI,XMA,YMI,YMA) * mise à jour du cadre * IZOOM=1 zoom * IZOOM=-1 zoom inverse * IZOOM=0 pan if (izoom.eq.1) then XMIN=XMI XXAX=XMA YMIN=YMI YYAX=YMA endif if (izoom.eq.-1) then AXMIN=XMIN-(XMI-XMIN)*(XXAX-XMIN)/(XMA-XMI) AXXAX=AXMIN+(XXAX-XMIN)*(XXAX-XMIN)/(XMA-XMI) XMIN=AXMIN XXAX=AXXAX AYMIN=YMIN-(YMI-YMIN)*(YYAX-YMIN)/(YMA-YMI) AYYAX=AYMIN+(YYAX-YMIN)*(YYAX-YMIN)/(YMA-YMI) YMIN=AYMIN YYAX=AYYAX endif if (izoom.eq.0) then XMIN=XMIN-(XMA-XMI) XXAX=XXAX-(XMA-XMI) YMIN=YMIN-(YMA-YMI) YYAX=YYAX-(YMA-YMI) endif XMI=OXMIN XMA=OXXAX YMI=OYMIN YMA=OYYAX IBPD=0 IBOPD=0 IBCHRD=0 RETURN ** C====================================================================== ENTRY XINI(IRESU,ISORT,IQUALI,INUMNO,INUMEL,XMI,XMA,YMI,YMA) * RETOUR AU DESSIN INITIAL XMIN=OXMIN XXAX=OXXAX YMIN=OYMIN YYAX=OYYAX ISORT=0 IRESU=2 IBPD=0 IBOPD=0 IBCHRD=0 RETURN ** C====================================================================== ENTRY XCHANG(IRESU,ISORT,ICHANG,JSEG) IDSGT=0 * affichage desaffichage num noeuds elements qual IF (ICHANG.EQ.1) THEN IBON=1 IBOP=0 IBCHR=0 IBP=0 JBOP=0 JBCHR=0 JBP=0 300 CONTINUE IBOP=IBOP+1 IF (IBOP.GT.NBOP) GOTO 350 ICOD=IOPER(IBOP) IF (IBON.EQ.1) THEN JBOP=JBOP+1 IOPER(JBOP)=IOPER(IBOP) IF (ICOD.EQ.1) THEN * xrlabl IBOP=IBOP+1 JBOP=JBOP+1 IOPER(JBOP)=IOPER(IBOP) NBCAR=IOPER(IBOP) CARACT(JBCHR+1:JBCHR+NBCAR)=CARACT(IBCHR+1:IBCHR+NBCAR) IBCHR=IBCHR+NBCAR JBCHR=JBCHR+NBCAR IBP=IBP+1 JBP=JBP+1 X(JBP)=X(IBP) Y(JBP)=Y(IBP) Z(JBP)=Z(IBP) ELSEIF (ICOD.EQ.2) THEN * chcoul IBOP=IBOP+1 JBOP=JBOP+1 IOPER(JBOP)=IOPER(IBOP) ELSEIF (ICOD.EQ.3) THEN * OUVERTURE SEGMENT IBOP=IBOP+1 IF (IOPER(IBOP).EQ.JSEG) THEN IBON=0 * IL FAUDRA REPRENDRE LE DESSIN AU DEBUT IBOPD=0 IBPD=0 IBCHRD=0 * ON NE STOCKE PAS CE CHANGEMENT DE SEGMENT JBOP=JBOP-1 GOTO 300 ELSE JBOP=JBOP+1 IOPER(JBOP)=IOPER(IBOP) ENDIF ELSEIF (ICOD.EQ.4) THEN * polyline IBOP=IBOP+1 JBOP=JBOP+1 IOPER(JBOP)=IOPER(IBOP) N=IOPER(IBOP) DO 305 IIP=1,N IBP=IBP+1 JBP=JBP+1 X(JBP)=X(IBP) Y(JBP)=Y(IBP) Z(JBP)=Z(IBP) 305 CONTINUE ELSEIF (ICOD.EQ.5) THEN * face IBOP=IBOP+1 JBOP=JBOP+1 IOPER(JBOP)=IOPER(IBOP) N=IOPER(IBOP) IBOP=IBOP+1 JBOP=JBOP+1 IOPER(JBOP)=IOPER(IBOP) DO 307 IIP=1,N IBP=IBP+1 JBP=JBP+1 X(JBP)=X(IBP) Y(JBP)=Y(IBP) Z(JBP)=Z(IBP) 307 CONTINUE C+PPf IBOP=IBOP+1 JBOP=JBOP+1 IOPER(JBOP)=IOPER(IBOP) C+PPf ELSEIF (ICOD.EQ.6) THEN * iso IBOP=IBOP+1 JBOP=JBOP+1 IOPER(JBOP)=IOPER(IBOP) N=IOPER(IBOP) IBOP=IBOP+1 JBOP=JBOP+1 IOPER(JBOP)=IOPER(IBOP) DO 309 IIP=1,N IBP=IBP+1 JBP=JBP+1 X(JBP)=X(IBP) Y(JBP)=Y(IBP) Z(JBP)=Z(IBP) IOPER(JBOP)=IOPER(IBOP) 309 CONTINUE ELSEIF (ICOD.EQ.7) THEN * fvalis IBOP=IBOP+1 JBOP=JBOP+1 IOPER(JBOP)=IOPER(IBOP) ELSEIF (ICOD.EQ.8) THEN * menu ELSEIF (ICOD.EQ.9) THEN * changement image IBOP=IBOP+1 JBOP=JBOP+1 IOPER(JBOP)=IOPER(IBOP) ELSEIF (ICOD.EQ.10) THEN * initialisation animation IBOP=IBOP+2 JBOP=JBOP+2 IOPER(JBOP)=IOPER(IBOP) ELSEIF (ICOD.EQ.11) THEN ENDIF ELSE IF (ICOD.EQ.1) THEN * xrlabl IBOP=IBOP+1 NBCAR=IOPER(IBOP) IBCHR=IBCHR+NBCAR IBP=IBP+1 ELSEIF (ICOD.EQ.2) THEN * chcoul IBOP=IBOP+1 ELSEIF (ICOD.EQ.3) THEN * OUVERTURE SEGMENT ON REVIENT EN TETE IBOP=IBOP-1 IBON=1 GOTO 300 ELSEIF (ICOD.EQ.4) THEN * polyline IBOP=IBOP+1 N=IOPER(IBOP) IBP=IBP+N ELSEIF (ICOD.EQ.5) THEN * face IBOP=IBOP+1 N=IOPER(IBOP) IBOP=IBOP+1 C+PPf IBOP=IBOP+1 C+PPf IBP=IBP+N ELSEIF (ICOD.EQ.6) THEN * iso IBOP=IBOP+1 N=IOPER(IBOP) IBOP=IBOP+1 IBP=IBP+N ELSEIF (ICOD.EQ.7) THEN * fvalis IBOP=IBOP+1 ELSEIF (ICOD.EQ.8) THEN * menu ELSEIF (ICOD.EQ.9) THEN * changement image IBOP=IBOP+1 ELSEIF (ICOD.EQ.10) THEN * initialisation animation IBOP=IBOP+2 ELSEIF (ICOD.EQ.11) THEN ENDIF ENDIF GOTO 300 350 CONTINUE NBOP=JBOP NBP=JBP NBCHR=JBCHR ICHANG=0 ISORT=0 RETURN ELSE ISORT=1 IRESU=JSEG ICHANG=1 RETURN ENDIF ** C====================================================================== ENTRY XTRBOX(HAUTX,HAUTY) * INUTILISE RETURN ** C====================================================================== ENTRY XTREFF * INUTILISE RETURN ** C====================================================================== ENTRY XVAL(IRESU,ISORT,ISO) C#MC IF (ISO.NE.0.AND.IDEFO.EQ.0) THEN IF (ISO.NE.0) THEN IRESU=10 ISORT=1 ENDIF RETURN ** C====================================================================== ENTRY XMAJSE(IMAJ,IRESU,IQUALI,INUMNO,INUMEL) * INUTILISE RETURN ** ** C====================================================================== ENTRY XIMPR * INUTILISE RETURN ** C====================================================================== ENTRY XTRTIN * INUTILISE RETURN ** C====================================================================== ENTRY XFLGI * INUTILISE RETURN ** C====================================================================== ENTRY XTRMFI * INUTILISE RETURN ** C====================================================================== CHMESS=CARAC RETURN ** C====================================================================== ENTRY XTRGET(PROMPT,REPLY) CALL XVALIS(3,IRESV,NHH) IF(icosc.eq.1) then ico1=7 else ico1=8 endif CALL XHCOUL(ico1) CALL XRGET(ICHAIN,LPROMP,ICHAIN,LREPLY) REPLY=' ' RETURN ** C====================================================================== ENTRY XRCLIK(KCLICK) CALL XCLIK(KCLICK) END
© Cast3M 2003 - Tous droits réservés.
Mentions légales