SCR_STORE
Syntax |
SCR_STORE [#channel,] address or SCR_STORE width,height,x,y TO address |
Location |
SuperWindow Toolkit |
This command allows you to store a part of the screen at the given address in RAM. The section of the screen to be stored can be either a window channel number (default #1) or the dimensions of a rectangle. The amount of memory SCR_STORE needs is returned by SCR_SIZE. SCR_STORE needs eight bytes plus the actual amount of space taken up by the section of the screen. These four words (one word consists of two bytes) are kept at the start of the storage area and contain the size and position of the screen part as passed by the second syntax above. They can easily be read like this: width = PEEK_W (adress) height = PEEK_W (adress+2) x = PEEK_W (adress+4) y = PEEK_W (adress+6)
Example
The SCR_STORE and SCR_REFRESH commands are ideal tools to create and show animations. The actual speed of SCR_REFRESH is independent from the contents of the screen, so it does not matter how long it took to create the pictures… Enjoy it.
100 wx=70: wy=70: px=100: py=100
110 OPEN#3,"scr_" & wx & "x" & wy & "a" & px & "x" & py: CLS#3
120 size=SCR_SIZE(wx, wy): DIM adr(20)
130 bx=2: by=2: pmax=10
140 :
150 FOR p=1 TO pmax
160 adr(p)=ALCHP(size)
170 FOR x=0 TO wx-bx STEP bx
180 a=2*SQRT(p)*x/wx-SQRT(p)
190 FOR y=0 TO wy-by STEP by
200 b=2*SQRT(p)*y/wy-SQRT(p)
210 z=((a*a+b*b)^^(a*b-b*b)) MOD 7
220 BLOCK#3,bx,by,x,y,z
230 END FOR y
240 END FOR x
250 SCR_STORE wx,wy,px,py TO adr(p)
260 END FOR p
270 :
280 REPeat Animation
290 FOR p=1 TO pmax: SCR_REFRESH adr(p)
300 FOR p=pmax-1 TO 2 STEP -1: SCR_REFRESH adr(p)
310 IF KEYROW(1)=8 THEN EXIT Animation
320 END REPeat Animation
330 CLCHP
CROSS-REFERENCE
See SCR_REFRESH and SCR_SIZE. See also W_STORE and W_CRUNCH. Use ALCHP to set aside some memory to hold the copy of the window. Use RECHP to remove that memory definition.