SIMPLE RASTER MODEL

Writing to each pixel is in principle sufficient but terribly inconvenient. But there are several obvious ways to extend this.
We can extend writing of a single pixel to the writing of a rectangular block.
We can further allow the copying of an entire block (this is called the ``bit-block transfer function'', often denoted bitblt).
We can allow the drawing of single geometric shapes (line, rectangle, ellipses, polylines, polygons, etc) with various attributes such as color and thickness.
In ``pen-plotter models'', line and polylines are easily accomplished by the concept of current (pen) position: moveto(x,y) would change the current position to (x,y). lineto(x,y) draws a line from the current position to (x,y), and also change the current position to (x,y). We could also have relative movements and relative linetos: relmoveto(x,y) and rellineto(x,y).
We can define fill functions.
Notice that all these amounts to functionalities often found in simple paint programs found in many home computers.
This model works well for inherently 2-D applications such as page layout systems (e.g., Postscript). But it is severely limited for 3-D graphics.