home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!mcsun!ub4b!news.cs.kuleuven.ac.be!blekul11!frmop11!dearn!dmswwu1a!kuhnu
- Organisation: Westfaelische Wilhelms-Universitaet, Muenster, Germany
- Date: Wednesday, 11 Nov 1992 13:41:25 MEZ
- From: U.Kuehn <KUHNU@DMSWWU1A.UNI-MUENSTER.DE>
- Message-ID: <92316.134125KUHNU@DMSWWU1A.UNI-MUENSTER.DE>
- Newsgroups: comp.sys.atari.st.tech
- Subject: Re: Raster Copy [for window scrolling]
- References: <H.KtV1EXXhvs6@elfhaven.ersys.edmonton.ab.ca>
- Lines: 36
-
- In article <H.KtV1EXXhvs6@elfhaven.ersys.edmonton.ab.ca>,
- mforget@elfhaven.ersys.edmonton.ab.ca (Michel Forget) says:
- >Scrolling the window (fast) is the problem.
- >
- >The only method I know of (that I have been able to use) is to redraw the
- >entire window when a scroll was needed. This is, to say the very least,
- >extremely slow. I know that there are faster ways to do this, one of
- >which would seem to be a raster copy. After all, would it not be faster
- >to simply move the last twenty lines up two lines, and then draw the
- >new information at the bottom of the window?
- >
- >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.
- >
- >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?
- >
- To scroll up a window, one _must_ go along the rectangle list (the window
- might not be on top) and scroll up the contents of every rectangle.
- If the region is high enough, use vr_cpyfm() to copy the lower part of the
- region to the upper and the redraw the lower part, as the new things
- could have lain under another window.
- An alignment to a 16 bit boundary is used to speed things a bit up, especially
- text output, as the pixel to write dont have to be shifted around so much.
- To align a window,make sure that it x-coordinate of the _inner_ left edge
- is divisible through 16, and the do a wind_calc() to calculate the outer
- bounds of the window, then make it open there or move it there or what so ever.
-
- Hope that helps
- Ulrich
-
- +---------------+----------------------------+-------------------------+
- | Ulrich Kuehn | Internet: | Do they know that they ║
- | Cand.Math.Inf | kuehn@math.uni-muenster.de | cannot eat their money? ║
- +---------------+----------------------------+-------------------------+
-