view dstep/qtkit/QTMovie.d @ 22:f8a3b67adfcb

Removed duplicated methods
author Jacob Carlborg <doob@me.com>
date Tue, 09 Feb 2010 18:02:03 +0100
parents 19885b43130e
children b9de51448c6b
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Sep 28, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.qtkit.QTMovie;

import dstep.cocoa.Cocoa;
import dstep.appkit.NSImage;
import dstep.appkit.NSPasteboard;
import dstep.foundation.NSArray;
import dstep.foundation.NSCoder;
import dstep.foundation.NSData;
import dstep.foundation.NSDictionary;
import dstep.foundation.NSError;
import dstep.foundation.NSObjCRuntime;
import dstep.foundation.NSObject;
import dstep.foundation.NSString;
import dstep.foundation.NSURL;
import dstep.foundation.NSZone;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;
import dstep.qtkit.QTDataReference;
import dstep.qtkit.QTKitDefines;
import dstep.qtkit.QTTime;
import dstep.qtkit.QTTimeRange;
import dstep.qtkit.QTTrack;

import bindings = dstep.qtkit.QTMovie_bindings;

alias NSInteger QTMovieLoadState;

private
{
	NSString QTMoviePasteboardType_;
	NSString QTMovieEditabilityDidChangeNotification_;
	NSString QTMovieEditedNotification_;
	NSString QTMovieLoadStateDidChangeNotification_;
	NSString QTMovieLoopModeDidChangeNotification_;
	NSString QTMovieMessageStringPostedNotification_;
	NSString QTMovieRateDidChangeNotification_;
	NSString QTMovieSelectionDidChangeNotification_;
	NSString QTMovieSizeDidChangeNotification_;
	NSString QTMovieStatusStringPostedNotification_;
	NSString QTMovieTimeDidChangeNotification_;
	NSString QTMovieVolumeDidChangeNotification_;
	NSString QTMovieDidEndNotification_;
	NSString QTMovieChapterDidChangeNotification_;
	NSString QTMovieChapterListDidChangeNotification_;
	NSString QTMovieEnterFullScreenRequestNotification_;
	NSString QTMovieExitFullScreenRequestNotification_;
	NSString QTMovieCloseWindowRequestNotification_;
	NSString QTMovieApertureModeDidChangeNotification_;
	NSString QTMovieMessageNotificationParameter_;
	NSString QTMovieRateDidChangeNotificationParameter_;
	NSString QTMovieStatusFlagsNotificationParameter_;
	NSString QTMovieStatusCodeNotificationParameter_;
	NSString QTMovieStatusStringNotificationParameter_;
	NSString QTMovieTargetIDNotificationParameter_;
	NSString QTMovieTargetNameNotificationParameter_;
	NSString QTMovieExport_;
	NSString QTMovieExportType_;
	NSString QTMovieFlatten_;
	NSString QTMovieExportSettings_;
	NSString QTMovieExportManufacturer_;
	NSString QTAddImageCodecType_;
	NSString QTAddImageCodecQuality_;
	NSString QTMovieDataReferenceAttribute_;
	NSString QTMoviePasteboardAttribute_;
	NSString QTMovieDataAttribute_;
	NSString QTMovieFileOffsetAttribute_;
	NSString QTMovieResolveDataRefsAttribute_;
	NSString QTMovieAskUnresolvedDataRefsAttribute_;
	NSString QTMovieOpenAsyncOKAttribute_;
	NSString QTMovieApertureModeAttribute_;
	NSString QTMovieAutoAlternatesAttribute_;
	NSString QTMovieCopyrightAttribute_;
	NSString QTMovieCreationTimeAttribute_;
	NSString QTMovieCurrentSizeAttribute_;
	NSString QTMovieCurrentTimeAttribute_;
	NSString QTMovieDataSizeAttribute_;
	NSString QTMovieDelegateAttribute_;
	NSString QTMovieDisplayNameAttribute_;
	NSString QTMovieDontInteractWithUserAttribute_;
	NSString QTMovieDurationAttribute_;
	NSString QTMovieEditableAttribute_;
	NSString QTMovieFileNameAttribute_;
	NSString QTMovieHasApertureModeDimensionsAttribute_;
	NSString QTMovieHasAudioAttribute_;
	NSString QTMovieHasDurationAttribute_;
	NSString QTMovieHasVideoAttribute_;
	NSString QTMovieIsActiveAttribute_;
	NSString QTMovieIsInteractiveAttribute_;
	NSString QTMovieIsLinearAttribute_;
	NSString QTMovieIsSteppableAttribute_;
	NSString QTMovieLoadStateAttribute_;
	NSString QTMovieLoopsAttribute_;
	NSString QTMovieLoopsBackAndForthAttribute_;
	NSString QTMovieModificationTimeAttribute_;
	NSString QTMovieMutedAttribute_;
	NSString QTMovieNaturalSizeAttribute_;
	NSString QTMoviePlaysAllFramesAttribute_;
	NSString QTMoviePlaysSelectionOnlyAttribute_;
	NSString QTMoviePosterTimeAttribute_;
	NSString QTMoviePreferredMutedAttribute_;
	NSString QTMoviePreferredRateAttribute_;
	NSString QTMoviePreferredVolumeAttribute_;
	NSString QTMoviePreviewModeAttribute_;
	NSString QTMoviePreviewRangeAttribute_;
	NSString QTMovieRateAttribute_;
	NSString QTMovieSelectionAttribute_;
	NSString QTMovieTimeScaleAttribute_;
	NSString QTMovieURLAttribute_;
	NSString QTMovieVolumeAttribute_;
	NSString QTMovieRateChangesPreservePitchAttribute_;
	NSString QTMovieApertureModeClassic_;
	NSString QTMovieApertureModeClean_;
	NSString QTMovieApertureModeProduction_;
	NSString QTMovieApertureModeEncodedPixels_;
	NSString QTMovieFrameImageSize_;
	NSString QTMovieFrameImageType_;
	NSString QTMovieFrameImageTypeNSImage_;
	NSString QTMovieFrameImageTypeCGImageRef_;
	NSString QTMovieFrameImageTypeCIImage_;
	NSString QTMovieFrameImageTypeCVPixelBufferRef_;
	NSString QTMovieFrameImageTypeCVOpenGLTextureRef_;
	NSString QTMovieFrameImageOpenGLContext_;
	NSString QTMovieFrameImagePixelFormat_;
	NSString QTMovieFrameImageRepresentationsType_;
	NSString QTMovieFrameImageDeinterlaceFields_;
	NSString QTMovieFrameImageHighQuality_;
	NSString QTMovieFrameImageSingleField_;
	NSString QTMovieUneditableException_;
	NSString QTMovieChapterName_;
	NSString QTMovieChapterStartTime_;
	NSString QTMovieChapterTargetTrackAttribute_;
}

NSString QTMoviePasteboardType ()
{
	if (QTMoviePasteboardType_)
		return QTMoviePasteboardType_;

	return QTMoviePasteboardType_ = new NSString(bindings.QTMoviePasteboardType);
}

NSString QTMovieEditabilityDidChangeNotification ()
{
	if (QTMovieEditabilityDidChangeNotification_)
		return QTMovieEditabilityDidChangeNotification_;

	return QTMovieEditabilityDidChangeNotification_ = new NSString(bindings.QTMovieEditabilityDidChangeNotification);
}

NSString QTMovieEditedNotification ()
{
	if (QTMovieEditedNotification_)
		return QTMovieEditedNotification_;

	return QTMovieEditedNotification_ = new NSString(bindings.QTMovieEditedNotification);
}

NSString QTMovieLoadStateDidChangeNotification ()
{
	if (QTMovieLoadStateDidChangeNotification_)
		return QTMovieLoadStateDidChangeNotification_;

	return QTMovieLoadStateDidChangeNotification_ = new NSString(bindings.QTMovieLoadStateDidChangeNotification);
}

NSString QTMovieLoopModeDidChangeNotification ()
{
	if (QTMovieLoopModeDidChangeNotification_)
		return QTMovieLoopModeDidChangeNotification_;

	return QTMovieLoopModeDidChangeNotification_ = new NSString(bindings.QTMovieLoopModeDidChangeNotification);
}

NSString QTMovieMessageStringPostedNotification ()
{
	if (QTMovieMessageStringPostedNotification_)
		return QTMovieMessageStringPostedNotification_;

	return QTMovieMessageStringPostedNotification_ = new NSString(bindings.QTMovieMessageStringPostedNotification);
}

NSString QTMovieRateDidChangeNotification ()
{
	if (QTMovieRateDidChangeNotification_)
		return QTMovieRateDidChangeNotification_;

	return QTMovieRateDidChangeNotification_ = new NSString(bindings.QTMovieRateDidChangeNotification);
}

NSString QTMovieSelectionDidChangeNotification ()
{
	if (QTMovieSelectionDidChangeNotification_)
		return QTMovieSelectionDidChangeNotification_;

	return QTMovieSelectionDidChangeNotification_ = new NSString(bindings.QTMovieSelectionDidChangeNotification);
}

NSString QTMovieSizeDidChangeNotification ()
{
	if (QTMovieSizeDidChangeNotification_)
		return QTMovieSizeDidChangeNotification_;

	return QTMovieSizeDidChangeNotification_ = new NSString(bindings.QTMovieSizeDidChangeNotification);
}

NSString QTMovieStatusStringPostedNotification ()
{
	if (QTMovieStatusStringPostedNotification_)
		return QTMovieStatusStringPostedNotification_;

	return QTMovieStatusStringPostedNotification_ = new NSString(bindings.QTMovieStatusStringPostedNotification);
}

