675 lines
15 KiB
C
675 lines
15 KiB
C
/*
|
|
File: QTML.h
|
|
|
|
Contains: QuickTime Cross-platform specific interfaces
|
|
|
|
Version: QuickTime 7.3
|
|
|
|
Copyright: (c) 2007 (c) 1997-2007 by Apple Inc., all rights reserved.
|
|
|
|
Bugs?: For bug reports, consult the following page on
|
|
the World Wide Web:
|
|
|
|
http://developer.apple.com/bugreporter/
|
|
|
|
*/
|
|
#ifndef __QTML__
|
|
#define __QTML__
|
|
|
|
#ifndef __MACTYPES__
|
|
#include <MacTypes.h>
|
|
#endif
|
|
|
|
#ifndef __MACMEMORY__
|
|
#include <MacMemory.h>
|
|
#endif
|
|
|
|
#ifndef __MACWINDOWS__
|
|
#include <MacWindows.h>
|
|
#endif
|
|
|
|
#ifndef __OSUTILS__
|
|
#include <OSUtils.h>
|
|
#endif
|
|
|
|
#ifndef __FILES__
|
|
#include <Files.h>
|
|
#endif
|
|
|
|
|
|
|
|
#if PRAGMA_ONCE
|
|
#pragma once
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if PRAGMA_IMPORT
|
|
#pragma import on
|
|
#endif
|
|
|
|
#if PRAGMA_STRUCT_ALIGN
|
|
#pragma options align=mac68k
|
|
#elif PRAGMA_STRUCT_PACKPUSH
|
|
#pragma pack(push, 2)
|
|
#elif PRAGMA_STRUCT_PACK
|
|
#pragma pack(2)
|
|
#endif
|
|
|
|
/* QuickTime is not available to 64-bit clients */
|
|
|
|
#if !__LP64__
|
|
|
|
/*
|
|
* QTMLYieldCPU()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: in CarbonLib 3.0 and later
|
|
* Mac OS X: in version 10.0 and later
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
QTMLYieldCPU(void);
|
|
|
|
|
|
/* QTMLYieldCPUTime flags*/
|
|
enum {
|
|
kQTMLHandlePortEvents = (1L << 0) /* ask for event handling during the yield*/
|
|
};
|
|
|
|
/*
|
|
* QTMLYieldCPUTime()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: in CarbonLib 3.0 and later
|
|
* Mac OS X: in version 10.0 and later
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
QTMLYieldCPUTime(
|
|
long milliSeconds,
|
|
unsigned long flags);
|
|
|
|
|
|
typedef struct OpaqueQTMLMutex* QTMLMutex;
|
|
typedef struct OpaqueQTMLSyncVar* QTMLSyncVar;
|
|
typedef QTMLSyncVar * QTMLSyncVarPtr;
|
|
/* InitializeQTML flags*/
|
|
enum {
|
|
kInitializeQTMLNoSoundFlag = (1L << 0), /* flag for requesting no sound when calling InitializeQTML*/
|
|
kInitializeQTMLUseGDIFlag = (1L << 1), /* flag for requesting GDI when calling InitializeQTML*/
|
|
kInitializeQTMLDisableDirectSound = (1L << 2), /* disables QTML's use of DirectSound*/
|
|
kInitializeQTMLUseExclusiveFullScreenModeFlag = (1L << 3), /* later than QTML 3.0: qtml starts up in exclusive full screen mode*/
|
|
kInitializeQTMLDisableDDClippers = (1L << 4), /* flag for requesting QTML not to use DirectDraw clipper objects; QTML 5.0 and later*/
|
|
kInitializeQTMLEnableDoubleBufferedSurface = (1L << 6) /* flag for requesting QuickTime use a double-buffered destination surface; QT6.4 and later*/
|
|
};
|
|
|
|
#if CALL_NOT_IN_CARBON
|
|
/*
|
|
* InitializeQTML()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( OSErr )
|
|
InitializeQTML(long flag);
|
|
|
|
|
|
/*
|
|
* TerminateQTML()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
TerminateQTML(void);
|
|
|
|
|
|
|
|
/* CreatePortAssociation flags*/
|
|
#endif /* CALL_NOT_IN_CARBON */
|
|
|
|
enum {
|
|
kQTMLNoIdleEvents = (1L << 1), /* ask for a non-auto-idled port to be created*/
|
|
kQTMLNoDoubleBufferPort = (1L << 2) /* ask for QTML not to double-buffer this port*/
|
|
};
|
|
|
|
#define kQTMLIsDoubleBuffered "UsesDoubleBuffer"
|
|
#if CALL_NOT_IN_CARBON
|
|
/*
|
|
* CreatePortAssociation()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( GrafPtr )
|
|
CreatePortAssociation(
|
|
void * theWnd,
|
|
Ptr storage,
|
|
long flags);
|
|
|
|
|
|
/*
|
|
* DestroyPortAssociation()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
DestroyPortAssociation(CGrafPtr cgp);
|
|
|
|
|
|
|
|
#endif /* CALL_NOT_IN_CARBON */
|
|
|
|
/*
|
|
* QTMLGrabMutex()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: in CarbonLib 3.0 and later
|
|
* Mac OS X: in version 10.0 and later
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
QTMLGrabMutex(QTMLMutex mu);
|
|
|
|
|
|
/*
|
|
* QTMLTryGrabMutex()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: in CarbonLib 4.1 and later
|
|
* Mac OS X: in version 10.0 and later
|
|
* Windows: in qtmlClient.lib 4.1 and later
|
|
*/
|
|
EXTERN_API( Boolean )
|
|
QTMLTryGrabMutex(QTMLMutex mu);
|
|
|
|
|
|
/*
|
|
* QTMLReturnMutex()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: in CarbonLib 3.0 and later
|
|
* Mac OS X: in version 10.0 and later
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
QTMLReturnMutex(QTMLMutex mu);
|
|
|
|
|
|
/*
|
|
* QTMLCreateMutex()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: in CarbonLib 3.0 and later
|
|
* Mac OS X: in version 10.0 and later
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( QTMLMutex )
|
|
QTMLCreateMutex(void);
|
|
|
|
|
|
/*
|
|
* QTMLDestroyMutex()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: in CarbonLib 3.0 and later
|
|
* Mac OS X: in version 10.0 and later
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
QTMLDestroyMutex(QTMLMutex mu);
|
|
|
|
|
|
|
|
#if CALL_NOT_IN_CARBON
|
|
/*
|
|
* QTMLCreateSyncVar()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( QTMLSyncVarPtr )
|
|
QTMLCreateSyncVar(void);
|
|
|
|
|
|
/*
|
|
* QTMLDestroySyncVar()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
QTMLDestroySyncVar(QTMLSyncVarPtr p);
|
|
|
|
|
|
/*
|
|
* QTMLTestAndSetSyncVar()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( long )
|
|
QTMLTestAndSetSyncVar(QTMLSyncVarPtr sync);
|
|
|
|
|
|
/*
|
|
* QTMLWaitAndSetSyncVar()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
QTMLWaitAndSetSyncVar(QTMLSyncVarPtr sync);
|
|
|
|
|
|
/*
|
|
* QTMLResetSyncVar()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
QTMLResetSyncVar(QTMLSyncVarPtr sync);
|
|
|
|
|
|
|
|
/*
|
|
* InitializeQHdr()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
InitializeQHdr(QHdr * qhdr);
|
|
|
|
|
|
/*
|
|
* TerminateQHdr()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
TerminateQHdr(QHdr * qhdr);
|
|
|
|
|
|
|
|
/*
|
|
* QTMLAcquireWindowList()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
QTMLAcquireWindowList(void);
|
|
|
|
|
|
/*
|
|
* QTMLReleaseWindowList()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
QTMLReleaseWindowList(void);
|
|
|
|
|
|
/*
|
|
These routines are here to support "interrupt level" code
|
|
These are dangerous routines, only use if you know what you are doing.
|
|
*/
|
|
|
|
/*
|
|
* QTMLRegisterInterruptSafeThread()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( long )
|
|
QTMLRegisterInterruptSafeThread(
|
|
unsigned long threadID,
|
|
void * threadInfo);
|
|
|
|
|
|
/*
|
|
* QTMLUnregisterInterruptSafeThread()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( long )
|
|
QTMLUnregisterInterruptSafeThread(unsigned long threadID);
|
|
|
|
|
|
|
|
/*
|
|
* NativeEventToMacEvent()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( long )
|
|
NativeEventToMacEvent(
|
|
void * nativeEvent,
|
|
EventRecord * macEvent);
|
|
|
|
|
|
#endif /* CALL_NOT_IN_CARBON */
|
|
|
|
#if TARGET_OS_WIN32
|
|
#if CALL_NOT_IN_CARBON
|
|
/*
|
|
* WinEventToMacEvent()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( long )
|
|
WinEventToMacEvent(
|
|
void * winMsg,
|
|
EventRecord * macEvent);
|
|
|
|
|
|
#define WinEventToMacEvent NativeEventToMacEvent
|
|
/*
|
|
* IsTaskBarVisible()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( Boolean )
|
|
IsTaskBarVisible(void);
|
|
|
|
|
|
/*
|
|
* ShowHideTaskBar()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
ShowHideTaskBar(Boolean showIt);
|
|
|
|
|
|
#endif /* CALL_NOT_IN_CARBON */
|
|
|
|
enum {
|
|
kDDSurfaceLocked = (1L << 0),
|
|
kDDSurfaceStatic = (1L << 1)
|
|
};
|
|
|
|
#if CALL_NOT_IN_CARBON
|
|
/*
|
|
* QTGetDDObject()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( OSErr )
|
|
QTGetDDObject(void ** lpDDObject);
|
|
|
|
|
|
/*
|
|
* QTSetDDObject()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( OSErr )
|
|
QTSetDDObject(void * lpNewDDObject);
|
|
|
|
|
|
/*
|
|
* QTSetDDPrimarySurface()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( OSErr )
|
|
QTSetDDPrimarySurface(
|
|
void * lpNewDDSurface,
|
|
unsigned long flags);
|
|
|
|
|
|
|
|
/*
|
|
* QTMLGetVolumeRootPath()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( OSErr )
|
|
QTMLGetVolumeRootPath(
|
|
char * fullPath,
|
|
char * volumeRootPath,
|
|
unsigned long volumeRootLen);
|
|
|
|
|
|
|
|
/*
|
|
* QTMLSetWindowWndProc()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void )
|
|
QTMLSetWindowWndProc(
|
|
WindowRef theWindow,
|
|
void * windowProc);
|
|
|
|
|
|
/*
|
|
* QTMLGetWindowWndProc()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( void * )
|
|
QTMLGetWindowWndProc(WindowRef theWindow);
|
|
|
|
|
|
#endif /* CALL_NOT_IN_CARBON */
|
|
|
|
#endif /* TARGET_OS_WIN32 */
|
|
|
|
#if CALL_NOT_IN_CARBON
|
|
/*
|
|
* QTMLGetCanonicalPathName()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( OSErr )
|
|
QTMLGetCanonicalPathName(
|
|
char * inName,
|
|
char * outName,
|
|
unsigned long outLen);
|
|
|
|
|
|
#endif /* CALL_NOT_IN_CARBON */
|
|
|
|
enum {
|
|
kFullNativePath = 0,
|
|
kFileNameOnly = (1 << 0),
|
|
kDirectoryPathOnly = (1 << 1),
|
|
kUFSFullPathName = (1 << 2),
|
|
kTryVDIMask = (1 << 3), /* Used in NativePathNameToFSSpec to specify to search VDI mountpoints*/
|
|
kFullPathSpecifiedMask = (1 << 4) /* the passed in name is a fully qualified full path*/
|
|
};
|
|
|
|
#if CALL_NOT_IN_CARBON
|
|
/*
|
|
* FSSpecToNativePathName()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( OSErr )
|
|
FSSpecToNativePathName(
|
|
const FSSpec * inFile,
|
|
char * outName,
|
|
unsigned long outLen,
|
|
long flags);
|
|
|
|
|
|
#endif /* CALL_NOT_IN_CARBON */
|
|
|
|
enum {
|
|
kErrorIfFileNotFound = 1L << 31
|
|
};
|
|
|
|
#if CALL_NOT_IN_CARBON
|
|
/*
|
|
* NativePathNameToFSSpec()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 3.0 and later
|
|
*/
|
|
EXTERN_API( OSErr )
|
|
NativePathNameToFSSpec(
|
|
char * inName,
|
|
FSSpec * outFile,
|
|
long flags);
|
|
|
|
|
|
/*
|
|
* QTGetAliasInfo()
|
|
*
|
|
* Availability:
|
|
* Non-Carbon CFM: not available
|
|
* CarbonLib: not available
|
|
* Mac OS X: not available
|
|
* Windows: in qtmlClient.lib 5.0 and later
|
|
*/
|
|
EXTERN_API( OSErr )
|
|
QTGetAliasInfo(
|
|
AliasHandle alias,
|
|
AliasInfoType index,
|
|
char * outBuf,
|
|
long bufLen,
|
|
long * outLen,
|
|
unsigned long flags);
|
|
|
|
|
|
|
|
#endif // !__LP64__
|
|
|
|
#endif /* CALL_NOT_IN_CARBON */
|
|
|
|
|
|
#if PRAGMA_STRUCT_ALIGN
|
|
#pragma options align=reset
|
|
#elif PRAGMA_STRUCT_PACKPUSH
|
|
#pragma pack(pop)
|
|
#elif PRAGMA_STRUCT_PACK
|
|
#pragma pack()
|
|
#endif
|
|
|
|
#ifdef PRAGMA_IMPORT_OFF
|
|
#pragma import off
|
|
#elif PRAGMA_IMPORT
|
|
#pragma import reset
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __QTML__ */
|
|
|