summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/Translation.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/Translation.h')
-rw-r--r--common/quicktime_win32/Translation.h478
1 files changed, 478 insertions, 0 deletions
diff --git a/common/quicktime_win32/Translation.h b/common/quicktime_win32/Translation.h
new file mode 100644
index 0000000..050f604
--- /dev/null
+++ b/common/quicktime_win32/Translation.h
@@ -0,0 +1,478 @@
+/*
+ File: Translation.h
+
+ Contains: Translation Manager (Macintosh Easy Open) Interfaces.
+
+ Version: QuickTime 7.3
+
+ Copyright: (c) 2007 (c) 1991-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 __TRANSLATION__
+#define __TRANSLATION__
+
+#ifndef __MACTYPES__
+#include <MacTypes.h>
+#endif
+
+#ifndef __FILES__
+#include <Files.h>
+#endif
+
+#ifndef __COMPONENTS__
+#include <Components.h>
+#endif
+
+#ifndef __TRANSLATIONEXTENSIONS__
+#include <TranslationExtensions.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
+
+/* enumerated types on how a document can be opened*/
+typedef short DocOpenMethod;
+enum {
+ domCannot = 0,
+ domNative = 1,
+ domTranslateFirst = 2,
+ domWildcard = 3
+};
+
+/* 0L terminated array of OSTypes, or FileTypes*/
+typedef OSType TypesBlock[64];
+typedef OSType * TypesBlockPtr;
+/* Progress dialog resource ID*/
+enum {
+ kTranslationScrapProgressDialogID = -16555
+};
+
+/* block of data that describes how to translate*/
+struct FileTranslationSpec {
+ OSType componentSignature;
+ const void * translationSystemInfo;
+ FileTypeSpec src;
+ FileTypeSpec dst;
+};
+typedef struct FileTranslationSpec FileTranslationSpec;
+typedef FileTranslationSpec * FileTranslationSpecArrayPtr;
+typedef FileTranslationSpecArrayPtr * FileTranslationSpecArrayHandle;
+
+/*****************************************************************************************
+*
+* GetFileTypesThatAppCanNativelyOpen
+*
+* This routine returns a list of all FileTypes that an application can open by itself
+*
+* Enter: appVRefNumHint volume where application resides (can be wrong, and if is, will be used as a starting point)
+* appSignature signature (creator) of application
+* nativeTypes pointer to a buffer to be filled with up to 64 FileTypes
+*
+* Exit: nativeTypes zero terminated array of FileTypes that can be opened by app
+*/
+/*
+ * GetFileTypesThatAppCanNativelyOpen()
+ *
+ * Availability:
+ * Non-Carbon CFM: in Translation 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetFileTypesThatAppCanNativelyOpen(
+ short appVRefNumHint,
+ OSType appSignature,
+ FileType * nativeTypes) TWOWORDINLINE(0x701C, 0xABFC);
+
+
+/*****************************************************************************************
+*
+* ExtendFileTypeList
+*
+* This routine makes a new list of file types that can be translated into a type in the given list
+* Used by StandardFile
+*
+* Enter: originalTypeList pointer to list of file types that can be opened
+* numberOriginalTypes number of file types in orgTypeList
+* extendedTypeList pointer to a buffer to be filled with file types
+* numberExtendedTypes max number of file types that can be put in extendedTypeList
+*
+* Exit: extendedTypeList buffer filled in with file types that can be translated
+* numberExtendedTypes number of file types put in extendedTypeList
+*/
+/*
+ * ExtendFileTypeList()
+ *
+ * Availability:
+ * Non-Carbon CFM: in Translation 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+ExtendFileTypeList(
+ const FileType * originalTypeList,
+ short numberOriginalTypes,
+ FileType * extendedTypeList,
+ short * numberExtendedTypes) TWOWORDINLINE(0x7009, 0xABFC);
+
+
+
+/*****************************************************************************************
+*
+*
+* This routine checks if a file can be opened by a particular application.
+* If so, it returns if it needs to be translated first, and if so then how.
+* The FileTypes that the app can open are specified by nativelyOpenableTypes,
+* or if it is NULL, GetFileTypesThatAppCanNativelyOpen is called.
+*
+* Enter: targetDocument document to check if it can be opened
+* appVRefNumHint vRefNum of application to open doc ( can be wrong, and if is, will be used as a starting point)
+* appSignature signature (creator) of application to open doc
+* nativeTypes zero terminated list of FileTypes app can open natively, or NULL to use default list
+* onlyNative whether to consider if document can be translated before opening
+* howToOpen pointer to buffer in which to put how the document can be opened
+* howToTranslate pointer to buffer in which to put a FileTranslationSpec record
+*
+* Exit: howToOpen whether file needs to be translated to be read
+* howToTranslate if file can be translated, buffer filled in with how to translate
+* returns noErr, noPrefAppErr
+*/
+/*
+ * CanDocBeOpened()
+ *
+ * Availability:
+ * Non-Carbon CFM: in Translation 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+CanDocBeOpened(
+ const FSSpec * targetDocument,
+ short appVRefNumHint,
+ OSType appSignature,
+ const FileType * nativeTypes,
+ Boolean onlyNative,
+ DocOpenMethod * howToOpen,
+ FileTranslationSpec * howToTranslate) TWOWORDINLINE(0x701E, 0xABFC);
+
+
+
+/*****************************************************************************************
+*
+* GetFileTranslationPaths
+*
+* This routine returns a list of all ways a translation can occure to or from a FileType.
+* The app is checked to exist. The hint for each app is the VRefNum and DTRefNum
+*
+* Enter: srcDoc source file or NULL for all matches
+* dstDoc destination FileType or 0 for all matches
+* maxResultCount
+* resultBuffer
+* Exit: number of paths
+*/
+/*
+ * GetFileTranslationPaths()
+ *
+ * Availability:
+ * Non-Carbon CFM: in Translation 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( short )
+GetFileTranslationPaths(
+ const FSSpec * srcDocument,
+ FileType dstDocType,
+ unsigned short maxResultCount,
+ FileTranslationSpecArrayPtr resultBuffer) TWOWORDINLINE(0x7038, 0xABFC);
+
+
+/*****************************************************************************************
+*
+* GetPathFromTranslationDialog
+*
+* This routine, with a given document, application, and a passed typelist will display the
+* Macintosh Easy Open translation dialog allowing the user to make a choice. The choice
+* made will be written as a preference (so the next call to CanDocBeOpened() will work).
+* The routine returns the translation path information.
+*
+* Enter: theDocument FSSpec to document to open
+* theApplication FSSpec to application to open document
+* typeList Nil terminated list of FileType's (e.g. SFTypeList-like) of types
+* you would like the documented translated to. Order most perferred
+* to least.
+*
+* Exit: howToOpen Translation method needed to open document
+* howToTranslate Translation specification
+* returns Any errors that might occur.
+*/
+/*
+ * GetPathFromTranslationDialog()
+ *
+ * Availability:
+ * Non-Carbon CFM: in Translation 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetPathFromTranslationDialog(
+ const FSSpec * theDocument,
+ const FSSpec * theApplication,
+ TypesBlockPtr typeList,
+ DocOpenMethod * howToOpen,
+ FileTranslationSpec * howToTranslate) TWOWORDINLINE(0x7037, 0xABFC);
+
+
+
+/*****************************************************************************************
+*
+* TranslateFile
+*
+* This routine reads a file of one format and writes it to another file in another format.
+* The information on how to translated is generated by the routine CanDocBeOpened.
+* TranslateFile calls through to the TranslateFile Extension's DoTranslateFile routine.
+* The destination file must not exist. It is created by this routine.
+*
+* Enter: sourceDocument input file to translate
+* destinationDocument output file of translation
+* howToTranslate pointer to info on how to translate
+* Exit: returns noErr, badTranslationSpecErr
+*/
+/*
+ * TranslateFile()
+ *
+ * Availability:
+ * Non-Carbon CFM: in Translation 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+TranslateFile(
+ const FSSpec * sourceDocument,
+ const FSSpec * destinationDocument,
+ const FileTranslationSpec * howToTranslate) TWOWORDINLINE(0x700C, 0xABFC);
+
+
+/*****************************************************************************************
+*
+* GetDocumentKindString
+*
+* This routine returns the string the Finder should show for the "kind" of a document
+* in the GetInfo window and in the kind column of a list view.
+*
+* Enter: docVRefNum The volume containing the document
+* docType The catInfo.fdType of the document
+* docCreator The catInfo.fdCreator of the document
+* kindString pointer to where to return the string
+*
+* Exit: kindString pascal string. Ex: "\pSurfCalc spreadsheet"
+* returns noErr, or afpItemNoFound if kind could not be determined
+*/
+/*
+ * GetDocumentKindString()
+ *
+ * Availability:
+ * Non-Carbon CFM: in Translation 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetDocumentKindString(
+ short docVRefNum,
+ OSType docType,
+ OSType docCreator,
+ Str63 kindString) TWOWORDINLINE(0x7016, 0xABFC);
+
+
+/*****************************************************************************************
+*
+* GetTranslationExtensionName
+*
+* This routine returns the translation system name from a specified TranslationSpec
+*
+* Enter: translationMethod The translation path to get the translation name from
+*
+* Exit: extensionName The name of the translation system
+* returns Any errors that might occur
+*/
+/*
+ * GetTranslationExtensionName()
+ *
+ * Availability:
+ * Non-Carbon CFM: in Translation 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+GetTranslationExtensionName(
+ const FileTranslationSpec * translationMethod,
+ Str31 extensionName) TWOWORDINLINE(0x7036, 0xABFC);
+
+
+
+/*****************************************************************************************
+*
+* GetScrapDataProcPtr
+*
+* This is a prototype for the function you must supply to TranslateScrap. It is called to
+* get the data to be translated. The first call TranslateScrap will make to this is to
+* ask for the 'fmts' data. That is a special. You should resize and fill in the handle
+* with a list all the formats that you have available to be translated, and the length of each.
+* (See I.M. VI 4-23 for details of 'fmts'). It will then be called again asking for one of
+* the formats that 'fmts' list said was available.
+*
+* Enter: requestedFormat Format of data that TranslateScrap needs.
+* dataH Handle in which to put the requested data
+* srcDataGetterRefCon Extra parameter for you passed to TranslateScrap
+*
+* Exit: dataH Handle is resized and filled with data in requested format
+*/
+typedef CALLBACK_API( OSErr , GetScrapDataProcPtr )(ScrapType requestedFormat, Handle dataH, void *srcDataGetterRefCon);
+typedef STACK_UPP_TYPE(GetScrapDataProcPtr) GetScrapDataUPP;
+/*
+ * NewGetScrapDataUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( GetScrapDataUPP )
+NewGetScrapDataUPP(GetScrapDataProcPtr userRoutine);
+#if !OPAQUE_UPP_TYPES
+ enum { uppGetScrapDataProcInfo = 0x00000FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */
+ #ifdef __cplusplus
+ inline DEFINE_API_C(GetScrapDataUPP) NewGetScrapDataUPP(GetScrapDataProcPtr userRoutine) { return (GetScrapDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppGetScrapDataProcInfo, GetCurrentArchitecture()); }
+ #else
+ #define NewGetScrapDataUPP(userRoutine) (GetScrapDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppGetScrapDataProcInfo, GetCurrentArchitecture())
+ #endif
+#endif
+
+/*
+ * DisposeGetScrapDataUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+DisposeGetScrapDataUPP(GetScrapDataUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(void) DisposeGetScrapDataUPP(GetScrapDataUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
+ #else
+ #define DisposeGetScrapDataUPP(userUPP) DisposeRoutineDescriptor(userUPP)
+ #endif
+#endif
+
+/*
+ * InvokeGetScrapDataUPP()
+ *
+ * Availability:
+ * Non-Carbon CFM: available as macro/inline
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( OSErr )
+InvokeGetScrapDataUPP(
+ ScrapType requestedFormat,
+ Handle dataH,
+ void * srcDataGetterRefCon,
+ GetScrapDataUPP userUPP);
+#if !OPAQUE_UPP_TYPES
+ #ifdef __cplusplus
+ inline DEFINE_API_C(OSErr) InvokeGetScrapDataUPP(ScrapType requestedFormat, Handle dataH, void * srcDataGetterRefCon, GetScrapDataUPP userUPP) { return (OSErr)CALL_THREE_PARAMETER_UPP(userUPP, uppGetScrapDataProcInfo, requestedFormat, dataH, srcDataGetterRefCon); }
+ #else
+ #define InvokeGetScrapDataUPP(requestedFormat, dataH, srcDataGetterRefCon, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppGetScrapDataProcInfo, (requestedFormat), (dataH), (srcDataGetterRefCon))
+ #endif
+#endif
+
+#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
+ /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
+ #define NewGetScrapDataProc(userRoutine) NewGetScrapDataUPP(userRoutine)
+ #define CallGetScrapDataProc(userRoutine, requestedFormat, dataH, srcDataGetterRefCon) InvokeGetScrapDataUPP(requestedFormat, dataH, srcDataGetterRefCon, userRoutine)
+#endif /* CALL_NOT_IN_CARBON */
+
+typedef GetScrapDataUPP GetScrapData;
+/*****************************************************************************************
+*
+* TranslateScrap
+*
+* This routine resizes the destination handle and fills it with data of the requested format.
+* The data is generated by translated one or more source formats of data supplied by
+* the procedure srcDataGetter.
+* This routine is automatically called by GetScrap and ReadEdition. You only need to call
+* this if you need to translated scrap style data, but are not using the ScrapMgr or EditionMgr.
+*
+* Enter: sourceDataGetter Pointer to routine that can get src data
+* sourceDataGetterRefCon Extra parameter for dataGetter
+* destinationFormat Format of data desired
+* destinationData Handle in which to store translated data
+*
+* Exit: dstData Handle is resized and filled with data in requested format
+*/
+/*
+ * TranslateScrap()
+ *
+ * Availability:
+ * Non-Carbon CFM: in Translation 1.0 and later
+ * CarbonLib: in CarbonLib 1.0 and later
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API( OSErr )
+TranslateScrap(
+ GetScrapDataUPP sourceDataGetter,
+ void * sourceDataGetterRefCon,
+ ScrapType destinationFormat,
+ Handle destinationData,
+ short progressDialogID) TWOWORDINLINE(0x700E, 0xABFC);
+
+
+
+
+
+#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 /* __TRANSLATION__ */
+