NSString QTMovieTimeDidChangeNotification ()
{
	if (QTMovieTimeDidChangeNotification_)
		return QTMovieTimeDidChangeNotification_;

	return QTMovieTimeDidChangeNotification_ = new NSString(bindings.QTMovieTimeDidChangeNotification);
}

NSString QTMovieVolumeDidChangeNotification ()
{
	if (QTMovieVolumeDidChangeNotification_)
		return QTMovieVolumeDidChangeNotification_;

	return QTMovieVolumeDidChangeNotification_ = new NSString(bindings.QTMovieVolumeDidChangeNotification);
}

NSString QTMovieDidEndNotification ()
{
	if (QTMovieDidEndNotification_)
		return QTMovieDidEndNotification_;

	return QTMovieDidEndNotification_ = new NSString(bindings.QTMovieDidEndNotification);
}

NSString QTMovieChapterDidChangeNotification ()
{
	if (QTMovieChapterDidChangeNotification_)
		return QTMovieChapterDidChangeNotification_;

	return QTMovieChapterDidChangeNotification_ = new NSString(bindings.QTMovieChapterDidChangeNotification);
}

NSString QTMovieChapterListDidChangeNotification ()
{
	if (QTMovieChapterListDidChangeNotification_)
		return QTMovieChapterListDidChangeNotification_;

	return QTMovieChapterListDidChangeNotification_ = new NSString(bindings.QTMovieChapterListDidChangeNotification);
}

NSString QTMovieEnterFullScreenRequestNotification ()
{
	if (QTMovieEnterFullScreenRequestNotification_)
		return QTMovieEnterFullScreenRequestNotification_;

	return QTMovieEnterFullScreenRequestNotification_ = new NSString(bindings.QTMovieEnterFullScreenRequestNotification);
}

NSString QTMovieExitFullScreenRequestNotification ()
{
	if (QTMovieExitFullScreenRequestNotification_)
		return QTMovieExitFullScreenRequestNotification_;

	return QTMovieExitFullScreenRequestNotification_ = new NSString(bindings.QTMovieExitFullScreenRequestNotification);
}

NSString QTMovieCloseWindowRequestNotification ()
{
	if (QTMovieCloseWindowRequestNotification_)
		return QTMovieCloseWindowRequestNotification_;

	return QTMovieCloseWindowRequestNotification_ = new NSString(bindings.QTMovieCloseWindowRequestNotification);
}

NSString QTMovieApertureModeDidChangeNotification ()
{
	if (QTMovieApertureModeDidChangeNotification_)
		return QTMovieApertureModeDidChangeNotification_;

	return QTMovieApertureModeDidChangeNotification_ = new NSString(bindings.QTMovieApertureModeDidChangeNotification);
}

NSString QTMovieMessageNotificationParameter ()
{
	if (QTMovieMessageNotificationParameter_)
		return QTMovieMessageNotificationParameter_;

	return QTMovieMessageNotificationParameter_ = new NSString(bindings.QTMovieMessageNotificationParameter);
}

NSString QTMovieRateDidChangeNotificationParameter ()
{
	if (QTMovieRateDidChangeNotificationParameter_)
		return QTMovieRateDidChangeNotificationParameter_;

	return QTMovieRateDidChangeNotificationParameter_ = new NSString(bindings.QTMovieRateDidChangeNotificationParameter);
}

NSString QTMovieStatusFlagsNotificationParameter ()
{
	if (QTMovieStatusFlagsNotificationParameter_)
		return QTMovieStatusFlagsNotificationParameter_;

	return QTMovieStatusFlagsNotificationParameter_ = new NSString(bindings.QTMovieStatusFlagsNotificationParameter);
}

NSString QTMovieStatusCodeNotificationParameter ()
{
	if (QTMovieStatusCodeNotificationParameter_)
		return QTMovieStatusCodeNotificationParameter_;

	return QTMovieStatusCodeNotificationParameter_ = new NSString(bindings.QTMovieStatusCodeNotificationParameter);
}

NSString QTMovieStatusStringNotificationParameter ()
{
	if (QTMovieStatusStringNotificationParameter_)
		return QTMovieStatusStringNotificationParameter_;

	return QTMovieStatusStringNotificationParameter_ = new NSString(bindings.QTMovieStatusStringNotificationParameter);
}

NSString QTMovieTargetIDNotificationParameter ()
{
	if (QTMovieTargetIDNotificationParameter_)
		return QTMovieTargetIDNotificationParameter_;

	return QTMovieTargetIDNotificationParameter_ = new NSString(bindings.QTMovieTargetIDNotificationParameter);
}

NSString QTMovieTargetNameNotificationParameter ()
{
	if (QTMovieTargetNameNotificationParameter_)
		return QTMovieTargetNameNotificationParameter_;

	return QTMovieTargetNameNotificationParameter_ = new NSString(bindings.QTMovieTargetNameNotificationParameter);
}

NSString QTMovieExport ()
{
	if (QTMovieExport_)
		return QTMovieExport_;

	return QTMovieExport_ = new NSString(bindings.QTMovieExport);
}

NSString QTMovieExportType ()
{
	if (QTMovieExportType_)
		return QTMovieExportType_;

	return QTMovieExportType_ = new NSString(bindings.QTMovieExportType);
}

NSString QTMovieFlatten ()
{
	if (QTMovieFlatten_)
		return QTMovieFlatten_;

	return QTMovieFlatten_ = new NSString(bindings.QTMovieFlatten);
}

NSString QTMovieExportSettings ()
{
	if (QTMovieExportSettings_)
		return QTMovieExportSettings_;

	return QTMovieExportSettings_ = new NSString(bindings.QTMovieExportSettings);
}

NSString QTMovieExportManufacturer ()
{
	if (QTMovieExportManufacturer_)
		return QTMovieExportManufacturer_;

	return QTMovieExportManufacturer_ = new NSString(bindings.QTMovieExportManufacturer);
}

NSString QTAddImageCodecType ()
{
	if (QTAddImageCodecType_)
		return QTAddImageCodecType_;

	return QTAddImageCodecType_ = new NSString(bindings.QTAddImageCodecType);
}

NSString QTAddImageCodecQuality ()
{
	if (QTAddImageCodecQuality_)
		return QTAddImageCodecQuality_;

	return QTAddImageCodecQuality_ = new NSString(bindings.QTAddImageCodecQuality);
}

NSString QTMovieDataReferenceAttribute ()
{
	if (QTMovieDataReferenceAttribute_)
		return QTMovieDataReferenceAttribute_;

	return QTMovieDataReferenceAttribute_ = new NSString(bindings.QTMovieDataReferenceAttribute);
}

NSString QTMoviePasteboardAttribute ()
{
	if (QTMoviePasteboardAttribute_)
		return QTMoviePasteboardAttribute_;

	return QTMoviePasteboardAttribute_ = new NSString(bindings.QTMoviePasteboardAttribute);
}

NSString QTMovieDataAttribute ()
{
	if (QTMovieDataAttribute_)
		return QTMovieDataAttribute_;

	return QTMovieDataAttribute_ = new NSString(bindings.QTMovieDataAttribute);
}

NSString QTMovieFileOffsetAttribute ()
{
	if (QTMovieFileOffsetAttribute_)
		return QTMovieFileOffsetAttribute_;

	return QTMovieFileOffsetAttribute_ = new NSString(bindings.QTMovieFileOffsetAttribute);
}

NSString QTMovieResolveDataRefsAttribute ()
{
	if (QTMovieResolveDataRefsAttribute_)
		return QTMovieResolveDataRefsAttribute_;

	return QTMovieResolveDataRefsAttribute_ = new NSString(bindings.QTMovieResolveDataRefsAttribute);
}

NSString QTMovieAskUnresolvedDataRefsAttribute ()
{
	if (QTMovieAskUnresolvedDataRefsAttribute_)
		return QTMovieAskUnresolvedDataRefsAttribute_;

	return QTMovieAskUnresolvedDataRefsAttribute_ = new NSString(bindings.QTMovieAskUnresolvedDataRefsAttribute);
}

NSString QTMovieOpenAsyncOKAttribute ()
{
	if (QTMovieOpenAsyncOKAttribute_)
		return QTMovieOpenAsyncOKAttribute_;

	return QTMovieOpenAsyncOKAttribute_ = new NSString(bindings.QTMovieOpenAsyncOKAttribute);
}

NSString QTMovieApertureModeAttribute ()
{
	if (QTMovieApertureModeAttribute_)
		return QTMovieApertureModeAttribute_;

	return QTMovieApertureModeAttribute_ = new NSString(bindings.QTMovieApertureModeAttribute);
}

NSString QTMovieAutoAlternatesAttribute ()
{
	if (QTMovieAutoAlternatesAttribute_)
		return QTMovieAutoAlternatesAttribute_;

	return QTMovieAutoAlternatesAttribute_ = new NSString(bindings.QTMovieAutoAlternatesAttribute);
}

NSString QTMovieCopyrightAttribute ()
{
	if (QTMovieCopyrightAttribute_)
		return QTMovieCopyrightAttribute_;

	return QTMovieCopyrightAttribute_ = new NSString(bindings.QTMovieCopyrightAttribute);
}

NSString QTMovieCreationTimeAttribute ()
{
	if (QTMovieCreationTimeAttribute_)
		return QTMovieCreationTimeAttribute_;

	return QTMovieCreationTimeAttribute_ = new NSString(bindings.QTMovieCreationTimeAttribute);
}

NSString QTMovieCurrentSizeAttribute ()
{
	if (QTMovieCurrentSizeAttribute_)
		return QTMovieCurrentSizeAttribute_;

	return QTMovieCurrentSizeAttribute_ = new NSString(bindings.QTMovieCurrentSizeAttribute);
}

NSString QTMovieCurrentTimeAttribute ()
{
	if (QTMovieCurrentTimeAttribute_)
		return QTMovieCurrentTimeAttribute_;

	return QTMovieCurrentTimeAttribute_ = new NSString(bindings.QTMovieCurrentTimeAttribute);
}

