TWIN: a tiny window system 2004/8/23 Keith Packard HP Cambridge Research Laboratory 1. Introduction twin is a window system designed for devices with constrained memory, CPU and display space. 2. Pixel formats twin supports a limited set of pixel formats; additional formats introduce significant cost into the system. Name Bits Content A8 8 8-bit A RGB16 16 5-6-5 RGB ARGB32 32 8-8-8-8 ARGB 3. Objects twin unifies onscreen and offscreen data in a single 'pixmap' object. The screen is constructed from a list of pixmaps composited together to form the final image. Pixmaps contain position, width height and stride information and stacking information. A pixmap is "on screen" if it is included in the list of on-screen pixmaps. 4. Operators twin is architected with an abstract single operator that performs all of the basic pixel manipulation. That operator is: dest = source IN mask OP dest IN is the Porter/Duff operator of the same name, OP is either OVER or SOURCE. If necessary, OP may be extended in the future to cover additional Porter/Duff operators. In the above operator, Source and mask may be replaced with constant values, mask may be elided (in which case it is implicitly replaced with a constant opaque pixel). 5. Screen Generation The screen image is generated by compositing the list of displayed pixmaps. Displayed pixmaps may be in any format which contains RGB data. Underneath all of the windows the screen is white. 6. Geometric figures Geometry can be displayed by computing an appropriate A8 pixmap and compositing the result to a pixmap. 7. Paths To draw the A8 pixmap mentioned above, use a combination of move, draw and curve primitives to construct a path and then fill it. To outline a path, use the convolution operator to convolve a pen with the path to construct a closed path surrounding the stroke.