
C++*********************************************************************
C
C    AP_GETDATS.F       EXTRACTED                 OCT. 2003 ARDEAN LEITH
C                       LS1... INTERNALIZED       DEC. 2003 ARDEAN LEITH
C                       CALLS NORM3               JUN  2004 ARDEAN LEITH
C                       REMOVED WINDOWING         MAR  2005 ARDEAN LEITH
C                       AVI & SIGI PARAMETERS     NOV  2008 ARDEAN LEITH
C
C **********************************************************************
C=* FROM: SPIDER - MODULAR IMAGE PROCESSING SYSTEM.   AUTHOR: J.FRANK  *
C=* Copyright (C) 1985-2008  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  AP_GETDATS(ILIST,NUMIMG,LSAM,LROW,NUMTH,EXPPAT,INPIC, IGO,IEND,
C                 XBUF,AVI,SIGI, IRTFLG)
C
C PURPOSE:  READ SERIES OF IMAGE DATA INTO ARRAY XBUF FOR 'AP' OPS.
C           CALLS NORM3 IF NEEDED. CAN LOAD MUTIPLE IMAGES
C           RETURNS ARRAY OF IMAGE STATISTICS
C
C PARAMETERS:
C       ILIST               LIST OF IMAGE FILE NUMBERS        (INPUT)
C       NUMIMG              NO. OF IMAGES                     (INPUT)
C       LSAM,LROW           IMAGE DIMENSIONS                  (INPUT)
C       EXPPAT              IMAGE SERIES FILE TEMPLATE        (INPUT)
C       INPIC               IMAGE FILE IO UNIT                (INPUT)
C       IGO,IEND            IMAGE INDEX RANGE                 (INPUT)
C       XBUF                IMAGE ARRAY                       (OUTPUT)
C       AVI,SIGI            STATISTICS ARRAY                  (OUTPUT)
C       XBUF                OUTPUT ARRAY                      (OUTPUT)
C       IRTFLG              ERROR FLAG                        (OUTPUT)
C
C  VARIABLES:
C
C--*********************************************************************

	SUBROUTINE AP_GETDATS(ILIST,NUMIMG, LSAM,LROW,
     &                       NUMTH,EXPPAT,INPIC, IGO,IEND,
     &                       XBUF,AVI,SIGI, IRTFLG)

        INCLUDE 'CMLIMIT.INC'
        INCLUDE 'CMBLOCK.INC'

        INTEGER, DIMENSION(NUMIMG),INTENT(IN)        :: ILIST
        INTEGER,INTENT(IN)                           :: NUMIMG
        INTEGER,INTENT(IN)                           :: LSAM,LROW,NUMTH
        CHARACTER (LEN=*),INTENT(IN)                 :: EXPPAT
        INTEGER,INTENT(IN)                           :: INPIC,IGO,IEND
	REAL, DIMENSION(LSAM,LROW,NUMTH)             :: XBUF
	REAL, DIMENSION(NUMTH),INTENT(OUT)           :: AVI,SIGI
        INTEGER,INTENT(OUT)                          :: IRTFLG

        CHARACTER(LEN=MAXNAM)                        :: FILNAM
        LOGICAL                                      :: ONEIMAGE

        IRTFLG = 1

c       write(6,*) 'Reading images: ',igo,'...',iend

        ONEIMAGE = (IGO .LE. 0 .OR. ILIST(IGO) .LE. 0)

        DO ITI=IGO,IEND
           IF (ONEIMAGE) THEN
              FILNAM = EXPPAT
           ELSE
              NLET = 0
              CALL FILGET(EXPPAT,FILNAM,NLET,ILIST(ITI),IRTFLG)
              IF (IRTFLG .NE. 0)  RETURN
           ENDIF

C          OPEN EXISTING IMAGE FILE
           MAXIM = 0
           CALL OPFILEC(0,.FALSE.,FILNAM,INPIC,'O',IFORM,
     &               LSAMT,LROWT,NSLICE,MAXIM,' ',.FALSE.,IRTFLG)
           IF (IRTFLG .NE. 0)  RETURN

           IF (LSAMT.NE.LSAM .OR. LROWT.NE.LROW)  THEN
              CALL ERRT(102,'INCONSISTENT IMAGE SIZE',LSAMT)
              IRTFLG = 1
              RETURN
           ENDIF
           IF (IMAMI .NE. 1) THEN
C             FIND IMAGE STATISTICS
              CALL NORM3(INPIC,LSAM,LROW,NSLICE,FMAX,FMIN,AV)
           ENDIF
           
C          XBUF STARTING LOCATION
           IT = ITI-IGO+1

C          RECORD THE AVERAGE AND SD (IN COMMON)
           AVI(IT)  = AV
           SIGI(IT) = SIG

C          LOAD THE WHOLE IMAGE
           CALL REDVOL(INPIC,LSAM,LROW,1,1, XBUF(1,1,IT),IRTFLG) 
           CLOSE(INPIC)
           IF (IRTFLG .NE. 0) RETURN
        ENDDO

        IRTFLG = 0
        END

