/* $Id: PictureController.mm,v 1.11 2005/08/01 15:10:44 titer Exp $
This file is part of the HandBrake source code.
- Homepage: <http://handbrake.m0k.org/>.
+ Homepage: <http://handbrake.fr/>.
It may be used under the terms of the GNU General Public License. */
#include "PictureController.h"
- (id)initWithDelegate:(id)del
{
- if (self = [super init])
+ if (self = [super initWithWindowNibName:@"PictureSettings"])
{
+ // NSWindowController likes to lazily load its window. However since
+ // this controller tries to set all sorts of outlets before the window
+ // is displayed, we need it to load immediately. The correct way to do
+ // this, according to the documentation, is simply to invoke the window
+ // getter once.
+ //
+ // If/when we switch a lot of this stuff to bindings, this can probably
+ // go away.
+ [self window];
+
delegate = del;
- [self loadMyNibFile];
fPicturePreviews = [[NSMutableDictionary dictionaryWithCapacity: HB_NUM_HBLIB_PICTURES] retain];
}
return self;
[fDeinterlacePopUp addItemWithTitle: @"Fast"];
[fDeinterlacePopUp addItemWithTitle: @"Slow"];
[fDeinterlacePopUp addItemWithTitle: @"Slower"];
- [fDeinterlacePopUp addItemWithTitle: @"Slowest"];
/* Set deinterlaces level according to the integer in the main window */
[fDeinterlacePopUp selectItemAtIndex: fPictureFilterSettings.deinterlace];
[fDenoisePopUp addItemWithTitle: @"Strong"];
/* Set denoises level according to the integer in the main window */
[fDenoisePopUp selectItemAtIndex: fPictureFilterSettings.denoise];
+
+ /* we use a popup to show the decomb settings */
+ [fDecombPopUp removeAllItems];
+ [fDecombPopUp addItemWithTitle: @"None"];
+ [fDecombPopUp addItemWithTitle: @"Default"];
+ [fDecombPopUp addItemWithTitle: @"Custom"];
+ /* Set denoises level according to the integer in the main window */
+ [fDecombPopUp selectItemAtIndex: fPictureFilterSettings.decomb];
}
}
fPictureFilterSettings.detelecine = [fDetelecineCheck state];
fPictureFilterSettings.deblock = [fDeblockCheck state];
- //job->pixel_ratio = ( [fPARCheck state] == NSOnState );
+ fPictureFilterSettings.decomb = [fDecombPopUp indexOfSelectedItem];
+
autoCrop = ( [fCropMatrix selectedRow] == 0 );
[fCropTopStepper setEnabled: !autoCrop];
[fCropBottomStepper setEnabled: !autoCrop];
{
if ([delegate respondsToSelector:@selector(pictureSettingsDidChange)])
[delegate pictureSettingsDidChange];
-
- [NSApp endSheet: fPicturePanel];
- [fPicturePanel orderOut: self];
+
+ [NSApp endSheet:[self window]];
+ [[self window] orderOut:self];
}
- (BOOL) autoCrop
- (void) setDeinterlace: (int) setting {
fPictureFilterSettings.deinterlace = setting;
}
+- (int) decomb
+{
+ return fPictureFilterSettings.decomb;
+}
+- (void) setDecomb: (int) setting {
+ fPictureFilterSettings.decomb = setting;
+}
- (int) denoise
{
return fPictureFilterSettings.denoise;
- (void)showPanelInWindow: (NSWindow *)fWindow forTitle: (hb_title_t *)title
{
[self SetTitle:title];
-
- [NSApp beginSheet:fPicturePanel
+
+ [NSApp beginSheet:[self window]
modalForWindow:fWindow
modalDelegate:nil
didEndSelector:nil
[fPicturePreviews removeAllObjects];
}
-- (BOOL) loadMyNibFile
-{
- if(![NSBundle loadNibNamed:@"PictureSettings" owner:self])
- {
- NSLog(@"Warning! Could not load myNib file.\n");
- return NO;
- }
-
- return YES;
-}
-
@end
@implementation PictureController (Private)
// The min size is 320x240
float minWidth = 320.0;
float minHeight = 240.0;
-
+
// The max size of the view is when the sheet is taking up 85% of the screen.
NSSize screenSize = [[NSScreen mainScreen] frame].size;
- NSSize sheetSize = [fPicturePanel frame].size;
+ NSSize sheetSize = [[self window] frame].size;
NSSize viewAreaSize = [fPictureViewArea frame].size;
float paddingX = sheetSize.width - viewAreaSize.width;
float paddingY = sheetSize.height - viewAreaSize.height;
NSSize currentSize = [fPictureViewArea frame].size;
float deltaX = viewSize.width - currentSize.width;
float deltaY = viewSize.height - currentSize.height;
-
+
// Now resize the whole panel by those same deltas, but don't exceed the min
- NSRect frame = [fPicturePanel frame];
- NSSize maxSize = [fPicturePanel maxSize];
- NSSize minSize = [fPicturePanel minSize];
+ NSRect frame = [[self window] frame];
+ NSSize maxSize = [[self window] maxSize];
+ NSSize minSize = [[self window] minSize];
frame.size.width += deltaX;
frame.size.height += deltaY;
if( frame.size.width < minSize.width )
frame.origin.x -= (deltaX / 2.0);
frame.origin.y -= deltaY;
- [fPicturePanel setFrame:frame display:YES animate:YES];
+ [[self window] setFrame:frame display:YES animate:YES];
}
//