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
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
|