Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

479 lines
17 KiB

5 years ago
/*
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__ */