optdes
C OPTDES SOURCE SP204843 24/09/27 21:15:13 12017 & TTXX,TTXXX,TTYY,TTYYY,ZAXES,ZSEPAR,ZOPTIO,ZLEGEN,IEV, & DYN,NDIMT,CUR,NDIMT2,NC,INBEVO,ZMIMA,ZDATE,YMINI,YMAXI, & IPOSI,XPOSI,YPOSI,IGRIL) *============================================================= * * TESTS POUR L'EVOLUTION DE DESSIN * *============================================================= * * Modifications : * * 05 sept. 2007 Maugis * Maintien du segment AXE actif en modification * *============================================================= * * Entrée : Cf. dessin.eso * *============================================================= IMPLICIT LOGICAL (Z) IMPLICIT INTEGER (I-N) IMPLICIT REAL*8 (A-H,O-S,U-Y) -INC PPARAM -INC CCOPTIO -INC CCREEL -INC SMEVOLL -INC SMLREEL -INC CCGEOME -INC TMAXE -INC SMTABLE CHARACTER*(*) TITRE,TXTIT,TXAXE,TYAXE CHARACTER*(LOCHAI) BUFFER,CHOPT,TITOPT,TITOP2 C CHARACTER*(LOCHAI) TIME CHARACTER*8 CTYPE,CHVIDE,ETYPE,MTYPI,MTYPR,CHARR c LOGICAL VALEUR LOGICAL ZGRIL1,ZREMP2 REAL RXDIM,RYDIM,HMIN SEGMENT DYN LOGICAL ZTRACE(NDIMT) ENDSEGMENT SEGMENT CUR LOGICAL ZCUR(NDIMT2) ENDSEGMENT NOL = 25 ETYPE ='ENTIER ' CHVIDE =' ' ZREMP2 =.FALSE. *============================================================= * MARGE PROPORTIONNELLE A LA GRADUATION DE LA FENETRE USER *============================================================= * SEGACT AXE*MOD D=ABS(XSUP-XINF) IF (ZCARRE) THEN BG=0.14*REAL(D) BD=0.55*REAL(D) ELSE BG=0.10*REAL(D) BD=0.10*REAL(D) ENDIF D=ABS(YSUP-YINF) BH=0.08*REAL(D) BB=0.13*REAL(D) *============================================================= * DEFINITION FENETRE *============================================================= * c DIOCAD = taille du cadre include CCOPTIO XDIM = DIOCAD * .9D0*29.D0 / 30.D0 *1.134D0 YDIM = DIOCAD * .9D0*21.D0 / 30.D0 *1.08D0 IF (XSUP.LE.XINF) GOTO 950 IF (YSUP.LE.YINF) GOTO 950 RXDIM=XDIM RYDIM=YDIM IF (TXTIT.NE.' ') TITRE=TXTIT NCOUMA=NBCOUL c appel a trinit pour definir les bonnes ENTRY selon IOGRA c definition de la fenetre TTX1=REAL(XINF)-BG TTX2=REAL(XSUP)+BD TTX3=REAL(YINF)-BB TTX4=REAL(YSUP)+BH CALL DFENET (TTX1,TTX2,TTX3,TTX4,-1.,+1.,TTXX,TTXXX,TTYY,TTYYY, > .FALSE.) XX =DBLE(TTXX) XXX=DBLE(TTXXX) YY =DBLE(TTYY) YYY=DBLE(TTYYY) IF (TXAXE.NE.' ') TITREX=TXAXE IF (TYAXE.NE.' ') TITREY=TYAXE *============================================================= * CONSTRUCTION DE L'AXE *============================================================= CALL TRBOX(0.7,0.7) CALL TRBOX(1./0.7,1./0.7) *============================================================= * AFFICHAGES DIVERS *============================================================= * * AFFICHAGE DU MINIMUM ET DU MAXIMUM * IF (ZMIMA) THEN CALL TRBOX(0.7,0.7) TYY=REAL(YSUP)+BH/4. TXX=REAL(XINF+(XSUP-XINF)*2.D0/3.D0) BUFFER(1:10)='MINIMUM : ' WRITE (BUFFER(11:21),FMT='(G11.4)') YMINI CALL TRLABL (TXX,TYY,0.,BUFFER,21,HMIN) BUFFER(1:10)='MAXIMUM : ' TYY=YSUP+(BH/1.8) TXX=XINF+(XSUP-XINF)*2/3 WRITE (BUFFER(11:21),FMT='(G11.4)') YMAXI CALL TRLABL (TXX,TYY,0.,BUFFER,21,HMIN) CALL TRBOX(1./0.7,1./0.7) ENDIF * * AFFICHAGE DE LA DATE * IF (ZDATE) THEN CALL GIBDAT(JOUR,MOIS,IANNEE) iannee=mod(iannee,100) **TC TIME=FDATE() BUFFER(1:22)=' / /20 ' WRITE (BUFFER(4:5),FMT='(I2)') JOUR WRITE (BUFFER(7:8),FMT='(I2)') MOIS WRITE (BUFFER(12:13),FMT='(I2)') IANNEE **TC WRITE (BUFFER(15:22),FMT='(A8)') TIME(12:20) cbp : cette position ne me semble pas tres esthetique .... c TXX=TTXXX-0.98*(TTXXX-TTXX) c TYY=TTYY +0.02*(TTYYY-TTYY) IF (ZCARRE) THEN TXX=REAL(XSUP)-(13.5*.017*(XSUP-XINF)) ELSE TXX=REAL(XSUP)-(14.*.011*(XSUP-XINF)) ENDIF TYY=REAL(YSUP)+(.05*(YSUP-YINF)) CALL TRBOX(0.8,0.8) CALL TRLABL(TXX,TYY,0.,BUFFER(1:22),22,HMIN) CALL TRBOX(1./0.8,1./0.8) ENDIF *============================================================= * TRACE DES COURBES *============================================================= MEVOLL=IEV IF (IERR.NE.0) RETURN CTYPE(1:8)=' ' NCT=0 NLG=0 * * TRACES SEPARES ==================================== * IF (ZSEPAR) THEN IPTR=IEVOLL(NC) KEVOLL=IPTR * * RECHERCHE EVENTUELLE DES PARAMETRES SPECIFIQUES * IF (ZOPTIO) THEN # ZZ,III) IF (CTYPE(1:3).NE.'MOT') CHOPT='''' c valeurs par defaut IF(KEVTEX(1:4).EQ.' ') THEN TITOPT='PAS DE LEGENDE' ELSE TITOPT=KEVTEX ENDIF IDEB1=0 IFIN1=IGRAND ISTYL=0 c variables bidons IVALI=0 XVALI=0.D0 IRETI=0 IVALR=0 XVALR=0.D0 IRETR=0 MTYPI='MOT ' MTYPR=' ' ITITOP=0 CHARR=' ' c lecture d'un titre de legende * MTYPR,IVALR,XVALR,CHARR,ZZ,IRETR) IF(MTYPR(1:5).EQ.'TABLE')THEN MTAB1=IRETR CTYPE(1:8)=' ' # TITOP2, ZZ,III) IF(CTYPE(1:3).EQ.'MOT')TITOPT=TITOP2 ENDIF c lecture des points initial et final --> IDEB1 et IFIN1 MTYPR=' ' * MTYPR,IVALR,XVALR,CHARR,ZZ,IRETR) IF(MTYPR(1:5).EQ.'TABLE')THEN MTAB1=IRETR CTYPE(1:8)=' ' # CTYPE,IDEB1,XX,CHARR,ZZ,III) IF(CTYPE(1:6).NE.'ENTIER')IDEB1=0 ENDIF MTYPR=' ' * MTYPR,IVALR,XVALR,CHARR,ZZ,IRETR) IF(MTYPR(1:5).EQ.'TABLE')THEN MTAB1=IRETR CTYPE(1:8)=' ' # CTYPE,IFIN1,XX,CHARR,ZZ,III) IF(CTYPE(1:6).NE.'ENTIER')IFIN1=IGRAND ENDIF c lecture d un type de trait variable MTYPR=' ' * ,IRETI,MTYPR,IVALR,XVALR,CHARR,ZZ,IRETR) IF(MTYPR(1:5).EQ.'TABLE')THEN MTAB1=IRETR CTYPE(1:8)=' ' # CTYPE,IVALR,XVALR,CHARR,ZZ,ISTYL) IF(CTYPE(1:8).NE.'LISTENTI') ISTYL=0 ENDIF ELSE LSTY1 = LSTYL MMAR1 = MMARQ KTAI1 = KTAIL CALL STYDES(LSTY1,MMAR1,KTAI1,CHOPT) IF(KEVTEX(1:4).EQ.' ') THEN TITOPT='PAS DE LEGENDE' ELSE TITOPT=KEVTEX ENDIF IDEB1=0 IFIN1=IGRAND ISTYL=0 ENDIF *PM SEGDES AXE CALL TRBOX(0.7,0.7) & ,IPOSI,XPOSI,YPOSI,ZREMP2,IDEB1,IFIN1,ISTYL) CALL TRBOX(1./0.7,1./0.7) *PM SEGACT AXE*MOD * * CAS DES CURVILIGNES * IF (ZCUR(NC+1)) THEN * On affiche le long de l'axe des abscisses, avec des marqueurs, * les noms des points nommés rencontrés *PM SEGDES AXE CALL TRBOX(0.7,0.7) IPTR=IEVOLL(NC+1) CALL TRBOX(1./0.7,1./0.7) *PM SEGACT AXE*MOD ENDIF * * * TRACES SIMULTANES ==================================== * ELSE KK=0 DO 49 I=1,INBEVO IF (ZTRACE(I)) THEN KK=KK+1 IPTR=IEVOLL(I) KEVOLL=IPTR * * RECHERCHE EVENTUELLE DES PARAMETRES SPECIFIQUES * IF (ZOPTIO) THEN c lecture des options (lign, marqueures etc...) --> CHOPT CTYPE(1:8)=' ' # CHOPT,ZZ,III) IF (CTYPE(1:3).NE.'MOT') CHOPT=' ' c valeurs par defaut IF(KEVTEX(1:4).EQ.' ') THEN TITOPT='PAS DE LEGENDE' ELSE TITOPT=KEVTEX ENDIF IDEB1=0 IFIN1=IGRAND ISTYL=0 c variables bidons IVALI=0 XVALI=0.D0 IRETI=0 IVALR=0 XVALR=0.D0 IRETR=0 MTYPI='MOT ' MTYPR=' ' ITITOP=0 CHARR=' ' c lecture d'un titre de legende --> TITOPT * MTYPR,IVALR,XVALR,CHARR,ZZ,IRETR) IF(MTYPR(1:5).EQ.'TABLE')THEN MTAB1=IRETR c SEGACT MTAB1 CTYPE(1:8)=' ' # TITOP2,ZZ,III) IF(CTYPE(1:3).EQ.'MOT')TITOPT=TITOP2 ENDIF c lecture des points initial et final --> IDEB1 et IFIN1 MTYPR=' ' * MTYPR,IVALR,XVALR,CHARR,ZZ,IRETR) IF(MTYPR(1:5).EQ.'TABLE')THEN MTAB1=IRETR CTYPE(1:8)=' ' # CTYPE,IDEB1,XX,CHARR,ZZ,III) IF(CTYPE(1:6).NE.'ENTIER')IDEB1=0 ENDIF MTYPR=' ' * MTYPR,IVALR,XVALR,CHARR,ZZ,IRETR) IF(MTYPR(1:5).EQ.'TABLE')THEN MTAB1=IRETR CTYPE(1:8)=' ' # CTYPE,IFIN1,XX,CHARR,ZZ,III) IF(CTYPE(1:6).NE.'ENTIER')IFIN1=IGRAND ENDIF c lecture d un type de trait variable MTYPR=' ' * ,IRETI,MTYPR,IVALR,XVALR,CHARR,ZZ,IRETR) IF(MTYPR(1:5).EQ.'TABLE')THEN MTAB1=IRETR CTYPE(1:8)=' ' # CTYPE,IVALR,XVALR,CHARR,ZZ,ISTYL) IF(CTYPE(1:8).NE.'LISTENTI') ISTYL=0 ENDIF ELSE LSTY1 = LSTYL MMAR1 = MMARQ KTAI1 = KTAIL CALL STYDES(LSTY1,MMAR1,KTAI1,CHOPT) IF(KEVTEX(1:4).EQ.' ') THEN TITOPT='PAS DE LEGENDE' ELSE TITOPT=KEVTEX ENDIF IDEB1=0 IFIN1=IGRAND ISTYL=0 ENDIF *PM SEGDES AXE CALL TRBOX(0.7,0.7) & ,IPOSI,XPOSI,YPOSI,ZREMP2,IDEB1,IFIN1,ISTYL) CALL TRBOX(1./0.7,1./0.7) *PM SEGACT AXE*MOD ENDIF * * CAS DES CURVILIGNES * IF (ZCUR(I)) THEN * On affiche le long de l'axe des abscisses, avec des marqueurs, * les noms des points nommés rencontrés *PM SEGDES AXE CALL TRBOX(0.7,0.7) IPTR=IEVOLL(I) CALL TRBOX(1./0.7,1./0.7) *PM SEGACT AXE*MOD ENDIF 49 CONTINUE * ENDIF C SEGDES MEVOLL *============================================================= * On redessine les axes sans grille pour repasser sur d'éventuelles * ombres *============================================================= IF(ZREMP2) THEN CALL TRBOX(0.7,0.7) ZGRIL1=ZGRILL ZGRILL=.FALSE. ZGRILL=ZGRIL1 CALL TRBOX (1./0.7,1./0.7) ENDIF RETURN * L'intervalle entre les bornes est trop faible. END
© Cast3M 2003 - Tous droits réservés.
Mentions légales