NSString QTMovieDataSizeAttribute ()
{
	if (QTMovieDataSizeAttribute_)
		return QTMovieDataSizeAttribute_;

	return QTMovieDataSizeAttribute_ = new NSString(bindings.QTMovieDataSizeAttribute);
}

NSString QTMovieDelegateAttribute ()
{
	if (QTMovieDelegateAttribute_)
		return QTMovieDelegateAttribute_;

	return QTMovieDelegateAttribute_ = new NSString(bindings.QTMovieDelegateAttribute);
}

NSString QTMovieDisplayNameAttribute ()
{
	if (QTMovieDisplayNameAttribute_)
		return QTMovieDisplayNameAttribute_;

	return QTMovieDisplayNameAttribute_ = new NSString(bindings.QTMovieDisplayNameAttribute);
}

NSString QTMovieDontInteractWithUserAttribute ()
{
	if (QTMovieDontInteractWithUserAttribute_)
		return QTMovieDontInteractWithUserAttribute_;

	return QTMovieDontInteractWithUserAttribute_ = new NSString(bindings.QTMovieDontInteractWithUserAttribute);
}

NSString QTMovieDurationAttribute ()
{
	if (QTMovieDurationAttribute_)
		return QTMovieDurationAttribute_;

	return QTMovieDurationAttribute_ = new NSString(bindings.QTMovieDurationAttribute);
}

NSString QTMovieEditableAttribute ()
{
	if (QTMovieEditableAttribute_)
		return QTMovieEditableAttribute_;

	return QTMovieEditableAttribute_ = new NSString(bindings.QTMovieEditableAttribute);
}

NSString QTMovieFileNameAttribute ()
{
	if (QTMovieFileNameAttribute_)
		return QTMovieFileNameAttribute_;

	return QTMovieFileNameAttribute_ = new NSString(bindings.QTMovieFileNameAttribute);
}

NSString QTMovieHasApertureModeDimensionsAttribute ()
{
	if (QTMovieHasApertureModeDimensionsAttribute_)
		return QTMovieHasApertureModeDimensionsAttribute_;

	return QTMovieHasApertureModeDimensionsAttribute_ = new NSString(bindings.QTMovieHasApertureModeDimensionsAttribute);
}

NSString QTMovieHasAudioAttribute ()
{
	if (QTMovieHasAudioAttribute_)
		return QTMovieHasAudioAttribute_;

	return QTMovieHasAudioAttribute_ = new NSString(bindings.QTMovieHasAudioAttribute);
}

NSString QTMovieHasDurationAttribute ()
{
	if (QTMovieHasDurationAttribute_)
		return QTMovieHasDurationAttribute_;

	return QTMovieHasDurationAttribute_ = new NSString(bindings.QTMovieHasDurationAttribute);
}

NSString QTMovieHasVideoAttribute ()
{
	if (QTMovieHasVideoAttribute_)
		return QTMovieHasVideoAttribute_;

	return QTMovieHasVideoAttribute_ = new NSString(bindings.QTMovieHasVideoAttribute);
}

NSString QTMovieIsActiveAttribute ()
{
	if (QTMovieIsActiveAttribute_)
		return QTMovieIsActiveAttribute_;

	return QTMovieIsActiveAttribute_ = new NSString(bindings.QTMovieIsActiveAttribute);
}

NSString QTMovieIsInteractiveAttribute ()
{
	if (QTMovieIsInteractiveAttribute_)
		return QTMovieIsInteractiveAttribute_;

	return QTMovieIsInteractiveAttribute_ = new NSString(bindings.QTMovieIsInteractiveAttribute);
}

NSString QTMovieIsLinearAttribute ()
{
	if (QTMovieIsLinearAttribute_)
		return QTMovieIsLinearAttribute_;

	return QTMovieIsLinearAttribute_ = new NSString(bindings.QTMovieIsLinearAttribute);
}

NSString QTMovieIsSteppableAttribute ()
{
	if (QTMovieIsSteppableAttribute_)
		return QTMovieIsSteppableAttribute_;

	return QTMovieIsSteppableAttribute_ = new NSString(bindings.QTMovieIsSteppableAttribute);
}

NSString QTMovieLoadStateAttribute ()
{
	if (QTMovieLoadStateAttribute_)
		return QTMovieLoadStateAttribute_;

	return QTMovieLoadStateAttribute_ = new NSString(bindings.QTMovieLoadStateAttribute);
}

NSString QTMovieLoopsAttribute ()
{
	if (QTMovieLoopsAttribute_)
		return QTMovieLoopsAttribute_;

	return QTMovieLoopsAttribute_ = new NSString(bindings.QTMovieLoopsAttribute);
}

NSString QTMovieLoopsBackAndForthAttribute ()
{
	if (QTMovieLoopsBackAndForthAttribute_)
		return QTMovieLoopsBackAndForthAttribute_;

	return QTMovieLoopsBackAndForthAttribute_ = new NSString(bindings.QTMovieLoopsBackAndForthAttribute);
}

NSString QTMovieModificationTimeAttribute ()
{
	if (QTMovieModificationTimeAttribute_)
		return QTMovieModificationTimeAttribute_;

	return QTMovieModificationTimeAttribute_ = new NSString(bindings.QTMovieModificationTimeAttribute);
}

NSString QTMovieMutedAttribute ()
{
	if (QTMovieMutedAttribute_)
		return QTMovieMutedAttribute_;

	return QTMovieMutedAttribute_ = new NSString(bindings.QTMovieMutedAttribute);
}

NSString QTMovieNaturalSizeAttribute ()
{
	if (QTMovieNaturalSizeAttribute_)
		return QTMovieNaturalSizeAttribute_;

	return QTMovieNaturalSizeAttribute_ = new NSString(bindings.QTMovieNaturalSizeAttribute);
}

NSString QTMoviePlaysAllFramesAttribute ()
{
	if (QTMoviePlaysAllFramesAttribute_)
		return QTMoviePlaysAllFramesAttribute_;

	return QTMoviePlaysAllFramesAttribute_ = new NSString(bindings.QTMoviePlaysAllFramesAttribute);
}

NSString QTMoviePlaysSelectionOnlyAttribute ()
{
	if (QTMoviePlaysSelectionOnlyAttribute_)
		return QTMoviePlaysSelectionOnlyAttribute_;

	return QTMoviePlaysSelectionOnlyAttribute_ = new NSString(bindings.QTMoviePlaysSelectionOnlyAttribute);
}

NSString QTMoviePosterTimeAttribute ()
{
	if (QTMoviePosterTimeAttribute_)
		return QTMoviePosterTimeAttribute_;

	return QTMoviePosterTimeAttribute_ = new NSString(bindings.QTMoviePosterTimeAttribute);
}

NSString QTMoviePreferredMutedAttribute ()
{
	if (QTMoviePreferredMutedAttribute_)
		return QTMoviePreferredMutedAttribute_;

	return QTMoviePreferredMutedAttribute_ = new NSString(bindings.QTMoviePreferredMutedAttribute);
}

NSString QTMoviePreferredRateAttribute ()
{
	if (QTMoviePreferredRateAttribute_)
		return QTMoviePreferredRateAttribute_;

	return QTMoviePreferredRateAttribute_ = new NSString(bindings.QTMoviePreferredRateAttribute);
}

NSString QTMoviePreferredVolumeAttribute ()
{
	if (QTMoviePreferredVolumeAttribute_)
		return QTMoviePreferredVolumeAttribute_;

	return QTMoviePreferredVolumeAttribute_ = new NSString(bindings.QTMoviePreferredVolumeAttribute);
}

NSString QTMoviePreviewModeAttribute ()
{
	if (QTMoviePreviewModeAttribute_)
		return QTMoviePreviewModeAttribute_;

	return QTMoviePreviewModeAttribute_ = new NSString(bindings.QTMoviePreviewModeAttribute);
}

NSString QTMoviePreviewRangeAttribute ()
{
	if (QTMoviePreviewRangeAttribute_)
		return QTMoviePreviewRangeAttribute_;

	return QTMoviePreviewRangeAttribute_ = new NSString(bindings.QTMoviePreviewRangeAttribute);
}

NSString QTMovieRateAttribute ()
{
	if (QTMovieRateAttribute_)
		return QTMovieRateAttribute_;

	return QTMovieRateAttribute_ = new NSString(bindings.QTMovieRateAttribute);
}

NSString QTMovieSelectionAttribute ()
{
	if (QTMovieSelectionAttribute_)
		return QTMovieSelectionAttribute_;

	return QTMovieSelectionAttribute_ = new NSString(bindings.QTMovieSelectionAttribute);
}

NSString QTMovieTimeScaleAttribute ()
{
	if (QTMovieTimeScaleAttribute_)
		return QTMovieTimeScaleAttribute_;

	return QTMovieTimeScaleAttribute_ = new NSString(bindings.QTMovieTimeScaleAttribute);
}

NSString QTMovieURLAttribute ()
{
	if (QTMovieURLAttribute_)
		return QTMovieURLAttribute_;

	return QTMovieURLAttribute_ = new NSString(bindings.QTMovieURLAttribute);
}

NSString QTMovieVolumeAttribute ()
{
	if (QTMovieVolumeAttribute_)
		return QTMovieVolumeAttribute_;

	return QTMovieVolumeAttribute_ = new NSString(bindings.QTMovieVolumeAttribute);
}

NSString QTMovieRateChangesPreservePitchAttribute ()
{
	if (QTMovieRateChangesPreservePitchAttribute_)
		return QTMovieRateChangesPreservePitchAttribute_;

	return QTMovieRateChangesPreservePitchAttribute_ = new NSString(bindings.QTMovieRateChangesPreservePitchAttribute);
}

