00001 c
00002 c The following is an alphabetized list of all common blocks
00003 c necessary for the proper functioning of mcdraw, when graphics
00004 c are being switched (i.e. these blocks must be saved and restored
00005 c to preserve continuity).
00006 c
00007 c Only non-mcpak arrays are listed here.
00008 c
00009 c NOTE: We need not store device-specific material if only a
00010 c single instance of a given device is permitted--the info is
00011 c saved anyway, and cannot be overwritten.
00012 c
00013 c NOTE: Most history information will be lost when the graphics
00014 c context changes.
00015 c
00016 subroutine save_mcdraw_context(id)
00017 save
00018 c
00019 c Save all relevant commons in a character string.
00020 c
00021 parameter (NCMAX = 100)
00022 character*1000 save_string(NCMAX)
00023 c
00024 common/colorlimits/icmin,icmax
00025 common/compressframes/icompress
00026 common/dataoffset/delx,dely,delz,facx,facy,facz
00027 common/drawparams/roff,soff,aspect1,xlen,ylen,hs,hn,hp,
00028 $ idevset,jbox,iorig
00029 common/fileinput/inpmode
00030 common/frameparams1/xmin,xmax,ymin,ymax,modex,modey
00031 character*80 xttl,yttl
00032 common/frameparams2/xttl,yttl
00033 common/framesize/nxpix,nx0,xfac,nypix,ny0,yfac
00034 common/initial/roff0,soff0,hn0,hs0,hp0
00035 common/inputposn/iposn,jposn
00036 common/localoffset/xoff,yoff
00037 common/mcdcolor/icolor
00038 character*80 colormapfile
00039 common /mcdraw_colormap_file/ colormapfile
00040 character*1 plot_symbol
00041 common/mcd_local/ offx,offy,offxsave,offysave,offlabel,
00042 $ angle,anglesave,rloc,sloc,
00043 $ iweight,iwtsto,jth,jsym,itype,
00044 $ ibox,ierbox(0:4),plot_symbol
00045 c
00046 integer ixttl(80),iyttl(80),icmap(80)
00047 c
00048 c Note special treatment of character strings xtty and yttl.
00049 c
00050 nxttl = 0
00051 nyttl = 0
00052 ncmap = 0
00053 do i=80,1,-1
00054 if (nxttl.eq.0.and.xttl(i:i).gt.' ') nxttl = i
00055 if (nyttl.eq.0.and.yttl(i:i).gt.' ') nyttl = i
00056 if (ncmap.eq.0.and.colormapfile(i:i).gt.' ') ncmap = i
00057 end do
00058 c
00059 write(save_string(id),*)
00060 $ offx,offy,offxsave,offysave,offlabel,
00061 $ angle,anglesave,rloc,sloc,
00062 $ iweight,iwtsto,jth,jsym,ichar(plot_symbol),itype,
00063 $ ibox,ierbox,
00064 $ icmin,icmax,icompress,delx,dely,delz,
00065 $ facx,facy,facz,roff,soff,aspect1,xlen,ylen,hs,hn,hp,
00066 $ idevset,jbox,iorig,
00067 $ inpmode,xmin,xmax,ymin,ymax,modex,modey,
00068 $ nxpix,nx0,xfac,nypix,ny0,yfac,roff0,soff0,hn0,hs0,hp0,
00069 $ iposn,jposn,xoff,yoff,icolor,nxttl,nyttl,ncmap,
00070 $ (ichar(xttl(i:i)),i=1,nxttl),(ichar(yttl(i:i)),i=1,nyttl),
00071 $ (ichar(colormapfile(i:i)),i=1,ncmap)
00072 return
00073 c
00074 entry restore_mcdraw_context(id)
00075 c
00076 c Restore a saved graphics context.
00077 c
00078 read(save_string(id),*)
00079 $ offx,offy,offxsave,offysave,offlabel,
00080 $ angle,anglesave,rloc,sloc,
00081 $ iweight,iwtsto,jth,jsym,jsymbol,itype,
00082 $ ibox,ierbox,
00083 $ icmin,icmax,icompress,delx,dely,delz,
00084 $ facx,facy,facz,roff,soff,aspect1,xlen,ylen,hs,hn,hp,
00085 $ idevset,jbox,iorig,
00086 $ inpmode,xmin,xmax,ymin,ymax,modex,modey,
00087 $ nxpix,nx0,xfac,nypix,ny0,yfac,roff0,soff0,hn0,hs0,hp0,
00088 $ iposn,jposn,xoff,yoff,icolor,nxttl,nyttl,ncmap,
00089 $ (ixttl(i),i=1,nxttl),(iyttl(i),i=1,nyttl),
00090 $ (icmap(i),i=1,ncmap)
00091 c
00092 c Reconstruct the strings.
00093 c
00094 plot_symbol = char(jsymbol)
00095 do i=1,80
00096 if (i.le.nxttl) then
00097 xttl(i:i) = char(ixttl(i))
00098 else
00099 xttl(i:i) = ' '
00100 end if
00101 if (i.le.nyttl) then
00102 yttl(i:i) = char(iyttl(i))
00103 else
00104 yttl(i:i) = ' '
00105 end if
00106 if (i.le.ncmap) then
00107 colormapfile(i:i) = char(icmap(i))
00108 else
00109 colormapfile(i:i) = ' '
00110 end if
00111 end do
00112 c
00113 end