1 /* $Id: HBPreviewController.h,v 1.6 2005/04/14 20:40:05 titer Exp $
3 This file is part of the HandBrake source code.
4 Homepage: <http://handbrake.fr/>.
5 It may be used under the terms of the GNU General Public License. */
7 #import <Cocoa/Cocoa.h>
10 /* Needed for Quicktime movie previews */
11 #import <QTKit/QTKit.h>
15 #define HB_NUM_HBLIB_PICTURES 20 // # of preview pictures libhb should generate
17 @interface PreviewController : NSWindowController
19 hb_handle_t * fHandle;
22 HBController *fHBController; // reference to HBController
24 IBOutlet NSWindow * fPreviewWindow;
25 NSWindow * fFullScreenWindow; // Full Screen window
26 NSMutableDictionary * fPicturePreviews; // NSImages, one for each preview libhb creates, created lazily
29 IBOutlet NSImageView * fPictureView;
30 IBOutlet NSBox * fPictureViewArea;
31 IBOutlet NSBox * fPictureControlBox;
32 IBOutlet NSBox * fEncodingControlBox;
33 IBOutlet NSBox * fMoviePlaybackControlBox;
35 IBOutlet NSSlider * fPictureSlider;
36 IBOutlet NSTextField * fInfoField;
37 IBOutlet NSTextField * fscaleInfoField;
45 int output_width, output_height, output_par_width, output_par_height;
48 /* Hud Control Overlay */
52 /* Full Screen Mode Toggle */
53 IBOutlet NSButton * fScaleToScreenToggleButton;
54 IBOutlet NSButton * fPictureSettingsToggleButton;
59 IBOutlet QTMovieView * fMovieView;
60 /* Playback Panel Controls */
61 IBOutlet NSButton * fPlayPauseButton;
62 IBOutlet NSButton * fGoToBeginningButton;
63 IBOutlet NSButton * fGoToEndButton;
64 IBOutlet NSButton * fGoForwardOneFrameButton;
65 IBOutlet NSButton * fGoBackwardOneFrameButton;
66 IBOutlet NSSlider * fMovieScrubberSlider;
67 IBOutlet NSButton * fGoToStillPreviewButton;
68 IBOutlet NSTextField * fMovieInfoField;
69 NSTimer * fMovieTimer;
72 IBOutlet NSButton * fCreatePreviewMovieButton;
73 IBOutlet NSButton * fCancelPreviewMovieButton;
74 IBOutlet NSButton * fShowPreviewMovieButton;
75 NSString * fPreviewMoviePath;
76 IBOutlet NSProgressIndicator * fMovieCreationProgressIndicator;
77 hb_handle_t * fPreviewLibhb; // private libhb for creating previews
78 NSTimer * fLibhbTimer; // timer for retrieving state from libhb
79 IBOutlet NSTextField * fPreviewMovieStatusField;
80 IBOutlet NSPopUpButton * fPreviewMovieLengthPopUp; // popup of choices for length of preview in seconds
84 - (void) SetHandle: (hb_handle_t *) handle;
85 - (void) SetTitle: (hb_title_t *) title;
86 - (void)setHBController: (HBController *)controller;
87 - (IBAction) showPreviewWindow: (id)sender;
88 - (BOOL)acceptsMouseMovedEvents;
89 - (void) displayPreview;
91 - (IBAction) SettingsChanged: (id) sender;
92 - (IBAction) pictureSliderChanged: (id) sender;
93 - (IBAction)showPictureSettings:(id)sender;
94 - (NSString*) pictureSizeInfoString;
96 - (IBAction)toggleScaleToScreen:(id)sender;
97 - (IBAction)goWindowedScreen:(id)sender;
100 - (void) enableHudControls;
101 - (void) disableHudControls;
103 - (void) startHudTimer;
104 - (void) stopHudTimer;
107 - (void) startReceivingLibhbNotifications;
108 - (void) stopReceivingLibhbNotifications;
110 - (void) installMovieCallbacks;
111 - (void)removeMovieCallbacks;
113 - (IBAction) cancelCreateMoviePreview: (id) sender;
114 - (IBAction) createMoviePreview: (id) sender;
115 - (void) libhbStateChanged: (hb_state_t ) state;
116 - (IBAction) showMoviePreview: (NSString *) path;
117 - (IBAction) toggleMoviePreviewPlayPause: (id) sender;
118 - (IBAction) moviePlaybackGoToBeginning: (id) sender;
119 - (IBAction) moviePlaybackGoToEnd: (id) sender;
120 - (IBAction) moviePlaybackGoBackwardOneFrame: (id) sender;
121 - (IBAction) moviePlaybackGoForwardOneFrame: (id) sender;
123 -(void) initPreviewScrubberForMovie;
124 -(void) adjustPreviewScrubberForCurrentMovieTime;
125 - (IBAction) previewScrubberChanged: (id) sender;
126 -(void)setTime:(int)timeValue;
127 -(void)timeToQTTime:(long)timeValue resultTime:(QTTime *)aQTTime;
128 - (void) startMovieTimer;
129 - (void) stopMovieTimer;
130 - (NSString*) calculatePlaybackSMTPETimecodeForDisplay;
133 - (IBAction) previewDurationPopUpChanged: (id) sender;
136 - (IBAction)showPreviewPanel: (id)sender forTitle: (hb_title_t *)title;
138 + (NSImage *) makeImageForPicture: (int)pictureIndex
139 libhb:(hb_handle_t*)handle
140 title:(hb_title_t*)title;
141 - (NSImage *) imageForPicture: (int) pictureIndex;
142 - (void) purgeImageCache;