NSString QTMovieApertureModeClassic ()
{
	if (QTMovieApertureModeClassic_)
		return QTMovieApertureModeClassic_;

	return QTMovieApertureModeClassic_ = new NSString(bindings.QTMovieApertureModeClassic);
}

NSString QTMovieApertureModeClean ()
{
	if (QTMovieApertureModeClean_)
		return QTMovieApertureModeClean_;

	return QTMovieApertureModeClean_ = new NSString(bindings.QTMovieApertureModeClean);
}

NSString QTMovieApertureModeProduction ()
{
	if (QTMovieApertureModeProduction_)
		return QTMovieApertureModeProduction_;

	return QTMovieApertureModeProduction_ = new NSString(bindings.QTMovieApertureModeProduction);
}

NSString QTMovieApertureModeEncodedPixels ()
{
	if (QTMovieApertureModeEncodedPixels_)
		return QTMovieApertureModeEncodedPixels_;

	return QTMovieApertureModeEncodedPixels_ = new NSString(bindings.QTMovieApertureModeEncodedPixels);
}

NSString QTMovieFrameImageSize ()
{
	if (QTMovieFrameImageSize_)
		return QTMovieFrameImageSize_;

	return QTMovieFrameImageSize_ = new NSString(bindings.QTMovieFrameImageSize);
}

NSString QTMovieFrameImageType ()
{
	if (QTMovieFrameImageType_)
		return QTMovieFrameImageType_;

	return QTMovieFrameImageType_ = new NSString(bindings.QTMovieFrameImageType);
}

NSString QTMovieFrameImageTypeNSImage ()
{
	if (QTMovieFrameImageTypeNSImage_)
		return QTMovieFrameImageTypeNSImage_;

	return QTMovieFrameImageTypeNSImage_ = new NSString(bindings.QTMovieFrameImageTypeNSImage);
}

NSString QTMovieFrameImageTypeCGImageRef ()
{
	if (QTMovieFrameImageTypeCGImageRef_)
		return QTMovieFrameImageTypeCGImageRef_;

	return QTMovieFrameImageTypeCGImageRef_ = new NSString(bindings.QTMovieFrameImageTypeCGImageRef);
}

NSString QTMovieFrameImageTypeCIImage ()
{
	if (QTMovieFrameImageTypeCIImage_)
		return QTMovieFrameImageTypeCIImage_;

	return QTMovieFrameImageTypeCIImage_ = new NSString(bindings.QTMovieFrameImageTypeCIImage);
}

NSString QTMovieFrameImageTypeCVPixelBufferRef ()
{
	if (QTMovieFrameImageTypeCVPixelBufferRef_)
		return QTMovieFrameImageTypeCVPixelBufferRef_;

	return QTMovieFrameImageTypeCVPixelBufferRef_ = new NSString(bindings.QTMovieFrameImageTypeCVPixelBufferRef);
}

NSString QTMovieFrameImageTypeCVOpenGLTextureRef ()
{
	if (QTMovieFrameImageTypeCVOpenGLTextureRef_)
		return QTMovieFrameImageTypeCVOpenGLTextureRef_;

	return QTMovieFrameImageTypeCVOpenGLTextureRef_ = new NSString(bindings.QTMovieFrameImageTypeCVOpenGLTextureRef);
}

NSString QTMovieFrameImageOpenGLContext ()
{
	if (QTMovieFrameImageOpenGLContext_)
		return QTMovieFrameImageOpenGLContext_;

	return QTMovieFrameImageOpenGLContext_ = new NSString(bindings.QTMovieFrameImageOpenGLContext);
}

NSString QTMovieFrameImagePixelFormat ()
{
	if (QTMovieFrameImagePixelFormat_)
		return QTMovieFrameImagePixelFormat_;

	return QTMovieFrameImagePixelFormat_ = new NSString(bindings.QTMovieFrameImagePixelFormat);
}

NSString QTMovieFrameImageRepresentationsType ()
{
	if (QTMovieFrameImageRepresentationsType_)
		return QTMovieFrameImageRepresentationsType_;

	return QTMovieFrameImageRepresentationsType_ = new NSString(bindings.QTMovieFrameImageRepresentationsType);
}

NSString QTMovieFrameImageDeinterlaceFields ()
{
	if (QTMovieFrameImageDeinterlaceFields_)
		return QTMovieFrameImageDeinterlaceFields_;

	return QTMovieFrameImageDeinterlaceFields_ = new NSString(bindings.QTMovieFrameImageDeinterlaceFields);
}

NSString QTMovieFrameImageHighQuality ()
{
	if (QTMovieFrameImageHighQuality_)
		return QTMovieFrameImageHighQuality_;

	return QTMovieFrameImageHighQuality_ = new NSString(bindings.QTMovieFrameImageHighQuality);
}

NSString QTMovieFrameImageSingleField ()
{
	if (QTMovieFrameImageSingleField_)
		return QTMovieFrameImageSingleField_;

	return QTMovieFrameImageSingleField_ = new NSString(bindings.QTMovieFrameImageSingleField);
}

NSString QTMovieUneditableException ()
{
	if (QTMovieUneditableException_)
		return QTMovieUneditableException_;

	return QTMovieUneditableException_ = new NSString(bindings.QTMovieUneditableException);
}

NSString QTMovieChapterName ()
{
	if (QTMovieChapterName_)
		return QTMovieChapterName_;

	return QTMovieChapterName_ = new NSString(bindings.QTMovieChapterName);
}

NSString QTMovieChapterStartTime ()
{
	if (QTMovieChapterStartTime_)
		return QTMovieChapterStartTime_;

	return QTMovieChapterStartTime_ = new NSString(bindings.QTMovieChapterStartTime);
}

NSString QTMovieChapterTargetTrackAttribute ()
{
	if (QTMovieChapterTargetTrackAttribute_)
		return QTMovieChapterTargetTrackAttribute_;

	return QTMovieChapterTargetTrackAttribute_ = new NSString(bindings.QTMovieChapterTargetTrackAttribute);
}

enum
{
	QTIncludeStillImageTypes = 1 << 0,
	QTIncludeTranslatableTypes = 1 << 1,
	QTIncludeAggressiveTypes = 1 << 2,
	QTIncludeDynamicTypes = 1 << 3,
	QTIncludeCommonTypes = 0,
	QTIncludeAllTypes = 0xffff
}

enum
{
	QTMovieOperationBeginPhase = 0,
	QTMovieOperationUpdatePercentPhase = 1,
	QTMovieOperationEndPhase = 2
}

enum
{
	QTMovieLoadStateError = -1L,
	QTMovieLoadStateLoading = 1000,
	QTMovieLoadStateLoaded = 2000,
	QTMovieLoadStatePlayable = 10000,
	QTMovieLoadStatePlaythroughOK = 20000,
	QTMovieLoadStateComplete = 100000L
}

const TQTMovieDelegate = `

	bool movie (QTMovie movie, NSURL url)
	{
		return invokeObjcSelf!(bool, "movie:linkToURL:", QTMovie, NSURL)(movie, url);
	}

	bool movieShouldLoadData (Object sender)
	{
		return invokeObjcSelf!(bool, "movieShouldLoadData:", Object)(sender);
	}

	bool movieShouldTask (Object movie)
	{
		return invokeObjcSelf!(bool, "movieShouldTask:", Object)(movie);
	}

	QTMovie externalMovie (NSDictionary dictionary)
	{
		return invokeObjcSelf!(QTMovie, "externalMovie:", NSDictionary)(dictionary);
	}

	bool movie (QTMovie movie, NSString op, int phase, NSNumber percent, NSDictionary attributes)
	{
		return invokeObjcSelf!(bool, "movie:shouldContinueOperation:withPhase:atPercent:withAttributes:", QTMovie, NSString, int, NSNumber, NSDictionary)(movie, op, phase, percent, attributes);
	}

	//mixin ObjcBindMethod!(movie, "movie:linkToURL:");
	//mixin ObjcBindMethod!(movieShouldLoadData, "movieShouldLoadData:");
	//mixin ObjcBindMethod!(movieShouldTask, "movieShouldTask:");
	//mixin ObjcBindMethod!(externalMovie, "externalMovie:");
	//mixin ObjcBindMethod!(movie, "movie:shouldContinueOperation:withPhase:atPercent:withAttributes:");

`;

const TQTMovieThreading = `

	static void enterQTKitOnThread ()
	{
		return invokeObjcSelfClass!(void, "enterQTKitOnThread");
	}

	static void enterQTKitOnThreadDisablingThreadSafetyProtection ()
	{
		return invokeObjcSelfClass!(void, "enterQTKitOnThreadDisablingThreadSafetyProtection");
	}

	static void exitQTKitOnThread ()
	{
		return invokeObjcSelfClass!(void, "exitQTKitOnThread");
	}

	bool attachToCurrentThread ()
	{
		return invokeObjcSelf!(bool, "attachToCurrentThread");
	}

	bool detachFromCurrentThread ()
	{
		return invokeObjcSelf!(bool, "detachFromCurrentThread");
	}

	void setIdling (bool state)
	{
		return invokeObjcSelf!(void, "setIdling:", bool)(state);
	}

	bool isIdling ()
	{
		return invokeObjcSelf!(bool, "isIdling");
	}

	//mixin ObjcBindClassMethod!(enterQTKitOnThread, "enterQTKitOnThread");
	//mixin ObjcBindClassMethod!(enterQTKitOnThreadDisablingThreadSafetyProtection, "enterQTKitOnThreadDisablingThreadSafetyProtection");
	//mixin ObjcBindClassMethod!(exitQTKitOnThread, "exitQTKitOnThread");
	//mixin ObjcBindMethod!(attachToCurrentThread, "attachToCurrentThread");
	//mixin ObjcBindMethod!(detachFromCurrentThread, "detachFromCurrentThread");
	//mixin ObjcBindMethod!(setIdling, "setIdling:");
	//mixin ObjcBindMethod!(isIdling, "isIdling");

`;

