temp

TAPESTRY: The Art of Representation and Abstraction

Pseudo-Primitives


What's it all about?

Drawing programs usually have a fairly simple set of primitives, in part because it makes the program easier to write. At a minimum these might include "line", "arc", "text", and/or their 3D cousins. For each primitive in the program's vocabulary, there software needs to be written to create, select, edit and otherwise manipulate it. Such software takes time and expertise to write and debug. It also becomes progressively more complex as the number of primitives increases, since each combination needs to be considered. This makes adding new primitives fairly expensive.

The program can be extended to provide additional drawing capability, however, without the cost of actually extending the database. To do this the people writing it modify the user interface (the part of the program that you interact with) so that it shows you primitives that don't really exist. For instance, in a program that only knows how to draw straight lines, you might still have a command/icon for "RECTANGLE". When you use this command the program would simply create and store four straight lines (i.e., that's what you would find in the database), but it seems like you are creating a rectangle. You really can't tell the difference until you start to EDIT the data, and try to select your "rectangle" only to discover that each line is a separate primitive! We call these apparent primitives "pseudo primitives". Sometimes they are just as good as "real" primitives, but often they are more awkward during editing. (And please remember, not all rectangles are pseudo primitives, it depends on the program.)

Most of the "drawing" tools presented in paint programs can also be understood in this way. They present the behavior of an object while you are drawing them (you might stretch a rubber-band line around on the screen, for instance), but the instant that you click the other end of the line, the information is rasterized into the image data and you can no longer "pick up" the end-point and move it around further.


Last updated: April, 2014

Valid HTML 4.01 Transitional Valid CSS! [report bug]