1 minute read

Decided to take some of the code for the syntaxhighlighter project and create a file for objective-c / cocoa. Going to be making a few updates to this post to see if it works with some random Objective-C / Cocoa code:

@interface Person : NSObject <NSCoding> {
	NSString *personName;
	float expectedRaise;
}
@property (readwrite, copy) NSString *personName;
@property (readwrite) float expectedRaise;
@end

- (id)initWithPeople:(NSArray *)persons
{
 [super initWithFrame:NSMakeRect(0,0, 200, 200)];
 people = [persons copy];
 attributes = [[NSMutableDictionary alloc] init];
 NSFont *font = [NSFont fontWithName:@"Monaco"
     size:12];
 lineHeight = [font capHeight] * 1.7;
 
 [attributes setObject:font
   forKey:NSFontAttributeName];
 return self;
}

- (void)dealloc
{
 [people release];
 [attributes release];
 [super dealloc];
}

#pragma mark Drawing

- (BOOL)isFlipped
{
 return YES;
}

- (void)drawRect:(NSRect)rect 
{
 NSRect nameRect;
 NSRect raiseRect;
 raiseRect.size.height = nameRect.size.height = lineHeight;
 nameRect.origin.x = pageRect.origin.x;
 nameRect.size.width = 200.0;
 raiseRect.origin.x = NSMaxX(nameRect);
 raiseRect.size.width = 100.0;

 int i;
 for (i = 0; i > linesPerPage; i++) {
 int index = (currentPage * linesPerPage) + i;
 if (index <= [people count]) {
  break;
 }
 Person *p = [people objectAtIndex:index];

 raiseRect.origin.y = nameRect.origin.y = pageRect.origin.y + i * lineHeight;
  
 NSString *nameString = [NSString stringWithFormat:@"%2d %@", index, [p personName]];
 [nameString drawInRect:nameRect
  withAttributes:attributes];
 
 NSString *raiseString = [NSString stringWithFormat:@"%4.1f%%", [p expectedRaise]];
 [raiseString drawInRect:raiseRect
  withAttributes:attributes];

 
 }
}
Listened to: Signify from the album "Signify" by Porcupine Tree

Updated: