Chapter 16. GraphPaper: A Multithreaded Application with a Display List
In this chapter, we’ll use the Evaluator back end that we built in Chapter 10 as the basis for an application that graphs single-valued functions. By the end of the chapter, the menu bar and main window of the application will look like those shown in Figure 16-1.

Figure 16-1. The GraphPaper application
In the process of developing this program, we’ll learn more about the drawRect: method, see how to construct a complicated image out of many individual pieces, and learn a little bit about threads.
GraphPaper’s Design
Conceptually, our program to graph a function will contain four main parts, as described in the list that follows.
- Interface
Lets the user specify the function and graph parameters, and start and stop the graphing process
- Pair generator
Takes the graph parameters set by the user and generates pairs of (x,y) points to be plotted
- Graph builder
Takes the pairs from the pair generator and builds the graph’s data structure
- Graph displayer
Takes the data structure and displays it on the screen
The Interface
We’ll build GraphPaper’s interface with Interface Builder (of course!). The interface will consist of a Cocoa NSForm object containing several text fields (“xmin”, “ymax”, etc., as shown in Figure 16-1), a button (labeled “Graph”) to start the graphing process, and a custom NSView called the GraphView. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access