blob: cb9e443f01d5f24a33b56e1d0dc85033bb98f6a6 [file] [log] [blame]
/*
File: iTunesAPI.c
Contains: iTunes Plug-ins interfaces
Version: Technology: iTunes
Release: 1.1
Copyright: © 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/
*/
#include "iTunesAPI.h"
#include "iTunesVisualAPI.h"
// MemClear
//
static void MemClear (LogicalAddress dest, SInt32 length)
{
register unsigned char *ptr;
ptr = (unsigned char *) dest;
if( length > 16 )
{
register unsigned long *longPtr;
while( ((unsigned long) ptr & 3) != 0 )
{
*ptr++ = 0;
--length;
}
longPtr = (unsigned long *) ptr;
while( length >= 4 )
{
*longPtr++ = 0;
length -= 4;
}
ptr = (unsigned char *) longPtr;
}
while( --length >= 0 )
{
*ptr++ = 0;
}
}
// SetNumVersion
//
void SetNumVersion (NumVersion *numVersion, UInt8 majorRev, UInt8 minorAndBugRev, UInt8 stage, UInt8 nonRelRev)
{
numVersion->majorRev = majorRev;
numVersion->minorAndBugRev = minorAndBugRev;
numVersion->stage = stage;
numVersion->nonRelRev = nonRelRev;
}
// ITCallApplication
//
OSStatus ITCallApplication (void *appCookie, ITAppProcPtr handler, OSType message, PlayerMessageInfo *messageInfo)
{
PlayerMessageInfo localMessageInfo;
if (messageInfo == nil)
{
MemClear(&localMessageInfo, sizeof(localMessageInfo));
messageInfo = &localMessageInfo;
}
messageInfo->messageMajorVersion = kITCurrentPluginMajorMessageVersion;
messageInfo->messageMinorVersion = kITCurrentPluginMinorMessageVersion;
messageInfo->messageInfoSize = sizeof(PlayerMessageInfo);
return handler(appCookie, message, messageInfo);
}
// PlayerSetFullScreen
//
OSStatus PlayerSetFullScreen (void *appCookie, ITAppProcPtr appProc, Boolean fullScreen)
{
PlayerMessageInfo messageInfo;
MemClear(&messageInfo, sizeof(messageInfo));
messageInfo.u.setFullScreenMessage.fullScreen = fullScreen;
return ITCallApplication(appCookie, appProc, kPlayerSetFullScreenMessage, &messageInfo);
}
// PlayerSetFullScreenOptions
//
OSStatus PlayerSetFullScreenOptions (void *appCookie, ITAppProcPtr appProc, SInt16 minBitDepth, SInt16 maxBitDepth, SInt16 preferredBitDepth, SInt16 desiredWidth, SInt16 desiredHeight)
{
PlayerMessageInfo messageInfo;
MemClear(&messageInfo, sizeof(messageInfo));
messageInfo.u.setFullScreenOptionsMessage.minBitDepth = minBitDepth;
messageInfo.u.setFullScreenOptionsMessage.maxBitDepth = maxBitDepth;
messageInfo.u.setFullScreenOptionsMessage.preferredBitDepth = preferredBitDepth;
messageInfo.u.setFullScreenOptionsMessage.desiredWidth = desiredWidth;
messageInfo.u.setFullScreenOptionsMessage.desiredHeight = desiredHeight;
return ITCallApplication(appCookie, appProc, kPlayerSetFullScreenOptionsMessage, &messageInfo);
}
// PlayerGetPluginData
//
OSStatus PlayerGetPluginData (void *appCookie, ITAppProcPtr appProc, void *dataPtr, UInt32 dataBufferSize, UInt32 *dataSize)
{
OSStatus status;
PlayerMessageInfo messageInfo;
MemClear(&messageInfo, sizeof(messageInfo));
messageInfo.u.getPluginDataMessage.dataPtr = dataPtr;
messageInfo.u.getPluginDataMessage.dataBufferSize = dataBufferSize;
status = ITCallApplication(appCookie, appProc, kPlayerGetPluginDataMessage, &messageInfo);
if (dataSize != nil)
*dataSize = messageInfo.u.getPluginDataMessage.dataSize;
return status;
}
// PlayerSetPluginData
//
OSStatus PlayerSetPluginData (void *appCookie, ITAppProcPtr appProc, void *dataPtr, UInt32 dataSize)
{
PlayerMessageInfo messageInfo;
MemClear(&messageInfo, sizeof(messageInfo));
messageInfo.u.setPluginDataMessage.dataPtr = dataPtr;
messageInfo.u.setPluginDataMessage.dataSize = dataSize;
return ITCallApplication(appCookie, appProc, kPlayerSetPluginDataMessage, &messageInfo);
}
// PlayerGetPluginNamedData
//
OSStatus PlayerGetPluginNamedData (void *appCookie, ITAppProcPtr appProc, ConstStringPtr dataName, void *dataPtr, UInt32 dataBufferSize, UInt32 *dataSize)
{
OSStatus status;
PlayerMessageInfo messageInfo;
MemClear(&messageInfo, sizeof(messageInfo));
messageInfo.u.getPluginNamedDataMessage.dataName = dataName;
messageInfo.u.getPluginNamedDataMessage.dataPtr = dataPtr;
messageInfo.u.getPluginNamedDataMessage.dataBufferSize = dataBufferSize;
status = ITCallApplication(appCookie, appProc, kPlayerGetPluginNamedDataMessage, &messageInfo);
if (dataSize != nil)
*dataSize = messageInfo.u.getPluginNamedDataMessage.dataSize;
return status;
}
// PlayerSetPluginNamedData
//
OSStatus PlayerSetPluginNamedData (void *appCookie, ITAppProcPtr appProc, ConstStringPtr dataName, void *dataPtr, UInt32 dataSize)
{
PlayerMessageInfo messageInfo;
MemClear(&messageInfo, sizeof(messageInfo));
messageInfo.u.setPluginNamedDataMessage.dataName = dataName;
messageInfo.u.setPluginNamedDataMessage.dataPtr = dataPtr;
messageInfo.u.setPluginNamedDataMessage.dataSize = dataSize;
return ITCallApplication(appCookie, appProc, kPlayerSetPluginNamedDataMessage, &messageInfo);
}
// PlayerIdle
//
OSStatus PlayerIdle (void *appCookie, ITAppProcPtr appProc)
{
return ITCallApplication(appCookie, appProc, kPlayerIdleMessage, nil);
}
// PlayerShowAbout
//
void PlayerShowAbout (void *appCookie, ITAppProcPtr appProc)
{
ITCallApplication(appCookie, appProc, kPlayerShowAboutMessage, nil);
}
// PlayerOpenURL
//
void PlayerOpenURL (void *appCookie, ITAppProcPtr appProc, SInt8 *string, UInt32 length)
{
PlayerMessageInfo messageInfo;
MemClear(&messageInfo, sizeof(messageInfo));
messageInfo.u.openURLMessage.url = string;
messageInfo.u.openURLMessage.length = length;
ITCallApplication(appCookie, appProc, kPlayerOpenURLMessage, &messageInfo);
}
// PlayerUnregisterPlugin
//
OSStatus PlayerUnregisterPlugin (void *appCookie, ITAppProcPtr appProc, PlayerMessageInfo *messageInfo)
{
return ITCallApplication(appCookie, appProc, kPlayerUnregisterPluginMessage, messageInfo);
}
// PlayerRegisterVisualPlugin
//
OSStatus PlayerRegisterVisualPlugin (void *appCookie, ITAppProcPtr appProc, PlayerMessageInfo *messageInfo)
{
return ITCallApplication(appCookie, appProc, kPlayerRegisterVisualPluginMessage, messageInfo);
}
// PlayerRegisterDevicePlugin
//
OSStatus PlayerRegisterDevicePlugin (void *appCookie, ITAppProcPtr appProc, PlayerMessageInfo *messageInfo)
{
return ITCallApplication(appCookie, appProc, kPlayerRegisterDevicePluginMessage, messageInfo);
}
// PlayerSetDeviceSerialNumber
//
OSStatus PlayerSetDeviceSerialNumber (void *appCookie, ITAppProcPtr appProc, ConstStringPtr serialNumber)
{
PlayerMessageInfo messageInfo;
MemClear(&messageInfo, sizeof(messageInfo));
messageInfo.u.setDeviceSerialNumberMessage.serialNumber = serialNumber;
return ITCallApplication(appCookie, appProc, kPlayerSetDeviceSerialNumberMessage, &messageInfo);
}
// PlayerHandleMacOSEvent
//
OSStatus PlayerHandleMacOSEvent (void *appCookie, ITAppProcPtr appProc, const EventRecord *theEvent, Boolean *eventHandled)
{
PlayerMessageInfo messageInfo;
OSStatus status;
MemClear(&messageInfo, sizeof(messageInfo));
messageInfo.u.handleMacOSEventMessage.theEvent = theEvent;
status = ITCallApplication(appCookie, appProc, kPlayerHandleMacOSEventMessage, &messageInfo);
if( eventHandled != nil )
*eventHandled = messageInfo.u.handleMacOSEventMessage.handled;
return status;
}
// PlayerGetPluginFileSpec
//
OSStatus PlayerGetPluginFileSpec (void *appCookie, ITAppProcPtr appProc, FSSpec *pluginFileSpec)
{
PlayerMessageInfo messageInfo;
MemClear(&messageInfo, sizeof(messageInfo));
messageInfo.u.getPluginFileSpecMessage.fileSpec = pluginFileSpec;
return ITCallApplication(appCookie, appProc, kPlayerGetPluginFileSpecMessage, &messageInfo);
}