const TQTMovieInspection = `

	QTTime currentTime ()
	{
		return invokeObjcSelf!(QTTime, "currentTime");
	}

	float rate ()
	{
		return invokeObjcSelf!(float, "rate");
	}

	float volume ()
	{
		return invokeObjcSelf!(float, "volume");
	}

	bool muted ()
	{
		return invokeObjcSelf!(bool, "muted");
	}

	NSDictionary movieAttributes ()
	{
		return invokeObjcSelf!(NSDictionary, "movieAttributes");
	}

	void setMovieAttributes (NSDictionary attributes)
	{
		return invokeObjcSelf!(void, "setMovieAttributes:", NSDictionary)(attributes);
	}

	Object attributeForKey (NSString attributeKey)
	{
		return invokeObjcSelf!(Object, "attributeForKey:", NSString)(attributeKey);
	}

	void setAttribute (Object value, NSString attributeKey)
	{
		return invokeObjcSelf!(void, "setAttribute:forKey:", Object, NSString)(value, attributeKey);
	}

	NSArray tracks ()
	{
		return invokeObjcSelf!(NSArray, "tracks");
	}

	NSArray tracksOfMediaType (NSString type)
	{
		return invokeObjcSelf!(NSArray, "tracksOfMediaType:", NSString)(type);
	}

	//mixin ObjcBindMethod!(currentTime, "currentTime");
	//mixin ObjcBindMethod!(rate, "rate");
	//mixin ObjcBindMethod!(volume, "volume");
	//mixin ObjcBindMethod!(muted, "muted");
	//mixin ObjcBindMethod!(movieAttributes, "movieAttributes");
	//mixin ObjcBindMethod!(setMovieAttributes, "setMovieAttributes:");
	//mixin ObjcBindMethod!(attributeForKey, "attributeForKey:");
	//mixin ObjcBindMethod!(setAttribute, "setAttribute:forKey:");
	//mixin ObjcBindMethod!(tracks, "tracks");
	//mixin ObjcBindMethod!(tracksOfMediaType, "tracksOfMediaType:");

`;

const TQTMovieChapters = `

	bool hasChapters ()
	{
		return invokeObjcSelf!(bool, "hasChapters");
	}

	NSInteger chapterCount ()
	{
		return invokeObjcSelf!(NSInteger, "chapterCount");
	}

	NSArray chapters ()
	{
		return invokeObjcSelf!(NSArray, "chapters");
	}

	void addChapters (NSArray chapters, NSDictionary attributes, ref NSError errorPtr)
	{
		id __arg2;

		if (errorPtr)
			__arg2 = errorPtr.objcObject;

		invokeObjcSelf!(void, "addChapters:withAttributes:error:", NSArray, NSDictionary, id*)(chapters, attributes, &__arg2);

		if (__arg2)
			errorPtr = new NSError(__arg2);
	}

	bool removeChapters ()
	{
		return invokeObjcSelf!(bool, "removeChapters");
	}

	QTTime startTimeOfChapter (NSInteger chapterIndex)
	{
		return invokeObjcSelf!(QTTime, "startTimeOfChapter:", NSInteger)(chapterIndex);
	}

	NSInteger chapterIndexForTime (QTTime time)
	{
		return invokeObjcSelf!(NSInteger, "chapterIndexForTime:", QTTime)(time);
	}

	//mixin ObjcBindMethod!(hasChapters, "hasChapters");
	//mixin ObjcBindMethod!(chapterCount, "chapterCount");
	//mixin ObjcBindMethod!(chapters, "chapters");
	////mixin ObjcBindMethod!(addChapters, "addChapters:withAttributes:error:");
	//mixin ObjcBindMethod!(removeChapters, "removeChapters");
	//mixin ObjcBindMethod!(startTimeOfChapter, "startTimeOfChapter:");
	//mixin ObjcBindMethod!(chapterIndexForTime, "chapterIndexForTime:");

`;

const TQTMovieVisualSupport = `

	void generateApertureModeDimensions ()
	{
		return invokeObjcSelf!(void, "generateApertureModeDimensions");
	}

	void removeApertureModeDimensions ()
	{
		return invokeObjcSelf!(void, "removeApertureModeDimensions");
	}

	//mixin ObjcBindMethod!(generateApertureModeDimensions, "generateApertureModeDimensions");
	//mixin ObjcBindMethod!(removeApertureModeDimensions, "removeApertureModeDimensions");

`;

const TQTEditing = `

	void replaceSelectionWithSelectionFromMovie (Object movie)
	{
		return invokeObjcSelf!(void, "replaceSelectionWithSelectionFromMovie:", Object)(movie);
	}

	void appendSelectionFromMovie (Object movie)
	{
		return invokeObjcSelf!(void, "appendSelectionFromMovie:", Object)(movie);
	}

	void insertSegmentOfMovie (QTMovie movie, QTTimeRange range, QTTime time)
	{
		return invokeObjcSelf!(void, "insertSegmentOfMovie:timeRange:atTime:", QTMovie, QTTimeRange, QTTime)(movie, range, time);
	}

	void insertSegmentOfMovie (QTMovie movie, QTTimeRange srcRange, QTTimeRange dstRange)
	{
		return invokeObjcSelf!(void, "insertSegmentOfMovie:fromRange:scaledToRange:", QTMovie, QTTimeRange, QTTimeRange)(movie, srcRange, dstRange);
	}

	void insertEmptySegmentAt (QTTimeRange range)
	{
		return invokeObjcSelf!(void, "insertEmptySegmentAt:", QTTimeRange)(range);
	}

	void deleteSegment (QTTimeRange segment)
	{
		return invokeObjcSelf!(void, "deleteSegment:", QTTimeRange)(segment);
	}

	void scaleSegment (QTTimeRange segment, QTTime newDuration)
	{
		return invokeObjcSelf!(void, "scaleSegment:newDuration:", QTTimeRange, QTTime)(segment, newDuration);
	}

	void addImage (NSImage image, QTTime duration, NSDictionary attributes)
	{
		return invokeObjcSelf!(void, "addImage:forDuration:withAttributes:", NSImage, QTTime, NSDictionary)(image, duration, attributes);
	}

	QTTrack insertSegmentOfTrack (QTTrack track, QTTimeRange range, QTTime time)
	{
		return invokeObjcSelf!(QTTrack, "insertSegmentOfTrack:timeRange:atTime:", QTTrack, QTTimeRange, QTTime)(track, range, time);
	}

	QTTrack insertSegmentOfTrack (QTTrack track, QTTimeRange srcRange, QTTimeRange dstRange)
	{
		return invokeObjcSelf!(QTTrack, "insertSegmentOfTrack:fromRange:scaledToRange:", QTTrack, QTTimeRange, QTTimeRange)(track, srcRange, dstRange);
	}

	void removeTrack (QTTrack track)
	{
		return invokeObjcSelf!(void, "removeTrack:", QTTrack)(track);
	}

	//mixin ObjcBindMethod!(replaceSelectionWithSelectionFromMovie, "replaceSelectionWithSelectionFromMovie:");
	//mixin ObjcBindMethod!(appendSelectionFromMovie, "appendSelectionFromMovie:");
	//mixin ObjcBindMethod!(insertSegmentOfMovie, "insertSegmentOfMovie:timeRange:atTime:");
	//mixin ObjcBindMethod!(insertSegmentOfMovie, "insertSegmentOfMovie:fromRange:scaledToRange:");
	//mixin ObjcBindMethod!(insertEmptySegmentAt, "insertEmptySegmentAt:");
	//mixin ObjcBindMethod!(deleteSegment, "deleteSegment:");
	//mixin ObjcBindMethod!(scaleSegment, "scaleSegment:newDuration:");
	//mixin ObjcBindMethod!(addImage, "addImage:forDuration:withAttributes:");
	//mixin ObjcBindMethod!(insertSegmentOfTrack, "insertSegmentOfTrack:timeRange:atTime:");
	//mixin ObjcBindMethod!(insertSegmentOfTrack, "insertSegmentOfTrack:fromRange:scaledToRange:");
	//mixin ObjcBindMethod!(removeTrack, "removeTrack:");

`;

