home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.sys.atari.st.tech
- Path: sparky!uunet!mcsun!Germany.EU.net!unidui!rrz.uni-koeln.de!rrz.uni-koeln.de!aeg03
- From: aeg03@rrz.uni-koeln.de (Jan T. Kim)
- Subject: Re: Raster Copy [for window scrolling]
- Message-ID: <1992Nov11.133728.115954@rrz.uni-koeln.de>
- Keywords: raster-copy, window, scroll, fast
- Reply-To: kim@vax.mpiz-koeln.mpg.dbp.de
- Organization: Regional Computing Center, University of Cologne, F. R. Germany
- References: <H.KtV1EXXhvs6@elfhaven.ersys.edmonton.ab.ca>
- Date: Wed, 11 Nov 92 13:37:28 GMT
- Lines: 45
-
- In <H.KtV1EXXhvs6@elfhaven.ersys.edmonton.ab.ca> mforget@elfhaven.ersys.edmonton.ab.ca (Michel Forget) writes:
-
- >In short (long?) I would be grateful to anyone who could share with me the
- >secrets of window scrolling. The faster, the better. To keep things legal,
- >though, I imagine only VDI calls should be used.
-
- It seems to me that you should use the VDI(109) function, which
- seems to be called vro_cpyfm() in standard C libraries. I don't
- know though, whether this function will work properly with
- overlapping rasters, that is, whether you'll have to copy the
- raster to some buffer first and then copy it from the buffer to
- its destination, or you can copy blocks directly from source tor
- destionation.
- To be prepared for new tos versions, you should restrict use of
- this method to the top window. I've seen that with MultiTOS,
- background windows still have arrows, and I imagine it's horrible
- if you're trying to devise an algorithm that tries to use the
- blocks that wades through a rectangle list, trying to reuse
- available fragments by block copying and filling in the gaps by
- drawing.
-
- >I have also heard that the speed of output to the window can be increased
- >by aligning the window on a sixteen bit boundary? How would this be done?
-
- I never did it, but I figure you could do (in GFA):
-
- PROCEDURE align_window(w_handle&,flags&)
- LOCAL x&,y&,w&,h&
- ~WIND_GET(w_handle&,4,x&,y&,w&,h&)
- x&=(x& MOD 16+1)*16
- ~WIND_CALC(0,flags&,x&,y&,w&,h&,x&,y&,w&,h&)
- ~WIND_SET(w_handle&,5,x&,y&,w&,h&)
- RETURN
-
- This should align the workspace of the window by a 16 bit
- boundary. By manipulating w& the same way as x& above, you can
- force the window width to be a multiple of 16, which can be
- convenient with windows containing text.
-
- Greetinx, Jan
-
- +- Jan Kim -- X.400: S=kim;OU=vax;O=mpiz-koeln;P=mpg;A=dbp;C=de -+
- | Internet: kim@vax.mpiz-koeln.mpg.dbp.de |
- | |
- *----=< hierarchical systems are for files, not for humans >=-----*
-