MacOSX/Framework/VLCMediaPlayer: Expose -setVideoLayer: and -initWithVideoLayer:.
authorPierre d'Herbemont <pdherbemont@videolan.org>
Wed, 2 Jan 2008 18:23:40 +0000 (18:23 +0000)
committerPierre d'Herbemont <pdherbemont@videolan.org>
Wed, 2 Jan 2008 18:23:40 +0000 (18:23 +0000)
extras/MacOSX/Framework/Headers/Public/VLCMediaPlayer.h
extras/MacOSX/Framework/Sources/VLCMediaPlayer.m

index c9045d4..accd6a8 100644 (file)
@@ -25,6 +25,7 @@
 #import <Cocoa/Cocoa.h>
 #import "VLCMedia.h"
 #import "VLCVideoView.h"
+#import "VLCVideoLayer.h"
 #import "VLCTime.h"
 
 /* Notification Messages */
@@ -70,7 +71,6 @@ extern NSString * VLCMediaPlayerStateToString(VLCMediaPlayerState state);
 @interface VLCMediaPlayer : NSObject 
 {
     id delegate;                        //< Object delegate
-    VLCVideoView * videoView;           //< NSView instance where media is rendered to
 
     void * instance;                    //  Internal
     VLCMedia * media;                   //< Current media being played
@@ -81,6 +81,7 @@ extern NSString * VLCMediaPlayerStateToString(VLCMediaPlayerState state);
 
 /* Initializers */
 - (id)initWithVideoView:(VLCVideoView *)aVideoView;
+- (id)initWithVideoLayer:(VLCVideoLayer *)aVideoLayer;
 
 /* Properties */
 - (void)setDelegate:(id)value;
@@ -89,9 +90,8 @@ extern NSString * VLCMediaPlayerStateToString(VLCMediaPlayerState state);
 /* Video View Options */
 // TODO: Should be it's own object?
 
-// TODO: use VLCVideoView instead of NSView
-- (void)setVideoView:(VLCVideoView *)value;
-- (VLCVideoView *)videoView;
+- (void)setVideoView:(VLCVideoView *)aVideoView;
+- (void)setVideoLayer:(VLCVideoLayer *)aVideoLayer;
 
 - (void)setFullscreen:(BOOL)value;
 - (BOOL)fullscreen;
index 1e74a03..5417142 100644 (file)
@@ -112,6 +112,9 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
 
 // TODO: Documentation
 @interface VLCMediaPlayer (Private)
+- (id)initWithDrawable:(id)aDrawable;
+- (void)setDrawable:(id)aDrawable;
+
 - (void)registerObservers;
 - (void)unregisterObservers;
 - (void)mediaPlayerTimeChanged:(NSNumber *)newTime;
@@ -123,34 +126,17 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
 
 - (id)init
 {
-    return [self initWithVideoView:nil];
+    return [self initWithDrawable:nil];
 }
 
 - (id)initWithVideoView:(VLCVideoView *)aVideoView
 {
-    if (self = [super init])
-    {
-        [VLCMediaPlayer setKeys:[NSArray arrayWithObject:@"state"] triggerChangeNotificationsForDependentKey:@"playing"];
-        [VLCMediaPlayer setKeys:[NSArray arrayWithObjects:@"state", @"media", nil] triggerChangeNotificationsForDependentKey:@"seekable"];
-        delegate = nil;
-        media = nil;
-        cachedTime = [[VLCTime nullTime] retain];
-        position = 0.0f;
-        cachedState = VLCMediaPlayerStateStopped;
+    return [self initWithDrawable: aVideoView];
+}
 
-        // Create a media instance, it doesn't matter what library we start off with
-        // it will change depending on the media descriptor provided to the media
-        // instance
-        libvlc_exception_t ex;
-        libvlc_exception_init( &ex );
-        instance = (void *)libvlc_media_instance_new([VLCLibrary sharedInstance], &ex);
-        catch_exception( &ex );
-        
-        [self registerObservers];
-        
-        [self setVideoView:aVideoView];
-    }
-    return self;
+- (id)initWithVideoLayer:(VLCVideoLayer *)aVideoLayer
+{
+    return [self initWithDrawable: aVideoLayer];
 }
 
 - (void)release
@@ -193,22 +179,14 @@ static void HandleMediaInstanceStateChanged(const libvlc_event_t * event, void *
     return delegate;
 }
 
-- (void)setVideoView:(VLCVideoView *)value
-{
-    videoView = value;
-    
-    // Make sure that this instance has been associated with the drawing canvas.
-    libvlc_exception_t ex;
-    libvlc_exception_init( &ex );
-    libvlc_media_instance_set_drawable ((libvlc_media_instance_t *)instance, 
-                                        (libvlc_drawable_t)videoView, 
-                                        &ex);
-    catch_exception( &ex );
+- (void)setVideoView:(VLCVideoView *)aVideoView
+{    
+    [self setDrawable: aVideoView];
 }
 
-- (VLCVideoView *)videoView
+- (void)setVideoLayer:(VLCVideoLayer *)aVideoLayer
 {
-    return videoView;
+    [self setDrawable: aVideoLayer];
 }
 
 - (void)setFullscreen:(BOOL)value
@@ -554,6 +532,44 @@ static const VLCMediaPlayerState libvlc_to_local_state[] =
 @end
 
 @implementation VLCMediaPlayer (Private)
+- (id)initWithDrawable:(id)aDrawable
+{
+    if (self = [super init])
+    {
+        [VLCMediaPlayer setKeys:[NSArray arrayWithObject:@"state"] triggerChangeNotificationsForDependentKey:@"playing"];
+        [VLCMediaPlayer setKeys:[NSArray arrayWithObjects:@"state", @"media", nil] triggerChangeNotificationsForDependentKey:@"seekable"];
+        delegate = nil;
+        media = nil;
+        cachedTime = [[VLCTime nullTime] retain];
+        position = 0.0f;
+        cachedState = VLCMediaPlayerStateStopped;
+
+        // Create a media instance, it doesn't matter what library we start off with
+        // it will change depending on the media descriptor provided to the media
+        // instance
+        libvlc_exception_t ex;
+        libvlc_exception_init( &ex );
+        instance = (void *)libvlc_media_instance_new([VLCLibrary sharedInstance], &ex);
+        catch_exception( &ex );
+        
+        [self registerObservers];
+        
+        [self setDrawable:aDrawable];
+    }
+    return self;
+}
+
+- (void)setDrawable:(id)aDrawable
+{
+    // Make sure that this instance has been associated with the drawing canvas.
+    libvlc_exception_t ex;
+    libvlc_exception_init( &ex );
+    libvlc_media_instance_set_drawable ((libvlc_media_instance_t *)instance, 
+                                        (libvlc_drawable_t)aDrawable, 
+                                        &ex);
+    catch_exception( &ex );
+}
+
 - (void)registerObservers
 {
     libvlc_exception_t ex;