From 5c36dd08830b0cd757ab7296d3c44104a0f2d8a6 Mon Sep 17 00:00:00 2001 From: Matthias Neeracher Date: Mon, 6 Nov 2006 15:49:50 +0000 Subject: [PATCH] Add zoom options --- English.lproj/MainMenu.nib/classes.nib | 13 ++++++- English.lproj/MainMenu.nib/info.nib | 6 +-- English.lproj/MainMenu.nib/keyedobjects.nib | Bin 21601 -> 22738 bytes Sources/VLPDFView.mm | 39 ++++++++++++++++++++ Sources/VLSheetView.mm | 29 ++++++++++++--- 5 files changed, 78 insertions(+), 9 deletions(-) diff --git a/English.lproj/MainMenu.nib/classes.nib b/English.lproj/MainMenu.nib/classes.nib index 074fecf..ebcef93 100644 --- a/English.lproj/MainMenu.nib/classes.nib +++ b/English.lproj/MainMenu.nib/classes.nib @@ -1,6 +1,17 @@ { IBClasses = ( - {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, + { + ACTIONS = { + zoomIn = id; + zoomOut = id; + zoomToActualSize = id; + zoomToFit = id; + zoomToFitWidth = id; + }; + CLASS = FirstResponder; + LANGUAGE = ObjC; + SUPERCLASS = NSObject; + }, { ACTIONS = {playNewPitch = id; selectLilypondPath = id; }; CLASS = VLAppController; diff --git a/English.lproj/MainMenu.nib/info.nib b/English.lproj/MainMenu.nib/info.nib index f1c65c1..de6a62d 100644 --- a/English.lproj/MainMenu.nib/info.nib +++ b/English.lproj/MainMenu.nib/info.nib @@ -7,16 +7,16 @@ IBEditorPositions 29 - 214 402 301 44 0 0 1024 746 + 232 309 349 44 0 0 1024 746 IBFramework Version 453.0 IBOpenObjects - 29 217 + 29 IBSystem Version - 9A294 + 9A300 diff --git a/English.lproj/MainMenu.nib/keyedobjects.nib b/English.lproj/MainMenu.nib/keyedobjects.nib index 70a5b891d465f641255baa450db26668a950d055..a8b88f1eebae2e7273f2abf86089804caa7f4665 100644 GIT binary patch literal 22738 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 Vo_4%PMu_7tf7S8V_1pT@{|A5pi~#@u literal 21601 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 LxqrR?7PtH#U69xn diff --git a/Sources/VLPDFView.mm b/Sources/VLPDFView.mm index 46b51c0..fa1055f 100644 --- a/Sources/VLPDFView.mm +++ b/Sources/VLPDFView.mm @@ -8,6 +8,8 @@ #import "VLPDFView.h" +#include + @implementation VLPDFView - (BOOL)tryOpenURL:(NSURL *)url @@ -35,4 +37,41 @@ 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 diff --git a/Sources/VLSheetView.mm b/Sources/VLSheetView.mm index 2db8842..260f6a5 100644 --- a/Sources/VLSheetView.mm +++ b/Sources/VLSheetView.mm @@ -254,8 +254,8 @@ VLMusicElement sSemi2Accidental[12][12] = { NSScrollView * scroll = [self enclosingScrollView]; NSSize sz = [scroll contentSize]; - sz.width /= fDisplayScale; - sz.height /= fDisplayScale; + sz.width *= fDisplayScale; + sz.height *= fDisplayScale; const VLSong * song = [self song]; const VLProperties & prop = song->fProperties.front(); @@ -269,10 +269,10 @@ VLMusicElement sSemi2Accidental[12][12] = { fNumSystems = (song->CountMeasures()+fMeasPerSystem-1)/fMeasPerSystem; sz.height = fNumSystems*kSystemH; - NSSize frameSz = {sz.width * fDisplayScale, sz.height * fDisplayScale}; + NSSize boundsSz = {sz.width / fDisplayScale, sz.height / fDisplayScale}; - [self setFrameSize:frameSz]; - [self setBoundsSize:sz]; + [self setFrameSize:sz]; + [self setBoundsSize:boundsSz]; [self setNeedsDisplay:YES]; if (fNeedsRecalc == kFirstRecalc) { @@ -710,4 +710,23 @@ static int8_t sSharpAcc[] = { [self setNeedsDisplay: YES]; } +- (void) setScaleFactor:(float)scale +{ + fDisplayScale= scale; + fNeedsRecalc = kRecalc; + [self setNeedsDisplay: YES]; +} + +#if 0 +- (IBAction) zoomIn: (id) sender +{ + [self setScaleFactor: fDisplayScale * sqrt(2.0)]; +} + +- (IBAction) zoomOut: (id) sender +{ + [self setScaleFactor: fDisplayScale / sqrt(2.0)]; +} +#endif + @end