bitmaps or no?

Ilya Anfimov ilan at
Fri Dec 4 11:58:28 UTC 2020

On Tue, Dec 01, 2020 at 07:36:20PM -0500, James K. Lowden wrote:
> I have a basic how-does-one question about scrolling text in a window.  
> I have the beginnings of an application that reads troff ditroff output
> and renders it on-screen.   The underlying libraries are 
> 	-lGL  -lglut -lX11 -lXi -lXft -lfontconfig -lcairo -lfreetype
> Let's say the rendering has room for improvement, and is already better
> than xman(1).  
> My question is: how to scroll pages of text?  
> The troff output is potentially many pages, and the user will want to
> scroll up and down, as he does, say, viewing the bash(1) manual in GNU
> less(1).  
> Currently I open a cairo surface on the main window.  Scrolling a
> screen of text up one line would require ... something. I could erase
> the whole thing and start over with line 2 at the top, replacing line
> 1.  
> An alternative, I think, is to render the whole document to a bitmap,
> and scroll the bitmap up and down using just X primitives.  That

 I  suggest  to  use  some pixmap (or perhaps pixmap-backed cairo
surface) reasonably larger than a window, but not a  whole  docu-
ment.  Simple scrolling would be rather fast (all the data is al-
ready rendered, you  should  just  copy  it  somehow  inside  one
pixmap),  and  you  could  draw the new areas off-screen somewhat

 On the other side, a whole troff document with hundreds A4 pages
with  a  reasonable  200  dpi  resolution and 8-bit grayscale an-
tialiasing render -- may take more that a gig of RAM, causing un-
neccessary paging.

More information about the xorg mailing list