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.

105 lines
2.9 KiB

2 years ago
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 GRNCRV (LABSID, ICURVE, NPTS, XPTS, YPTS, DRAWLN)
C=======================================================================
C --*** GRNCRV *** (GRPLIB) Label Curve (PLT)
C -- Written by Amy Gilkey - revised 10/07/87
C --
C --GRNCRV finds the device coordinates of the first, last or middle
C --point of a curve within the plot window and labels the curve with
C --the line number.
C --
C --Parameters:
C -- LABSID - IN - label curve on "FIRST", "MIDDLE" or "LAST" point
C -- ICURVE - IN - the curve number
C -- NPTS - IN - the number of points in the curve
C -- XPTS, YPTS - IN - the X and Y points
C -- DRAWLN - IN - true if vector, false if points
C --Routines Called:
C -- MP2VC - (PLTLIB) Get device coordinates of vector
C -- MP2PT - (PLTLIB) Get device coordinates of point
C -- PLTGTT - (PLTLIB) Get text parameter
C -- 2 = (KSCHSZ) software character size
C -- INTSTR - (STRLIB) Convert integer to string
PARAMETER (KSCHSZ=2)
CHARACTER*8 LABSID
INTEGER ICURVE
INTEGER NPTS
REAL XPTS(*), YPTS(*)
LOGICAL DRAWLN
LOGICAL LDUM, PLTGTT
CHARACTER*2 STR2
C --Find the nearest line or point within the window
IF (LABSID .EQ. 'FIRST') THEN
ISTART = 1
IEND = NPTS
INC = 1
ELSE IF (LABSID .EQ. 'MIDDLE') THEN
ISTART = NPTS / 2
IEND = NPTS
INC = 1
ELSE
ISTART = NPTS
IEND = 1
INC = -1
END IF
IF (DRAWLN) THEN
DO 100 I = ISTART, IEND-INC, INC
MASK = -1
CALL MP2VC (1, XPTS(I), YPTS(I), XPTS(I+INC), YPTS(I+INC),
& DX, DY, DXX, DYY, MASK)
IF (MOD (MASK,2) .NE. 0) GOTO 120
100 CONTINUE
ELSE
DO 110 I = ISTART, IEND, INC
MASK = -1
CALL MP2PT (1, XPTS(I), YPTS(I), DX, DY, MASK)
IF (MOD (MASK,2) .NE. 0) GOTO 120
110 CONTINUE
END IF
GOTO 130
C --Write the curve number (location is dependent on the placement)
120 CONTINUE
C --Get curve number
CALL INTSTR (1, 0, ICURVE, STR2, LNUM)
LDUM = PLTGTT (KSCHSZ, VCS)
IF (DRAWLN) THEN
DXO = .25
ELSE
DXO = .50
END IF
IF (LABSID .EQ. 'FIRST') THEN
DX = DX - (LNUM+DXO) * VCS
ELSE
DX = DX + DXO*VCS
END IF
IF (LABSID .EQ. 'MIDDLE') THEN
DY = DY + .002
ELSE
DY = DY - .5*VCS
END IF
CALL GRTEXT (DX, DY, STR2)
130 CONTINUE
RETURN
END