Common Files/QTUtilities.h

//////////
//
//  File:       QTUtilities.h
//
//  Contains:   Some utilities for working with QuickTime movies.
//              All utilities start with the prefix "QTUtils_".
//
//  Written by: Tim Monroe
//              Based on the DTSQTUtilities package by Apple DTS.
//              This is essentially a subset of that package, revised for cross-platform use.
//
//  Copyright:  © 1996-1999 by Apple Computer, Inc., all rights reserved.
//
//  Change History (most recent first):
//
//     <2>      02/03/99    rtm     moved non-QTVR-specific utilities from QTVRUtilities to here
//     <1>      09/10/97    rtm     first file
//     
//////////
 
#pragma once
 
 
//////////
//
// header files
//
//////////
 
#ifndef __QTUtilities__
#define __QTUtilities__
 
#ifndef __MOVIES__
#include <Movies.h>
#endif
 
#ifndef __MOVIESFORMAT__
#include <MoviesFormat.h>
#endif
 
#ifndef __MEDIAHANDLERS__
#include <MediaHandlers.h>
#endif
 
#ifndef __NUMBERFORMATTING__
#include <NumberFormatting.h>
#endif
 
#ifndef __QUICKTIMECOMPONENTS__
#include <QuickTimeComponents.h>
#endif
 
#ifndef __QUICKTIMEVR__
#include <QuickTimeVR.h>
#endif
 
#ifndef __QTSMOVIE__
#include <QTSMovie.h>
#endif
 
#ifndef __ENDIAN__
#include <Endian.h>
#endif
 
#ifndef __GESTALT__
#include <Gestalt.h>
#endif
 
#ifndef __FIXMATH__
#include <FixMath.h>
#endif
 
#ifndef __MACWINDOWS__
#include <MacWindows.h>
#endif
 
#ifndef __PRINTING__
#include <Printing.h>
#endif
 
#ifndef __SCRIPT__
#include <Script.h>
#endif
 
#ifndef __SOUND__
#include <Sound.h>
#endif
 
#ifndef _STRING_H
#include <string.h>
#endif
 
#ifndef _STDLIB_H
#include <stdlib.h>
#endif
 
#ifndef __TEXTUTILS__
#include <TextUtils.h>
#endif
 
#ifndef __TRAPS__
#include <Traps.h>
#endif
 
 
//////////
//
// compiler macros
//
//////////
 
#ifndef min
#define min(a, b)                   ((a)<(b)?(a):(b))
#endif
 
 
//////////
//
// compiler flags
//
//////////
 
#define CONTENT_RATING_AVAIL        0           // is movie content-rating capability implemented?
 
 
//////////
//
// constants
//
//////////
 
// constants used for QTUtils_SaveMovie
#define kSavePrompt                 "Save Movie as:"
#define kSaveMovieFileName          "untitled.mov"
#define kSaveResName                "Movie Resource"
 
// constants used for QTUtils_PrintMoviePICT
enum eQTUPICTPrinting {
    kPrintFrame                     = 1, 
    kPrintPoster                    = 2
};
 
// constants used for QTUtils_GetMovieFileLoopingInfo
enum {
    kNormalLooping                  = 0, 
    kPalindromeLooping              = 1, 
    kNoLooping                      = 2
};
 
#define kQTVideoEffectsMinVers      0x0300      // version of QT that first supports QT video effects
#define kQTFullScreenMinVers        0x0209      // version of QT that first supports full-screen calls
#define kQTWiredSpritesMinVers      0x0300      // version of QT that first supports wired sprites
 
// constants for GetQuickTimePreference/SetQuickTimePreference settings
#define kConnectionSpeedPrefsType   FOUR_CHAR_CODE('cspd')
#define kContentRatingPrefsType     FOUR_CHAR_CODE('crat')
 
enum {
    kQTUtilsSpeakerButton           = mcFlagSuppressSpeakerButton,
    kQTUtilsStepButtons             = mcFlagSuppressStepButtons,
    kQTUtilsBackButton              = mcFlagQTVRSuppressBackBtn,
    kQTUtilsZoomButtons             = mcFlagQTVRSuppressZoomBtns,
    kQTUtilsHotSpotButton           = mcFlagQTVRSuppressHotSpotBtn,
    kQTUtilsTranslateButton         = mcFlagQTVRSuppressTranslateBtn,
    kQTUtilsHelpText                = mcFlagQTVRSuppressHelpText,
    kQTUtilsHotSpotNames            = mcFlagQTVRSuppressHotSpotNames,
    kQTUtilsCustomButton            = mcFlagsUseCustomButton,
 
    // these are to support existing code that uses our older names
    kQTVRSpeakerButton              = mcFlagSuppressSpeakerButton,
    kQTVRBackButton                 = mcFlagQTVRSuppressBackBtn,
    kQTVRZoomButtons                = mcFlagQTVRSuppressZoomBtns,
    kQTVRHotSpotButton              = mcFlagQTVRSuppressHotSpotBtn,
    kQTVRTranslateButton            = mcFlagQTVRSuppressTranslateBtn,
    kQTVRHelpText                   = mcFlagQTVRSuppressHelpText,
    kQTVRHotSpotNames               = mcFlagQTVRSuppressHotSpotNames,
    kQTVRCustomButton               = mcFlagsUseCustomButton
};
 
// default window position
#ifndef kDefaultWindowX
#define kDefaultWindowX             50
#endif
 
#ifndef kDefaultWindowY
#define kDefaultWindowY             50
#endif
 
 
//////////
//
// data types
//
//////////
 
