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