
C++**************************************************** 6/23/80  2/5/81  VAX
C
C    PLOT1.FOR           CNINT.FOR CALLS ADDED JAN 86    ARDEAN LEITH
C                        CS DRIVERS ALTERED NOV 86       ARDEAN LEITH
C                        PROFILE PGMS ALTERED JAN 86     ARDEAN LEITH
C                        VERSATEC CALLS REMOVED MAR 90   ARDEAN LEITH
C                        CONVERTED TO SUBROUTINE JULY 87 ARDEAN LEITH
C                        FILENAME CONVERSION NOV 88      ARDEAN LEITH
C	                 CHANGED 4/30/93           MAHIEDDINE LADJADJ     
C                        REMOVED CNTERM 2/05/99          ARDEAN LEITH
C                        MOST OUTPUT NOW POSTSCRIPT 2/99 ARDEAN LEITH
C                        OPFILEC                  FEB 03 ARDEAN LEITH
C
C **********************************************************************
C=* FROM: SPIDER - MODULAR IMAGE PROCESSING SYSTEM.   AUTHOR: J.FRANK  *
C=* Copyright (C) 1985-2005  Health Research Inc.                      *
C=*                                                                    *
C=* HEALTH RESEARCH INCORPORATED (HRI),                                *   
C=* ONE UNIVERSITY PLACE, RENSSELAER, NY 12144-3455.                   *
C=*                                                                    *
C=* Email:  spider@wadsworth.org                                       *
C=*                                                                    *
C=* This program is free software; you can redistribute it and/or      *
C=* modify it under the terms of the GNU General Public License as     *
C=* published by the Free Software Foundation; either version 2 of the *
C=* License, or (at your option) any later version.                    *
C=*                                                                    *
C=* This program is distributed in the hope that it will be useful,    *
C=* but WITHOUT ANY WARRANTY; without even the implied warranty of     *
C=* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  *
C=* General Public License for more details.                           *
C=*                                                                    *
C=* You should have received a copy of the GNU General Public License  *
C=* along with this program; if not, write to the                      *
C=* Free Software Foundation, Inc.,                                    *
C=* 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.      *
C=*                                                                    *
C **********************************************************************
C
C       PLOT1(MAXDIM)
C
C       COMMANDS:
C       CO              CONTOURS A IMAGE TO POSTSCRIPT 
C       CO S            CONTOURS A IMAGE FILE INTO STERECON INPUT FILES
C       PF              PROFILES A IMAGE TO POSTSCRIPT 
C       PL              PLOTS CONTENTS OF DOC FILE TO POSTSCRIPT
C
C23456789012345678901234567890123456789012345678901234567890123456789012
C--*********************************************************************

      SUBROUTINE PLOT1(MAXDIM)

      PARAMETER (NFUNC  = 3)
      PARAMETER (MAXREG = 7)
      PARAMETER (MAXKEY = 5000)
      PARAMETER (NSIZE  = 2000)

      INCLUDE 'CMBLOCK.INC'

C     DATA IS IN BLANK COMMON FOR USE IN DPROFD
      COMMON DATA(3,NSIZE),DBUF(MAXREG,MAXKEY)

C     COMMON /COMMUN/ IS USED IN CNINT3!

      DIMENSION      PLIST(7)
      CHARACTER * 2  FUNC(NFUNC)
      CHARACTER * 81 IMFILE,DOFILE,POSFILE
      CHARACTER * 1  NULL,ANSW
      LOGICAL        DOCIT

      DATA FUNC/'CO', 'PF', 'PL'/
      DATA LUNIM/8/, LUNDOC/91/, LUNPOST/90/

        NULL  = CHAR(0)
        
C       IFUNCS:   CO  PF   PL 

C       FIND THE FUNCTION NUMBER
7	DO IFUNC = 1, NFUNC
          IF (FCHAR(1:2) .EQ. FUNC(IFUNC)) THEN
            GOTO (1, 2, 3), IFUNC
          END IF
        ENDDO
C       FUNCTION NOT IN PLOT1
        RETURN

C ----------------------- IMAGE CONTOURING -------------------------'CO'

C       TRACE CONTOURS INTO POSTSCRIPT FILE
C       OPEN SPIDER IMAGE TYPE FILE AS INPUT

1       MAXIM = 0
        CALL OPFILEC(0,.TRUE.,IMFILE,LUNIM,'O',ITYPE,NSAM,NROW,NSLICE,
     &             MAXIM,'INPUT',.FALSE.,IRTFLG)
        IF (IRTFLG .NE. 0) RETURN

C       ESTABLISH FMIN AND FMAX IF NOT IN COMMON YET
        IF (IMAMI .NE. 1) 
     &       CALL NORM3(LUNIM,NSAM,NROW,NSLICE,FMAX,FMIN,AV)

        CALL CNINT3(LUNIM,LUNPOST,NSAM,NROW,NSLICE,FMIN,FMAX,MAXDIM)
        GOTO 9000

C      ----------------- PROFILE ACROSS IMAGE-----------------------'PF'

C       OPEN A SPIDER IMAGE TYPE FILE AS INPUT
2       MAXIM = 0
        CALL OPFILEC(0,.TRUE.,IMFILE,LUNIM,'O',IFORM,NSAM,NROW,NSLICE,
     &             MAXIM,'IMAGE',.FALSE.,IRTFLG)
        IF (IRTFLG .NE. 0) GOTO 9000

C       GET NAME OF POSTSCRIPT FILE AND OPEN AS SEQUENTIAL FORMATTED
        CALL OPAUXFILE(.TRUE.,POSFILE,'ps',LUNPOST,0,'N',
     &                       'POSTSCRIPT OUTPUT',.TRUE.,IRTFLG)
        IF (IRTFLG .NE. 0) GOTO 9000

        NLETC = LNBLNKN(POSFILE)
        NLETI = LNBLNKN(IMFILE)
        CALL DPROFL(IMFILE,NLETI,POSFILE,NLETC,LUNIM,LUNPOST,NSAM,NROW)

        CALL POPRINT(POSFILE)
        GOTO 9000

C      ----------------- PL OPTIONS --------------------------------'PL'

3       IF (FCHAR(4:5) .EQ. 'HI') THEN
C          HISTOGRAM OF DOC FILE ------------------------------- 'PL HI'
           CALL DCHIST(LUNDOC,LUNIM)

        ELSEIF (FCHAR(4:4) .EQ. 'F') THEN
C          FIT CURVE TO DOC FILE (NO PLOT!) ------------------- 'PL FIT'

C          OPEN DOC FILE FOR INPUT
           CALL FILERD(DOFILE,NLETD,DATEXC,'DOCUMENT',IRTFLG)
           IF (IRTFLG .NE. 0) GOTO 9000
           IOP = 0
           CALL UNSDAL(DOFILE,IOP,LUNDOC,1,PLIST,1,DBUF,MAXKEY,MAXREG,
     &               NKEY,LER)
           CLOSE(LUNDOC)
           CALL POLLSQ(DBUF,MAXREG,MAXKEY,LUNDOC)

        ELSE

C          PLOT OF DOC REGISTER CONTENTS VS DOC REGISTER ------- 'PL  '
           CALL DPROFD(LUNDOC,LUNPOST)

       ENDIF
       GOTO 9000                      

C      -------------- SHOW CONTOOR PLOT --------------------------  'CS'


9000	CLOSE(LUNIM)
        CLOSE(LUNPOST)

        RETURN
	END

