/** NSMovie Encapsulate a Quicktime movie Copyright (C) 2003 Free Software Foundation, Inc. Author: Fred Kiefer Date: March 2003 This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; see the file COPYING.LIB. If not, see or write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #import #import #import #import #import "AppKit/NSMovie.h" #import "AppKit/NSPasteboard.h" @implementation NSMovie + (NSArray*) movieUnfilteredFileTypes { return [NSArray arrayWithObject: @"mov"]; } + (NSArray*) movieUnfilteredPasteboardTypes { // FIXME return [NSArray arrayWithObject: @"QuickTimeMovie"]; } + (BOOL) canInitWithPasteboard: (NSPasteboard*)pasteboard { NSArray *pbTypes = [pasteboard types]; NSArray *myTypes = [self movieUnfilteredPasteboardTypes]; return ([pbTypes firstObjectCommonWithArray: myTypes] != nil); } - (id) initWithData: (NSData *)movie { if (movie == nil) { RELEASE(self); return nil; } [super init]; ASSIGN(_movie, movie); return self; } - (id) initWithMovie: (void*)movie { //FIXME return self; } - (id) initWithURL: (NSURL*)url byReference: (BOOL)byRef { NSData* data = [url resourceDataUsingCache: YES]; self = [self initWithData: data]; if (byRef) { ASSIGN(_url, url); } return self; } - (id) initWithPasteboard: (NSPasteboard*)pasteboard { NSString *type; NSData* data; type = [pasteboard availableTypeFromArray: [object_getClass(self) movieUnfilteredPasteboardTypes]]; if (type == nil) { //NSArray *array = [pasteboard propertyListForType: NSFilenamesPboardType]; // FIXME data = nil; } else { data = [pasteboard dataForType: type]; } if (data == nil) { RELEASE(self); return nil; } self = [self initWithData: data]; return self; } - (void) dealloc { TEST_RELEASE(_url); TEST_RELEASE(_movie); [super dealloc]; } - (void*) QTMovie { return (void*)[_movie bytes]; } - (NSURL*) URL { return _url; } // NSCopying protocoll - (id) copyWithZone: (NSZone *)zone { NSMovie *new = (NSMovie*)NSCopyObject (self, 0, zone); new->_movie = [_movie copyWithZone: zone]; new->_url = [_url copyWithZone: zone]; return new; } // NSCoding protocoll - (void) encodeWithCoder: (NSCoder*)aCoder { if ([aCoder allowsKeyedCoding]) { // FIXME } else { [aCoder encodeObject: _movie]; [aCoder encodeObject: _url]; } } - (id) initWithCoder: (NSCoder*)aDecoder { if ([aDecoder allowsKeyedCoding]) { // FIXME } else { ASSIGN (_movie, [aDecoder decodeObject]); ASSIGN (_url, [aDecoder decodeObject]); } return self; } @end