CTITLE SACGRID -- COLOR REFERENCE GRID PLOTTING C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA CA AUTHOR J.V.S. HARVEY CA LANGUAGE VS FORTRAN (77) CA REWRITTEN 29 MAR 1988 CA CA CA THIS SUBROUTINE PLOTS A 2-D GRID FOR COLOR DATA DISPLAY. CA CA CA CALL SACGRID( XMIN, YMIN, DELTAX, DELTAY, NXGRID, GRDINC, CA BEGLAB, ENDLAB, INCLAB, HTCHAR, XMAX, YMAX ) CA CA CA IN/OUT ARGUMENT TYPE DESCRIPTION CA CA IN XMIN, YMIN R4 CURRENT PLOT ORIGIN (LOWER LEFT) CA IN DELTAX R4 X GRID SPACING IN INCHES CA IN DELTAY R4 Y GRID SPACING IN INCHES CA IN NXGRID I4 NUMBER OF X GRID LINES CA IN GRDINC I4 X GRID LINE INCREMENT CA CA IN BEGLAB I4 BEGINNING Y-AXIS LABEL CA IN ENDLAB I4 ENDING Y-AXIS LABEL CA IN INCLAB I4 Y-AXIS LABEL INCREMENT CA POSITIVE FOR UPWARD PLOT CA NEGATIVE FOR DOWNWARD PLOT CA IN HTCHAR R4 Y-AXIS LABEL CHARACTER HEIGHT CA CA OUT XMAX R4 MAXIMUM X GRID LINE PLOTTED CA OUT YMAX R4 MAXIMUM Y GRID LINE PLOTTED CA CAEND C*********************************************************************** C C SUBROUTINES CALLED: GVECT -- UNIRAS VECTOR PLOTTING C GNUMB -- UNIRAS NUMERIC LABEL PLOTTING C GCHARJ -- UNIRAS CHARACTER JUSTIFICATION C C*********************************************************************** C SUBROUTINE SACGRID( XMIN, YMIN, DELTAX, DELTAY, NXGRID, * GRDINC, BEGLAB, ENDLAB, INCLAB, HTCHAR, * XMAX, YMAX ) IMPLICIT INTEGER (A-Z) C REAL XMIN, YMIN, DELTAX, DELTAY, XMAX, YMAX REAL HTCHAR C C REAL VARIABLES -- LOCAL C REAL LABEL REAL X, X1, X2 REAL Y, Y1, Y2 C C*********************************************************************** C*** **** C*** FILL IN VERTICAL COMPONENTS **** C*** **** C*********************************************************************** C C ESTABLISH INCRMENT AND LIMIT PARMS C LABINC = INCLAB IF( INCLAB .LT. 0 ) LABINC = 0 - INCLAB C YMAX = YMIN + DELTAY*( ENDLAB - BEGLAB )/LABINC C====================================================================== C C DRAW VERTICAL GRID LINES C CALL GVECT( XMIN, YMAX, 0 ) CALL GVECT( XMIN, YMIN, 1 ) C XMAX = XMIN IF( GRDINC .LE. 0 ) THEN XMAX = XMAX + DELTAX*NXGRID C ELSE JGRID = 0 DO 150 IXGRID = 1, NXGRID XMAX = XMAX + DELTAX C JGRID = JGRID + 1 IF( JGRID .GE. GRDINC ) THEN JGRID = 0 C CALL GVECT( XMAX, YMIN, 0 ) CALL GVECT( XMAX, YMAX, 1 ) ENDIF 150 CONTINUE ENDIF XMAX = XMAX + DELTAX C CALL GVECT( XMAX, YMAX, 0 ) CALL GVECT( XMAX, YMIN, 1 ) C C*********************************************************************** C*** **** C*** FILL IN HORIZONTAL COMPONENTS **** C*** **** C*********************************************************************** C II = BEGLAB/LABINC COUNT = BEGLAB - LABINC*II C IF( INCLAB .LT. 0 ) Y = YMAX IF( INCLAB .GT. 0 ) Y = YMIN C CALL GVECT( XMIN, Y, 0 ) CALL GVECT( XMAX, Y, 1 ) C DO 140 CURLAB = BEGLAB, ENDLAB, LABINC LABEL = CURLAB C ------------------------------------------- C C DRAW LEFT AXIS LABELS AND TIC MARKS C IF( COUNT .EQ. 0 ) THEN X = XMIN - 0.25 CALL GCHARJ( 5 ) CALL GNUMB( LABEL, X, Y, HTCHAR, 0 ) C X1 = XMIN - 0.2 C ELSE IF( COUNT .EQ. 5 ) THEN X1 = XMIN - 0.2 ELSE X1 = XMIN - 0.1 ENDIF C CALL GVECT( X1, Y, 0 ) CALL GVECT( XMIN, Y, 1 ) C ------------------------------------------- C C DRAW HORIZONTAL GRID LINES C IF( GRDINC .GT. 0 ) THEN IF( COUNT .EQ. 0 .OR. COUNT .EQ. 5 ) THEN CALL GVECT( XMIN, Y, 0 ) CALL GVECT( XMAX, Y, 1 ) C ELSE CCC Y1 = Y - 0.1*DELTAY CCC Y2 = Y + 0.1*DELTAY C X1 = XMIN - 0.1*DELTAX CCC X = XMIN X2 = XMIN + 0.1*DELTAX C DO 125 IXSCAN = 1, NXGRID X1 = X1 + DELTAX CCC X = X + DELTAX X2 = X2 + DELTAX C CALL GVECT( X1, Y, 0 ) CALL GVECT( X2, Y, 1 ) C CCC CALL GVECT( X, Y1, 0 ) CCC CALL GVECT( X, Y2, 1 ) 125 CONTINUE ENDIF ENDIF C ------------------------------------------- C C DRAW RIGHT AXIS LABELS AND TIC MARKS C IF( COUNT .EQ. 0 ) THEN CALL GCHARJ( 3 ) X = XMAX + 0.25 CALL GNUMB( LABEL, X, Y, HTCHAR, 0 ) C X2 = XMAX + 0.2 C ELSE IF( COUNT .EQ. 5 ) THEN X2 = XMAX + 0.2 ELSE X2 = XMAX + 0.1 ENDIF C CALL GVECT( XMAX, Y, 0 ) CALL GVECT( X2, Y, 1 ) C ------------------------------------------- C C INCREMENT FOR NEXT LINE C IF( INCLAB .GT. 0 ) Y = Y + DELTAY IF( INCLAB .LT. 0 ) Y = Y - DELTAY C COUNT = COUNT + 1 IF( COUNT .GE. 10 ) COUNT = 0 140 CONTINUE C ------------------------------------------- C C END OF PLOT C IF( COUNT .NE. 1 .OR. GRDINC .LE. 0 ) THEN IF( INCLAB .GT. 0 ) Y = YMAX IF( INCLAB .LT. 0 ) Y = YMIN C CALL GVECT( XMIN, Y, 0 ) CALL GVECT( XMAX, Y, 1 ) ENDIF CALL GVECT( XMAX, Y, 0 ) C CALL GCHARJ( 0 ) RETURN END