const TQTMovieInitialization = `

	static bool canInitWithPasteboard (NSPasteboard pasteboard)
	{
		return invokeObjcSelfClass!(bool, "canInitWithPasteboard:", NSPasteboard)(pasteboard);
	}

	static bool canInitWithFile (NSString fileName)
	{
		return invokeObjcSelfClass!(bool, "canInitWithFile:", NSString)(fileName);
	}

	static bool canInitWithURL (NSURL url)
	{
		return invokeObjcSelfClass!(bool, "canInitWithURL:", NSURL)(url);
	}

	static bool canInitWithDataReference (QTDataReference dataReference)
	{
		return invokeObjcSelfClass!(bool, "canInitWithDataReference:", QTDataReference)(dataReference);
	}

	static NSArray movieFileTypes (int types)
	{
		return invokeObjcSelfClass!(NSArray, "movieFileTypes:", int)(types);
	}

	static NSArray movieUnfilteredFileTypes ()
	{
		return invokeObjcSelfClass!(NSArray, "movieUnfilteredFileTypes");
	}

	static NSArray movieUnfilteredPasteboardTypes ()
	{
		return invokeObjcSelfClass!(NSArray, "movieUnfilteredPasteboardTypes");
	}

	static NSArray movieTypesWithOptions (int types)
	{
		return invokeObjcSelfClass!(NSArray, "movieTypesWithOptions:", int)(types);
	}

	static Object movie ()
	{
		return invokeObjcSelfClass!(Object, "movie");
	}

	static Object movieWithFile (NSString fileName, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieWithFile:error:", NSString, id*)(fileName, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	static Object movieWithURL (NSURL url, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieWithURL:error:", NSURL, id*)(url, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	static Object movieWithDataReference (QTDataReference dataReference, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieWithDataReference:error:", QTDataReference, id*)(dataReference, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	static Object movieWithPasteboard (NSPasteboard pasteboard, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieWithPasteboard:error:", NSPasteboard, id*)(pasteboard, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	static Object movieWithData (NSData data, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieWithData:error:", NSData, id*)(data, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	static Object movieWithAttributes (NSDictionary attributes, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieWithAttributes:error:", NSDictionary, id*)(attributes, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	static Object movieNamed (NSString name, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieNamed:error:", NSString, id*)(name, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	typeof(this) initWithFile (NSString fileName, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithFile:error:", NSString, id*)(fileName, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSString fileName, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithFile(fileName, errorPtr).objcObject);
	}

	typeof(this) initWithURL (NSURL url, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithURL:error:", NSURL, id*)(url, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSURL url, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithURL(url, errorPtr).objcObject);
	}

	typeof(this) initWithDataReference (QTDataReference dataReference, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithDataReference:error:", QTDataReference, id*)(dataReference, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (QTDataReference dataReference, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithDataReference(dataReference, errorPtr).objcObject);
	}

	typeof(this) initWithPasteboard (NSPasteboard pasteboard, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithPasteboard:error:", NSPasteboard, id*)(pasteboard, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSPasteboard pasteboard, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithPasteboard(pasteboard, errorPtr).objcObject);
	}

	typeof(this) initWithData (NSData data, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithData:error:", NSData, id*)(data, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSData data, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithData(data, errorPtr).objcObject);
	}

	typeof(this) initWithMovie (QTMovie movie, QTTimeRange range, ref NSError errorPtr)
	{
		id __arg2;

		if (errorPtr)
			__arg2 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithMovie:timeRange:error:", QTMovie, QTTimeRange, id*)(movie, range, &__arg2);

		if (__arg2)
			errorPtr = new NSError(__arg2);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (QTMovie movie, QTTimeRange range, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithMovie(movie, range, errorPtr).objcObject);
	}

	typeof(this) initWithAttributes (NSDictionary attributes, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithAttributes:error:", NSDictionary, id*)(attributes, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSDictionary attributes, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithAttributes(attributes, errorPtr).objcObject);
	}

	Object movieWithTimeRange (QTTimeRange range, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelf!(Object, "movieWithTimeRange:error:", QTTimeRange, id*)(range, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	typeof(this) initToWritableFile (NSString filename, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initToWritableFile:error:", NSString, id*)(filename, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSString filename, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initToWritableFile(filename, errorPtr).objcObject);
	}

	typeof(this) initToWritableData (NSMutableData data, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initToWritableData:error:", NSMutableData, id*)(data, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSMutableData data, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initToWritableData(data, errorPtr).objcObject);
	}

	typeof(this) initToWritableDataReference (QTDataReference dataReference, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initToWritableDataReference:error:", QTDataReference, id*)(dataReference, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (QTDataReference dataReference, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initToWritableDataReference(dataReference, errorPtr).objcObject);
	}

	void invalidate ()
	{
		return invokeObjcSelf!(void, "invalidate");
	}

	//mixin ObjcBindClassMethod!(canInitWithPasteboard, "canInitWithPasteboard:");
	//mixin ObjcBindClassMethod!(canInitWithFile, "canInitWithFile:");
	//mixin ObjcBindClassMethod!(canInitWithURL, "canInitWithURL:");
	//mixin ObjcBindClassMethod!(canInitWithDataReference, "canInitWithDataReference:");
	//mixin ObjcBindClassMethod!(movieFileTypes, "movieFileTypes:");
	//mixin ObjcBindClassMethod!(movieUnfilteredFileTypes, "movieUnfilteredFileTypes");
	//mixin ObjcBindClassMethod!(movieUnfilteredPasteboardTypes, "movieUnfilteredPasteboardTypes");
	//mixin ObjcBindClassMethod!(movieTypesWithOptions, "movieTypesWithOptions:");
	//mixin ObjcBindClassMethod!(movie, "movie");
	/*//mixin ObjcBindClassMethod!(movieWithFile, "movieWithFile:error:");
	//mixin ObjcBindClassMethod!(movieWithURL, "movieWithURL:error:");
	//mixin ObjcBindClassMethod!(movieWithDataReference, "movieWithDataReference:error:");
	//mixin ObjcBindClassMethod!(movieWithPasteboard, "movieWithPasteboard:error:");
	//mixin ObjcBindClassMethod!(movieWithData, "movieWithData:error:");
	//mixin ObjcBindClassMethod!(movieWithAttributes, "movieWithAttributes:error:");
	//mixin ObjcBindClassMethod!(movieNamed, "movieNamed:error:");
	//mixin ObjcBindMethod!(initWithFile, "initWithFile:error:");
	//mixin ObjcBindMethod!(initWithURL, "initWithURL:error:");
	//mixin ObjcBindMethod!(initWithDataReference, "initWithDataReference:error:");
	//mixin ObjcBindMethod!(initWithPasteboard, "initWithPasteboard:error:");
	//mixin ObjcBindMethod!(initWithData, "initWithData:error:");
	//mixin ObjcBindMethod!(initWithMovie, "initWithMovie:timeRange:error:");
	//mixin ObjcBindMethod!(initWithAttributes, "initWithAttributes:error:");
	//mixin ObjcBindMethod!(movieWithTimeRange, "movieWithTimeRange:error:");
	//mixin ObjcBindMethod!(initToWritableFile, "initToWritableFile:error:");
	//mixin ObjcBindMethod!(initToWritableData, "initToWritableData:error:");
	//mixin ObjcBindMethod!(initToWritableDataReference, "initToWritableDataReference:error:");*/
	//mixin ObjcBindMethod!(invalidate, "invalidate");

`;

const TQTMovieImage = `

	NSImage posterImage ()
	{
		return invokeObjcSelf!(NSImage, "posterImage");
	}

	NSImage currentFrameImage ()
	{
		return invokeObjcSelf!(NSImage, "currentFrameImage");
	}

	NSImage frameImageAtTime (QTTime time)
	{
		return invokeObjcSelf!(NSImage, "frameImageAtTime:", QTTime)(time);
	}

	void* frameImageAtTime (QTTime time, NSDictionary attributes, ref NSError errorPtr)
	{
		id __arg2;

		if (errorPtr)
			__arg2 = errorPtr.objcObject;

		void* result = invokeObjcSelf!(void*, "frameImageAtTime:withAttributes:error:", QTTime, NSDictionary, id*)(time, attributes, &__arg2);

		if (__arg2)
			errorPtr = new NSError(__arg2);

		return result;
	}

	//mixin ObjcBindMethod!(posterImage, "posterImage");
	//mixin ObjcBindMethod!(currentFrameImage, "currentFrameImage");
	//mixin ObjcBindMethod!(frameImageAtTime, "frameImageAtTime:");
	//mixin ObjcBindMethod!(frameImageAtTime, "frameImageAtTime:withAttributes:error:");

`;

const TQTDelegate = `

	Object delegate_ ()
	{
		return invokeObjcSelf!(Object, "delegate");
	}

	void setDelegate (Object delegate_)
	{
		return invokeObjcSelf!(void, "setDelegate:", Object)(delegate_);
	}

	//mixin ObjcBindMethod!(delegate_, "delegate");
	//mixin ObjcBindMethod!(setDelegate, "setDelegate:");

`;

const TQTMovieTime = `

	void autoplay ()
	{
		return invokeObjcSelf!(void, "autoplay");
	}

	void play ()
	{
		return invokeObjcSelf!(void, "play");
	}

	void stop ()
	{
		return invokeObjcSelf!(void, "stop");
	}

	void setCurrentTime (QTTime time)
	{
		return invokeObjcSelf!(void, "setCurrentTime:", QTTime)(time);
	}

	void gotoBeginning ()
	{
		return invokeObjcSelf!(void, "gotoBeginning");
	}

	void gotoEnd ()
	{
		return invokeObjcSelf!(void, "gotoEnd");
	}

	void gotoNextSelectionPoint ()
	{
		return invokeObjcSelf!(void, "gotoNextSelectionPoint");
	}

	void gotoPreviousSelectionPoint ()
	{
		return invokeObjcSelf!(void, "gotoPreviousSelectionPoint");
	}

	void gotoPosterTime ()
	{
		return invokeObjcSelf!(void, "gotoPosterTime");
	}

	void stepForward ()
	{
		return invokeObjcSelf!(void, "stepForward");
	}

	void stepBackward ()
	{
		return invokeObjcSelf!(void, "stepBackward");
	}

	//mixin ObjcBindMethod!(autoplay, "autoplay");
	//mixin ObjcBindMethod!(play, "play");
	//mixin ObjcBindMethod!(stop, "stop");
	//mixin ObjcBindMethod!(setCurrentTime, "setCurrentTime:");
	//mixin ObjcBindMethod!(gotoBeginning, "gotoBeginning");
	//mixin ObjcBindMethod!(gotoEnd, "gotoEnd");
	//mixin ObjcBindMethod!(gotoNextSelectionPoint, "gotoNextSelectionPoint");
	//mixin ObjcBindMethod!(gotoPreviousSelectionPoint, "gotoPreviousSelectionPoint");
	//mixin ObjcBindMethod!(gotoPosterTime, "gotoPosterTime");
	//mixin ObjcBindMethod!(stepForward, "stepForward");
	//mixin ObjcBindMethod!(stepBackward, "stepBackward");

`;

