	pro dev_sel,Filename,landscape=landscape,half=half, $
	Xoffset=Xoffset, Yoffset=Yoffset, Xsize=Xsize, Ysize=Ysize, color=color, $
	thick=thick, bits_per_pixel=bits, keep_color_table = keep


common dev_sel, dev,X_save,Y_save,Z_save,P_save, name
common colors, r_orig, g_orig, b_orig, r_curr, g_curr, b_curr

if strlowcase(strmid(!Version.OS,0,3)) eq 'win' then Screen='WIN' else Screen='X'
	if n_elements(color) le 0 then color=0

nc = !d.table_size

inp:

dev=''

read,'Output - screen (S), PS (P), EPS (E), CGM (C), PCL (L), GIF (G), BMP (B)?', dev

if n_elements(bits) le 0 then bits=8

dev=strlowcase(dev)

	IF dev ne 'b' and dev ne 'g' then begin

if n_elements(Filename) le 0 then begin
Filename=pickfile(/write)
	if Filename eq '' then begin
	print,'You have selected no file'
	return
	endif
endif

name=(name_extract(Filename))(1)

	ENDIF

if n_elements(name) le 0 then name=(name_extract(Filename))(1)

X_save=!X
Y_save=!Y
Z_save=!Z
P_save=!P


	CASE dev OF

's':	begin
set_plot,Screen
device, get_screen=screen
window,/free,xsi=screen(0)*0.9,ysi=screen(1)*0.9,tit=name
thick=1.
	end

'g':	begin
set_plot,Screen
window, /free,xsi=640,ysi=480,tit=name
thick=1.
	end

'b':	begin
set_plot,Screen
window, /free, xsi=640,ysi=480,tit=name
thick=1.
	end


'p':	begin
set_plot,'PS'

	CASE 1 OF

(keyword_set(half) eq 0) and (keyword_set(landscape) eq 0): $

	begin

if n_elements(Xsize) le 0 then Xsize=17.78
if n_elements(Xoffset) le 0 then Xoffset = (21.-Xsize)/2.		; Xoffset=1.905
if n_elements(Ysize) le 0 then Ysize=22.0
if n_elements(Yoffset) le 0 then Yoffset=(29.-Ysize)/2.		; 3.3+1.5


	end

keyword_set(half): $

	begin

if n_elements(Xsize) le 0 then Xsize=17.78
if n_elements(Xoffset) le 0 then Xoffset = (21.-Xsize)/2.		; Xoffset=1.905
if n_elements(Ysize) le 0 then Ysize=12.7
if n_elements(Yoffset) le 0 then Yoffset=(29.-Ysize)/2.+4.	; 12.7


	end

keyword_set(landscape): $

	begin
if n_elements(Xsize) le 0 then Xsize=24.13
if n_elements(Yoffset) le 0 then Yoffset=29-(29.-Xsize)/2.		; 0.905
if n_elements(Ysize) le 0 then Ysize=15.71
if n_elements(Xoffset) le 0 then Xoffset=(21.-Ysize)/2.			; 0.905; 27.035

	end

ELSE:

	ENDCASE


	if not(keyword_set(landscape)) then begin

device, file=name+'.ps', xsize=Xsize, ysize=Ysize, Xoff=Xoffset, yoff=Yoffset, $
	/port, color=color, encaps=0, bits=bits
	endif else begin
device, file=name+'.ps', xsize=Xsize, ysize=Ysize, Xoff=Xoffset, yoff=Yoffset, $
	/land, color=color, encaps=0, bits=bits
	endelse

if n_elements(r_curr) gt 1 then tvlct, r_curr, g_curr, b_curr

if n_elements(thick) le 0 then thick=3.
	end

'e':	begin
set_plot,'PS'

	CASE 1 OF

(keyword_set(half) eq 0) and (keyword_set(landscape) eq 0): $

	begin

if n_elements(Xoffset) le 0 then Xoffset=1.905
if n_elements(Yoffset) le 0 then Yoffset=3.3+1.5
if n_elements(Xsize) le 0 then Xsize=17.78
if n_elements(Ysize) le 0 then Ysize=22.0

	end

keyword_set(half): $

	begin

if n_elements(Xoffset) le 0 then Xoffset=1.905
if n_elements(Yoffset) le 0 then Yoffset=12.7
if n_elements(Xsize) le 0 then Xsize=17.78
if n_elements(Ysize) le 0 then Ysize=12.7

	end

keyword_set(landscape): $

	begin

if n_elements(Xoffset) le 0 then Xoffset=0.905
if n_elements(Yoffset) le 0 then Yoffset=27.035
if n_elements(Xsize) le 0 then Xsize=24.13
if n_elements(Ysize) le 0 then Ysize=15.71


	end

ELSE:

	ENDCASE


	if not(keyword_set(landscape)) then begin

device, file=name+'.eps', xsize=Xsize, ysize=Ysize, Xoff=Xoffset, yoff=Yoffset, $
	/port,color=color, encaps=1, bits=bits

	endif else begin

Yoffset=29-(29.-Xsize)

device, file=name+'.eps', xsize=Xsize, ysize=Ysize, Xoff=Xoffset, yoff=Yoffset, $
	/land,color=color, encaps=1, bits=bits

	endelse

if n_elements(r_curr) gt 1 then tvlct, r_curr, g_curr, b_curr

if n_elements(thick) le 0 then thick=3.
	end

'l':	begin
set_plot,'PCL'
device,file=name+'.pcl',xsize=17.78,ysize=22.0,yoff=3.3
if n_elements(thick) le 0 then thick=3.
	end


'c':	begin
set_plot,'CGM'
device,file=name+'.cgm'
if n_elements(thick) le 0 then thick=3.
	end

ELSE:	begin
print,'Incorrect input'
goto,inp
	end

	ENDCASE

	if !d.name ne 'CGM' then begin
!P.background=!d.n_colors-1
!P.color=0
	endif

!x.thick=(!y.thick=(!z.thick=thick))
!P.thick=(!P.charthick=thick)

	if keyword_set(keep) then begin
nc1 = !d.table_size

tvlct, 	interpolate(r_curr, findgen(nc1/(nc1-1)*nc)), $
	interpolate(g_curr, findgen(nc1/(nc1-1)*nc)), $
	interpolate(b_curr, findgen(nc1/(nc1-1)*nc))

print, 'Color table loaded.'
	endif

	end
