Graphics, although often overlooked, is a significant part of many programming efforts. For the CAD system builder there is no escaping graphics because even design systems that use purely textual specification must also plot their circuits. Without graphics, computers would be exceedingly boring and difficult to use.
The two important factors in graphics are speed and clarity. Drawing speed can make or break an entire system because it is the first attribute that a user encounters. Systems that display slowly are ignored immediately, regardless of their other salient features. Conversely, there are systems that do very little, but display so quickly that users feel good about them. An interactive CAD system must be able to display large parts of complex circuits without losing the user's attention, and produce hardcopy plots without tying up the system for long periods of time. Extended delays will cause frustration, encourage distraction, and cut productivity.
Display clarity is a broad issue that includes ease of perusal, correctness, and even proper sequence of drawing. For the overall content of an image to be understandable, the individual parts must be distinguishable. Proper color and texture are important, as is informative and uncluttered labeling. The correctness of a display is more important than most people think because the human eye can detect one incorrect point on an otherwise perfect screen [Catmull]. If the displayed artifact is not as good or better than the actual part, the designer will fear for the circuit's quality. Also, the order of drawing should make some sense on interactive displays so that the designer can quickly tell what is going on. This means that redraw should cover current objects first and that all of an object, or at least a distinguishing portion of it, should be drawn before the system moves on to draw another object.
In this everchanging world, there is little chance that the display device used today will still be there tomorrow. New hardware is constantly appearing that can perform complex graphic functions with ease. For this reason, an important attribute of graphics programming is modularity. There should be no special-purpose calls to the display system, and all graphics control should be centrally located in the code. Any graphics functions that are unusual and not portable should be coded both in their efficient, display-specific way and in an alternative way for systems without the feature. The best approach is to use a well-known virtual-graphics protocol such as GKS [X3H3], Core [GPSC], or PHIGS [ANSI]. By doing this, you are better assured that control of new displays will fit into the existing scheme, because these protocols are well planned. You may also find that the protocol has been implemented directly on some displays, which makes porting very simple.
This chapter discusses techniques for two-dimensional graphics display and hardcopy plotting. In addition, some of the basics of graphic input will be mentioned. The chapter is primarily concerned with actual graphics functions; proper use of these functions will not be emphasized here. Chapter 10, Human Engineering, will show how to employ these techniques effectively. Also, this chapter is focused primarily on graphics techniques that are relevant to VLSI design. For a more thorough coverage, including such subjects as three-dimensional transformations, hidden-surface removal, and light-source shading, the reader is encouraged to consult texts devoted to graphics [Foley and Van Dam; Newman and Sproull]. These texts contain more than enough information for VLSI design system construction, and interested programmers will want to be familiar with them because of their general usefulness.
|Previous||Table of Contents||Next||Static Free Software|