;+
;PROJECT:
;           SolarB EIS
;
;NAME:
;           eis_import_raster
;
;PURPOSE:
;           Procedure
;
;CATEGORY:
;           EIS Technical Planning
;
;INPUTS:
;           ra  - eis_raster structure
;
;MODIFICATION HISTORY:
;           Written by: John Rainnie, RAL (March 2005)
;
;-
;************************************************************************
FUNCTION eis_import_raster , fileName

; create a line list structure
ra   = {eis_raster}
line = ''
;
OPENR , lun , fileName, /GET_LUN
;
;
;
READF , lun , line
; This line should be "EIS_RASTER"
split = STRSPLIT(line , /EXTRACT)
; There should be only 1 string
IF (N_ELEMENTS(split) NE 1) AND (split[0] NE 'EIS_RASTER') THEN RETURN , 0
;
; ACRONYM
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'ACRONYM')  THEN BEGIN
    ra.acronym = split[1]
ENDIF ELSE RETURN , 0
;
; TITLE
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'TITLE')  THEN BEGIN
    ra.title = split[1]
ENDIF ELSE RETURN , 0
;
; AUTHOR
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'AUTHOR')  THEN BEGIN
    ra.author = split[1]
ENDIF ELSE RETURN , 0
;
; DATE
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'DATE')  THEN BEGIN
    ra.date = SYSTIM()
ENDIF ELSE RETURN , 0
;
; RASTERTYPE
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'RASTERTYPE')  THEN BEGIN
    ra.rasterType = split[1]
ENDIF ELSE RETURN , 0
;
; SCAN_FM_NSTEPS
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'SCAN_FM_NSTEPS')  THEN BEGIN
    ra.scan_fm_nSteps = split[1]
ENDIF ELSE RETURN , 0
;
; SCAN_FM_STEPSIZE
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'SCAN_FM_STEPSIZE')  THEN BEGIN
    ra.scan_fm_stepSize = split[1]
ENDIF ELSE RETURN , 0
;
; SNS_NEXPS
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'SNS_NEXPS')  THEN BEGIN
    ra.sns_nExps = split[1]
ENDIF ELSE RETURN , 0
;
; SNS_DURATION
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'SNS_DURATION')  THEN BEGIN
    ra.sns_duration = split[1]
ENDIF ELSE RETURN , 0
;
; NWINDOWS
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'NWINDOWS')  THEN BEGIN
    ra.nWindows = split[1]
ENDIF ELSE RETURN , 0
;
; DATAWINDOWS
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'DATAWINDOWS')  THEN BEGIN
    ; Get widths(INT)
    dw = FIX(STRSPLIT(split[1] , ',' , /EXTRACT))
    ra.dataWindows[0:ra.nWindows-1] = dw
ENDIF ELSE RETURN , 0
;
; WINDHEIGHT
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'WINDHEIGHT')  THEN BEGIN
    ra.windHeight = split[1]
ENDIF ELSE RETURN , 0
;
; WINDWIDTH
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'WINDWIDTH')  THEN BEGIN
    ra.windWidth = split[1]
ENDIF ELSE RETURN , 0
;
; SLITINDEX
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'SLITINDEX')  THEN BEGIN
    ra.slitIndex = split[1]
ENDIF ELSE RETURN , 0
;
; NEXP
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'NEXP')  THEN BEGIN
    ra.nExp = split[1]
ENDIF ELSE RETURN , 0
;
; EXPOSURES
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'EXPOSURES')  THEN BEGIN
    ; Get widths(INT)
    exposures = LONG(STRSPLIT(split[1] , ',' , /EXTRACT))
    ra.exposures[0:ra.nExp-1] = exposures
ENDIF ELSE RETURN , 0
;
; DELAYS
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'DELAYS')  THEN BEGIN
    ; Get widths(INT)
    delays = FIX(STRSPLIT(split[1] , ',' , /EXTRACT))
    ra.delays[0:ra.nExp-1] = delays
ENDIF ELSE RETURN , 0
;
; DURATION
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'DURATION')  THEN BEGIN
    ra.duration = split[1]
ENDIF ELSE RETURN , 0

;
; VOLUME
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'VOLUME')  THEN BEGIN
    ra.volume = split[1]
ENDIF ELSE RETURN , 0
;
; LL_ID
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'LL_ID')  THEN BEGIN
    ra.ll_id = 0
ENDIF ELSE RETURN , 0


;
; EIS_LINE_LIST
;
READF , lun , line
; This line should be "EIS_RASTER"
split = STRSPLIT(line , /EXTRACT)
; There should be only 1 string
IF (N_ELEMENTS(split) NE 1) AND (split[0] NE 'EIS_LINE_LIST') THEN RETURN , 0

; create a line list structure
ll   = {eis_line_list}

;
; ACRONYM
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'ACRONYM')  THEN BEGIN
    ll.acronym = split[1]
ENDIF ELSE RETURN , 0
;
; TITLE
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'TITLE')  THEN BEGIN
    ll.title = split[1]
ENDIF ELSE RETURN , 0
;
; AUTHOR
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'AUTHOR')  THEN BEGIN
    ll.author = split[1]
ENDIF ELSE RETURN , 0
;
; DATE
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'DATE')  THEN BEGIN
    ll.date = SYSTIM()
ENDIF ELSE RETURN , 0
;
; N_LINES
;
READF , lun , line
split = STRSPLIT(line , /EXTRACT)
IF (split[0] EQ 'N_LINES')  THEN BEGIN
    ll.nLines = FIX(split[1])
ENDIF ELSE RETURN , 0
;
; LINES
;
FOR i = 0 , ll.nLines - 1 DO BEGIN

    READF , lun , line
    split = STRSPLIT(line , /EXTRACT)

    ll.lines[i].wavelength = FIX(split[3])
    ll.lines[i].name       = STRJOIN(split[1:2] , ' ' , /SINGLE)

    CASE split[4] OF
        'c'  :  type = 0
        'p'  :  type = 1
        ELSE :  type = 2
    ENDCASE
    ll.lines[i].type       = type

ENDFOR

; Re-calculate duration
ra.duration = eis_raster_duration(ra,ll)


RETURN , {ra:ra , ll:ll}

END



END
