summaryrefslogtreecommitdiffstats
path: root/macosx
diff options
context:
space:
mode:
authorritsuka <[email protected]>2015-03-17 18:04:22 +0000
committerritsuka <[email protected]>2015-03-17 18:04:22 +0000
commitdbffa15d244290e964b0daca7dbbbe89d250e763 (patch)
tree82c102961fa80605fa813c676bb1068d17252e02 /macosx
parentca1bffa4f6985099571069a9f41851828b25da30 (diff)
MacGui: clean up the preview controller, and fix the preview not updating when a new title is selected.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6998 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'macosx')
-rw-r--r--macosx/HBPreviewController.m55
-rw-r--r--macosx/HBPreviewGenerator.h1
-rw-r--r--macosx/HBPreviewGenerator.m5
3 files changed, 32 insertions, 29 deletions
diff --git a/macosx/HBPreviewController.m b/macosx/HBPreviewController.m
index 0996122eb..4196819e7 100644
--- a/macosx/HBPreviewController.m
+++ b/macosx/HBPreviewController.m
@@ -237,6 +237,7 @@ typedef enum ViewMode : NSUInteger {
[fPictureSlider setNumberOfTickMarks: generator.imagesCount];
[self switchViewToMode:ViewModePicturePreview];
+ [self displayPreview];
}
}
@@ -349,7 +350,7 @@ typedef enum ViewMode : NSUInteger {
/**
* Resizes the entire window to accomodate a view of a particular size.
*/
-- (void) resizeWindowForViewSize: (NSSize) viewSize
+- (void)resizeWindowForViewSize:(NSSize)viewSize animate:(BOOL)performAnimation
{
NSSize currentSize = [[[self window] contentView] frame].size;
NSRect frame = [[self window] frame];
@@ -420,10 +421,9 @@ typedef enum ViewMode : NSUInteger {
}
}
- [[self window] setFrame:frame display:YES animate:YES];
+ [[self window] setFrame:frame display:YES animate:performAnimation];
}
-
/**
* Enable/Disable an arbitrary number of UI elements.
* @param boxes an array of UI elements
@@ -652,57 +652,51 @@ typedef enum ViewMode : NSUInteger {
*/
- (void) displayPreview
{
- CGImageRef fPreviewImage = NULL;
-
if (self.window.isVisible)
{
- fPreviewImage = [self.generator copyImageAtIndex:self.pictureIndex shouldCache:YES];
+ CGImageRef fPreviewImage = [self.generator copyImageAtIndex:self.pictureIndex shouldCache:YES];
[self.pictureLayer setContents:(__bridge id)(fPreviewImage)];
CFRelease(fPreviewImage);
}
- else
- {
- return;
- }
- /* Set the picture size display fields below the Preview Picture*/
- NSSize imageScaledSize = NSMakeSize(CGImageGetWidth(fPreviewImage), CGImageGetHeight(fPreviewImage));
- NSSize displaySize = imageScaledSize;
+ // Set the picture size display fields below the Preview Picture
+ NSSize imageScaledSize = [self.generator imageSize];
if (self.backingScaleFactor != 1.0)
{
// HiDPI mode usually display everything
// with douple pixel count, but we don't
// want to double the size of the video
- displaySize.height /= self.backingScaleFactor;
- displaySize.width /= self.backingScaleFactor;
imageScaledSize.height /= self.backingScaleFactor;
imageScaledSize.width /= self.backingScaleFactor;
}
// Get the optimal view size for the image
- NSSize viewSize = [self optimalViewSizeForImageSize:displaySize];
+ NSSize viewSize = [self optimalViewSizeForImageSize:imageScaledSize];
viewSize.width += BORDER_SIZE * 2;
viewSize.height += BORDER_SIZE * 2;
NSSize windowSize;
if (self.scaleToScreen == YES)
+ {
// Scale the window to the max possible size
windowSize = [[[self window] screen] visibleFrame].size;
+ }
else
+ {
// Scale the window to the image size
windowSize = viewSize;
+ }
- [self resizeWindowForViewSize:windowSize];
+ [self resizeWindowForViewSize:windowSize animate:self.window.isVisible];
NSSize areaSize = [[[self window] contentView] frame].size;
areaSize.width -= BORDER_SIZE * 2;
areaSize.height -= BORDER_SIZE * 2;
if (self.scaleToScreen == YES)
{
- /* We are in Scale To Screen mode so, we have to get the ratio for height and width against the window
- *size so we can scale from there.
- */
+ // We are in Scale To Screen mode so, we have to get the ratio for height and width against the window
+ // size so we can scale from there.
CGFloat pictureAspectRatio = imageScaledSize.width / imageScaledSize.height;
CGFloat areaAspectRatio = areaSize.width / areaSize.height;
@@ -744,25 +738,28 @@ typedef enum ViewMode : NSUInteger {
[self.backLayer setBounds:CGRectMake(0, 0, viewSize.width + (BORDER_SIZE * 2), viewSize.height + (BORDER_SIZE * 2))];
[self.pictureLayer setBounds:CGRectMake(0, 0, viewSize.width, viewSize.height)];
+ CGFloat scale = self.pictureLayer.frame.size.width / imageScaledSize.width;
NSString *scaleString;
- CGFloat scale = ( ( CGFloat )[self.pictureLayer frame].size.width) / ( ( CGFloat )imageScaledSize.width);
if (scale * 100.0 != 100)
+ {
scaleString = [NSString stringWithFormat:@" (%.0f%% actual size)", scale * 100.0];
+ }
else
+ {
scaleString = @"(Actual size)";
+ }
if (_scaleToScreen == YES)
+ {
scaleString = [scaleString stringByAppendingString:@" Scaled To Screen"];
+ }
- /* Set the info fields in the hud controller */
- [fInfoField setStringValue: [NSString stringWithFormat:
- @"%@", self.generator.info]];
-
- [fscaleInfoField setStringValue: [NSString stringWithFormat:
- @"%@", scaleString]];
+ // Set the info fields in the hud controller
+ [fInfoField setStringValue:self.generator.info];
+ [fscaleInfoField setStringValue:scaleString];
- /* Set the info field in the window title bar */
- [[self window] setTitle:[NSString stringWithFormat: @"Preview - %@ %@", self.generator.info, scaleString]];
+ // Set the info field in the window title bar
+ [self.window setTitle:[NSString stringWithFormat:@"Preview - %@ %@", self.generator.info, scaleString]];
}
- (IBAction) previewDurationPopUpChanged: (id) sender
diff --git a/macosx/HBPreviewGenerator.h b/macosx/HBPreviewGenerator.h
index 64805e62e..b80f5b122 100644
--- a/macosx/HBPreviewGenerator.h
+++ b/macosx/HBPreviewGenerator.h
@@ -29,6 +29,7 @@
/* Still image generator */
- (CGImageRef) copyImageAtIndex: (NSUInteger) index shouldCache: (BOOL) cache;
- (NSUInteger) imagesCount;
+- (CGSize)imageSize;
- (void) purgeImageCache;
- (NSString *)info;
diff --git a/macosx/HBPreviewGenerator.m b/macosx/HBPreviewGenerator.m
index 5c9f2a788..3608060ce 100644
--- a/macosx/HBPreviewGenerator.m
+++ b/macosx/HBPreviewGenerator.m
@@ -95,6 +95,11 @@
[self.picturePreviews removeAllObjects];
}
+- (CGSize)imageSize
+{
+ return CGSizeMake(self.job.picture.displayWidth, self.job.picture.height);
+}
+
- (void) imagesSettingsDidChange
{
[self.delegate reloadPreviews];