/*****************************************************************************
* Windows.h: MacOS X interface module
*****************************************************************************
- * Copyright (C) 2012 VLC authors and VideoLAN
+ * Copyright (C) 2012-2014 VLC authors and VideoLAN
* $Id$
*
* Authors: Felix Paul Kühne <fkuehne -at- videolan -dot- org>
*****************************************************************************/
#import <Cocoa/Cocoa.h>
-#import "CompatibilityFixes.h"
-
/*****************************************************************************
* VLCWindow
* Missing extension to NSWindow
*****************************************************************************/
-@interface VLCWindow : NSWindow
+@class VLCVoutView;
+
+@interface VLCWindow : NSWindow <NSAnimationDelegate>
{
BOOL b_canBecomeKeyWindow;
BOOL b_isset_canBecomeKeyWindow;
BOOL b_canBecomeMainWindow;
BOOL b_isset_canBecomeMainWindow;
NSViewAnimation *o_current_animation;
+
+ BOOL b_has_active_video;
+
+ /*
+ * YES when all animations are over
+ * for fullscreen window: always YES
+ */
+ BOOL b_fullscreen;
}
@property (readwrite) BOOL canBecomeKeyWindow;
@property (readwrite) BOOL canBecomeMainWindow;
+@property (nonatomic, readwrite) BOOL hasActiveVideo;
+@property (nonatomic, readwrite) BOOL fullscreen;
+
/* animate mode is only supported in >=10.4 */
- (void)orderFront: (id)sender animate: (BOOL)animate;
/* animate mode is only supported in >=10.4 */
- (void)closeAndAnimate: (BOOL)animate;
+- (VLCVoutView *)videoView;
+
@end
static const float f_min_video_height = 70.0;
-@class VLCVoutView;
@class VLCControlsBarCommon;
/*****************************************************************************
* Common code for main window, detached window and extra video window
*****************************************************************************/
-@interface VLCVideoWindowCommon : VLCWindow <NSWindowDelegate>
+@interface VLCVideoWindowCommon : VLCWindow <NSWindowDelegate, NSAnimationDelegate>
{
NSRect previousSavedFrame;
BOOL b_dark_interface;
IBOutlet VLCControlsBarCommon *o_controls_bar;
NSSize nativeVideoSize;
+
+ // variables for fullscreen handling
+ VLCVideoWindowCommon *o_current_video_window;
+ VLCWindow * o_fullscreen_window;
+ NSViewAnimation * o_fullscreen_anim1;
+ NSViewAnimation * o_fullscreen_anim2;
+ NSView * o_temp_view;
+
+ NSInteger i_originalLevel;
+
+ BOOL b_video_view_was_hidden;
+
+ NSTimer *t_hide_mouse_timer;
+
+ // true when the window is in transition for entering or exiting fullscreen
+ BOOL b_in_fullscreen_transition;
+
+ NSRect frameBeforeLionFullscreen;
+
+ BOOL b_windowShouldExitFullscreenWhenFinished;
}
@property (nonatomic, assign) VLCVoutView* videoView;
@property (readonly) VLCControlsBarCommon* controlsBar;
+@property (readonly) BOOL inFullscreenTransition;
+@property (readonly) BOOL windowShouldExitFullscreenWhenFinished;
+
+- (void)setWindowLevel:(NSInteger)i_state;
- (void)resizeWindow;
- (void)setNativeVideoSize:(NSSize)size;
+- (NSRect)getWindowRectForProposedVideoViewSize:(NSSize)size;
+
- (void)setTitle:(NSString *)title;
-@end
\ No newline at end of file
+/* fullscreen handling */
+- (void)enterFullscreenWithAnimation:(BOOL)b_animation;
+- (void)leaveFullscreenWithAnimation:(BOOL)b_animation;
+
+/* lion fullscreen handling */
+- (void)windowWillEnterFullScreen:(NSNotification *)notification;
+- (void)windowDidEnterFullScreen:(NSNotification *)notification;
+- (void)windowWillExitFullScreen:(NSNotification *)notification;
+
+@end