mirror of
https://github.com/kennethreitz-archive/gitx.git
synced 2026-06-05 23:40:18 +00:00
a294d911b0
This introduces a new object, PBGitLane that keeps track of the current lane. We used to only need a sha for a lane, but now that more information is needed, an extra object is in order. PBGitLane keeps a lane index number. This number is later used to pick a color.
103 lines
2.5 KiB
Objective-C
103 lines
2.5 KiB
Objective-C
//
|
|
// PBGitRevisionCell.m
|
|
// GitX
|
|
//
|
|
// Created by Pieter de Bie on 17-06-08.
|
|
// Copyright 2008 __MyCompanyName__. All rights reserved.
|
|
//
|
|
|
|
#import "PBGitRevisionCell.h"
|
|
|
|
|
|
@implementation PBGitRevisionCell
|
|
|
|
@synthesize cellInfo;
|
|
-(void) setCellInfo: (PBGraphCellInfo*) info
|
|
{
|
|
isReady = YES;
|
|
cellInfo = info;
|
|
}
|
|
|
|
- (id) initWithCoder: (id) coder
|
|
{
|
|
self = [super initWithCoder:coder];
|
|
if (self != nil) {
|
|
isReady = NO;
|
|
}
|
|
return self;
|
|
}
|
|
|
|
- (NSArray*) colors
|
|
{
|
|
return [NSArray arrayWithObjects:[NSColor redColor], [NSColor blueColor],
|
|
[NSColor orangeColor], [NSColor blackColor], [NSColor greenColor], nil];
|
|
}
|
|
|
|
- (void) drawLineFromColumn: (int) from toColumn: (int) to inRect: (NSRect) r offset: (int) offset color: (int) c
|
|
{
|
|
|
|
int columnWidth = 10;
|
|
NSPoint origin = r.origin;
|
|
|
|
NSPoint source = NSMakePoint(origin.x + columnWidth* from, origin.y + offset);
|
|
NSPoint center = NSMakePoint( origin.x + columnWidth * to, origin.y + r.size.height * 0.5);
|
|
|
|
// Just use red for now.
|
|
[[[self colors] objectAtIndex: c % 5] set];
|
|
|
|
NSBezierPath * path = [NSBezierPath bezierPath];
|
|
[path setLineWidth:2];
|
|
|
|
[path moveToPoint: source];
|
|
[path lineToPoint: center];
|
|
[path stroke];
|
|
|
|
}
|
|
|
|
- (void) drawCircleForColumn: (int) c inRect: (NSRect) r
|
|
{
|
|
[[NSColor blackColor] set];
|
|
int columnWidth = 10;
|
|
NSPoint origin = r.origin;
|
|
NSPoint columnOrigin = { origin.x + columnWidth * c, origin.y};
|
|
|
|
NSRect oval = { columnOrigin.x - 5, columnOrigin.y + r.size.height * 0.5 - 5, 10, 10};
|
|
|
|
|
|
NSBezierPath * path = [NSBezierPath bezierPath];
|
|
path = [NSBezierPath bezierPathWithOvalInRect:oval];
|
|
//[[col objectAtIndex:cellInfo.columns[c].color] set];
|
|
[path fill];
|
|
|
|
NSRect smallOval = { columnOrigin.x - 3, columnOrigin.y + r.size.height * 0.5 - 3, 6, 6};
|
|
[[NSColor whiteColor] set];
|
|
path = [NSBezierPath bezierPathWithOvalInRect:smallOval];
|
|
[path fill];
|
|
}
|
|
|
|
- (void) drawWithFrame: (NSRect) rect inView:(NSView *)view
|
|
{
|
|
if (!isReady)
|
|
return [super drawWithFrame:rect inView:view];
|
|
|
|
float pathWidth = 10 + 10 * cellInfo.numColumns;
|
|
|
|
NSRect ownRect;
|
|
NSDivideRect(rect, &ownRect, &rect, pathWidth, NSMinXEdge);
|
|
|
|
for (PBGitGraphLine* line in cellInfo.lines) {
|
|
if (line.upper == 0)
|
|
[self drawLineFromColumn: line.from toColumn: line.to inRect:ownRect offset: ownRect.size.height color: line.colorIndex];
|
|
else
|
|
[self drawLineFromColumn: line.from toColumn: line.to inRect:ownRect offset: 0 color:line.colorIndex];
|
|
}
|
|
|
|
[self drawCircleForColumn: cellInfo.position inRect: ownRect];
|
|
|
|
|
|
[super drawWithFrame:rect inView:view];
|
|
isReady = NO;
|
|
}
|
|
|
|
@end
|