#if CONTENT_RATING_AVAIL
// structure of content rating data for GetQuickTimePreference
struct ContentRatingPrefsRecord {
    UInt16                          fContentRating;
    UInt16                          fContentTypes;
};
typedef struct ContentRatingPrefsRecord ContentRatingPrefsRecord;
#endif
 
 
//////////
//
// function prototypes
//
//////////
 
Boolean                     QTUtils_TrapAvailable (short theTrapWord);
Boolean                     QTUtils_IsQuickTimeInstalled (void); 
Boolean                     QTUtils_IsQuickTimeCFMInstalled (void);
long                        QTUtils_GetQTVersion (void);
Boolean                     QTUtils_HasQuickTimeVideoEffects (void);
Boolean                     QTUtils_HasFullScreenSupport (void);
Boolean                     QTUtils_HasWiredSprites (void);
Boolean                     QTUtils_IsQTVRMovie (Movie theMovie);
Boolean                     QTUtils_IsStreamedMovie (Movie theMovie);
Boolean                     QTUtils_IsAutoPlayMovie (Movie theMovie);
Boolean                     QTUtils_IsControllerBarVisible (MovieController theMC); 
short                       QTUtils_GetControllerBarHeight (MovieController theMC);
void                        QTUtils_HideControllerBar (MovieController theMC);
void                        QTUtils_ShowControllerBar (MovieController theMC);
void                        QTUtils_ToggleControllerBar (MovieController theMC);
void                        QTUtils_PutControllerBarOnTop (MovieController theMC);
void                        QTUtils_HideControllerButton (MovieController theMC, long theButton); 
void                        QTUtils_ShowControllerButton (MovieController theMC, long theButton); 
void                        QTUtils_ToggleControllerButton (MovieController theMC, long theButton);
void                        QTUtils_ResetControllerButton (MovieController theMC, long theButton);
void                        QTUtils_ShowCustomButton (MovieController theMC);
Boolean                     QTUtils_IsControllerButtonVisible (MovieController theMC, long theButton);
Boolean                     QTUtils_IsMediaTypeInMovie (Movie theMovie, OSType theMediaType);
Boolean                     QTUtils_MovieHasTimeCodeTrack (Movie theMovie);
Boolean                     QTUtils_MovieHasSoundTrack (Movie theMovie);
MediaHandler                QTUtils_GetSoundMediaHandler (Movie theMovie);
OSErr                       QTUtils_UpdateMovieVolumeSetting (Movie theMovie);
OSErr                       QTUtils_SelectAllMovie (MovieController theMC);
OSErr                       QTUtils_SelectNoneMovie (MovieController theMC);
ImageDescriptionHandle      QTUtils_MakeSampleDescription (long theEffectType, short theWidth, short theHeight);
OSErr                       QTUtils_GetContentRatingFromMovie (Movie theMovie, UInt16 *theRating, UInt32 *theReasons);
OSErr                       QTUtils_AddContentRatingToMovie (Movie theMovie, UInt16 theRating, UInt32 theReasons);
OSErr                       QTUtils_AddUserDataTextToMovie (Movie theMovie, char *theText, OSType theType);
OSErr                       QTUtils_AddCopyrightToMovie (Movie theMovie, char *theText);
OSErr                       QTUtils_AddMovieNameToMovie (Movie theMovie, char *theText);
OSErr                       QTUtils_AddMovieInfoToMovie (Movie theMovie, char *theText);
OSErr                       QTUtils_GetMovieFileLoopingInfo (Movie theMovie, long *theLoopInfo);
OSErr                       QTUtils_SetMovieFileLoopingInfo (Movie theMovie, long theLoopInfo);
OSErr                       QTUtils_SetLoopingStateFromFile (Movie theMovie, MovieController theMC);
OSErr                       QTUtils_MakeMovieLoop (Movie theMovie, Boolean isPalindrome);
OSErr                       QTUtils_GetWindowPositionFromFile (Movie theMovie, Point *thePoint);
char *                      QTUtils_GetTrackName (Track theTrack);
OSErr                       QTUtils_SetTrackName (Track theTrack, char *theText);
char *                      QTUtils_MakeTrackNameByType (Track theTrack);
Boolean                     QTUtils_IsImageFile (FSSpec *theFSSpec);
Boolean                     QTUtils_IsMovieFile (FSSpec *theFSSpec);
void                        QTUtils_ConvertFloatToBigEndian (float *theFloat);
StringPtr                   QTUtils_ConvertCToPascalString (char *theString);
char *                      QTUtils_ConvertPascalToCString (StringPtr theString);
OSErr                       QTUtils_DeleteAllReferencesToTrack (Track theTrack);
TimeValue                   QTUtils_GetFrameDuration (Track theTrack);
long                        QTUtils_GetFrameCount (Track theTrack);
void                        QTUtils_GetMaxWindowDepth (CWindowPtr theWindow, short *thePixelType, short *thePixelSize);
void                        QTUtils_GetMaxScreenDepth (Rect *theGlobalRect, short *thePixelType, short *thePixelSize);
long                        QTUtils_GetUsersConnectionSpeed (void);
OSErr                       QTUtils_SetUsersConnectionSpeed (long theSpeed);
OSErr                       QTUtils_GetUsersContentRating (UInt32 *theType, UInt16 *theRating);
OSType                      QTUtils_GetControllerType (Movie theMovie);
OSErr                       QTUtils_SetControllerType (Movie theMovie, OSType theType);
MovieController             QTUtils_ChangeControllerType (MovieController theMC, OSType theType, long theFlags);
 
#endif  // __QTUtilities__