topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-QTML.h / h
/*
File: QTML.h
Contains: QuickTime Cross-platform specific interfaces
Version: Technology: QuickTime 4.1
Release: QuickTime 6.0.2
Copyright: (c) 1997-2001 by Apple Computer, 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
EXTERN_API( void )
QTMLYieldCPU (void);
/* QTMLYieldCPUTime flags*/
enum {
kQTMLHandlePortEvents = (1L << 0) /* ask for event handling during the yield*/
};
EXTERN_API( void )
QTMLYieldCPUTime (long milliSeconds,
unsigned long flags);
typedef struct OpaqueQTMLMutex* QTMLMutex;
if !(TARGET_OS_MAC && TARGET_API_MAC_OS8)
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*/
};
if CALL_NOT_IN_CARBON
EXTERN_API( OSErr )
InitializeQTML (long flag);
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*/
};
if CALL_NOT_IN_CARBON
EXTERN_API( GrafPtr )
CreatePortAssociation (void * theWnd,
Ptr storage,
long flags);
EXTERN_API( void )
DestroyPortAssociation (CGrafPtr cgp);
endif /* CALL_NOT_IN_CARBON */
EXTERN_API( void )
QTMLGrabMutex (QTMLMutex mu);
EXTERN_API( Boolean )
QTMLTryGrabMutex (QTMLMutex mu);
EXTERN_API( void )
QTMLReturnMutex (QTMLMutex mu);
EXTERN_API( QTMLMutex )
QTMLCreateMutex (void);
EXTERN_API( void )
QTMLDestroyMutex (QTMLMutex mu);
if CALL_NOT_IN_CARBON
EXTERN_API( QTMLSyncVarPtr )
QTMLCreateSyncVar (void);
EXTERN_API( void )
QTMLDestroySyncVar (QTMLSyncVarPtr p);
EXTERN_API( long )
QTMLTestAndSetSyncVar (QTMLSyncVarPtr sync);
EXTERN_API( void )
QTMLWaitAndSetSyncVar (QTMLSyncVarPtr sync);
EXTERN_API( void )
QTMLResetSyncVar (QTMLSyncVarPtr sync);
EXTERN_API( void )
InitializeQHdr (QHdr * qhdr);
EXTERN_API( void )
TerminateQHdr (QHdr * qhdr);
EXTERN_API( void )
QTMLAcquireWindowList (void);
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.
*/
EXTERN_API( long )
QTMLRegisterInterruptSafeThread (unsigned long threadID,
void * threadInfo);
EXTERN_API( long )
QTMLUnregisterInterruptSafeThread (unsigned long threadID);
EXTERN_API( long )
NativeEventToMacEvent (void * nativeEvent,
EventRecord * macEvent);
endif /* CALL_NOT_IN_CARBON */
if TARGET_OS_WIN32
if CALL_NOT_IN_CARBON
EXTERN_API( long )
WinEventToMacEvent (void * winMsg,
EventRecord * macEvent);
define WinEventToMacEvent NativeEventToMacEvent
EXTERN_API( Boolean )
IsTaskBarVisible (void);
EXTERN_API( void )
ShowHideTaskBar (Boolean showIt);
endif /* CALL_NOT_IN_CARBON */
enum {
kDDSurfaceLocked = (1L << 0),
kDDSurfaceStatic = (1L << 1)
};
if CALL_NOT_IN_CARBON
EXTERN_API( OSErr )
QTGetDDObject (void ** lpDDObject);
EXTERN_API( OSErr )
QTSetDDObject (void * lpNewDDObject);
EXTERN_API( OSErr )
QTSetDDPrimarySurface (void * lpNewDDSurface,
unsigned long flags);
EXTERN_API( OSErr )
QTMLGetVolumeRootPath (char * fullPath,
char * volumeRootPath,
unsigned long volumeRootLen);
EXTERN_API( void )
QTMLSetWindowWndProc (WindowRef theWindow,
void * windowProc);
EXTERN_API( void *)
QTMLGetWindowWndProc (WindowRef theWindow);
endif /* CALL_NOT_IN_CARBON */
endif /* TARGET_OS_WIN32 */
if CALL_NOT_IN_CARBON
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
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
EXTERN_API( OSErr )
NativePathNameToFSSpec (char * inName,
FSSpec * outFile,
long flags);
EXTERN_API( OSErr )
QTGetAliasInfo (AliasHandle alias,
AliasInfoType index,
char * outBuf,
long bufLen,
long * outLen,
unsigned long flags);
/*\%if QUICKTIME_ONLY*/
endif /* CALL_NOT_IN_CARBON */
else
define QTMLGrabMutex(MU)
define QTMLTryGrabMutex(MU) true
define QTMLReturnMutex(MU)
define QTMLCreateMutex() ((struct OpaqueQTMLMutex*) 1) /* nonzero, since zero indicates creation failure */
define QTMLDestroyMutex(MU)
/*\%endif*/
endif /* !(TARGET_OS_MAC && TARGET_API_MAC_OS8) */
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__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.