Extending the Display List

GraphView’s display list and drawRect: method can easily be extended to draw objects other than graphs in the on-screen GraphView. In this section, we’ll add axes and labels to the graph.

Adding Axes

Adding X and Y axes to GraphView is quite simple, because we already have the Segment class to draw the line. All we need to do to draw the axes is to create a new method that draws the axes and then arrange for it to be invoked by GraphView’s graph: method.

  1. Insert the following addAxesFrom:to: method declaration into GraphView.h:

                            - (void)addAxesFrom:(NSPoint)pt1 to:(NSPoint)pt2;
  2. Insert the following addAxesFrom:to: method implementation into GraphView.m:

                            - (void)addAxesFrom:(NSPoint)pt1 to:(NSPoint)pt2
                            {
                                Segment *seg = [ [ [Segment alloc] initFrom:pt1 to:pt2] autorelease];
                                [seg setTag:AXES_TAG];
                                [self addGraphElement:seg];
                            }
  3. Insert the lines shown here in bold into the graph: method in GraphView.m:

    - (IBAction)graph:(id)sender
    {
        ...
        [self clear];
    
        // Display the axes    [self addAxesFrom:NSMakePoint(xmin,0.0) to:NSMakePoint(xmax,0.0)];
                                [self addAxesFrom:NSMakePoint(0.0,ymin) to:NSMakePoint(0.0,ymax)];
                            ...
  4. Build and run GraphPaper. Save all files first.

  5. To see both the axes in GraphPaper, enter the values shown in Figure 16-5.

GraphPaper with axes

Figure 16-5. GraphPaper with axes

  1. Try other functions and graphing parameters, and then Quit GraphPaper.

When the first data point comes through, ...

Get Building Cocoa Applications: A Step by Step Guide now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.