#comm/vt100/printscreen
04-Jul-88 17:15:06
Sb: #133135-#comm/vt100/printscreen
Fm: Don Curtis/SYSOP 76703,4321
To: John Draper 76703,4322
This message turned up in search, but its forum couldn’t be identified from the original transcript, so it may not be linked into its thread.
Larry,
A circular buffer wouldn't tell you which window was on top at the time
you asked for the dump, it would only show what characters (and position
sequences) had recently been placed on the screen.
With a circular buffer, a background task writing to a window that was
'backed', could concievably wrap the buffer so only it's text was in the
buffer.
Now I realize that you could have some intelligence in your custom code
to only print to the circular buffer IF the window was on top…but then you
eliminate the ability of bringing a backed window to front and then doing a
dump since the text wouldn't have been captured in the first place.
I also see problems in the print algroithm, what if you had just issued
a clear screen and then had 1 line of text printed. Your print algorithm would
have to go backwards thru the circular buffer and fill out it's text dump as
you went to properly re-construct the screen.
To me, it would be much easier to have an 80×24 (or whatever) array and
all calls to text() would also 'print' in this array. A call to print screen
would then only have to print that buffer. Again, this would require that
screen clears would clear that particular portion of the array and that also
assumes (and I don't know for sure) if smart-refreshes calls text to re-create
the text in a window that has it's size changed, or when it poped to the back
or front.
Probably the easiest way (althou it's still not easy) is for a print
screen routine to look at the bit map and then compare bit patterns with the
bit patterns in the proper font file. From that, it could re-create the text
only and build it's array to send to the printer. Of course, one problem I see
there is that the print-screen function would have to lock the screen until it
was done.
Don