const TQTMovieFormat = `

	NSData movieFormatRepresentation ()
	{
		return invokeObjcSelf!(NSData, "movieFormatRepresentation");
	}

	bool writeToFile (NSString fileName, NSDictionary attributes)
	{
		return invokeObjcSelf!(bool, "writeToFile:withAttributes:", NSString, NSDictionary)(fileName, attributes);
	}

	bool writeToFile (NSString fileName, NSDictionary attributes, ref NSError errorPtr)
	{
		id __arg2;

		if (errorPtr)
			__arg2 = errorPtr.objcObject;

		bool result = invokeObjcSelf!(bool, "writeToFile:withAttributes:error:", NSString, NSDictionary, id*)(fileName, attributes, &__arg2);

		if (__arg2)
			errorPtr = new NSError(__arg2);

		return result;
	}

	bool canUpdateMovieFile ()
	{
		return invokeObjcSelf!(bool, "canUpdateMovieFile");
	}

	bool updateMovieFile ()
	{
		return invokeObjcSelf!(bool, "updateMovieFile");
	}

	//mixin ObjcBindMethod!(movieFormatRepresentation, "movieFormatRepresentation");
	//mixin ObjcBindMethod!(writeToFile, "writeToFile:withAttributes:");
	//mixin ObjcBindMethod!(writeToFile, "writeToFile:withAttributes:error:");
	//mixin ObjcBindMethod!(canUpdateMovieFile, "canUpdateMovieFile");
	//mixin ObjcBindMethod!(updateMovieFile, "updateMovieFile");

`;

const TQTSelection = `

	void setSelection (QTTimeRange selection)
	{
		return invokeObjcSelf!(void, "setSelection:", QTTimeRange)(selection);
	}

	QTTime selectionStart ()
	{
		return invokeObjcSelf!(QTTime, "selectionStart");
	}

	QTTime selectionEnd ()
	{
		return invokeObjcSelf!(QTTime, "selectionEnd");
	}

	QTTime selectionDuration ()
	{
		return invokeObjcSelf!(QTTime, "selectionDuration");
	}

	//mixin ObjcBindMethod!(setSelection, "setSelection:");
	//mixin ObjcBindMethod!(selectionStart, "selectionStart");
	//mixin ObjcBindMethod!(selectionEnd, "selectionEnd");
	//mixin ObjcBindMethod!(selectionDuration, "selectionDuration");

`;

const TQTMoviePlaybackControl = `

	void setRate (float rate)
	{
		return invokeObjcSelf!(void, "setRate:", float)(rate);
	}

	void setVolume (float volume)
	{
		return invokeObjcSelf!(void, "setVolume:", float)(volume);
	}

	void setMuted (bool mute)
	{
		return invokeObjcSelf!(void, "setMuted:", bool)(mute);
	}

	//mixin ObjcBindMethod!(setRate, "setRate:");
	//mixin ObjcBindMethod!(setVolume, "setVolume:");
	//mixin ObjcBindMethod!(setMuted, "setMuted:");

`;

class QTMovie : NSObject, INSCoding, INSCopying
{
	mixin (ObjcWrap);
	
	this (NSCoder aDecoder)
	{
		super(typeof(this).alloc.initWithCoder(aDecoder).objcObject);
	}
	
	void encodeWithCoder (NSCoder aCoder)
	{
		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
	}
	
	typeof(this) initWithCoder (NSCoder aDecoder)
	{
		return invokeObjcSelf!(typeof(this), "initWithCoder:", NSCoder)(aDecoder);
	}
	
	typeof(this) copyWithZone (NSZone* zone)
	{
		return invokeObjcSelf!(typeof(this), "copyWithZone:", NSZone*)(zone);
	}

	QTTime duration ()
	{
		return invokeObjcSelf!(QTTime, "duration");
	}

	// QTMovieThreading
	static void enterQTKitOnThread ()
	{
		return invokeObjcSelfClass!(void, "enterQTKitOnThread");
	}

	static void enterQTKitOnThreadDisablingThreadSafetyProtection ()
	{
		return invokeObjcSelfClass!(void, "enterQTKitOnThreadDisablingThreadSafetyProtection");
	}

	static void exitQTKitOnThread ()
	{
		return invokeObjcSelfClass!(void, "exitQTKitOnThread");
	}

	bool attachToCurrentThread ()
	{
		return invokeObjcSelf!(bool, "attachToCurrentThread");
	}

	bool detachFromCurrentThread ()
	{
		return invokeObjcSelf!(bool, "detachFromCurrentThread");
	}

	void setIdling (bool state)
	{
		return invokeObjcSelf!(void, "setIdling:", bool)(state);
	}

	bool isIdling ()
	{
		return invokeObjcSelf!(bool, "isIdling");
	}
	
	// QTMovieInspection
	QTTime currentTime ()
	{
		return invokeObjcSelf!(QTTime, "currentTime");
	}

	float rate ()
	{
		return invokeObjcSelf!(float, "rate");
	}

	float volume ()
	{
		return invokeObjcSelf!(float, "volume");
	}

	bool muted ()
	{
		return invokeObjcSelf!(bool, "muted");
	}

	NSDictionary movieAttributes ()
	{
		return invokeObjcSelf!(NSDictionary, "movieAttributes");
	}

	void setMovieAttributes (NSDictionary attributes)
	{
		return invokeObjcSelf!(void, "setMovieAttributes:", NSDictionary)(attributes);
	}

	Object attributeForKey (NSString attributeKey)
	{
		return invokeObjcSelf!(Object, "attributeForKey:", NSString)(attributeKey);
	}

	void setAttribute (Object value, NSString attributeKey)
	{
		return invokeObjcSelf!(void, "setAttribute:forKey:", Object, NSString)(value, attributeKey);
	}

	NSArray tracks ()
	{
		return invokeObjcSelf!(NSArray, "tracks");
	}

	NSArray tracksOfMediaType (NSString type)
	{
		return invokeObjcSelf!(NSArray, "tracksOfMediaType:", NSString)(type);
	}
	
	// QTMovieChapters
	bool hasChapters ()
	{
		return invokeObjcSelf!(bool, "hasChapters");
	}

	NSInteger chapterCount ()
	{
		return invokeObjcSelf!(NSInteger, "chapterCount");
	}

	NSArray chapters ()
	{
		return invokeObjcSelf!(NSArray, "chapters");
	}

	void addChapters (NSArray chapters, NSDictionary attributes, ref NSError errorPtr)
	{
		id __arg2;

		if (errorPtr)
			__arg2 = errorPtr.objcObject;

		invokeObjcSelf!(void, "addChapters:withAttributes:error:", NSArray, NSDictionary, id*)(chapters, attributes, &__arg2);

		if (__arg2)
			errorPtr = new NSError(__arg2);
	}

	bool removeChapters ()
	{
		return invokeObjcSelf!(bool, "removeChapters");
	}

	QTTime startTimeOfChapter (NSInteger chapterIndex)
	{
		return invokeObjcSelf!(QTTime, "startTimeOfChapter:", NSInteger)(chapterIndex);
	}

	NSInteger chapterIndexForTime (QTTime time)
	{
		return invokeObjcSelf!(NSInteger, "chapterIndexForTime:", QTTime)(time);
	}
	
	// QTMovieVisualSupport
	void generateApertureModeDimensions ()
	{
		return invokeObjcSelf!(void, "generateApertureModeDimensions");
	}

	void removeApertureModeDimensions ()
	{
		return invokeObjcSelf!(void, "removeApertureModeDimensions");
	}
	
	// QTEditing
	void replaceSelectionWithSelectionFromMovie (Object movie)
	{
		return invokeObjcSelf!(void, "replaceSelectionWithSelectionFromMovie:", Object)(movie);
	}

	void appendSelectionFromMovie (Object movie)
	{
		return invokeObjcSelf!(void, "appendSelectionFromMovie:", Object)(movie);
	}

	void insertSegmentOfMovie (QTMovie movie, QTTimeRange range, QTTime time)
	{
		return invokeObjcSelf!(void, "insertSegmentOfMovie:timeRange:atTime:", QTMovie, QTTimeRange, QTTime)(movie, range, time);
	}

	void insertSegmentOfMovie (QTMovie movie, QTTimeRange srcRange, QTTimeRange dstRange)
	{
		return invokeObjcSelf!(void, "insertSegmentOfMovie:fromRange:scaledToRange:", QTMovie, QTTimeRange, QTTimeRange)(movie, srcRange, dstRange);
	}

	void insertEmptySegmentAt (QTTimeRange range)
	{
		return invokeObjcSelf!(void, "insertEmptySegmentAt:", QTTimeRange)(range);
	}

	void deleteSegment (QTTimeRange segment)
	{
		return invokeObjcSelf!(void, "deleteSegment:", QTTimeRange)(segment);
	}

	void scaleSegment (QTTimeRange segment, QTTime newDuration)
	{
		return invokeObjcSelf!(void, "scaleSegment:newDuration:", QTTimeRange, QTTime)(segment, newDuration);
	}

	void addImage (NSImage image, QTTime duration, NSDictionary attributes)
	{
		return invokeObjcSelf!(void, "addImage:forDuration:withAttributes:", NSImage, QTTime, NSDictionary)(image, duration, attributes);
	}

	QTTrack insertSegmentOfTrack (QTTrack track, QTTimeRange range, QTTime time)
	{
		return invokeObjcSelf!(QTTrack, "insertSegmentOfTrack:timeRange:atTime:", QTTrack, QTTimeRange, QTTime)(track, range, time);
	}

