Télécharger gtrini.eso

Retour à la liste

Numérotation des lignes :

gtrini
  1. C GTRINI SOURCE CB215821 20/08/04 21:15:00 10680
  2. SUBROUTINE GTRINI(NOL,AXAX,AYAY,TITRE,HAUTT,VALEU,NCOUMA)
  3. C
  4. C DRIVER GRAPHIQUE GDDM (IBM)
  5. C
  6. C INITIALISATION D'UN TRACE
  7. C NOL : NON UTILISE
  8. C AX ,AYAX : DIMENSION POUR LA FEUILLE DE PAPIER
  9. C TITRE : TITRE (CHAINE DE CARACTERES)
  10. C HAUT : HAUTEUR DES CARACTERES
  11. C VALEUR : ECRAN OU ECRAN PLUS MARGE
  12. C NCOUMA : NOMBRE DE COULEUR DU TERMINAL
  13. C ICCOL : INDICE COULEUR COURANTE
  14. C ICOISO :
  15. C
  16. IMPLICIT INTEGER(I-N)
  17. external long
  18. SAVE ICCOL,KSEGN
  19. SAVE XINID,YINID,RX,RY,AX,AY
  20. SAVE VALEUR
  21. SAVE NHAUT,HAUT,NLIG
  22. SAVE IPF,ILIG2
  23. SAVE ICOISO,WIDTH,NLARG,NCOL,HEIGHT
  24. DIMENSION IPF(24)
  25. CHARACTER*(*) TITRE
  26. CHARACTER*21 CHACHA
  27. DIMENSION XTR(*),YTR(*)
  28. DIMENSION IPPAT(4),RMAT(9),LPROC(3)
  29. DIMENSION IARR1(1),IARR2(1),IARR3(1)
  30. DIMENSION KSEGT(20)
  31. CHARACTER*8 NAME
  32. CHARACTER*(*) CARACT
  33. LOGICAL IGDDEJ
  34. LOGICAL VALEUR,FENET,VALEU
  35. CHARACTER*(500) LEGEND
  36. CHARACTER*(500) KEGEND
  37. -INC CCREEL
  38. *
  39. -INC PPARAM
  40. -INC CCOPTIO
  41. *-INC CCGEOME
  42. DATA IGDDEJ/.FALSE./
  43. DATA ICCOUN/0/
  44. C DATA POUR LE NOM DU FICHIER METAFILE
  45. C
  46. DATA IPPAT/65,66,67,68/
  47. DATA ICCOL/7/
  48. C NB DE COULEUR SI PAS AUTRE INDICATION
  49. NCOUMA=7
  50. C SAUVER HAUT
  51. HAUT=HAUTT
  52. NHAUT=31
  53. C SAUVER VALEUR
  54. VALEUR=VALEU
  55. C O SEGMENT POUR COMMENCER
  56. KSEGN=0
  57. C INITIALISATION DE L'UNITE PHYSIQUE
  58. AX=AXAX
  59. AY=AYAY
  60. DO 1 NBCR=72,2,-1
  61. IF (TITRE(NBCR:NBCR).NE.' ') GOTO 2
  62. 1 CONTINUE
  63. 2 CONTINUE
  64. 30 CONTINUE
  65. ILIG2=0
  66. IXSEG=0
  67. IF (IGDDEJ) THEN
  68. CALL FSRNIT
  69. ELSE
  70. CALL FSINN
  71. IGDDEJ=.TRUE.
  72. ENDIF
  73. * AUTORISER MODIFICATIONS LOCALES
  74. LPROC(1)=21
  75. LPROC(2)=1
  76. CALL DSOPEN(0,1,'* ',2,LPROC,0,'GIBI ')
  77. CALL DSUSE(1,0)
  78. * COMBIEN DE COULEURS UTILISABLES ??? (SANS LE FOND)
  79. CALL FSQURY(2,9,1,LPROC)
  80. NCOUMA=LPROC(1)-1
  81. * PATTERN POUR DEGRADES
  82. CALL GSLSS(3,'ADMNOBLA',0)
  83. C RECUPERATION TAILLE DE CARACTERE PAR DEFAUT
  84. C ADAPTATION A LA DIMENSION DE L'ECRAN
  85. CALL FSQURY(0,3,2,LPROC)
  86. NLIG=LPROC(1)
  87. NCOL=LPROC(2)
  88. NHAUT=NLIG-1
  89. NLARG=NCOL
  90. CALL FSPCRT(1,NLIG,NCOL,0)
  91. CALL GSFLD(2,1,NHAUT,NLARG)
  92. CALL GSQPS(WIDTH,HEIGHT)
  93. C ECRITURE DU TITRE
  94. CALL GSWIN(0.,80.,0.,2.)
  95. CALL GSSATI(4,2)
  96. CALL GSSEG(6)
  97. IF (KSEGN.LE.20) KSEGN=KSEGN+1
  98. KSEGT(KSEGN)=6
  99. CALL GSTAG(1)
  100. CALL GSCM(3)
  101. CALL GSCOL(7)
  102. CALL GSCHAR(69.,0.,10,'CASTEM2000')
  103. CALL GSQCB(CWID,CHEI)
  104. HA=HAUT*5.
  105. CALL GSCB(CWID*HA,CHEI*HA)
  106. CALL GSCHAR(0.,0.,NBCR,TITRE)
  107. CALL GSSCLS
  108. IF (VALEUR) THEN
  109. NLARG=NLARG-10
  110. ELSE
  111. NLARG=NLARG-5
  112. HEIGHT=(HEIGHT*(NHAUT-1))/REAL(NHAUT)
  113. ENDIF
  114. CALL GSVIEW(0.,WIDTH*NLARG/NCOL,HEIGHT/NHAUT,HEIGHT)
  115. C CLIPPING DISABLE POUR AVOIR CORRECTEMENT LES NUMEROS ET NOMS
  116. CALL GSCLP(0)
  117. RETURN
  118. *
  119. ENTRY GDFENE(XMIN,XXAX,YMIN,YYAX,XR1,XR2,YR1,YR2,FENET)
  120. C
  121. C DEFINITION DE LA FENETRE UTILISATEUR
  122. C XMIN,X,X,YMIN,YYAX : COORDONNEES DE LA FENETRE UTILISATEUR
  123. C XR1,XR2,YR1,YR2 : COORDONNEES RETOURNEES
  124. C (EFFECTIVEMENT UTILISEES)
  125. C FENET : CALCUL DU RATIO (OUI OU NON) NON UTILISE
  126. C
  127. EC1=AX-3.
  128. EC2=AY-3.
  129. C DEFINITION UNITE UTILISATEUR FENETRE UTILISEE MARGES A RESPECTER
  130. C OUVERTURE SEGMENT
  131. IF (FENET) THEN
  132. CALL GSUWIN(XMIN,XXAX,YMIN,YYAX)
  133. ELSE
  134. CALL GSWIN(XMIN,XXAX,YMIN,YYAX)
  135. ENDIF
  136. XINID=(XMIN+XXAX)/2.
  137. YINID=(YMIN+YYAX)/2.
  138. XR1=XMIN
  139. XR2=XXAX
  140. YR1=YMIN
  141. YR2=YYAX
  142. CALL GSSATI(4,2)
  143. CALL GSSEG(1)
  144. IXSEG=1
  145. IF (KSEGN.LE.20) KSEGN=KSEGN+1
  146. KSEGT(KSEGN)=1
  147. CALL GSTAG(1)
  148. CALL GSCM(3)
  149. CALL GSQCB(CWID,CHEI)
  150. CALL GSCB(CWID,CHEI)
  151. CALL GSCOL(ICCOL)
  152. CALL GSMIX(0)
  153. ICOISO=-100
  154. RETURN
  155. C
  156. ENTRY GTRLAB(X,Y,CARACT,NCAR,HAUTT)
  157. C
  158. C ECRITURE D'UN TEXTE EN (X,Y)
  159. C X,Y : COORDONNEES DE L'ORIGINE DU TEXTE
  160. C CARACT : TEXTE
  161. C NCAR : NOMBRE DE CARACTERES A ECRIRE
  162. C HAUT :
  163. C
  164. HAUT=HAUTT
  165. DO 201 ICAR=NCAR,1,-1
  166. IF (CARACT(ICAR:ICAR).NE.' ') GOTO 202
  167. 201 CONTINUE
  168. C CHAINE VIDE
  169. RETURN
  170. 202 CONTINUE
  171. CALL GSCHAR(X,Y,ICAR,CARACT)
  172. RETURN
  173. C
  174. ENTRY GTRBOX (HAUTX,HAUTY)
  175. CALL GSCM(3)
  176. CALL GSQCB(CWID,CHEI)
  177. CALL GSCB(CWID*HAUTX,CHEI*HAUTY)
  178. RETURN
  179. C
  180. ENTRY GCHCOU(JCOLO)
  181. C
  182. C CHANGEMENT COULEUR (8 DOIT CORRESPONDRE A L'EFFACEMENT)
  183. C JCOLO : INDICE DE LA NOUVELLE COULEUR
  184. C CHANGEMENT DE COULEUR (VOIR LA TABLE DES COULEUR)
  185. C
  186. CALL GSCOL(JCOLO)
  187. RETURN
  188. C
  189. ENTRY GFVALI(IFENI,IRESU,NH)
  190. C
  191. C ACTIVATION DE LA FENETRE DE TRAVAIL
  192. IF (IFENI.EQ.1) THEN
  193. CALL GSVIEW(WIDTH*NLARG/NCOL,WIDTH,HEIGHT/NHAUT,HEIGHT)
  194. CALL GSWIN(0.,1.,2.,REAL(NHAUT+2))
  195. IRESU=0
  196. ELSE
  197. C DESACTIVATION DE LA FENETRE
  198. CALL GSSCLS
  199. CALL GSVIEW(0.,WIDTH*NLARG/NCOL,HEIGHT/NHAUT,HEIGHT)
  200. CALL GSUWIN(XMIN,XXAX,YMIN,YYAX)
  201. ENDIF
  202. NH=NHAUT
  203. RETURN
  204. C
  205. ENTRY GMENU(LEGEND,NCASE,LLONG)
  206. C AFFICHAGE DU MENU
  207. C
  208. DO 805 II=1,24
  209. IPF(II)=0
  210. 805 CONTINUE
  211. * INIT CHAMP ALPHANUMERIQUE LISTE DES CLES
  212. * REINITIALISATION DES CHAMPS
  213. CALL ASDFLD(1,1,1,1,79,2)
  214. CALL ASFCOL(1,7)
  215. KCASE=NCASE
  216. KLONG=LLONG
  217. * ON N'AFFICHE PAS 1 (= CONTINUER TOUJOURS PF0)
  218. IDEB1=0
  219. IDEB=1
  220. KEGEND=' '
  221. DO 800 II=2,KCASE
  222. MLONG=LLONG
  223. IF (MLONG.EQ.1) GOTO 800
  224. IPF(II-1)=1
  225. IF (II.LE.10) THEN
  226. KEGEND(IDEB:IDEB+3)='FP?:'
  227. WRITE (KEGEND(IDEB+2:IDEB+2),FMT='(I1)') II-1
  228. IDEB=IDEB+4
  229. ELSE
  230. KEGEND(IDEB:IDEB+4)='FP??:'
  231. WRITE (KEGEND(IDEB+2:IDEB+3),FMT='(I2)') II-1
  232. IDEB=IDEB+5
  233. ENDIF
  234. DO 801 III=1,MLONG
  235. C IF (LEGEND(II)(III:III).NE.' ') GOTO 802
  236. IF (LEGEND(III+(II-1)*MLONG:
  237. & III+(II-1)*MLONG).NE.' ') GOTO 802
  238. 801 CONTINUE
  239. III=MLONG
  240. 802 CONTINUE
  241. C KEGEND(IDEB:IDEB+MLONG-III+1)=LEGEND(II)(III:MLONG)
  242. KEGEND(IDEB:IDEB+MLONG-III+1)=LEGEND(III+(II-1)*MLONG:
  243. & II*MLONG)
  244. IDEB=IDEB+MLONG-III+2
  245. IF (IDEB.GT.63.AND.IDEB1.EQ.0) IDEB1=IDEB
  246. 800 CONTINUE
  247. IF (IPF(11).EQ.0.AND.IPF(1).NE.0) THEN
  248. IPF(11)=1
  249. KEGEND(IDEB:IDEB+7)='FP11:LGI'
  250. IDEB=IDEB+8
  251. ENDIF
  252. IF (IDEB.LT.79.AND.IDEB1.NE.0) IDEB1=0
  253. IF (IDEB1.EQ.0.OR.IDEB.EQ.IDEB1) THEN
  254. CALL ASCPUT(1,IDEB-1,KEGEND(1:IDEB-1))
  255. IF (ILIG2.EQ.1) CALL ASDFLD(4,2,1,1,1,2)
  256. ILIG2=0
  257. ELSE
  258. CALL ASCPUT(1,IDEB1-1,KEGEND(1:IDEB1-1))
  259. ILIG2=1
  260. CALL ASDFLD(4,2,1,1,79,2)
  261. CALL ASFCOL(4,7)
  262. CALL ASCPUT(4,IDEB-IDEB1,KEGEND(IDEB1:IDEB-1))
  263. ENDIF
  264. RETURN
  265. C
  266. ENTRY GINSEG(NBSEGT,IRESS)
  267. C
  268. C INITIALISATION D'UN SEGMENT
  269. C NBSEGT : NUMERO DU SEGMENT
  270. C IRESS : SELON SA VALEUR, ON FERME LE SEGMENT PRECEDENT
  271. C
  272. IF (IRESS.NE.2) THEN
  273. IF (IRESS.LT.2.OR.IRESS.GT.5) CALL GSSCLS
  274. ELSE
  275. IRESS=7
  276. ENDIF
  277. CALL GSSATI(2,1)
  278. CALL GSSATI(4,2)
  279. CALL GSSEG(NBSEGT)
  280. IF (KSEGN.LE.20) KSEGN=KSEGN+1
  281. KSEGT(KSEGN)=NBSEGT
  282. CALL GSTAG(1)
  283. CALL GSCM(3)
  284. CALL GSQCB(CWID,CHEI)
  285. CALL GSCB(CWID,CHEI)
  286. RETURN
  287. C
  288. ENTRY GPOLRL(NTRSTU,XTR,YTR)
  289. C
  290. C TRACE D'UNE POLYLIGNE DANS LA VALEUR COURANTE
  291. C NTR : NOMBRE DE POINTS
  292. C XTR,YTR : COORDONNEES DES POINTS
  293. C
  294. NTR=NTRSTU
  295. IF (NTR.LE.1) RETURN
  296. CALL GSMOVE(XTR(1),YTR(1))
  297. CALL GSPLNE(NTR-1,XTR(2),YTR(2))
  298. RETURN
  299. C
  300. ENTRY GTRDIG(X,Y,INCLE)
  301. C
  302. C DIGITALISATION D'UN POINT
  303. C X,Y : COORDONNEES DU POINT DESIGNE
  304. C
  305. INCLE=0
  306. CALL GSENAB(2,1,0)
  307. CALL GSILOC(1,0,XINID,YINID)
  308. CALL GSENAB(2,1,1)
  309. CALL GSENAB(1,1,1)
  310. CALL GSENAB(1,0,1)
  311. CALL GSREAD(1,ITTVAL,ICOUNT)
  312. IF (ITTVAL.EQ.1) THEN
  313. CALL GSQCHO(INCLE)
  314. CALL GSREAD(1,ITTVAL,IPLOC)
  315. ENDIF
  316. IF (INCLE.GT.12) INCLE=INCLE-12
  317. CALL GSQLOC(INW,X,Y)
  318. CALL GSENAB(2,1,0)
  319. CALL GSENAB(1,1,0)
  320. CALL GSENAB(1,0,0)
  321. XINID=X
  322. YINID=Y
  323. RETURN
  324. C
  325. ENTRY GTRFAC(NP,XTR,YTR,ZN,ICOLE,IEFF)
  326. C
  327. C TRACE D'UNE FACE AVEC DEGRADE
  328. C NP : NOMBRE DE POINTS
  329. C XTR,YTR : COORDONNEES DES POINTS
  330. C ICOLE : COULEUR
  331. C KP : ECLAIRAGE
  332. C
  333. IEFF=0
  334. C KP=INT(ZN*4./1.58)+1
  335. C IF (IOMBRE.EQ.0) KP=4
  336. KP=4
  337. CALL GSMOVE(XTR(NP),YTR(NP))
  338. C ON APPLIQUE UNE PATTERN D'EFFACEMENT PUIS UNE DE REMPLISSAGE
  339. IEFF=0
  340. IF (KP.GE.3) IEFF=1
  341. C IF (KP.NE.4) THEN
  342. C CALL GSCOL(8)
  343. C CALL GSPAT(0)
  344. C CALL GSAREA(0)
  345. C CALL GSPLNE(NP-1,XTR,YTR)
  346. C CALL GSENDA
  347. C ENDIF
  348. * POUR AVOIR LA BONNE COULEUR SUR IMAGEN
  349. * IF (KP.NE.1) THEN
  350. CALL GSCOL(ICOLE)
  351. CALL GSPAT(IPPAT(KP))
  352. CALL GSAREA(0)
  353. CALL GSPLNE(NP-1,XTR,YTR)
  354. CALL GSENDA
  355. * ENDIF
  356. RETURN
  357. C
  358. ENTRY GTRAIS(NP,XTR,YTR,ICOLE)
  359. C
  360. C TRACE D'UNE FACE SANS CALCUL DE DEGRADE
  361. C NP : NOMBRE DE POINTS
  362. C XTR,YTR : COORDONNEES DES POINTS
  363. C ICOLE : COULEUR
  364. C
  365. IF (ICOLE.NE.ICOISO) THEN
  366. ICOISO=ICOLE
  367. CALL GSCOL(ICOISO)
  368. ENDIF
  369. CALL GSMOVE(XTR(NP),YTR(NP))
  370. CALL GSAREA(0)
  371. CALL GSPLNE(NP-1,XTR(1),YTR(1))
  372. CALL GSENDA
  373. RETURN
  374. C
  375. C EFFACEMENT ECRAN ON UTILISE GDDM OU CE QU'ON PEUT
  376. ENTRY GTREFF
  377. WRITE (CHACHA(1:4),FMT='(A4)') 17
  378. CHACHA(5:21)='VMFCLEAR '
  379. CALL CMS(CHACHA(3:21))
  380. RETURN
  381. C
  382. C AFFICHAGE RETOUR CLE TAPEE
  383. ENTRY GTRAFF(ICLE)
  384. C
  385. C AFFICHAGE RETOUR CLE TAPEE
  386. C ICLE : NUMERO DE CLE RENDUE
  387. C
  388. ICLE=0
  389. 1530 CONTINUE
  390. CALL ASREAD(ITTYP,ICLE,ICOUNT)
  391. IF (ITTYP.EQ.0) ICLE=0
  392. IF (ICLE.GT.12) ICLE=ICLE-12
  393. IF (ICLE.NE.0.AND.IPF(ICLE).EQ.0) GOTO 1530
  394. RETURN
  395. C
  396. * ROUTINE POUR SORTIR CORRECTEMENT DE GKS AVEC MODIFIER
  397. ENTRY GTRMFI
  398. RETURN
  399. C
  400. * ENTRY GZOOM(IRESU,ISORT,IQUALI,INUMNO,INUMEL,XMI,XMA,YMI,YMA)
  401. ENTRY GZOOM(IZOOM,XMI,XMA,YMI,YMA)
  402. C
  403. C XMI,XMA,YMI,YMA POINTS RENDUS APRES LE ZOOM
  404. C
  405. IRESU=1
  406. C INITIALISATION DU ZOOM
  407. CALL GSQWIN(XL1,XL2,YL1,YL2)
  408. CALL GSENAB(2,1,0)
  409. CALL GSILOC(1,0,(XL1+XL2)/2,(YL1+YL2)/2)
  410. CALL GSENAB(2,1,1)
  411. CALL GSREAD(1,ITTVAL,ICOUNT)
  412. CALL GSQLOC(INW,XRO,XCOL)
  413. CALL GSQLID(2,1,3,LPROC)
  414. IF (LPROC(3).GE.5) THEN
  415. C ECHO TYPE BOITE
  416. CALL GSENAB(2,1,0)
  417. CALL GSIDVF(2,1,1,XRO)
  418. CALL GSIDVF(2,1,2,XCOL)
  419. CALL GSILOC(1,5,XRO+(XL2-XL1)/100,XCOL+(YL2-YL1)/100)
  420. CALL GSENAB(2,1,1)
  421. ENDIF
  422. CALL GSREAD(1,ITTVAL,ICOUNT)
  423. CALL GSQLOC(INW,YRO,YCOL)
  424. CALL GSENAB(2,1,0)
  425. C GESTION DU CADRE DEFINI PAR LES CURSEURS
  426. XMI=MIN(XRO,YRO)
  427. XMA=MAX(XRO,YRO)
  428. YMI=MIN(XCOL,YCOL)
  429. YMA=MAX(XCOL,YCOL)
  430. XMA=MAX(XMA,YMA-YMI+XMI)
  431. YMI=MIN(YMI,-XMA+XMI+YMA)
  432. * IF (XMI.EQ.XMA) XMA=XMA*1.01+1E-30
  433. IF (XMI.EQ.XMA) XMA=XMA*1.01+xpetit
  434. * IF (YMI.EQ.YMA) YMA=YMA*1.01+1E-30
  435. IF (YMI.EQ.YMA) YMA=YMA*1.01+xpetit
  436. XM1=XMI
  437. XM2=XMA
  438. YM1=YMI
  439. YM2=YMA
  440. PAS=MIN((XL2-XL1)/(XMA-XMI),(YL2-YL1)/(YMA-YMI))
  441. C INITIALISATION DE LA MATRICE DE TRANSFORMATION
  442. RMAT(1)=1
  443. RMAT(2)=0
  444. RMAT(3)=-XMI
  445. RMAT(4)=0
  446. RMAT(5)=1
  447. RMAT(6)=-YMI
  448. RMAT(7)=0
  449. RMAT(8)=0
  450. RMAT(9)=1
  451. CALL GSSTFM(1,9,RMAT,1)
  452. RMAT(1)=PAS
  453. RMAT(2)=0
  454. RMAT(3)=XL1
  455. RMAT(4)=0
  456. RMAT(5)=PAS
  457. RMAT(6)=YL1
  458. RMAT(7)=0
  459. RMAT(8)=0
  460. RMAT(9)=1
  461. CALL GSSTFM(1,9,RMAT,1)
  462. C IF (IDEFOR.NE.0) THEN
  463. C*1093 ISORT=0
  464. C RETURN
  465. C ENDIF
  466. IDEL1=0
  467. IDEL2=0
  468. IDEL3=0
  469. *1093 IF (IQUALI.NE.0) IDEL1=3
  470. *1093 IF (INUMNO.NE.0) IDEL2=4
  471. *1093 IF (INUMEL.NE.0) IDEL3=5
  472. IF (IDEL1.NE.0) CALL GSSDEL(IDEL1)
  473. IF (IDEL2.NE.0) CALL GSSDEL(IDEL2)
  474. IF (IDEL3.NE.0) CALL GSSDEL(IDEL3)
  475. KSEG0=KSEGN
  476. KSEGN=0
  477. DO 2020 KSEG=1,KSEG0
  478. IF (KSEGT(KSEG).EQ.IDEL1) GOTO 2020
  479. IF (KSEGT(KSEG).EQ.IDEL2) GOTO 2020
  480. IF (KSEGT(KSEG).EQ.IDEL3) GOTO 2020
  481. KSEGN=KSEGN+1
  482. KSEGT(KSEGN)=KSEGT(KSEG)
  483. 2020 CONTINUE
  484. *1093 IF (IQUALI.EQ.10) IQUALI=0
  485. *1093 IF (INUMNO.EQ.10) INUMNO=0
  486. *1093 IF (INUMEL.EQ.10) INUMEL=0
  487. *1093 ISORT=1
  488. IRESU=2
  489. CALL GSQAGA(1,SX,SY,HX,HY,RX,RY,DX,DY)
  490. C CALCUL DES COORDONNEES APRES LE ZOOM
  491. XMI=(XMIN-DX)/SX
  492. XMA=(XXAX-DX)/SX
  493. YMI=(YMIN-DY)/SY
  494. YMA=(YYAX-DY)/SY
  495. RETURN
  496. C
  497. ENTRY GCHANG(IRESU,ISORT,ICHANG,JSEG)
  498. C
  499. C VISUALISATION OU NON DU SEGMENT JSEG
  500. C POUR LES CLES QUAL, NOEUD OU ELEM
  501. C
  502. IF (ICHANG.EQ.1) THEN
  503. ICHANG=10
  504. CALL GSSATS(JSEG,2,0)
  505. ISORT=0
  506. RETURN
  507. ELSEIF (ICHANG.EQ.10) THEN
  508. ICHANG=1
  509. CALL GSSATS(JSEG,2,1)
  510. ISORT=0
  511. RETURN
  512. ENDIF
  513. ISORT=1
  514. IRESU=JSEG
  515. ICHANG=1
  516. RETURN
  517. C
  518. ENTRY GINI(IRESU,ISORT,IQUALI,INUMNO,INUMEL,XMI,XMA,YMI,YMA)
  519. C
  520. C RETOUR AU DESSIN INITIAL - SUPPRESSION DES SEGMENTS
  521. C CONCERNANT QUAL, NOEUD ET ELEM
  522. C INITIALISATION DE LA MATRICE IDENTITE
  523. PAS=1
  524. RMAT(1)=1
  525. RMAT(2)=0
  526. RMAT(3)=0
  527. RMAT(4)=0
  528. RMAT(5)=1
  529. RMAT(6)=0
  530. RMAT(7)=0
  531. RMAT(8)=0
  532. RMAT(9)=1
  533. C APPLICATION DE LA MATRICE AU SEGMENT
  534. CALL GSSTFM(1,9,RMAT,0)
  535. C IF (IDEFOR.NE.0) THEN
  536. C ISORT=0
  537. C RETURN
  538. C ENDIF
  539. IDEL1=0
  540. IDEL2=0
  541. IDEL3=0
  542. IF (IQUALI.NE.0) IDEL1=3
  543. IF (INUMNO.NE.0) IDEL2=4
  544. IF (INUMEL.NE.0) IDEL3=5
  545. IF (IDEL1.NE.0) CALL GSSDEL(IDEL1)
  546. IF (IDEL2.NE.0) CALL GSSDEL(IDEL2)
  547. IF (IDEL3.NE.0) CALL GSSDEL(IDEL3)
  548. KSEG0=KSEGN
  549. KSEGN=0
  550. DO 2420 KSEG=1,KSEG0
  551. IF (KSEGT(KSEG).EQ.IDEL1) GOTO 2420
  552. IF (KSEGT(KSEG).EQ.IDEL2) GOTO 2420
  553. IF (KSEGT(KSEG).EQ.IDEL3) GOTO 2420
  554. KSEGN=KSEGN+1
  555. KSEGT(KSEGN)=KSEGT(KSEG)
  556. 2420 CONTINUE
  557. IF (IQUALI.EQ.10) IQUALI=0
  558. IF (INUMNO.EQ.10) INUMNO=0
  559. IF (INUMEL.EQ.10) INUMEL=0
  560. C RESTITUTION DES COORDONNEES
  561. XMI=XMIN
  562. XMA=XXAX
  563. YMI=YMIN
  564. YMA=YYAX
  565. ISORT=1
  566. IRESU=2
  567. RETURN
  568. C
  569. ENTRY GFLGI
  570. C
  571. C SORTIE GDF POUR CONVERSION EN EN LGI
  572. ICCOUN=ICCOUN+1
  573. IF (ICCOUN.LE.9) WRITE(NAME,FMT='(''GIBI'',I1)') ICCOUN
  574. IF (ICCOUN.GE.10) WRITE(NAME,FMT='(''GIBI'',I2)') ICCOUN
  575. IF (ICCOUN.GE.100) WRITE(NAME,FMT='(''GIBI'',I3)') ICCOUN
  576. C BOUCLE POUR RENDRE TRANSFORMABLES TOUS LES SEGMENTS SAUVES
  577. DO 2920 KSEG=1,KSEGN
  578. CALL GSSATS(KSEGT(KSEG),1,1)
  579. 2920 CONTINUE
  580. CALL GSSAVE(0,IARR1,NAME,0,IARR2,0,IARR3)
  581. DO 2930 KSEG=1,KSEGN
  582. CALL GSSATS(KSEGT(KSEG),1,0)
  583. 2930 CONTINUE
  584. RETURN
  585. C
  586. ENTRY GIMPR
  587. C
  588. C IMPRESSION POUR 3268
  589. C EN GKS : SAUVEGARDE DU DESSIN SUR METAFILE METAXX
  590. C AVEC XX = NUMERO DE 01 A 99
  591. CALL DSOPEN(1,2,'* ',0,LPROC,1,'GIBI ')
  592. CALL DSUSE(2,1)
  593. CALL GSCOPY(66,83)
  594. CALL FSCOPY
  595. CALL FSCLS(1)
  596. RETURN
  597. C
  598. ENTRY GVAL(IRESU,ISORT,NISO)
  599. C
  600. C IF (NISO.NE.0.AND.IDEFOR.EQ.0) THEN
  601. IF (NISO.NE.0) THEN
  602. IXSEG=0
  603. IRESU=10
  604. ISORT=1
  605. ENDIF
  606. RETURN
  607. C
  608. ENTRY GMAJSE(IMAJ,IRESU,IQUALI,INUMNO,INUMEL)
  609. C
  610. IF (IMAJ.EQ.1) THEN
  611. IF (IRESU.NE.2.OR.IQUALI.NE.0.OR.INUMNO.NE.0.OR.INUMEL.NE.0)
  612. & CALL GSSCLS
  613. ELSE
  614. IF (IQUALI.EQ.10) IQUALI=0
  615. IF (INUMNO.EQ.10) INUMNO=0
  616. IF (INUMEL.EQ.10) INUMEL=0
  617. C
  618. IF (IRESU.LT.2.OR.(IRESU.GT.5.AND.IRESU.LT.10)) CALL GSCLR
  619. ENDIF
  620. RETURN
  621. C
  622. ENTRY GTRANI(IANIM,NDEF)
  623. * INITIALISATION POUR ANIMATION
  624. * IANIM 1 ALLER SIMPLE
  625. * IANIM 2 ALLER RETOUR
  626. * NDEF NOMBRE D'IMAGE
  627. RETURN
  628. C
  629. ENTRY GTRIMA(IDEF)
  630. * NOUVELLE IMAGE
  631. * IDEF NUMERO DE L'IMAGE
  632. C
  633. CALL FSFRCE
  634. RETURN
  635. C
  636. C MESSAGE EN BAS DE L'ECRAN
  637. ENTRY GTRMES(TITRE)
  638. CALL ASDFLD(2,NLIG,1,1,LEN(TITRE),2)
  639. CALL ASFCOL(2,7)
  640. CALL ASCPUT (2,LEN(TITRE),TITRE)
  641. RETURN
  642. C
  643. C INPUT AVEC PROMPT
  644. ENTRY GTRGET(TITRE,CARACT)
  645. CALL ASDFLD(2,NLIG,1,1,LEN(TITRE),2)
  646. CALL ASFCOL(2,7)
  647. CALL ASCPUT (2,LEN(TITRE),TITRE)
  648. CALL ASDFLD(3,NLIG,LEN(TITRE)+1,1,LEN(CARACT),0)
  649. CALL ASFCOL(3,7)
  650. KEGEND=' '
  651. CALL ASCPUT (3,LEN(CARACT),KEGEND)
  652. CALL ASFCUR(0,NLIG,LEN(TITRE)+1)
  653. CALL ASREAD(ITTYP,ICLE,ICOUNT)
  654. CALL ASCGET(3,LEN(CARACT),CARACT)
  655. CALL ASDFLD(2,NLIG,1,1,0,2)
  656. CALL ASDFLD(3,NLIG,79,1,0,2)
  657. RETURN
  658. END
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.  
  666.  
  667.  
  668.  
  669.  
  670.  
  671.  
  672.  
  673.  
  674.  

© Cast3M 2003 - Tous droits réservés.
Mentions légales