Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

262 lines
5.8 KiB

C Copyright(C) 1999-2020 National Technology & Engineering Solutions
C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
C NTESS, the U.S. Government retains certain rights in this software.
C
C See packages/seacas/LICENSE for details
C=======================================================================
SUBROUTINE PLTXSL(CHARST,LENGTH)
REAL DEVCAP(23)
REAL DEFOUT(7)
COMMON /STATUS/DEVCAP,DEFOUT
REAL DEVP(5)
COMMON /DEVICE/DEVP
REAL COLP(3)
REAL PALETT(3,16)
COMMON /COLOR/COLP,PALETT
REAL TEXTP(40)
COMMON /TEXT/TEXTP
REAL VECTP(5)
REAL XCUR
REAL YCUR
COMMON /VECTRC/VECTP,XCUR,YCUR
INTEGER IDEX(200,2)
INTEGER NVECT(200,2)
REAL XSIZE(200,2)
REAL YSIZE(200,2)
REAL X0(2300,2)
REAL Y0(2300,2)
REAL X1(2300,2)
REAL Y1(2300,2)
COMMON /FONT/IDEX,NVECT,XSIZE,YSIZE,X0,Y0,X1,Y1
REAL GRAPHP(100)
COMMON /GRAPH/GRAPHP
COMMON /MAPPAR/MAPP(11)
REAL MAPP
COMMON /STORAG/MEMORY(1000)
CHARACTER*(*) CHARST
CHARACTER ESC*20,ESCCHR*1, textip1*1
REAL LENGTH,LENGT1
INTEGER ASCII
LOGICAL STATUS,CHRCI
ESCCHR = CHAR(92)
LENGTH = 0.
LENGT1 = 0.
YSZE = TEXTP(1)
CALL PLTRIM(CHARST,NUM)
MODE = 0
IFONT = 1
I = 1
2210 IF (.NOT. (I.LE.NUM)) GO TO 2230
ASCII = ICHAR(CHARST(I:I))
IF (ASCII.LT.1 .OR. ASCII.GT.126) THEN
CALL CHRIC(ASCII,ESCCHR,LI)
CALL PLTFLU
RETURN
END IF
RLINE = 0.
if (i .lt. num) then
textip1 = charst(i+1:i+1)
else
textip1 = escchr
end if
IF (ASCII.EQ.ICHAR(ESCCHR) .AND. textip1.EQ.ESCCHR) THEN
I = I + 1
ELSE IF (ASCII.EQ.ICHAR(ESCCHR)) THEN
CALL PLTESC(CHARST,I,ESC)
CALL CHRUP(ESC,ESC)
IF (ESC.EQ.'^' .OR. ESC.EQ.'_') THEN
IF (MODE.EQ.0) THEN
YSZE = TEXTP(1)*TEXTP(32)
MODE = 1
END IF
GO TO 2220
ELSE IF (ESC.EQ.'-') THEN
YSZE = TEXTP(1)
MODE = 0
GO TO 2220
ELSE IF (ESC.EQ.'CLO') THEN
ASCII = 4
ELSE IF (ESC.EQ.'CSQ') THEN
ASCII = 5
ELSE IF (ESC.EQ.'CDI') THEN
ASCII = 6
ELSE IF (ESC.EQ.'CCS') THEN
ASCII = 7
ELSE IF (ESC.EQ.'CX') THEN
ASCII = 8
ELSE IF (ESC.EQ.'CTR') THEN
ASCII = 9
ELSE IF (ESC.EQ.'CCI') THEN
ASCII = 10
ELSE IF (ESC.EQ.'CDO') THEN
ASCII = 11
ELSE IF (ESC.EQ.'LO') THEN
ASCII = 12
ELSE IF (ESC.EQ.'SQ') THEN
ASCII = 13
ELSE IF (ESC.EQ.'DI') THEN
ASCII = 14
ELSE IF (ESC.EQ.'CS') THEN
ASCII = 15
ELSE IF (ESC.EQ.'X') THEN
ASCII = 16
ELSE IF (ESC.EQ.'TR') THEN
ASCII = 17
ELSE IF (ESC.EQ.'CI') THEN
ASCII = 18
ELSE IF (ESC.EQ.'DO') THEN
ASCII = 19
ELSE IF (ESC.EQ.'PLUSMIN') THEN
ASCII = 20
ELSE IF (ESC.EQ.'LEQ') THEN
ASCII = 21
ELSE IF (ESC.EQ.'GEQ') THEN
ASCII = 22
ELSE IF (ESC.EQ.'NEQ') THEN
ASCII = 23
ELSE IF (ESC.EQ.'PRIME') THEN
ASCII = 24
ELSE IF (ESC.EQ.'NLEQ') THEN
ASCII = 25
ELSE IF (ESC.EQ.'NGEQ') THEN
ASCII = 26
ELSE IF (ESC.EQ.'LL') THEN
ASCII = 27
ELSE IF (ESC.EQ.'GG') THEN
ASCII = 28
ELSE IF (ESC.EQ.'SUM') THEN
ASCII = 29
ELSE IF (ESC.EQ.'NLT') THEN
ASCII = 30
ELSE IF (ESC.EQ.'NGT') THEN
ASCII = 31
ELSE IF (ESC.EQ.'APPROX') THEN
ASCII = 127
ELSE IF (ESC.EQ.'CR') THEN
IF (LENGTH.GT.LENGT1) THEN
LENGT1 = LENGTH
END IF
LENGTH = 0.
GO TO 2220
ELSE IF (ESC.EQ.'LF') THEN
IF (LENGTH.GT.LENGT1) THEN
LENGT1 = LENGTH
END IF
LENGTH = 0.
GO TO 2220
ELSE IF (ESC.EQ.'CL') THEN
IF (LENGTH.GT.LENGT1) THEN
LENGT1 = LENGTH
END IF
LENGTH = 0.
GO TO 2220
ELSE IF (ESC.EQ.'ENG') THEN
IFONT = 1
GO TO 2220
ELSE IF (ESC.EQ.'GR') THEN
IFONT = 2
GO TO 2220
ELSE IF (ESC.EQ.'DDLINE') THEN
RLINE = 4.
ELSE IF (ESC.EQ.'DLINE') THEN
RLINE = 4.
ELSE IF (ESC.EQ.'LDLINE') THEN
RLINE = 4.
ELSE IF (ESC.EQ.'MDLINE') THEN
RLINE = 4.
ELSE IF (ESC.EQ.'SDLINE') THEN
RLINE = 4.
ELSE IF (ESC.EQ.'SLINE') THEN
RLINE = 4.
ELSE
STATUS = CHRCI(ESC,IESC)
IF (STATUS) THEN
ASCII = IESC
ELSE
CALL PLTRIM(ESC,L)
CALL PLTFLU
CALL SIORPT('PLTXTS','Invalid escape sequence "'//
* ESC(1:L)//'"; escape sequence ignored.',2)
GO TO 2220
END IF
END IF
END IF
IF (RLINE.EQ.4.) THEN
LENGTH = LENGTH + 4.*YSZE**TEXTP(31)
ELSE
LENGTH = LENGTH + XSIZE(ASCII,IFONT)*YSZE*TEXTP(31)
END IF
2220 I = I + 1
GO TO 2210
2230 CONTINUE
IF (LENGT1.GT.LENGTH) THEN
LENGTH = LENGT1
END IF
IF (NUM.EQ.1 .AND. RLINE.NE.4. .AND. ASCII.GT.32) THEN
TEMP = TEXTP(39)/TEXTP(40)
LENGTH = LENGTH - TEMP*YSZE*TEXTP(31)
END IF
RETURN
END