pro pp_itool_save,fname,isvfile=isvfile,epsfile=epsfile,iclose=iclose,cmyk=cmyk,novec=novec,id=id
compile_opt idl2
cmyk=n_elements(cmyk) eq 1 ? cmyk : 0
iclose=n_elements(iclose) eq 1 ? iclose : 0
novec=n_elements(novec) eq 1 ? novec : 0
if (n_elements(fname) eq 1) then begin
isvfile=fname+'.isv'
epsfile=fname+'.eps'
endif
if (n_elements(id) eq 1) then itcurrent,id
id=itgetcurrent(tool=ot)
if (~obj_valid(ot)) then message,'No valid itool found'
psi=ot->findidentifiers('*post*')
pst=ot->getbyidentifier(psi)
pst->setproperty,graphics_format=~novec,color_model=cmyk
ot->commitactions
if (float(!version.release) ge 7.1) then begin
if (n_elements(isvfile) eq 1) then isave,isvfile
if (n_elements(epsfile) eq 1) then isave,epsfile
endif else begin
if (n_elements(isvfile) eq 1) then begin
idsave=ot->findidentifiers('*save',/operations)
osave=ot->getbyidentifier(idsave)
osave->setproperty,show_execution_ui=0,filename=isvfile
ids=ot->findidentifiers("*TOOL*/WINDOW/VIEW*/VISUALIZATION LAYER")
nids=n_elements(ids)
vrp=ptrarr(nids)
ov=objarr(nids)
for i=0,nids-1 do begin
ov[i]=ot->getbyidentifier(ids[i])
ov[i]->getproperty,viewplane_rect=vr
vrp[i]=ptr_new(vr)
endfor
idsa=ot->findidentifiers("*TOOL*/WINDOW/VIEW*/ANNOTATION LAYER/TEXT")
if (idsa[0] ne '') then begin
nidsa=n_elements(idsa)
arp=ptrarr(nidsa)
oa=objarr(nidsa)
endif else nidsa=0
for i=0,nidsa-1 do begin
oa[i]=ot->getbyidentifier(idsa[i])
oa[i]->getproperty,font_size=lfs
arp[i]=ptr_new(lfs)
endfor
void=ot->doaction(idsave)
for i=0,nids-1 do ov[i]->setproperty,viewplane_rect=*vrp[i]
for i=0,nidsa-1 do oa[i]->setproperty,font_size=*arp[i]
ot->commitactions
endif
if (n_elements(epsfile) eq 1) then begin
idexp=ot->findidentifiers('*export*',/operations)
oexp=ot->getbyidentifier(idexp)
oexp->setproperty,show_execution_ui=0
oexp->setproperty,filename=epsfile
oexp->setproperty,source=1
void=ot->doaction(idexp)
endif
endelse
if (iclose) then itdelete
end