{This file contains additional macros that work with stacks.} procedure CheckForStack; begin if nPics=0 then begin PutMessage('This macro requires a stack.'); exit; end; if nSlices=0 then begin PutMessage('This window is not a stack.'); exit; end; end; macro 'Add Slice [A]'; begin CheckForStack; AddSlice end; macro 'Delete Slice [D]'; begin CheckForStack; DeleteSlice end; macro 'First Slice [F]'; begin CheckForStack; SelectSlice(1) end; macro 'Last Slice [L]'; begin CheckForStack; SelectSlice(nSlices) end; macro '(-' begin end; macro 'Make Surface Plot MovieÉ'; var i,OldStack,NewStack:integer; N,PlotWidth,PlotHeight:integer; ScaleFactor:real; OneToOne:boolean; begin RequiresVersion(1.50); CheckForStack; SaveState; OldStack:=PicNumber; N:=nSlices; PlotWidth:=GetNumber('Surface Plot Width:',300); PlotHeight:=GetNumber('Surface Plot Width:',300); SetNewSize(PlotWidth,PlotHeight); MakeNewStack('Stack'); NewStack:=PicNumber; SelectPic(OldStack); for i:= 1 to N do begin SelectSlice(1); SurfacePlot; SelectAll; Copy; Dispose; SelectPic(NewStack); if i<>1 then AddSlice; Paste; SelectPic(OldStack); DeleteSlice; end; Dispose; {OldStack} RestoreState; end;