	QTTrack insertSegmentOfTrack (QTTrack track, QTTimeRange srcRange, QTTimeRange dstRange)
	{
		return invokeObjcSelf!(QTTrack, "insertSegmentOfTrack:fromRange:scaledToRange:", QTTrack, QTTimeRange, QTTimeRange)(track, srcRange, dstRange);
	}

	void removeTrack (QTTrack track)
	{
		return invokeObjcSelf!(void, "removeTrack:", QTTrack)(track);
	}
	
	// QTMovieInitialization
	static bool canInitWithPasteboard (NSPasteboard pasteboard)
	{
		return invokeObjcSelfClass!(bool, "canInitWithPasteboard:", NSPasteboard)(pasteboard);
	}

	static bool canInitWithFile (NSString fileName)
	{
		return invokeObjcSelfClass!(bool, "canInitWithFile:", NSString)(fileName);
	}

	static bool canInitWithURL (NSURL url)
	{
		return invokeObjcSelfClass!(bool, "canInitWithURL:", NSURL)(url);
	}

	static bool canInitWithDataReference (QTDataReference dataReference)
	{
		return invokeObjcSelfClass!(bool, "canInitWithDataReference:", QTDataReference)(dataReference);
	}

	static NSArray movieFileTypes (int types)
	{
		return invokeObjcSelfClass!(NSArray, "movieFileTypes:", int)(types);
	}

	static NSArray movieUnfilteredFileTypes ()
	{
		return invokeObjcSelfClass!(NSArray, "movieUnfilteredFileTypes");
	}

	static NSArray movieUnfilteredPasteboardTypes ()
	{
		return invokeObjcSelfClass!(NSArray, "movieUnfilteredPasteboardTypes");
	}

	static NSArray movieTypesWithOptions (int types)
	{
		return invokeObjcSelfClass!(NSArray, "movieTypesWithOptions:", int)(types);
	}

	static Object movie ()
	{
		return invokeObjcSelfClass!(Object, "movie");
	}

	static Object movieWithFile (NSString fileName, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieWithFile:error:", NSString, id*)(fileName, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	static Object movieWithURL (NSURL url, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieWithURL:error:", NSURL, id*)(url, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	static Object movieWithDataReference (QTDataReference dataReference, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieWithDataReference:error:", QTDataReference, id*)(dataReference, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	static Object movieWithPasteboard (NSPasteboard pasteboard, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieWithPasteboard:error:", NSPasteboard, id*)(pasteboard, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	static Object movieWithData (NSData data, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieWithData:error:", NSData, id*)(data, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	static Object movieWithAttributes (NSDictionary attributes, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieWithAttributes:error:", NSDictionary, id*)(attributes, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	static Object movieNamed (NSString name, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelfClass!(Object, "movieNamed:error:", NSString, id*)(name, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	typeof(this) initWithFile (NSString fileName, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithFile:error:", NSString, id*)(fileName, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSString fileName, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithFile(fileName, errorPtr).objcObject);
	}

	typeof(this) initWithURL (NSURL url, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithURL:error:", NSURL, id*)(url, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSURL url, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithURL(url, errorPtr).objcObject);
	}

	typeof(this) initWithDataReference (QTDataReference dataReference, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithDataReference:error:", QTDataReference, id*)(dataReference, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (QTDataReference dataReference, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithDataReference(dataReference, errorPtr).objcObject);
	}

	typeof(this) initWithPasteboard (NSPasteboard pasteboard, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithPasteboard:error:", NSPasteboard, id*)(pasteboard, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSPasteboard pasteboard, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithPasteboard(pasteboard, errorPtr).objcObject);
	}

	typeof(this) initWithData (NSData data, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithData:error:", NSData, id*)(data, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSData data, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithData(data, errorPtr).objcObject);
	}

	typeof(this) initWithMovie (QTMovie movie, QTTimeRange range, ref NSError errorPtr)
	{
		id __arg2;

		if (errorPtr)
			__arg2 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithMovie:timeRange:error:", QTMovie, QTTimeRange, id*)(movie, range, &__arg2);

		if (__arg2)
			errorPtr = new NSError(__arg2);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (QTMovie movie, QTTimeRange range, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithMovie(movie, range, errorPtr).objcObject);
	}

	typeof(this) initWithAttributes (NSDictionary attributes, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initWithAttributes:error:", NSDictionary, id*)(attributes, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSDictionary attributes, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initWithAttributes(attributes, errorPtr).objcObject);
	}

	Object movieWithTimeRange (QTTimeRange range, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		Object result = invokeObjcSelf!(Object, "movieWithTimeRange:error:", QTTimeRange, id*)(range, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result;
	}

	typeof(this) initToWritableFile (NSString filename, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initToWritableFile:error:", NSString, id*)(filename, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	typeof(this) initToWritableData (NSMutableData data, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initToWritableData:error:", NSMutableData, id*)(data, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	this (NSMutableData data, ref NSError errorPtr)
	{
		super(typeof(this).alloc.initToWritableData(data, errorPtr).objcObject);
	}

	typeof(this) initToWritableDataReference (QTDataReference dataReference, ref NSError errorPtr)
	{
		id __arg1;

		if (errorPtr)
			__arg1 = errorPtr.objcObject;

		id result = invokeObjcSelf!(id, "initToWritableDataReference:error:", QTDataReference, id*)(dataReference, &__arg1);

		if (__arg1)
			errorPtr = new NSError(__arg1);

		return result is this.objcObject ? this : (result !is null ? new typeof(this)(result) : null);
	}

	void invalidate ()
	{
		return invokeObjcSelf!(void, "invalidate");
	}
	
	// QTMovieImage
	NSImage posterImage ()
	{
		return invokeObjcSelf!(NSImage, "posterImage");
	}

	NSImage currentFrameImage ()
	{
		return invokeObjcSelf!(NSImage, "currentFrameImage");
	}

	NSImage frameImageAtTime (QTTime time)
	{
		return invokeObjcSelf!(NSImage, "frameImageAtTime:", QTTime)(time);
	}

	void* frameImageAtTime (QTTime time, NSDictionary attributes, ref NSError errorPtr)
	{
		id __arg2;

		if (errorPtr)
			__arg2 = errorPtr.objcObject;

		void* result = invokeObjcSelf!(void*, "frameImageAtTime:withAttributes:error:", QTTime, NSDictionary, id*)(time, attributes, &__arg2);

		if (__arg2)
			errorPtr = new NSError(__arg2);

		return result;
	}
	
	// QTDelegate
	Object delegate_ ()
	{
		return invokeObjcSelf!(Object, "delegate");
	}

	void setDelegate (Object delegate_)
	{
		return invokeObjcSelf!(void, "setDelegate:", Object)(delegate_);
	}
	
	// QTMovieTime
	void autoplay ()
	{
		return invokeObjcSelf!(void, "autoplay");
	}

	void play ()
	{
		return invokeObjcSelf!(void, "play");
	}

	void stop ()
	{
		return invokeObjcSelf!(void, "stop");
	}

	void setCurrentTime (QTTime time)
	{
		return invokeObjcSelf!(void, "setCurrentTime:", QTTime)(time);
	}

	void gotoBeginning ()
	{
		return invokeObjcSelf!(void, "gotoBeginning");
	}

	void gotoEnd ()
	{
		return invokeObjcSelf!(void, "gotoEnd");
	}

	void gotoNextSelectionPoint ()
	{
		return invokeObjcSelf!(void, "gotoNextSelectionPoint");
	}

	void gotoPreviousSelectionPoint ()
	{
		return invokeObjcSelf!(void, "gotoPreviousSelectionPoint");
	}

	void gotoPosterTime ()
	{
		return invokeObjcSelf!(void, "gotoPosterTime");
	}

	void stepForward ()
	{
		return invokeObjcSelf!(void, "stepForward");
	}

	void stepBackward ()
	{
		return invokeObjcSelf!(void, "stepBackward");
	}
	
	// QTMovieFormat
	NSData movieFormatRepresentation ()
	{
		return invokeObjcSelf!(NSData, "movieFormatRepresentation");
	}

	bool writeToFile (NSString fileName, NSDictionary attributes)
	{
		return invokeObjcSelf!(bool, "writeToFile:withAttributes:", NSString, NSDictionary)(fileName, attributes);
	}

	bool writeToFile (NSString fileName, NSDictionary attributes, ref NSError errorPtr)
	{
		id __arg2;

		if (errorPtr)
			__arg2 = errorPtr.objcObject;

		bool result = invokeObjcSelf!(bool, "writeToFile:withAttributes:error:", NSString, NSDictionary, id*)(fileName, attributes, &__arg2);

		if (__arg2)
			errorPtr = new NSError(__arg2);

		return result;
	}

	bool canUpdateMovieFile ()
	{
		return invokeObjcSelf!(bool, "canUpdateMovieFile");
	}

	bool updateMovieFile ()
	{
		return invokeObjcSelf!(bool, "updateMovieFile");
	}
	
	// QTSelection
	void setSelection (QTTimeRange selection)
	{
		return invokeObjcSelf!(void, "setSelection:", QTTimeRange)(selection);
	}

	QTTime selectionStart ()
	{
		return invokeObjcSelf!(QTTime, "selectionStart");
	}

	QTTime selectionEnd ()
	{
		return invokeObjcSelf!(QTTime, "selectionEnd");
	}

	QTTime selectionDuration ()
	{
		return invokeObjcSelf!(QTTime, "selectionDuration");
	}
	
	// QTMoviePlaybackControl
	void setRate (float rate)
	{
		return invokeObjcSelf!(void, "setRate:", float)(rate);
	}

	void setVolume (float volume)
	{
		return invokeObjcSelf!(void, "setVolume:", float)(volume);
	}

	void setMuted (bool mute)
	{
		return invokeObjcSelf!(void, "setMuted:", bool)(mute);
	}
}