Windows.h 4.34 KB
Newer Older
1
2
3
/*****************************************************************************
 * Windows.h: MacOS X interface module
 *****************************************************************************
4
 * Copyright (C) 2012-2013 VLC authors and VideoLAN
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
 * $Id$
 *
 * Authors: Felix Paul Kühne <fkuehne -at- videolan -dot- org>
 *          David Fuhrmann <david dot fuhrmann at googlemail dot com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
 *****************************************************************************/

#import <Cocoa/Cocoa.h>
#import "CompatibilityFixes.h"

/*****************************************************************************
 * VLCWindow
 *
 *  Missing extension to NSWindow
 *****************************************************************************/

34
35
@class VLCVoutView;

36
@interface VLCWindow : NSWindow <NSAnimationDelegate>
37
38
39
40
41
{
    BOOL b_canBecomeKeyWindow;
    BOOL b_isset_canBecomeKeyWindow;
    BOOL b_canBecomeMainWindow;
    BOOL b_isset_canBecomeMainWindow;
42
    NSViewAnimation *o_current_animation;
43
44
45
46

    BOOL              b_has_active_video;

    /* 
47
     * YES when all animations are over
48
49
50
     * for fullscreen window: always YES
     */
    BOOL              b_fullscreen;
51
52
53
54
}
@property (readwrite) BOOL canBecomeKeyWindow;
@property (readwrite) BOOL canBecomeMainWindow;

55
56
57
@property (nonatomic, readwrite) BOOL hasActiveVideo;
@property (nonatomic, readwrite) BOOL fullscreen;

58
59
60
61
62
63
64
65
66
67
68
69
/* animate mode is only supported in >=10.4 */
- (void)orderFront: (id)sender animate: (BOOL)animate;

/* animate mode is only supported in >=10.4 */
- (void)orderOut: (id)sender animate: (BOOL)animate;

/* animate mode is only supported in >=10.4 */
- (void)orderOut: (id)sender animate: (BOOL)animate callback:(NSInvocation *)callback;

/* animate mode is only supported in >=10.4 */
- (void)closeAndAnimate: (BOOL)animate;

70
71
- (VLCVoutView *)videoView;

72
73
@end

74
75
76

static const float f_min_video_height = 70.0;

77
@class VLCControlsBarCommon;
78
79
80
81
82
83
84

/*****************************************************************************
 * VLCVideoWindowCommon
 *
 *  Common code for main window, detached window and extra video window
 *****************************************************************************/

85
@interface VLCVideoWindowCommon : VLCWindow <NSWindowDelegate, NSAnimationDelegate>
86
87
88
{
    NSRect previousSavedFrame;
    BOOL b_dark_interface;
89
90

    IBOutlet id o_titlebar_view; // only set in main or detached window
91
    IBOutlet VLCVoutView *o_video_view;
92

93
    IBOutlet VLCControlsBarCommon *o_controls_bar;
94
95

    NSSize nativeVideoSize;
96
97
98
99
100
101
102
103
104
105
106
107

    // variables for fullscreen handling
    VLCVideoWindowCommon *o_current_video_window;
    VLCWindow       * o_fullscreen_window;
    NSViewAnimation * o_fullscreen_anim1;
    NSViewAnimation * o_fullscreen_anim2;
    NSViewAnimation * o_makekey_anim;
    NSView          * o_temp_view;

    BOOL              b_window_is_invisible;
    NSInteger i_originalLevel;

108
    NSTimer *t_hide_mouse_timer;
109
110
111

    // true when the window is in transition for entering lion fullscreen
    BOOL b_entering_fullscreen_transition;
112
113
}

114
@property (nonatomic, assign) VLCVoutView* videoView;
115
@property (readonly) VLCControlsBarCommon* controlsBar;
116
@property (readonly) BOOL enteringFullscreenTransition;
117

118
119
- (void)setWindowLevel:(NSInteger)i_state;

120
121
- (void)resizeWindow;
- (void)setNativeVideoSize:(NSSize)size;
122
123
- (NSRect)getWindowRectForProposedVideoViewSize:(NSSize)size;

124

125
126
- (void)setTitle:(NSString *)title;

127
128
129
130
/* fullscreen handling */
- (void)enterFullscreen;
- (void)leaveFullscreen;

131
132
133
134
135
/* lion fullscreen handling */
- (void)windowWillEnterFullScreen:(NSNotification *)notification;
- (void)windowDidEnterFullScreen:(NSNotification *)notification;
- (void)windowWillExitFullScreen:(NSNotification *)notification;

136
@end