summaryrefslogtreecommitdiffstats
path: root/macosx/HBPreviewController.h
blob: 1394a9730d0f017c03b115fd27362808bc5bf78f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
/* $Id: HBPreviewController.h,v 1.6 2005/04/14 20:40:05 titer Exp $

   This file is part of the HandBrake source code.
   Homepage: <http://handbrake.fr/>.
   It may be used under the terms of the GNU General Public License. */

#import <Cocoa/Cocoa.h>

#include "hb.h"
/* Needed for Quicktime movie previews */
#import <QTKit/QTKit.h> 

@class HBController;

#define HB_NUM_HBLIB_PICTURES      20   // # of preview pictures libhb should generate

@interface PreviewController : NSWindowController
{
    hb_handle_t              * fHandle;
    hb_title_t               * fTitle;

    HBController             *fHBController;        // reference to HBController
    
    IBOutlet NSWindow        * fPreviewWindow;
    NSWindow                 * fFullScreenWindow; // Full Screen window
    NSMutableDictionary      * fPicturePreviews;  // NSImages, one for each preview libhb creates, created lazily
    int                        fPicture;

    IBOutlet NSImageView     * fPictureView;
    IBOutlet NSBox           * fPictureViewArea;
    IBOutlet NSBox           * fPictureControlBox;
    IBOutlet NSBox           * fEncodingControlBox;
    IBOutlet NSBox           * fMoviePlaybackControlBox;

    IBOutlet NSSlider        * fPictureSlider;
    IBOutlet NSTextField     * fInfoField;
    IBOutlet NSTextField     * fscaleInfoField;
    
    BOOL                     isEncoding;

	
    int                      MaxOutputWidth;
    int                      MaxOutputHeight;

    int output_width, output_height, output_par_width, output_par_height;
    int display_width;
    
    /* Hud Control Overlay */
    NSTimer                         * fHudTimer;
    int                               hudTimerSeconds;
    
    /* Full Screen Mode Toggle */
    IBOutlet NSButton               * fScaleToScreenToggleButton;
    IBOutlet NSButton               * fPictureSettingsToggleButton;
    BOOL                              scaleToScreen;
    
    /* Movie Previews */
    QTMovie                         * aMovie;
    IBOutlet QTMovieView            * fMovieView;
    /* Playback Panel Controls */
    IBOutlet NSButton               * fPlayPauseButton;
    IBOutlet NSButton               * fGoToBeginningButton;
    IBOutlet NSButton               * fGoToEndButton;
    IBOutlet NSButton               * fGoForwardOneFrameButton;
    IBOutlet NSButton               * fGoBackwardOneFrameButton;
    IBOutlet NSSlider               * fMovieScrubberSlider;
    IBOutlet NSButton               * fGoToStillPreviewButton;
    IBOutlet NSTextField            * fMovieInfoField;
    NSTimer                         * fMovieTimer;
    
    
    IBOutlet NSButton               * fCreatePreviewMovieButton;
    IBOutlet NSButton               * fCancelPreviewMovieButton;
    IBOutlet NSButton               * fShowPreviewMovieButton;
    NSString                        * fPreviewMoviePath;
    IBOutlet NSProgressIndicator    * fMovieCreationProgressIndicator;
    hb_handle_t                     * fPreviewLibhb;           // private libhb for creating previews
    NSTimer                         * fLibhbTimer;             // timer for retrieving state from libhb
    IBOutlet NSTextField            * fPreviewMovieStatusField; 
    IBOutlet NSPopUpButton          * fPreviewMovieLengthPopUp; // popup of choices for length of preview in seconds
}
- (id)init;

- (void) SetHandle: (hb_handle_t *) handle;
- (void) SetTitle:  (hb_title_t *)  title;
- (void)setHBController: (HBController *)controller;
- (IBAction) showPreviewWindow: (id)sender;
- (BOOL)acceptsMouseMovedEvents;
- (void) displayPreview;

- (IBAction) SettingsChanged: (id) sender;
- (IBAction) pictureSliderChanged: (id) sender;
- (IBAction)showPictureSettings:(id)sender;
- (NSString*) pictureSizeInfoString;

- (IBAction)toggleScaleToScreen:(id)sender;
- (IBAction)goWindowedScreen:(id)sender;

/* HUD overlay */
- (void) enableHudControls;
- (void) disableHudControls;

- (void) startHudTimer;
- (void) stopHudTimer;

/* Movie Previews */
- (void) startReceivingLibhbNotifications;
- (void) stopReceivingLibhbNotifications;

- (void) installMovieCallbacks;
- (void)removeMovieCallbacks;

- (IBAction) cancelCreateMoviePreview: (id) sender;
- (IBAction) createMoviePreview: (id) sender;
- (void) libhbStateChanged: (hb_state_t ) state;
- (IBAction) showMoviePreview: (NSString *) path;
- (IBAction) toggleMoviePreviewPlayPause: (id) sender;
- (IBAction) moviePlaybackGoToBeginning: (id) sender;
- (IBAction) moviePlaybackGoToEnd: (id) sender;
- (IBAction) moviePlaybackGoBackwardOneFrame: (id) sender;
- (IBAction) moviePlaybackGoForwardOneFrame: (id) sender;

-(void) initPreviewScrubberForMovie;
-(void) adjustPreviewScrubberForCurrentMovieTime;
- (IBAction) previewScrubberChanged: (id) sender;
-(void)setTime:(int)timeValue;
-(void)timeToQTTime:(long)timeValue resultTime:(QTTime *)aQTTime;
- (void) startMovieTimer;
- (void) stopMovieTimer;
- (NSString*) calculatePlaybackSMTPETimecodeForDisplay;


- (IBAction) previewDurationPopUpChanged: (id) sender;


- (IBAction)showPreviewPanel: (id)sender forTitle: (hb_title_t *)title;

+ (NSImage *) makeImageForPicture: (int)pictureIndex
                libhb:(hb_handle_t*)handle
                title:(hb_title_t*)title;
- (NSImage *) imageForPicture: (int) pictureIndex;
- (void) purgeImageCache;
@end