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.
 
 
 
 
 
 

194 lines
6.4 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 QALAB (DBORD0, DVIEW0, CHLSIZ, DOQA, DOAXIS, DOLAB,
& CAPTN, TITLE, CREATE, MODIFY, DRAW, DLEGND, BLKCOL, *)
C=======================================================================
C --*** QALAB *** (BLOT) Draw standard label (PLT)
C -- Written by Amy Gilkey - revised 02/02/88
C --
C --QALAB starts a "standard" plot by:
C -- o starting a new plot,
C -- o outlining the display area (if DOQA true),
C -- o displaying the database title and creation, modification and
C -- plot information (if DOQA true),
C -- o displaying the plot caption, and
C -- o returning the legend coordinates.
C --
C --Parameters:
C -- DBORD0 - IN - the plot boundary, including legend
C -- (left, right, bottom, top)
C -- DVIEW0 - IN - the plot view boundary (left, right, bottom, top)
C -- CHLSIZ - IN - the size of a character line
C -- DOQA - IN - true iff QA information is to be included in label
C -- DOAXIS - IN - true iff axis is to be numbered (not in this routine)
C -- DOLAB - IN - true iff axis is to be labeled (not in this routine)
C -- CAPTN - IN - the three-line plot caption
C -- TITLE - IN - the database title
C -- CREATE - IN - the database creation code name, version, date, time
C -- MODIFY - IN - the database modification code name, version, date, time
C -- DRAW - IN - the database plot code name, version, date, time
C -- DLEGND - OUT - the location of the legend (device units)
C -- (left, right, bottom, top)
C -- BLKCOL - IN/OUT - the user selected colors of the element blocks.
C -- BLKCOL(0) = 1 if the user defined material
C -- colors should be used in mesh plots.
C -- = -1 if program selected colors should
C -- be used.
C -- BLKCOL(i) = the user selected color of element
C -- block i:
C -- -2 - no color selected by user.
C -- -1 - black
C -- 0 - white
C -- 1 - red
C -- 2 - green
C -- 3 - yellow
C -- 4 - blue
C -- 5 - cyan
C -- 6 - magenta
C -- * - the return statement if the cancel function is active
C --Routines Called:
C -- GRABRT - (GRPLIB) Check for plot set abort
C -- GRBOX - (GRPLIB) Draw box
C -- GRPBEG - (PLTLIB) Begin a new plot
C -- GRTEXT - (GRPLIB) Display a software/hardware string
C -- GRYCEN - (GRPLIB) Find center lines of text area
C -- LENSTR - (STRLIB) Find string length
PARAMETER (KLFT=1, KRGT=2, KBOT=3, KTOP=4)
include 'params.blk'
include 'dbnums.blk'
REAL DBORD0(KTOP), DVIEW0(KTOP)
REAL CHLSIZ
LOGICAL DOQA, DOAXIS, DOLAB
CHARACTER*80 CAPTN(3)
CHARACTER*80 TITLE
CHARACTER*(MXSTLN) CREATE(4), MODIFY(4), DRAW(4)
REAL DLEGND(KTOP)
CHARACTER*256 CDUM1(5)
CHARACTER*8 CDUM2(10)
INTEGER IDUM2, IDUM3(10)
INTEGER BLKCOL(0:NELBLK)
LOGICAL GRABRT
C --Set background color
CALL SETBCK (2, CDUM1, IDUM2, IDUM3, CDUM2, *100)
GOTO 110
100 CONTINUE
WRITE (*, *) 'Problem setting background color'
110 CONTINUE
C --Begin a new plot
CALL GRPBEG
C --Set foreground color
CALL UGRCOL (0, BLKCOL)
C --Set up layout
DLEGND(KLFT) = DVIEW0(KRGT) + CHLSIZ
DLEGND(KRGT) = DBORD0(KRGT)
DLEGND(KTOP) = DVIEW0(KTOP)
DLEGND(KBOT) = DVIEW0(KBOT)
IF (DOQA) THEN
C --Outline the display area
IF (GRABRT ()) RETURN 1
CALL GRBOX ('L',
& DBORD0(KLFT), DBORD0(KRGT), DBORD0(KBOT), DBORD0(KTOP))
C *** Database title and dates ***
C --Title
IF (GRABRT ()) RETURN 1
DXTITL = 0.5 * (DBORD0(KRGT) - DBORD0(KLFT))
DYTITL = DBORD0(KTOP) -
& 0.5 * (DBORD0(KTOP) - DVIEW0(KTOP) + CHLSIZ)
C --Left-justify title
DO 120 N1 = 1, 79
IF (TITLE(N1:N1) .NE. ' ') GO TO 130
120 CONTINUE
130 CONTINUE
CALL GRTEXC (DXTITL, DYTITL, TITLE(N1:))
C --Creator
call qaleg(dlegnd, chlsiz, create, 1.0, 'Cre')
C --Modifier
call qaleg(dlegnd, chlsiz, modify, 1.5, 'Mod')
C --User
call qaleg(dlegnd, chlsiz, draw, 1.5, 'Drw')
end if
C *** Plot caption ***
DO 140 IEND = 3, 1, -1
IF (CAPTN(IEND) .NE. ' ') GOTO 150
140 CONTINUE
150 CONTINUE
IF (IEND .GT. 0) THEN
DXCAPT = DVIEW0(KLFT) + 0.5 * (DVIEW0(KRGT) - DVIEW0(KLFT))
DTOP = DVIEW0(KBOT) - CHLSIZ
IF (DOAXIS) THEN
DTOP = DTOP - 3.0*CHLSIZ
ELSE IF (DOLAB) THEN
DTOP = DTOP - 1.5*CHLSIZ
END IF
DBOT = DBORD0(KBOT)
CALL GRYCEN (CHLSIZ, DTOP, DBOT, IEND, IDUM)
DO 160 I = 1, IEND
IF (GRABRT ()) RETURN 1
CALL GRTEXC (DXCAPT, DTOP, CAPTN(I))
DTOP = DTOP - CHLSIZ
160 CONTINUE
END IF
C --Flush buffer, so label is complete at this point
CALL PLTFLU
RETURN
END
subroutine qaleg(dlegnd, chlsiz, entry, factor, label)
include 'params.blk'
PARAMETER (KLFT=1, KRGT=2, KBOT=3, KTOP=4)
REAL DLEGND(KTOP)
REAL CHLSIZ
CHARACTER*(MXSTLN) entry(4)
character*3 label
DLEGND(KTOP) = DLEGND(KTOP) - factor * CHLSIZ
C ... Limit creator, modified by, and drawn by strings to 20 characters
C Larger strings cause problems with metafiles
L1 = MIN(20, LENSTR(ENTRY(1)))
CALL GRTEXT (DLEGND(KLFT), DLEGND(KTOP),
& label//': '//ENTRY(1)(:L1))
DLEGND(KTOP) = DLEGND(KTOP) - CHLSIZ
l3 = lenstr(entry(3))
l4 = lenstr(entry(4))
CALL GRTEXT (DLEGND(KLFT), DLEGND(KTOP),
& ' '//ENTRY(3)(:l3) //
* ' '//ENTRY(4)(:l4))
return
end