Printing(Chapter 27 of Cocoa Programming for Mac OS X)
1 #import "PeopleView.h"2 #import "Person.h"
3
4 @implementation PeopleView
5
6 - (id)initWithPeople:(NSArray *)persons
7 {
8 ;
9 people = ;
10 attributes = [ init];
11 NSFont *font = ;
12 lineHeight = * 1.7;
13 ;
14 return self;
15 }
16
17 - (id)initWithFrame:(NSRect)frame
18 {
19 self = ;
20 if (self) {
21 // Initialization code here.
22 }
23
24 return self;
25 }
26
27 - (void)dealloc
28 {
29 ;
30 ;
31 ;
32 }
33
34 #pragma mark Pagination
35
36 - (BOOL)knowsPageRange:(NSRange *)range
37 {
38 NSPrintOperation *po = ;
39 NSPrintInfo *printInfo = ;
40 pageRect = ;
41 NSRect newFrame;
42 newFrame.origin = NSZeroPoint;
43 newFrame.size = ;
44 ;
45
46 linesPerPage = pageRect.size.height / lineHeight;
47
48 range->location = 1;
49 range->length = / linesPerPage;
50 if( % linesPerPage)
51 {
52 range->length = range->length + 1;
53 }
54 return YES;
55 }
56
57 - (NSRect)rectForPage:(NSInteger)page
58 {
59 currentPage = page - 1;
60 return pageRect;
61 }
62
63 #pragma mark Drawing
64
65 - (BOOL)isFlipped
66 {
67 return YES;
68 }
69
70 - (void)drawRect:(NSRect)dirtyRect
71 {
72 NSRect nameRect;
73 NSRect raiseRect;
74 raiseRect.size.height = nameRect.size.height = lineHeight;
75 nameRect.origin.x = pageRect.origin.x;
76 nameRect.size.width = 200.0;
77 raiseRect.origin.x = NSMaxX(nameRect);
78 raiseRect.size.width = 100.0;
79
80 int i;
81 for(i=0 ;i<linesPerPage; i++)
82 {
83 int index = (currentPage * linesPerPage) + i;
84 if(index >= )
85 {
86 break;
87 }
88 Person *p = ;
89
90 nameRect.origin.y = pageRect.origin.y + (i * lineHeight);
91 NSString *nameString = ];
92 ;
93
94 raiseRect.origin.y = nameRect.origin.y;
95 NSString *raiseString = ];
96 ;
97 }
98 }
99
100 @end
页:
[1]