Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
87fe9845
Commit
87fe9845
authored
Jan 09, 2008
by
Pierre d'Herbemont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MacOSX/VLC_app: port the fullscreen zoom and the fspanel from gui/macosx to VLC_app.
parent
ff7830bb
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
2741 additions
and
732 deletions
+2741
-732
extras/MacOSX/VLC_app/English.lproj/MainWindow.xib
extras/MacOSX/VLC_app/English.lproj/MainWindow.xib
+1589
-719
extras/MacOSX/VLC_app/Sources/VLCAppAdditions.h
extras/MacOSX/VLC_app/Sources/VLCAppAdditions.h
+77
-1
extras/MacOSX/VLC_app/Sources/VLCAppAdditions.m
extras/MacOSX/VLC_app/Sources/VLCAppAdditions.m
+204
-0
extras/MacOSX/VLC_app/Sources/VLCAppBindings.m
extras/MacOSX/VLC_app/Sources/VLCAppBindings.m
+29
-0
extras/MacOSX/VLC_app/Sources/VLCBrowsableVideoView.h
extras/MacOSX/VLC_app/Sources/VLCBrowsableVideoView.h
+7
-0
extras/MacOSX/VLC_app/Sources/VLCBrowsableVideoView.m
extras/MacOSX/VLC_app/Sources/VLCBrowsableVideoView.m
+330
-5
extras/MacOSX/VLC_app/Sources/VLCFullScreenControllerWindow.h
...as/MacOSX/VLC_app/Sources/VLCFullScreenControllerWindow.h
+57
-0
extras/MacOSX/VLC_app/Sources/VLCFullScreenControllerWindow.m
...as/MacOSX/VLC_app/Sources/VLCFullScreenControllerWindow.m
+288
-0
extras/MacOSX/VLC_app/Sources/VLCMainWindow.h
extras/MacOSX/VLC_app/Sources/VLCMainWindow.h
+3
-1
extras/MacOSX/VLC_app/Sources/VLCMainWindow.m
extras/MacOSX/VLC_app/Sources/VLCMainWindow.m
+7
-2
extras/MacOSX/VLC_app/VLC.xcodeproj/project.pbxproj
extras/MacOSX/VLC_app/VLC.xcodeproj/project.pbxproj
+150
-4
No files found.
extras/MacOSX/VLC_app/English.lproj/MainWindow.xib
View file @
87fe9845
This source diff could not be displayed because it is too large. You can
view the blob
instead.
extras/MacOSX/VLC_app/Sources/VLCAppAdditions.h
View file @
87fe9845
...
...
@@ -6,6 +6,8 @@
* $Id$
*
* Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
* Felix Kühne <fkuehne at videolan dot org>
* Jérôme Decoodt <djc at videolan dot org>
*
* 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
...
...
@@ -24,20 +26,33 @@
#import <Cocoa/Cocoa.h>
/*****************************************************************************
* NSIndexPath (VLCAppAddition)
*****************************************************************************/
@interface
NSIndexPath
(
VLCAppAddition
)
-
(
NSIndexPath
*
)
indexPathByRemovingFirstIndex
;
-
(
NSUInteger
)
lastIndex
;
@end
/*****************************************************************************
* NSArray (VLCAppAddition)
*****************************************************************************/
@interface
NSArray
(
VLCAppAddition
)
-
(
id
)
objectAtIndexPath
:(
NSIndexPath
*
)
path
withNodeKeyPath
:(
NSString
*
)
nodeKeyPath
;
@end
/*****************************************************************************
* NSView (VLCAppAdditions)
*****************************************************************************/
@interface
NSView
(
VLCAppAdditions
)
-
(
void
)
moveSubviewsToVisible
;
@end
/* Split view that supports slider animation */
/*****************************************************************************
* VLCOneSplitView
*
* Missing functionality to a one-split view
*****************************************************************************/
@interface
VLCOneSplitView
:
NSSplitView
{
BOOL
fixedCursorDuringResize
;
...
...
@@ -46,3 +61,64 @@
-
(
float
)
sliderPosition
;
-
(
void
)
setSliderPosition
:(
float
)
newPosition
;
@end
/*****************************************************************************
* NSScreen (VLCAdditions)
*
* Missing extension to NSScreen
*****************************************************************************/
@interface
NSScreen
(
VLCAdditions
)
+
(
NSScreen
*
)
screenWithDisplayID
:
(
CGDirectDisplayID
)
displayID
;
-
(
BOOL
)
isMainScreen
;
-
(
BOOL
)
isScreen
:
(
NSScreen
*
)
screen
;
-
(
CGDirectDisplayID
)
displayID
;
-
(
void
)
blackoutOtherScreens
;
+
(
void
)
unblackoutScreens
;
@end
/*****************************************************************************
* VLCWindow
*
* Missing extension to NSWindow (Used only when needing setCanBecomeKeyWindow)
*****************************************************************************/
@interface
VLCWindow
:
NSWindow
{
BOOL
canBecomeKeyWindow
;
BOOL
isset_canBecomeKeyWindow
;
}
-
(
void
)
setCanBecomeKeyWindow
:
(
BOOL
)
canBecomeKey
;
@end
/*****************************************************************************
* VLCImageCustomizedSlider
*
* Slider personalized by backgroundImage and knobImage
*****************************************************************************/
@interface
VLCImageCustomizedSlider
:
NSSlider
{
NSImage
*
knobImage
;
NSImage
*
backgroundImage
;
}
@property
(
retain
)
NSImage
*
knobImage
;
@property
(
retain
)
NSImage
*
backgroundImage
;
-
(
void
)
drawKnobInRect
:
(
NSRect
)
knobRect
;
-
(
void
)
drawBackgroundInRect
:
(
NSRect
)
knobRect
;
-
(
void
)
drawRect
:
(
NSRect
)
rect
;
@end
/*****************************************************************************
* NSImageView (VLCAppAdditions)
*
* Make the image view move the window by mouse down by default
*****************************************************************************/
@interface
NSImageView
(
VLCAppAdditions
)
-
(
void
)
mouseDownCanMoveWindow
;
@end
extras/MacOSX/VLC_app/Sources/VLCAppAdditions.m
View file @
87fe9845
...
...
@@ -6,6 +6,8 @@
* $Id$
*
* Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
* Felix Kühne <fkuehne at videolan dot org>
* Jérôme Decoodt <djc at videolan dot org>
*
* 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
...
...
@@ -123,3 +125,205 @@
}
@end
/*****************************************************************************
* NSScreen (VLCAdditions)
*
* Missing extension to NSScreen
*****************************************************************************/
@implementation
NSScreen
(
VLCAdditions
)
static
NSMutableArray
*
blackoutWindows
=
NULL
;
+
(
void
)
load
{
/* init our fake object attribute */
blackoutWindows
=
[[
NSMutableArray
alloc
]
initWithCapacity
:
1
];
}
+
(
NSScreen
*
)
screenWithDisplayID
:
(
CGDirectDisplayID
)
displayID
{
int
i
;
for
(
i
=
0
;
i
<
[[
NSScreen
screens
]
count
];
i
++
)
{
NSScreen
*
screen
=
[[
NSScreen
screens
]
objectAtIndex
:
i
];
if
([
screen
displayID
]
==
displayID
)
return
screen
;
}
return
nil
;
}
-
(
BOOL
)
isMainScreen
{
return
([
self
displayID
]
==
[[[
NSScreen
screens
]
objectAtIndex
:
0
]
displayID
]);
}
-
(
BOOL
)
isScreen
:
(
NSScreen
*
)
screen
{
return
([
self
displayID
]
==
[
screen
displayID
]);
}
-
(
CGDirectDisplayID
)
displayID
{
return
(
CGDirectDisplayID
)
_screenNumber
;
}
-
(
void
)
blackoutOtherScreens
{
unsigned
int
i
;
/* Free our previous blackout window (follow blackoutWindow alloc strategy) */
[
blackoutWindows
makeObjectsPerformSelector
:
@selector
(
close
)];
[
blackoutWindows
removeAllObjects
];
for
(
i
=
0
;
i
<
[[
NSScreen
screens
]
count
];
i
++
)
{
NSScreen
*
screen
=
[[
NSScreen
screens
]
objectAtIndex
:
i
];
VLCWindow
*
blackoutWindow
;
NSRect
screen_rect
;
if
([
self
isScreen
:
screen
])
continue
;
screen_rect
=
[
screen
frame
];
screen_rect
.
origin
.
x
=
screen_rect
.
origin
.
y
=
0
.
0
f
;
/* blackoutWindow alloc strategy
- The NSMutableArray blackoutWindows has the blackoutWindow references
- blackoutOtherDisplays is responsible for alloc/releasing its Windows
*/
blackoutWindow
=
[[
VLCWindow
alloc
]
initWithContentRect
:
screen_rect
styleMask
:
NSBorderlessWindowMask
backing:
NSBackingStoreBuffered
defer
:
NO
screen
:
screen
];
[
blackoutWindow
setBackgroundColor
:[
NSColor
blackColor
]];
[
blackoutWindow
setLevel
:
NSFloatingWindowLevel
];
/* Disappear when Expose is triggered */
[
blackoutWindow
orderFront
:
self
];
[
blackoutWindows
addObject
:
blackoutWindow
];
[
blackoutWindow
release
];
}
}
+
(
void
)
unblackoutScreens
{
unsigned
int
i
;
for
(
i
=
0
;
i
<
[
blackoutWindows
count
];
i
++
)
{
VLCWindow
*
blackoutWindow
=
[
blackoutWindows
objectAtIndex
:
i
];
[
blackoutWindow
close
];
}
}
@end
/*****************************************************************************
* VLCWindow
*
* Missing extension to NSWindow
*****************************************************************************/
@implementation
VLCWindow
-
(
id
)
initWithContentRect
:(
NSRect
)
contentRect
styleMask
:(
unsigned
int
)
styleMask
backing
:(
NSBackingStoreType
)
backingType
defer
:(
BOOL
)
flag
{
self
=
[
super
initWithContentRect
:
contentRect
styleMask
:
styleMask
backing
:
backingType
defer
:
flag
];
if
(
self
)
isset_canBecomeKeyWindow
=
NO
;
return
self
;
}
-
(
void
)
setCanBecomeKeyWindow
:
(
BOOL
)
canBecomeKey
{
isset_canBecomeKeyWindow
=
YES
;
canBecomeKeyWindow
=
canBecomeKey
;
}
-
(
BOOL
)
canBecomeKeyWindow
{
if
(
isset_canBecomeKeyWindow
)
return
canBecomeKeyWindow
;
return
[
super
canBecomeKeyWindow
];
}
@end
/*****************************************************************************
* VLCImageCustomizedSlider
*
* Slider personalized by backgroundImage and knobImage
*****************************************************************************/
@implementation
VLCImageCustomizedSlider
@synthesize
backgroundImage
;
@synthesize
knobImage
;
-
(
id
)
initWithFrame
:(
NSRect
)
frame
{
if
(
self
=
[
super
initWithFrame
:
frame
])
{
knobImage
=
nil
;
backgroundImage
=
nil
;
}
return
self
;
}
-
(
void
)
dealloc
{
[
knobImage
release
];
[
knobImage
release
];
[
super
dealloc
];
}
-
(
void
)
drawKnobInRect
:(
NSRect
)
knobRect
{
NSRect
imageRect
;
imageRect
.
size
=
[
self
.
knobImage
size
];
imageRect
.
origin
.
x
=
0
;
imageRect
.
origin
.
y
=
0
;
knobRect
.
origin
.
x
+=
(
knobRect
.
size
.
width
-
imageRect
.
size
.
width
)
/
2
;
knobRect
.
origin
.
y
+=
(
knobRect
.
size
.
width
-
imageRect
.
size
.
width
)
/
2
;
knobRect
.
size
.
width
=
imageRect
.
size
.
width
;
knobRect
.
size
.
height
=
imageRect
.
size
.
height
;
[
self
.
knobImage
drawInRect
:
knobRect
fromRect
:
imageRect
operation
:
NSCompositeSourceOver
fraction
:
1
];
}
-
(
void
)
drawBackgroundInRect
:(
NSRect
)
drawRect
{
NSRect
imageRect
=
drawRect
;
imageRect
.
origin
.
y
+=
([
self
.
backgroundImage
size
].
height
-
[
self
bounds
].
size
.
height
)
/
2
;
[
self
.
backgroundImage
drawInRect
:
drawRect
fromRect
:
imageRect
operation
:
NSCompositeSourceOver
fraction
:
1
];
}
-
(
void
)
drawRect
:(
NSRect
)
rect
{
/* Draw default to make sure the slider behaves correctly */
[[
NSGraphicsContext
currentContext
]
saveGraphicsState
];
NSRectClip
(
NSZeroRect
);
[
super
drawRect
:
rect
];
[[
NSGraphicsContext
currentContext
]
restoreGraphicsState
];
if
(
self
.
backgroundImage
)
[
self
drawBackgroundInRect
:
rect
];
if
(
self
.
knobImage
)
{
NSRect
knobRect
=
[[
self
cell
]
knobRectFlipped
:
NO
];
[[[
NSColor
blackColor
]
colorWithAlphaComponent
:
0
.
6
]
set
];
[
self
drawKnobInRect
:
knobRect
];
}
}
@end
/*****************************************************************************
* NSImageView (VLCAppAdditions)
*
* Make the image view move the window by mouse down by default
*****************************************************************************/
@implementation
NSImageView
(
VLCAppAdditions
)
-
(
void
)
mouseDownCanMoveWindow
{
return
YES
;
}
@end
extras/MacOSX/VLC_app/Sources/VLCAppBindings.m
View file @
87fe9845
...
...
@@ -201,6 +201,14 @@
{
return
[
NSSet
setWithObjects
:
@"state"
,
@"playing"
,
@"canPause"
,
nil
];
}
+
(
NSSet
*
)
keyPathsForValuesAffectingStateAsFullScreenButtonImage
{
return
[
NSSet
setWithObjects
:
@"state"
,
@"playing"
,
@"canPause"
,
nil
];
}
+
(
NSSet
*
)
keyPathsForValuesAffectingStateAsFullScreenButtonAlternateImage
{
return
[
NSSet
setWithObjects
:
@"state"
,
@"playing"
,
@"canPause"
,
nil
];
}
-
(
NSString
*
)
description
{
...
...
@@ -229,4 +237,25 @@
else
return
[
NSImage
imageNamed
:
@"play_blue.png"
];
}
-
(
NSImage
*
)
stateAsFullScreenButtonImage
{
if
([
self
state
]
==
VLCMediaPlayerStatePlaying
&&
[
self
canPause
])
return
[
NSImage
imageNamed
:
@"fs_pause.png"
];
else
if
(
[
self
state
]
==
VLCMediaPlayerStatePlaying
)
return
[
NSImage
imageNamed
:
@"fs_stop.png"
];
else
return
[
NSImage
imageNamed
:
@"fs_play.png"
];
}
-
(
NSImage
*
)
stateAsFullScreenButtonAlternateImage
{
if
([
self
state
]
==
VLCMediaPlayerStatePlaying
&&
[
self
canPause
])
return
[
NSImage
imageNamed
:
@"fs_pause_highlight.png"
];
else
if
(
[
self
state
]
==
VLCMediaPlayerStatePlaying
)
return
[
NSImage
imageNamed
:
@"fs_stop_highlight.png"
];
else
return
[
NSImage
imageNamed
:
@"fs_play_highlight.png"
];
}
@end
extras/MacOSX/VLC_app/Sources/VLCBrowsableVideoView.h
View file @
87fe9845
...
...
@@ -25,6 +25,7 @@
#import <QuartzCore/QuartzCore.h>
#import <VLCKit/VLCKit.h>
#import "VLCAppAdditions.h"
@interface
VLCBrowsableVideoView
:
VLCVideoView
{
BOOL
menuDisplayed
;
...
...
@@ -43,6 +44,12 @@
/* Actions on non-node items*/
id
target
;
SEL
action
;
/* FullScreenTransition */
VLCWindow
*
fullScreenWindow
;
NSViewAnimation
*
fullScreenAnim1
;
NSViewAnimation
*
fullScreenAnim2
;
NSView
*
tempFullScreenView
;
}
/* Binds an nsarray to that property. But don't forget the set the access keys. */
...
...
extras/MacOSX/VLC_app/Sources/VLCBrowsableVideoView.m
View file @
87fe9845
/*****************************************************************************
* VLCBrowsableVideoView.h: VideoView subclasses that allow full
s
creen
* VLCBrowsableVideoView.h: VideoView subclasses that allow full
S
creen
* browsing
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
...
...
@@ -23,6 +23,9 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
/* DisableScreenUpdates, SetSystemUIMode, ... */
#import <QuickTime/QuickTime.h>
#import "VLCBrowsableVideoView.h"
#import "VLCAppAdditions.h"
...
...
@@ -47,6 +50,16 @@
@end
@interface
VLCBrowsableVideoView
(
FullScreenTransition
)
-
(
void
)
hasEndedFullScreen
;
-
(
void
)
hasBecomeFullScreen
;
-
(
void
)
enterFullScreen
:(
NSScreen
*
)
screen
;
-
(
void
)
leaveFullScreen
;
-
(
void
)
leaveFullScreenAndFadeOut
:
(
BOOL
)
fadeout
;
@end
/******************************************************************************
* VLCBrowsableVideoView
*/
...
...
@@ -72,7 +85,7 @@
-
(
BOOL
)
fullScreen
{
return
[
s
uper
isInFullScreenMode
];
return
[
s
elf
isInFullScreenMode
];
}
-
(
void
)
setFullScreen
:(
BOOL
)
newFullScreen
...
...
@@ -82,11 +95,13 @@
if
(
newFullScreen
)
{
[
super
enterFullScreenMode
:[[
self
window
]
screen
]
withOptions
:
nil
];
[
self
enterFullScreenMode
:[[
self
window
]
screen
]
withOptions
:
[
NSDictionary
dictionaryWithObject
:
[
NSNumber
numberWithInt
:
1
]
forKey:
NSFullScreenModeWindowLevel
]];
}
else
{
[
s
uper
exitFullScreenModeWithOptions
:
nil
];
[
s
elf
exitFullScreenModeWithOptions
:
nil
];
}
}
...
...
@@ -101,11 +116,20 @@
selectionLayer
=
backLayer
=
nil
;
menuLayer
=
nil
;
selectedPath
=
[[
NSIndexPath
alloc
]
init
];
tempFullScreenView
=
[[
NSView
alloc
]
init
];
fullScreen
=
NO
;
/* Observe our bindings */
//[self displayMenu];
//[self changeSelectedIndex:0];
}
-
(
void
)
dealloc
{
[
tempFullScreenView
release
];
[
selectedPath
release
];
[
super
dealloc
];
}
/* Hiding/Displaying the menu */
-
(
void
)
hideMenu
...
...
@@ -206,6 +230,23 @@
[
super
keyDown
:
theEvent
];
}
-
(
void
)
enterFullScreenMode
:(
NSScreen
*
)
screen
withOptions
:(
NSDictionary
*
)
options
{
[
self
enterFullScreen
:
screen
];
}
-
(
void
)
exitFullScreenModeWithOptions
:(
NSDictionary
*
)
options
{
[
self
leaveFullScreen
];
}
-
(
BOOL
)
isInFullScreenMode
{
return
fullScreen
;
}
@end
/******************************************************************************
...
...
@@ -430,4 +471,288 @@
menuLayer
=
layer
;
selectionLayer
=
nil
;
}
@end
\ No newline at end of file
@end
@implementation
VLCBrowsableVideoView
(
FullScreenTransition
)
-
(
void
)
enterFullScreen
:(
NSScreen
*
)
screen
{
NSMutableDictionary
*
dict1
,
*
dict2
;
NSRect
screenRect
;
NSRect
aRect
;
screenRect
=
[
screen
frame
];
[
NSCursor
setHiddenUntilMouseMoves
:
YES
];
/* Only create the o_fullScreen_window if we are not in the middle of the zooming animation */
if
(
!
fullScreenWindow
)
{
/* We can't change the styleMask of an already created NSWindow, so we create an other window, and do eye catching stuff */
aRect
=
[[
self
superview
]
convertRect
:
[
self
frame
]
toView
:
nil
];
/* Convert to Window base coord */
aRect
.
origin
.
x
+=
[[
self
window
]
frame
].
origin
.
x
;
aRect
.
origin
.
y
+=
[[
self
window
]
frame
].
origin
.
y
;
fullScreenWindow
=
[[
VLCWindow
alloc
]
initWithContentRect
:
aRect
styleMask
:
NSBorderlessWindowMask
backing
:
NSBackingStoreBuffered
defer
:
YES
];
[
fullScreenWindow
setBackgroundColor
:
[
NSColor
blackColor
]];
[
fullScreenWindow
setCanBecomeKeyWindow
:
YES
];
if
(
!
[[
self
window
]
isVisible
]
||
[[
self
window
]
alphaValue
]
==
0
.
0
||
[
self
isHiddenOrHasHiddenAncestor
]
)
{
/* We don't animate if we are not visible or if we are running on
* Mac OS X <10.4 which doesn't support NSAnimation, instead we
* simply fade the display */
CGDisplayFadeReservationToken
token
;
[
fullScreenWindow
setFrame
:
screenRect
display
:
NO
];
CGAcquireDisplayFadeReservation
(
kCGMaxDisplayReservationInterval
,
&
token
);
CGDisplayFade
(
token
,
0
.
3
,
kCGDisplayBlendNormal
,
kCGDisplayBlendSolidColor
,
0
,
0
,
0
,
YES
);
if
([
screen
isMainScreen
])
SetSystemUIMode
(
kUIModeAllHidden
,
kUIOptionAutoShowMenuBar
);
[
self
retain
];
[[
self
superview
]
replaceSubview
:
self
with
:
tempFullScreenView
];
[
tempFullScreenView
setFrame
:[
self
frame
]];
[
fullScreenWindow
setContentView
:
self
];
[
fullScreenWindow
makeKeyAndOrderFront
:
self
];
[
self
release
];
[[
tempFullScreenView
window
]
orderOut
:
self
];
CGDisplayFade
(
token
,
0
.
5
,
kCGDisplayBlendSolidColor
,
kCGDisplayBlendNormal
,
0
,
0
,
0
,
NO
);
CGReleaseDisplayFadeReservation
(
token
);
[
self
hasBecomeFullScreen
];
return
;
}
/* Make sure we don't see the o_view disappearing of the screen during this operation */
DisableScreenUpdates
();
[
self
retain
];
/* Removing from a view, make sure we won't be released */
/* Make sure our layer won't disappear */
CALayer
*
layer
=
[[
self
layer
]
retain
];
id
alayoutManager
=
layer
.
layoutManager
;
[[
self
superview
]
replaceSubview
:
self
with
:
tempFullScreenView
];
[
tempFullScreenView
setFrame
:[
self
frame
]];
[
fullScreenWindow
setContentView
:
self
];
[
self
setWantsLayer
:
YES
];
[
self
setLayer
:
layer
];
layer
.
layoutManager
=
alayoutManager
;
[
fullScreenWindow
makeKeyAndOrderFront
:
self
];
EnableScreenUpdates
();
}
/* We are in fullScreen (and no animation is running) */
if
(
fullScreen
)
{
/* Make sure we are hidden */
[[
tempFullScreenView
window
]
orderOut
:
self
];
return
;
}
if
(
fullScreenAnim1
)
{
[
fullScreenAnim1
stopAnimation
];
[
fullScreenAnim1
release
];
}
if
(
fullScreenAnim2
)
{
[
fullScreenAnim2
stopAnimation
];
[
fullScreenAnim2
release
];
}
if
([
screen
isMainScreen
])
SetSystemUIMode
(
kUIModeAllHidden
,
kUIOptionAutoShowMenuBar
);
dict1
=
[[
NSMutableDictionary
alloc
]
initWithCapacity
:
2
];
dict2
=
[[
NSMutableDictionary
alloc
]
initWithCapacity
:
3
];
[
dict1
setObject
:[
tempFullScreenView
window
]
forKey
:
NSViewAnimationTargetKey
];
[
dict1
setObject
:
NSViewAnimationFadeOutEffect
forKey
:
NSViewAnimationEffectKey
];
[
dict2
setObject
:
fullScreenWindow
forKey
:
NSViewAnimationTargetKey
];
[
dict2
setObject
:[
NSValue
valueWithRect
:[
fullScreenWindow
frame
]]
forKey
:
NSViewAnimationStartFrameKey
];
[
dict2
setObject
:[
NSValue
valueWithRect
:
screenRect
]
forKey
:
NSViewAnimationEndFrameKey
];
/* Strategy with NSAnimation allocation:
- Keep at most 2 animation at a time
- leaveFullScreen/enterFullScreen are the only responsible for releasing and alloc-ing
*/
fullScreenAnim1
=
[[
NSViewAnimation
alloc
]
initWithViewAnimations
:[
NSArray
arrayWithObjects
:
dict1
,
nil
]];
fullScreenAnim2
=
[[
NSViewAnimation
alloc
]
initWithViewAnimations
:[
NSArray
arrayWithObjects
:
dict2
,
nil
]];
[
dict1
release
];
[
dict2
release
];
[
fullScreenAnim1
setAnimationBlockingMode
:
NSAnimationNonblocking
];
[
fullScreenAnim1
setDuration
:
0
.
3
];
[
fullScreenAnim1
setFrameRate
:
30
];
[
fullScreenAnim2
setAnimationBlockingMode
:
NSAnimationNonblocking
];
[
fullScreenAnim2
setDuration
:
0
.
3
];
[
fullScreenAnim2
setFrameRate
:
30
];
[
fullScreenAnim2
setDelegate
:
self
];
[
fullScreenAnim2
startWhenAnimation
:
fullScreenAnim1
reachesProgress
:
1
.
0
];
[
fullScreenAnim1
startAnimation
];
}
-
(
void
)
hasBecomeFullScreen
{
[
fullScreenWindow
makeFirstResponder
:
self
];
[
fullScreenWindow
makeKeyWindow
];
[
fullScreenWindow
setAcceptsMouseMovedEvents
:
TRUE
];
[[
tempFullScreenView
window
]
orderOut
:
self
];
[
self
willChangeValueForKey
:
@"fullScreen"
];
fullScreen
=
YES
;
[
self
didChangeValueForKey
:
@"fullScreen"
];
}
-
(
void
)
leaveFullScreen
{
[
self
leaveFullScreenAndFadeOut
:
NO
];
}
-
(
void
)
leaveFullScreenAndFadeOut
:
(
BOOL
)
fadeout
{
NSMutableDictionary
*
dict1
,
*
dict2
;
NSRect
frame
;
[
self
willChangeValueForKey
:
@"fullScreen"
];
fullScreen
=
NO
;
[
self
didChangeValueForKey
:
@"fullScreen"
];
/* Don't do anything if o_fullScreen_window is already closed */
if
(
!
fullScreenWindow
)
return
;
if
(
fadeout
||
[
tempFullScreenView
isHiddenOrHasHiddenAncestor
])
{
/* We don't animate if we are not visible or if we are running on
* Mac OS X <10.4 which doesn't support NSAnimation, instead we
* simply fade the display */
CGDisplayFadeReservationToken
token
;
CGAcquireDisplayFadeReservation
(
kCGMaxDisplayReservationInterval
,
&
token
);
CGDisplayFade
(
token
,
0
.
3
,
kCGDisplayBlendNormal
,
kCGDisplayBlendSolidColor
,
0
,
0
,
0
,
YES
);
SetSystemUIMode
(
kUIModeNormal
,
kUIOptionAutoShowMenuBar
);
[
self
hasEndedFullScreen
];
CGDisplayFade
(
token
,
0
.
5
,
kCGDisplayBlendSolidColor
,
kCGDisplayBlendNormal
,
0
,
0
,
0
,
NO
);
CGReleaseDisplayFadeReservation
(
token
);
return
;
}
[[
tempFullScreenView
window
]
setAlphaValue
:
0
.
0
];
[[
tempFullScreenView
window
]
orderFront
:
self
];
SetSystemUIMode
(
kUIModeNormal
,
kUIOptionAutoShowMenuBar
);
if
(
fullScreenAnim1
)
{
[
fullScreenAnim1
stopAnimation
];
[
fullScreenAnim1
release
];
}
if
(
fullScreenAnim2
)
{
[
fullScreenAnim2
stopAnimation
];
[
fullScreenAnim2
release
];
}
frame
=
[[
tempFullScreenView
superview
]
convertRect
:
[
tempFullScreenView
frame
]
toView
:
nil
];
/* Convert to Window base coord */
frame
.
origin
.
x
+=
[
tempFullScreenView
window
].
frame
.
origin
.
x
;
frame
.
origin
.
y
+=
[
tempFullScreenView
window
].
frame
.
origin
.
y
;
dict2
=
[[
NSMutableDictionary
alloc
]
initWithCapacity
:
2
];
[
dict2
setObject
:[
tempFullScreenView
window
]
forKey
:
NSViewAnimationTargetKey
];
[
dict2
setObject
:
NSViewAnimationFadeInEffect
forKey
:
NSViewAnimationEffectKey
];
fullScreenAnim2
=
[[
NSViewAnimation
alloc
]
initWithViewAnimations
:[
NSArray
arrayWithObjects
:
dict2
,
nil
]];
[
dict2
release
];
[
fullScreenAnim2
setAnimationBlockingMode
:
NSAnimationNonblocking
];
[
fullScreenAnim2
setDuration
:
0
.
3
];
[
fullScreenAnim2
setFrameRate
:
30
];
[
fullScreenAnim2
setDelegate
:
self
];
dict1
=
[[
NSMutableDictionary
alloc
]
initWithCapacity
:
3
];
[
dict1
setObject
:
fullScreenWindow
forKey
:
NSViewAnimationTargetKey
];
[
dict1
setObject
:[
NSValue
valueWithRect
:[
fullScreenWindow
frame
]]
forKey
:
NSViewAnimationStartFrameKey
];
[
dict1
setObject
:[
NSValue
valueWithRect
:
frame
]
forKey
:
NSViewAnimationEndFrameKey
];
fullScreenAnim1
=
[[
NSViewAnimation
alloc
]
initWithViewAnimations
:[
NSArray
arrayWithObjects
:
dict1
,
nil
]];
[
dict1
release
];
[
fullScreenAnim1
setAnimationBlockingMode
:
NSAnimationNonblocking
];
[
fullScreenAnim1
setDuration
:
0
.
2
];
[
fullScreenAnim1
setFrameRate
:
30
];
[
fullScreenAnim2
startWhenAnimation
:
fullScreenAnim1
reachesProgress
:
1
.
0
];
/* Make sure o_fullScreen_window is the frontmost window */
[
fullScreenWindow
orderFront
:
self
];
[
fullScreenAnim1
startAnimation
];
}
-
(
void
)
hasEndedFullScreen
{
/* This function is private and should be only triggered at the end of the fullScreen change animation */
/* Make sure we don't see the o_view disappearing of the screen during this operation */
DisableScreenUpdates
();
[
self
retain
];
/* Make sure we don't loose the layer */
CALayer
*
layer
=
[[
self
layer
]
retain
];
id
alayoutManager
=
layer
.
layoutManager
;
[
self
removeFromSuperviewWithoutNeedingDisplay
];
[[
tempFullScreenView
superview
]
replaceSubview
:
tempFullScreenView
with
:
self
];
[
self
release
];
[
self
setWantsLayer
:
YES
];
[
self
setLayer
:
layer
];
layer
.
layoutManager
=
alayoutManager
;
[
self
setFrame
:[
tempFullScreenView
frame
]];
[[
self
window
]
makeFirstResponder
:
self
];
if
([[
self
window
]
isVisible
])
[[
self
window
]
makeKeyAndOrderFront
:
self
];
[
fullScreenWindow
orderOut
:
self
];
EnableScreenUpdates
();
[
fullScreenWindow
release
];
fullScreenWindow
=
nil
;
}
-
(
void
)
animationDidEnd
:(
NSAnimation
*
)
animation
{
NSArray
*
viewAnimations
;
if
([
animation
currentValue
]
<
1
.
0
)
return
;
/* FullScreen ended or started (we are a delegate only for leaveFullScreen's/enterFullscren's anim2) */
viewAnimations
=
[
fullScreenAnim2
viewAnimations
];
if
([
viewAnimations
count
]
>=
1
&&
[[[
viewAnimations
objectAtIndex
:
0
]
objectForKey
:
NSViewAnimationEffectKey
]
isEqualToString
:
NSViewAnimationFadeInEffect
])
{
/* FullScreen ended */
[
self
hasEndedFullScreen
];
}
else
{
/* FullScreen started */
[
self
hasBecomeFullScreen
];
}
}
@end
extras/MacOSX/VLC_app/Sources/VLCFullScreenControllerWindow.h
0 → 100644
View file @
87fe9845
/*****************************************************************************
* VLCFullScreenControllerWindow.m: class that allow media controlling in
* fullscreen (with the mouse)
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id: VLCBrowsableVideoView.h 24154 2008-01-06 20:27:55Z pdherbemont $
*
* Authors: Pierre d'Herbemont <pdherbemont # videolan.org>
*
* 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 <VLCKit/VLCKit.h>
#import "VLCAppAdditions.h"
#import "VLCMainWindow.h"
@interface
VLCFullScreenControllerWindow
:
NSPanel
{
/* IBOutlets */
IBOutlet
VLCImageCustomizedSlider
*
volumeSlider
;
IBOutlet
VLCImageCustomizedSlider
*
mediaPositionSlider
;
IBOutlet
NSButton
*
mediaPlayerForwardNextButton
;
IBOutlet
NSButton
*
mediaPlayerBackwardPrevButton
;
IBOutlet
NSButton
*
mediaPlayerPlayPauseStopButton
;
IBOutlet
id
fillScreenButton
;
IBOutlet
id
fullScreenButton
;
IBOutlet
NSTextField
*
mediaReadingProgressText
;
IBOutlet
NSTextField
*
mediaDescriptionText
;
NSTimer
*
hideWindowTimer
;
NSTrackingArea
*
videoViewTrackingArea
;
BOOL
active
;
/* Owner */
IBOutlet
VLCMainWindow
*
mainWindow
;
/* Draging the window using its content */
NSPoint
mouseClic
;
}
@end
extras/MacOSX/VLC_app/Sources/VLCFullScreenControllerWindow.m
0 → 100644
View file @
87fe9845
/*****************************************************************************
* VLCFullScreenControllerWindow.m: class that allow media controlling in
* fullscreen (with the mouse)
*****************************************************************************
* Copyright (C) 2007 Pierre d'Herbemont
* Copyright (C) 2007 the VideoLAN team
* $Id: VLCBrowsableVideoView.m 24179 2008-01-07 21:00:49Z pdherbemont $
*
* Authors: Jérôme Decoodt <djc at videolan dot org>
* Felix Kühne <fkuehne at videolan dot org>
* Pierre d'Herbemont <pdherbemont # videolan.org>
*
* 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 "VLCFullScreenControllerWindow.h"
@interface
VLCFullScreenControllerWindow
(
Private
)
-
(
void
)
hide
;
-
(
void
)
show
;
-
(
void
)
updateTrackingRect
;
@end
/*****************************************************************************
* @implementation VLCFullScreenControllerWindow
*/
@implementation
VLCFullScreenControllerWindow
/* We override this initializer so we can set the NSBorderlessWindowMask styleMask, and set a few other important settings */
-
(
id
)
initWithContentRect
:(
NSRect
)
contentRect
styleMask
:(
unsigned
int
)
aStyle
backing
:(
NSBackingStoreType
)
bufferingType
defer
:(
BOOL
)
flag
{
if
(
self
=
[
super
initWithContentRect
:
contentRect
styleMask
:
NSTexturedBackgroundWindowMask
backing
:
bufferingType
defer
:
flag
]
)
{
[
self
setOpaque
:
NO
];
[
self
setHasShadow
:
NO
];
[
self
setBackgroundColor
:[
NSColor
clearColor
]];
/* let the window sit on top of everything else and start out completely transparent */
[
self
setLevel
:
NSFloatingWindowLevel
];
[
self
center
];
}
return
self
;
}
-
(
void
)
dealloc
{
[[
NSNotificationCenter
defaultCenter
]
removeObserver
:
self
];
[
hideWindowTimer
invalidate
];
[
hideWindowTimer
release
];
[
videoViewTrackingArea
release
];
[
super
dealloc
];
}
-
(
void
)
awakeFromNib
{
hideWindowTimer
=
nil
;
videoViewTrackingArea
=
nil
;
[
self
setMovableByWindowBackground
:
YES
];
/* Make sure we'll detect when to close the window, see animationDidStop:finished: */
CAAnimation
*
alphaValueAnimation
=
[
CABasicAnimation
animation
];
[
alphaValueAnimation
setDelegate
:
self
];
[
self
setAnimations
:[
NSDictionary
dictionaryWithObject
:
alphaValueAnimation
forKey
:
@"alphaValue"
]];
hideWindowTimer
=
nil
;
/* WindowView setup */
[[
mainWindow
.
videoView
window
]
setAcceptsMouseMovedEvents
:
YES
];
[[
mainWindow
.
videoView
window
]
makeFirstResponder
:
mainWindow
.
videoView
];
[
mainWindow
.
videoView
setPostsBoundsChangedNotifications
:
YES
];
[[
NSNotificationCenter
defaultCenter
]
addObserver
:
self
selector
:
@selector
(
videoViewDidChangeBounds
:
)
name
:
NSViewBoundsDidChangeNotification
object
:
(
id
)
mainWindow
.
videoView
];
/* Make sure we can know when the mouse is inside us */
[[
self
contentView
]
addTrackingRect
:[[
self
contentView
]
bounds
]
owner
:
self
userData
:
nil
assumeInside
:
NO
];
/* Bindings connection */
/* Sound */
[
volumeSlider
setKnobImage
:[
NSImage
imageNamed
:
@"fs_volume_slider_knob_highlight.png"
]];
[
volumeSlider
setBackgroundImage
:[
NSImage
imageNamed
:
@"fs_volume_slider_bar.png"
]];
[
volumeSlider
setNeedsDisplay
:
YES
];
[
volumeSlider
bind
:
@"value"
toObject
:[
VLCLibrary
sharedLibrary
]
withKeyPath
:
@"audio.volume"
options
:
nil
];
/* media position */
[
mediaPositionSlider
setKnobImage
:[
NSImage
imageNamed
:
@"fs_time_slider_knob.png"
]];
[
mediaPositionSlider
setBackgroundImage
:[
NSImage
imageNamed
:
@"fs_time_slider.png"
]];
[
mediaPositionSlider
setNeedsDisplay
:
YES
];
[
mediaPositionSlider
bind
:
@"enabled"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"media"
options
:
[
NSDictionary
dictionaryWithObject
:
@"NonNilAsBoolTransformer"
forKey
:
NSValueTransformerNameBindingOption
]];
[
mediaPositionSlider
bind
:
@"enabled2"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"seekable"
options
:
nil
];
[
mediaPositionSlider
bind
:
@"value"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"position"
options
:
[
NSDictionary
dictionaryWithObjectsAndKeys
:
@"Float10000FoldTransformer"
,
NSValueTransformerNameBindingOption
,
[
NSNumber
numberWithBool
:
NO
],
NSConditionallySetsEnabledBindingOption
,
nil
]];
[
fillScreenButton
bind
:
@"value"
toObject
:
mainWindow
.
videoView
withKeyPath
:
@"fillScreen"
options
:
nil
];
[
fullScreenButton
bind
:
@"value"
toObject
:
mainWindow
.
videoView
withKeyPath
:
@"fullScreen"
options
:
nil
];
[
mediaReadingProgressText
bind
:
@"value"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"time.stringValue"
options
:
nil
];
[
mediaDescriptionText
bind
:
@"value"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"description"
options
:
nil
];
/* mediaPlayer */
[
mediaPlayerPlayPauseStopButton
bind
:
@"enabled"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"media"
options
:
[
NSDictionary
dictionaryWithObject
:
@"NonNilAsBoolTransformer"
forKey
:
NSValueTransformerNameBindingOption
]];
[
mediaPlayerPlayPauseStopButton
bind
:
@"state"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"playing"
options
:
nil
];
[
mediaPlayerPlayPauseStopButton
bind
:
@"alternateImage"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"stateAsFullScreenButtonAlternateImage"
options
:
nil
];
[
mediaPlayerPlayPauseStopButton
bind
:
@"image"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"stateAsFullScreenButtonImage"
options
:
nil
];
[
mediaPlayerBackwardPrevButton
bind
:
@"enabled"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"playing"
options
:
nil
];
[
mediaPlayerForwardNextButton
bind
:
@"enabled"
toObject
:
mainWindow
.
mediaPlayer
withKeyPath
:
@"playing"
options
:
nil
];
[
mediaPlayerForwardNextButton
setTarget
:
mainWindow
.
mediaPlayer
];
[
mediaPlayerForwardNextButton
setAction
:
@selector
(
fastForward
)];
[
mediaPlayerBackwardPrevButton
setTarget
:
mainWindow
.
mediaPlayer
];
[
mediaPlayerBackwardPrevButton
setAction
:
@selector
(
rewind
)];
[
mediaPlayerPlayPauseStopButton
setTarget
:
mainWindow
.
mediaPlayer
];
[
mediaPlayerPlayPauseStopButton
setAction
:
@selector
(
pause
)];
[
self
bind
:
@"fullScreen"
toObject
:
mainWindow
.
videoView
withKeyPath
:
@"fullScreen"
options
:
nil
];
active
=
NO
;
}
-
(
BOOL
)
fullScreen
{
/* Only to comply to KVC */
return
active
;
}
-
(
void
)
setFullScreen
:(
BOOL
)
fullScreen
{
if
(
fullScreen
)
{
active
=
YES
;
[
self
show
];
}
else
{
[
self
hide
];
active
=
NO
;
}
}
-
(
void
)
center
{
/* centre the panel in the lower third of the screen */
NSPoint
theCoordinate
;
NSRect
theScreensFrame
;
NSRect
theWindowsFrame
;
theScreensFrame
=
[[
self
screen
]
frame
];
theWindowsFrame
=
[
self
frame
];
theCoordinate
.
x
=
(
theScreensFrame
.
size
.
width
-
theWindowsFrame
.
size
.
width
)
/
2
+
theScreensFrame
.
origin
.
x
;
theCoordinate
.
y
=
(
theScreensFrame
.
size
.
height
/
3
)
-
theWindowsFrame
.
size
.
height
+
theScreensFrame
.
origin
.
y
;
[
self
setFrameTopLeftPoint
:
theCoordinate
];
}
@end
/*****************************************************************************
* @implementation VLCFullScreenControllerWindow (Private)
*/
@implementation
VLCFullScreenControllerWindow
(
Private
)
-
(
void
)
show
{
if
(
!
[
self
isVisible
])
self
.
alphaValue
=
0
.
0
;
if
(
!
NSPointInRect
([
NSEvent
mouseLocation
],[
self
frame
])
)
{
[
hideWindowTimer
invalidate
];
[
hideWindowTimer
release
];
hideWindowTimer
=
[[
NSTimer
scheduledTimerWithTimeInterval
:
1
.
0
target
:
self
selector
:
@selector
(
hide
)
userInfo
:
nil
repeats
:
NO
]
retain
];
}
[
self
orderFront
:
self
];
[
self
.
animator
setAlphaValue
:
1
.
0
];
}
-
(
void
)
hide
{
[
hideWindowTimer
invalidate
];
[
hideWindowTimer
release
];
hideWindowTimer
=
nil
;
if
([
self
isVisible
])
{
[
self
.
animator
setAlphaValue
:
0
.
0
];
[
NSCursor
setHiddenUntilMouseMoves
:
YES
];
}
[
self
updateTrackingRect
];
}
-
(
void
)
updateTrackingRect
{
VLCVideoView
*
videoView
=
mainWindow
.
videoView
;
if
(
videoViewTrackingArea
)
{
[
videoView
removeTrackingArea
:
videoViewTrackingArea
];
[
videoViewTrackingArea
release
];
}
videoViewTrackingArea
=
[[
NSTrackingArea
alloc
]
initWithRect
:[
videoView
bounds
]
options
:
NSTrackingMouseMoved
|
NSTrackingActiveAlways
|
NSTrackingAssumeInside
|
NSTrackingEnabledDuringMouseDrag
owner
:
self
userInfo
:
nil
];
[
videoView
addTrackingArea
:
videoViewTrackingArea
];
}
@end
/*****************************************************************************
* @implementation VLCFullScreenControllerWindow (NSAnimationDelegate)
*/
@implementation
VLCFullScreenControllerWindow
(
NSAnimationDelegate
)
-
(
void
)
animationDidStop
:(
CAAnimation
*
)
animation
finished
:(
BOOL
)
flag
{
if
(
self
.
alphaValue
==
0
.
0
)
[
self
orderOut
:
self
];
}
@end
/*****************************************************************************
* @implementation VLCFullScreenControllerWindow (NSTrackingRectCallbacksInVideoView)
*/
@implementation
VLCFullScreenControllerWindow
(
NSTrackingRectCallbacks
)
-
(
void
)
mouseMoved
:(
NSEvent
*
)
theEvent
{
if
([
theEvent
window
]
!=
self
)
{
if
(
active
)
[
self
show
];
}
}
-
(
void
)
mouseEntered
:(
NSEvent
*
)
theEvent
{
if
([
theEvent
window
]
==
self
)
{
[
hideWindowTimer
invalidate
];
[
hideWindowTimer
release
];
hideWindowTimer
=
nil
;
}
}
-
(
void
)
mouseExited
:(
NSEvent
*
)
theEvent
{
if
([
theEvent
window
]
==
self
)
{
[
hideWindowTimer
invalidate
];
[
hideWindowTimer
release
];
hideWindowTimer
=
[[
NSTimer
scheduledTimerWithTimeInterval
:
1
.
0
target
:
self
selector
:
@selector
(
hide
)
userInfo
:
nil
repeats
:
NO
]
retain
];
}
else
{
if
(
active
)
[
self
hide
];
}
}
-
(
void
)
cursorUpdate
:(
NSEvent
*
)
event
{
}
@end
/*****************************************************************************
* @implementation VLCFullScreenControllerWindow (VideoViewBoundsChanges)
*/
@implementation
VLCFullScreenControllerWindow
(
VideoViewBoundsChanges
)
-
(
void
)
videoViewDidChangeBounds
:(
NSNotification
*
)
theNotification
{
[
self
updateTrackingRect
];
}
@end
extras/MacOSX/VLC_app/Sources/VLCMainWindow.h
View file @
87fe9845
...
...
@@ -64,7 +64,7 @@
IBOutlet
NSView
*
toolbarMediaDescription
;
IBOutlet
NSView
*
toolbarMediaControl
;
VLCMediaPlayer
*
mediaPlayer
;
IBOutlet
VLCMediaPlayer
*
mediaPlayer
;
IBOutlet
VLCController
*
controller
;
/* This is a VLCController binded to the File's Owner of the nib */
...
...
@@ -77,4 +77,6 @@
}
@property
BOOL
navigatorViewVisible
;
@property
(
readonly
)
VLCMediaPlayer
*
mediaPlayer
;
@property
(
readonly
)
VLCBrowsableVideoView
*
videoView
;
@end
extras/MacOSX/VLC_app/Sources/VLCMainWindow.m
View file @
87fe9845
...
...
@@ -27,6 +27,7 @@
#import "VLCMediaArrayController.h"
#import "VLCBrowsableVideoView.h"
#import "VLCAppAdditions.h"
#import "VLCFullScreenControllerWindow.h"
@interface
VLCMainWindow
(
NavigatorViewHidingShowing
)
@property
float
contentHeight
;
/* animatable, keep the mainSplitView cursor at the same place, enabling playlist(navigator) togling */
...
...
@@ -106,6 +107,10 @@
* VLCMainWindow
*/
@implementation
VLCMainWindow
@synthesize
mediaPlayer
;
@synthesize
videoView
;
-
(
void
)
awakeFromNib
;
{
NSTableColumn
*
tableColumn
;
...
...
@@ -117,7 +122,7 @@
/***********************************
* Init the media player
*/
mediaPlayer
=
[[
VLCMediaPlayer
alloc
]
initWith
VideoView
:
videoView
];
[
mediaPlayer
set
VideoView
:
videoView
];
/***********************************
* CategoriesList OutlineView content
...
...
@@ -252,7 +257,7 @@
[
mediaPlayerBackwardPrevButton
setAction
:
@selector
(
rewind
)];
[
mediaPlayerPlayPauseStopButton
setTarget
:
mediaPlayer
];
[
mediaPlayerPlayPauseStopButton
setAction
:
@selector
(
pause
)];
/* Last minute setup */
[
categoriesListView
expandItem
:
nil
expandChildren
:
YES
];
[
categoriesListView
selectRowIndexes
:[
NSIndexSet
indexSetWithIndex
:[
categoriesListView
numberOfRows
]
>
0
?
[
categoriesListView
numberOfRows
]
-
1
:
0
]
byExtendingSelection
:
NO
];
...
...
extras/MacOSX/VLC_app/VLC.xcodeproj/project.pbxproj
View file @
87fe9845
...
...
@@ -47,6 +47,7 @@
633BD4DA0D2A90C80012A314
/* dialog-error.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
633BD4D80D2A90C80012A314
/* dialog-error.png */
;
};
633BD4DB0D2A90C80012A314
/* applications-internet.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
633BD4D90D2A90C80012A314
/* applications-internet.png */
;
};
63874B190D25960600F738AD
/* MainWindow.xib in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63874B170D25960600F738AD
/* MainWindow.xib */
;
};
638B823B0D35294500128F2B
/* QuickTime.framework in Frameworks */
=
{
isa
=
PBXBuildFile
;
fileRef
=
638B823A0D35294500128F2B
/* QuickTime.framework */
;
};
638F47110D216C8F008E4912
/* type_playlist.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
638F47100D216C8F008E4912
/* type_playlist.png */
;
};
63A742B30D2759C1002D41A0
/* ExceptionHandling.framework in Frameworks */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63A742B20D2759C1002D41A0
/* ExceptionHandling.framework */
;
};
63E380AA0D1C65A600FD6958
/* volume_high.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E380A80D1C65A600FD6958
/* volume_high.png */
;
};
...
...
@@ -58,6 +59,35 @@
63E380B60D1C65FC00FD6958
/* skip_previous_active.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E380B40D1C65FC00FD6958
/* skip_previous_active.png */
;
};
63E380B70D1C65FC00FD6958
/* skip_previous_blue.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E380B50D1C65FC00FD6958
/* skip_previous_blue.png */
;
};
63E380DF0D1C6FD800FD6958
/* QuartzCore.framework in Frameworks */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E380DE0D1C6FD800FD6958
/* QuartzCore.framework */
;
};
63E768830D3503E200258089
/* VLCFullScreenControllerWindow.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768820D3503E200258089
/* VLCFullScreenControllerWindow.m */
;
};
63E768BF0D3507EF00258089
/* fs_volume_slider_knob.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768A40D3507EF00258089
/* fs_volume_slider_knob.png */
;
};
63E768C00D3507EF00258089
/* fs_background.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768A50D3507EF00258089
/* fs_background.png */
;
};
63E768C10D3507EF00258089
/* fs_exit_fullscreen_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768A60D3507EF00258089
/* fs_exit_fullscreen_highlight.png */
;
};
63E768C20D3507EF00258089
/* fs_exit_fullscreen.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768A70D3507EF00258089
/* fs_exit_fullscreen.png */
;
};
63E768C30D3507EF00258089
/* fs_forward_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768A80D3507EF00258089
/* fs_forward_highlight.png */
;
};
63E768C40D3507EF00258089
/* fs_forward.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768A90D3507EF00258089
/* fs_forward.png */
;
};
63E768C50D3507EF00258089
/* fs_pause_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768AA0D3507EF00258089
/* fs_pause_highlight.png */
;
};
63E768C60D3507EF00258089
/* fs_pause.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768AB0D3507EF00258089
/* fs_pause.png */
;
};
63E768C70D3507EF00258089
/* fs_play_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768AC0D3507EF00258089
/* fs_play_highlight.png */
;
};
63E768C80D3507EF00258089
/* fs_play.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768AD0D3507EF00258089
/* fs_play.png */
;
};
63E768C90D3507EF00258089
/* fs_rewind_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768AE0D3507EF00258089
/* fs_rewind_highlight.png */
;
};
63E768CA0D3507EF00258089
/* fs_rewind.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768AF0D3507EF00258089
/* fs_rewind.png */
;
};
63E768CB0D3507EF00258089
/* fs_skip_next_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B00D3507EF00258089
/* fs_skip_next_highlight.png */
;
};
63E768CC0D3507EF00258089
/* fs_skip_next.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B10D3507EF00258089
/* fs_skip_next.png */
;
};
63E768CD0D3507EF00258089
/* fs_skip_previous_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B20D3507EF00258089
/* fs_skip_previous_highlight.png */
;
};
63E768CE0D3507EF00258089
/* fs_skip_previous.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B30D3507EF00258089
/* fs_skip_previous.png */
;
};
63E768CF0D3507EF00258089
/* fs_stop_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B40D3507EF00258089
/* fs_stop_highlight.png */
;
};
63E768D00D3507EF00258089
/* fs_stop.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B50D3507EF00258089
/* fs_stop.png */
;
};
63E768D10D3507EF00258089
/* fs_time_slider_knob_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B60D3507EF00258089
/* fs_time_slider_knob_highlight.png */
;
};
63E768D20D3507EF00258089
/* fs_time_slider_knob.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B70D3507EF00258089
/* fs_time_slider_knob.png */
;
};
63E768D30D3507EF00258089
/* fs_time_slider.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B80D3507EF00258089
/* fs_time_slider.png */
;
};
63E768D40D3507EF00258089
/* fs_volume_max_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768B90D3507EF00258089
/* fs_volume_max_highlight.png */
;
};
63E768D50D3507EF00258089
/* fs_volume_max.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768BA0D3507EF00258089
/* fs_volume_max.png */
;
};
63E768D60D3507EF00258089
/* fs_volume_mute_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768BB0D3507EF00258089
/* fs_volume_mute_highlight.png */
;
};
63E768D70D3507EF00258089
/* fs_volume_mute.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768BC0D3507EF00258089
/* fs_volume_mute.png */
;
};
63E768D80D3507EF00258089
/* fs_volume_slider_bar.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768BD0D3507EF00258089
/* fs_volume_slider_bar.png */
;
};
63E768D90D3507EF00258089
/* fs_volume_slider_knob_highlight.png in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E768BE0D3507EF00258089
/* fs_volume_slider_knob_highlight.png */
;
};
63E76A530D35225700258089
/* Carbon.framework in Frameworks */
=
{
isa
=
PBXBuildFile
;
fileRef
=
63E76A520D35225700258089
/* Carbon.framework */
;
};
8D11072A0486CEB800E47090
/* MainMenu.nib in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
29B97318FDCFA39411CA2CEA
/* MainMenu.nib */
;
};
8D11072B0486CEB800E47090
/* InfoPlist.strings in Resources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
089C165CFE840E0CC02AAC07
/* InfoPlist.strings */
;
};
8D11072D0486CEB800E47090
/* main.m in Sources */
=
{
isa
=
PBXBuildFile
;
fileRef
=
29B97316FDCFA39411CA2CEA
/* main.m */
;
settings
=
{
ATTRIBUTES
=
();
};
};
...
...
@@ -127,6 +157,7 @@
633BD4D90D2A90C80012A314
/* applications-internet.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
"applications-internet.png"
;
path
=
"Icons/applications-internet.png"
;
sourceTree
=
"<group>"
;
};
633BD69D0D2ACE520012A314
/* VLCKit.xcodeproj */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
"wrapper.pb-project"
;
name
=
VLCKit.xcodeproj
;
path
=
../Framework/VLCKit.xcodeproj
;
sourceTree
=
SOURCE_ROOT
;
};
63874B180D25960600F738AD
/* English */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
file.xib
;
name
=
English
;
path
=
English.lproj/MainWindow.xib
;
sourceTree
=
"<group>"
;
};
638B823A0D35294500128F2B
/* QuickTime.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
QuickTime.framework
;
path
=
/System/Library/Frameworks/QuickTime.framework
;
sourceTree
=
"<absolute>"
;
};
638F47100D216C8F008E4912
/* type_playlist.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
type_playlist.png
;
path
=
../../../modules/gui/qt4/pixmaps/type_playlist.png
;
sourceTree
=
SOURCE_ROOT
;
};
63A742B20D2759C1002D41A0
/* ExceptionHandling.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
ExceptionHandling.framework
;
path
=
/System/Library/Frameworks/ExceptionHandling.framework
;
sourceTree
=
"<absolute>"
;
};
63E380A80D1C65A600FD6958
/* volume_high.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
volume_high.png
;
path
=
../Resources/volume_high.png
;
sourceTree
=
SOURCE_ROOT
;
};
...
...
@@ -138,6 +169,36 @@
63E380B40D1C65FC00FD6958
/* skip_previous_active.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
skip_previous_active.png
;
path
=
../Resources/skip_previous_active.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E380B50D1C65FC00FD6958
/* skip_previous_blue.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
skip_previous_blue.png
;
path
=
../Resources/skip_previous_blue.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E380DE0D1C6FD800FD6958
/* QuartzCore.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
QuartzCore.framework
;
path
=
/System/Library/Frameworks/QuartzCore.framework
;
sourceTree
=
"<absolute>"
;
};
63E768810D3503E200258089
/* VLCFullScreenControllerWindow.h */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.h
;
name
=
VLCFullScreenControllerWindow.h
;
path
=
Sources/VLCFullScreenControllerWindow.h
;
sourceTree
=
"<group>"
;
};
63E768820D3503E200258089
/* VLCFullScreenControllerWindow.m */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
sourcecode.c.objc
;
name
=
VLCFullScreenControllerWindow.m
;
path
=
Sources/VLCFullScreenControllerWindow.m
;
sourceTree
=
"<group>"
;
};
63E768A40D3507EF00258089
/* fs_volume_slider_knob.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_slider_knob.png
;
path
=
../Resources/fs_volume_slider_knob.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768A50D3507EF00258089
/* fs_background.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_background.png
;
path
=
../Resources/fs_background.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768A60D3507EF00258089
/* fs_exit_fullscreen_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_exit_fullscreen_highlight.png
;
path
=
../Resources/fs_exit_fullscreen_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768A70D3507EF00258089
/* fs_exit_fullscreen.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_exit_fullscreen.png
;
path
=
../Resources/fs_exit_fullscreen.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768A80D3507EF00258089
/* fs_forward_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_forward_highlight.png
;
path
=
../Resources/fs_forward_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768A90D3507EF00258089
/* fs_forward.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_forward.png
;
path
=
../Resources/fs_forward.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768AA0D3507EF00258089
/* fs_pause_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_pause_highlight.png
;
path
=
../Resources/fs_pause_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768AB0D3507EF00258089
/* fs_pause.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_pause.png
;
path
=
../Resources/fs_pause.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768AC0D3507EF00258089
/* fs_play_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_play_highlight.png
;
path
=
../Resources/fs_play_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768AD0D3507EF00258089
/* fs_play.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_play.png
;
path
=
../Resources/fs_play.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768AE0D3507EF00258089
/* fs_rewind_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_rewind_highlight.png
;
path
=
../Resources/fs_rewind_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768AF0D3507EF00258089
/* fs_rewind.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_rewind.png
;
path
=
../Resources/fs_rewind.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B00D3507EF00258089
/* fs_skip_next_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_skip_next_highlight.png
;
path
=
../Resources/fs_skip_next_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B10D3507EF00258089
/* fs_skip_next.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_skip_next.png
;
path
=
../Resources/fs_skip_next.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B20D3507EF00258089
/* fs_skip_previous_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_skip_previous_highlight.png
;
path
=
../Resources/fs_skip_previous_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B30D3507EF00258089
/* fs_skip_previous.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_skip_previous.png
;
path
=
../Resources/fs_skip_previous.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B40D3507EF00258089
/* fs_stop_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_stop_highlight.png
;
path
=
../Resources/fs_stop_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B50D3507EF00258089
/* fs_stop.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_stop.png
;
path
=
../Resources/fs_stop.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B60D3507EF00258089
/* fs_time_slider_knob_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_time_slider_knob_highlight.png
;
path
=
../Resources/fs_time_slider_knob_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B70D3507EF00258089
/* fs_time_slider_knob.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_time_slider_knob.png
;
path
=
../Resources/fs_time_slider_knob.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B80D3507EF00258089
/* fs_time_slider.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_time_slider.png
;
path
=
../Resources/fs_time_slider.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768B90D3507EF00258089
/* fs_volume_max_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_max_highlight.png
;
path
=
../Resources/fs_volume_max_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768BA0D3507EF00258089
/* fs_volume_max.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_max.png
;
path
=
../Resources/fs_volume_max.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768BB0D3507EF00258089
/* fs_volume_mute_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_mute_highlight.png
;
path
=
../Resources/fs_volume_mute_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768BC0D3507EF00258089
/* fs_volume_mute.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_mute.png
;
path
=
../Resources/fs_volume_mute.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768BD0D3507EF00258089
/* fs_volume_slider_bar.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_slider_bar.png
;
path
=
../Resources/fs_volume_slider_bar.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E768BE0D3507EF00258089
/* fs_volume_slider_knob_highlight.png */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
image.png
;
name
=
fs_volume_slider_knob_highlight.png
;
path
=
../Resources/fs_volume_slider_knob_highlight.png
;
sourceTree
=
SOURCE_ROOT
;
};
63E76A520D35225700258089
/* Carbon.framework */
=
{
isa
=
PBXFileReference
;
lastKnownFileType
=
wrapper.framework
;
name
=
Carbon.framework
;
path
=
/System/Library/Frameworks/Carbon.framework
;
sourceTree
=
"<absolute>"
;
};
8D1107310486CEB800E47090
/* Info.plist */
=
{
isa
=
PBXFileReference
;
fileEncoding
=
4
;
lastKnownFileType
=
text.plist
;
path
=
Info.plist
;
sourceTree
=
"<group>"
;
};
8D1107320486CEB800E47090
/* VLC.app */
=
{
isa
=
PBXFileReference
;
explicitFileType
=
wrapper.application
;
includeInIndex
=
0
;
path
=
VLC.app
;
sourceTree
=
BUILT_PRODUCTS_DIR
;
};
/* End PBXFileReference section */
...
...
@@ -151,6 +212,8 @@
8D11072F0486CEB800E47090
/* Cocoa.framework in Frameworks */
,
63E380DF0D1C6FD800FD6958
/* QuartzCore.framework in Frameworks */
,
63A742B30D2759C1002D41A0
/* ExceptionHandling.framework in Frameworks */
,
63E76A530D35225700258089
/* Carbon.framework in Frameworks */
,
638B823B0D35294500128F2B
/* QuickTime.framework in Frameworks */
,
);
runOnlyForDeploymentPostprocessing
=
0
;
};
...
...
@@ -160,6 +223,7 @@
1058C7A0FEA54F0111CA2CBB
/* Linked Frameworks */
=
{
isa
=
PBXGroup
;
children
=
(
638B823A0D35294500128F2B
/* QuickTime.framework */
,
63A742B20D2759C1002D41A0
/* ExceptionHandling.framework */
,
63E380DE0D1C6FD800FD6958
/* QuartzCore.framework */
,
1058C7A1FEA54F0111CA2CBB
/* Cocoa.framework */
,
...
...
@@ -188,6 +252,7 @@
29B97314FDCFA39411CA2CEA
/* VLC */
=
{
isa
=
PBXGroup
;
children
=
(
63E76A520D35225700258089
/* Carbon.framework */
,
633BD6A40D2ACE5E0012A314
/* Dependencies */
,
63874AF40D2591CE00F738AD
/* Sources */
,
29B97315FDCFA39411CA2CEA
/* Other Sources */
,
...
...
@@ -272,6 +337,8 @@
children
=
(
633BD4B60D2A90470012A314
/* VLCBrowsableVideoView.h */
,
633BD4B30D2A90470012A314
/* VLCBrowsableVideoView.m */
,
63E768810D3503E200258089
/* VLCFullScreenControllerWindow.h */
,
63E768820D3503E200258089
/* VLCFullScreenControllerWindow.m */
,
);
name
=
Video
;
sourceTree
=
"<group>"
;
...
...
@@ -312,9 +379,16 @@
63C551960C7F6AD100B202D3
/* Images */
=
{
isa
=
PBXGroup
;
children
=
(
638F47100D216C8F008E4912
/* type_playlist.png */
,
633BD4D80D2A90C80012A314
/* dialog-error.png */
,
633BD4D90D2A90C80012A314
/* applications-internet.png */
,
63E768860D35072F00258089
/* Categories Icons */
,
63E768850D35072600258089
/* Toolbar Items */
,
63E768DA0D3507F500258089
/* FullScreenControllerWindow */
,
);
name
=
Images
;
sourceTree
=
"<group>"
;
};
63E768850D35072600258089
/* Toolbar Items */
=
{
isa
=
PBXGroup
;
children
=
(
63E380A80D1C65A600FD6958
/* volume_high.png */
,
63E380A90D1C65A600FD6958
/* volume_low.png */
,
63E380AC0D1C65D100FD6958
/* play.png */
,
...
...
@@ -325,7 +399,51 @@
63E380B40D1C65FC00FD6958
/* skip_previous_active.png */
,
63E380B50D1C65FC00FD6958
/* skip_previous_blue.png */
,
);
name
=
Images
;
name
=
"Toolbar Items"
;
sourceTree
=
"<group>"
;
};
63E768860D35072F00258089
/* Categories Icons */
=
{
isa
=
PBXGroup
;
children
=
(
638F47100D216C8F008E4912
/* type_playlist.png */
,
633BD4D80D2A90C80012A314
/* dialog-error.png */
,
633BD4D90D2A90C80012A314
/* applications-internet.png */
,
);
name
=
"Categories Icons"
;
sourceTree
=
"<group>"
;
};
63E768DA0D3507F500258089
/* FullScreenControllerWindow */
=
{
isa
=
PBXGroup
;
children
=
(
63E768A40D3507EF00258089
/* fs_volume_slider_knob.png */
,
63E768A50D3507EF00258089
/* fs_background.png */
,
63E768A60D3507EF00258089
/* fs_exit_fullscreen_highlight.png */
,
63E768A70D3507EF00258089
/* fs_exit_fullscreen.png */
,
63E768A80D3507EF00258089
/* fs_forward_highlight.png */
,
63E768A90D3507EF00258089
/* fs_forward.png */
,
63E768AA0D3507EF00258089
/* fs_pause_highlight.png */
,
63E768AB0D3507EF00258089
/* fs_pause.png */
,
63E768AC0D3507EF00258089
/* fs_play_highlight.png */
,
63E768AD0D3507EF00258089
/* fs_play.png */
,
63E768AE0D3507EF00258089
/* fs_rewind_highlight.png */
,
63E768AF0D3507EF00258089
/* fs_rewind.png */
,
63E768B00D3507EF00258089
/* fs_skip_next_highlight.png */
,
63E768B10D3507EF00258089
/* fs_skip_next.png */
,
63E768B20D3507EF00258089
/* fs_skip_previous_highlight.png */
,
63E768B30D3507EF00258089
/* fs_skip_previous.png */
,
63E768B40D3507EF00258089
/* fs_stop_highlight.png */
,
63E768B50D3507EF00258089
/* fs_stop.png */
,
63E768B60D3507EF00258089
/* fs_time_slider_knob_highlight.png */
,
63E768B70D3507EF00258089
/* fs_time_slider_knob.png */
,
63E768B80D3507EF00258089
/* fs_time_slider.png */
,
63E768B90D3507EF00258089
/* fs_volume_max_highlight.png */
,
63E768BA0D3507EF00258089
/* fs_volume_max.png */
,
63E768BB0D3507EF00258089
/* fs_volume_mute_highlight.png */
,
63E768BC0D3507EF00258089
/* fs_volume_mute.png */
,
63E768BD0D3507EF00258089
/* fs_volume_slider_bar.png */
,
63E768BE0D3507EF00258089
/* fs_volume_slider_knob_highlight.png */
,
);
name
=
FullScreenControllerWindow
;
sourceTree
=
"<group>"
;
};
/* End PBXGroup section */
...
...
@@ -405,6 +523,33 @@
633BD4DA0D2A90C80012A314
/* dialog-error.png in Resources */
,
633BD4DB0D2A90C80012A314
/* applications-internet.png in Resources */
,
632F3E260D326FF0003BBC56
/* pause.png in Resources */
,
63E768BF0D3507EF00258089
/* fs_volume_slider_knob.png in Resources */
,
63E768C00D3507EF00258089
/* fs_background.png in Resources */
,
63E768C10D3507EF00258089
/* fs_exit_fullscreen_highlight.png in Resources */
,
63E768C20D3507EF00258089
/* fs_exit_fullscreen.png in Resources */
,
63E768C30D3507EF00258089
/* fs_forward_highlight.png in Resources */
,
63E768C40D3507EF00258089
/* fs_forward.png in Resources */
,
63E768C50D3507EF00258089
/* fs_pause_highlight.png in Resources */
,
63E768C60D3507EF00258089
/* fs_pause.png in Resources */
,
63E768C70D3507EF00258089
/* fs_play_highlight.png in Resources */
,
63E768C80D3507EF00258089
/* fs_play.png in Resources */
,
63E768C90D3507EF00258089
/* fs_rewind_highlight.png in Resources */
,
63E768CA0D3507EF00258089
/* fs_rewind.png in Resources */
,
63E768CB0D3507EF00258089
/* fs_skip_next_highlight.png in Resources */
,
63E768CC0D3507EF00258089
/* fs_skip_next.png in Resources */
,
63E768CD0D3507EF00258089
/* fs_skip_previous_highlight.png in Resources */
,
63E768CE0D3507EF00258089
/* fs_skip_previous.png in Resources */
,
63E768CF0D3507EF00258089
/* fs_stop_highlight.png in Resources */
,
63E768D00D3507EF00258089
/* fs_stop.png in Resources */
,
63E768D10D3507EF00258089
/* fs_time_slider_knob_highlight.png in Resources */
,
63E768D20D3507EF00258089
/* fs_time_slider_knob.png in Resources */
,
63E768D30D3507EF00258089
/* fs_time_slider.png in Resources */
,
63E768D40D3507EF00258089
/* fs_volume_max_highlight.png in Resources */
,
63E768D50D3507EF00258089
/* fs_volume_max.png in Resources */
,
63E768D60D3507EF00258089
/* fs_volume_mute_highlight.png in Resources */
,
63E768D70D3507EF00258089
/* fs_volume_mute.png in Resources */
,
63E768D80D3507EF00258089
/* fs_volume_slider_bar.png in Resources */
,
63E768D90D3507EF00258089
/* fs_volume_slider_knob_highlight.png in Resources */
,
);
runOnlyForDeploymentPostprocessing
=
0
;
};
...
...
@@ -443,6 +588,7 @@
633BD4C20D2A90470012A314
/* VLCAppBindings.m in Sources */
,
633BD4C30D2A90470012A314
/* VLCAppAdditions.m in Sources */
,
633BD4C40D2A90470012A314
/* ImageAndTextCell.m in Sources */
,
63E768830D3503E200258089
/* VLCFullScreenControllerWindow.m in Sources */
,
);
runOnlyForDeploymentPostprocessing
=
0
;
};
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment