VocalEasel/Sources/VLPDFView.mm
2007-04-27 06:41:34 +00:00

80 lines
1.7 KiB
Plaintext

//
// File: VLPDFView.mm - Display PDF output for lead sheet
//
// Author(s):
//
// (MN) Matthias Neeracher
//
// Copyright © 2005-2007 Matthias Neeracher
//
#import "VLPDFView.h"
#include <algorithm>
@implementation VLPDFView
- (BOOL)tryOpenURL:(NSURL *)url
{
if ([[url scheme] isEqual: @"textedit"]) {
//
// Handle TextEdit links internally
//
NSString * path = [url path];
NSArray * components = [[path lastPathComponent] componentsSeparatedByString: @":"];
unsigned count = [components count];
if (count > 2) {
int line = [[components objectAtIndex: count-2] intValue];
int pos = [[components objectAtIndex: count-1] intValue];
[[[[self window] windowController] document] selectCharacter:pos inLine:line];
}
return YES;
} else
return [super tryOpenURL:url] != NULL;
}
- (BOOL) canBecomeKeyView
{
return YES;
}
- (IBAction) displaySinglePage: (id) sender
{
// Display single page mode.
if ([self displayMode] > kPDFDisplaySinglePageContinuous)
[self setDisplayMode: [self displayMode] - 2];
}
- (IBAction) displayTwoUp: (id) sender
{
// Display two-up.
if ([self displayMode] < kPDFDisplayTwoUp)
[self setDisplayMode: [self displayMode] + 2];
}
- (IBAction) zoomToFit: (id) sender
{
NSSize sz = [self frame].size;
NSSize frame= [[self documentView] frame].size;
float scale = std::min(sz.width / frame.width, sz.height / frame.height);
[self setScaleFactor: scale];
}
- (IBAction) zoomToFitWidth: (id) sender
{
NSSize sz = [self frame].size;
NSSize frame= [[self documentView] frame].size;
[self setScaleFactor: sz.width / frame.width];
}
- (IBAction) zoomToActualSize: (id) sender
{
[self setScaleFactor: 1.0];
}
@end