5.2.1.2 Paint programs
Paint programs are pixel based, meaning that the image that the user manipulates is typically
a bitmap (monochrome) or a color pixmap. In this case, the pixmap is used as the internal
data. If the user uses a brush to modify the image, the modification to the canvas window is
handled in the event procedure as above, but the image that the user is editing is also updated
so that when the repaint routine is called, it can use a function such as XCopyArea() to
copy the portion of the image onto the canvas window. This is also a case where the event
handler may draw directly onto the window.
If the program starts up and already has an image to work with (e.g., the user requests to load
a previously saved image that was stored into the file), do not render the image onto the paint
window before xv_main_loop() is called. Eventually, the repaint procedure will be
called and the image should be rendered at that time.
5.2.1.3 Text-based programs
If you want to display text, as in desktop publishing packages, or if you just want a simple
program that displays a window with text, then the same thing applies as with the previous
examples: render the text in the repaint routine based on internal data (e.g., a text string or
set of strings). Again, the data must contain enough information to allow your repaint routine
to repaint the text as it was intended (e.g., font type, style, size, color).
Event-handling routines that accept keyboard input may render the new text directly to the