diff options
Diffstat (limited to 'common/quicktime_win32/PMPrinterBrowsers.h')
| -rw-r--r-- | common/quicktime_win32/PMPrinterBrowsers.h | 301 |
1 files changed, 301 insertions, 0 deletions
diff --git a/common/quicktime_win32/PMPrinterBrowsers.h b/common/quicktime_win32/PMPrinterBrowsers.h new file mode 100644 index 0000000..79785ee --- /dev/null +++ b/common/quicktime_win32/PMPrinterBrowsers.h @@ -0,0 +1,301 @@ +/* + File: PMPrinterBrowsers.h + + Contains: Mac OS X Printing Manager Printer Browser Module Interfaces + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1999-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 __CONTROLS__ +#include <Controls.h> +#endif + +#ifndef __CFUUID__ +#include <CFUUID.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 + +/* +Current version of the printer browser module API, which specifies the format +of the functions and various structures used in the API. +*/ +#define kPMPrBrowserAPIVersion 1 +/* +Constants required for retrieving standard icons supplied by PrintCenter... + +Any standard icons supplied by PrintCenter for use in displaying printer +browser HI will have been registered with Icon Services when the printer +browser module is loaded. The printer browser module need only call GetIconRef() +with the appropriate constants to obtain a reference to the required icon. + +PrintCenter creator code. +*/ +enum { + kPMPrBrowserPCCreator = FOUR_CHAR_CODE('pctr'), + kPMPrBrowserWorksetPrinterIconType = FOUR_CHAR_CODE('wspr'), + kPMPrBrowserUnknownPrinterIconType = FOUR_CHAR_CODE('?ptr') +}; + +/* +PrintCenter flags... + +These flags are passed by PrintCenter in the Prologue() function. +*/ +typedef UInt32 PMPrBrowserFlags; +enum { + kPMPrBrowserPCNoFlags = 0x00000000, /* Empty flag word. */ + kPMPrBrowserPCNoUI = 0x00000001, /* PBM will be loaded without UI. */ + kPMPrBrowserPCAllFlags = (unsigned long)0xFFFFFFFF /* All flags set. */ +}; + +/* +Printer browser module CFPlugIn constants. + +Define the CFPlugIn Type for printer browser modules. All printer browser modules +must be plug-ins of this type. + +Users of these IDs should convert these to CFStrings (probably using the CFSTR +macro) and then call CFUUIDCreateFromString() to obtain a CFUUIDRef. Note that +the CFUUIDRef may refer to an existing CFUUID, so the caller should call +CFRelease() on the CFUUIDRef() when he no longer needs it. +*/ +#define kPMPrBrowserPlugInType "23F71E46-95CC-1226-AC04-000502ADB00B" +/* +Define the ID of the Interface that supplies the APIVersion() function. All +printer browser modules must supply this Interface. +*/ +#define kPMInterfaceAPIVersion "1D6BF822-95D0-1226-A8ED-000502ADB00B" +/* +Define the ID of the Interface that supplies the printer browser module API. All +printer browser modules must supply this Interface. +*/ +#define kPMInterfacePrBrowser "86544C22-95D0-1226-91D5-000502ADB00B" + +/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + Type Definitions +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ +typedef struct OpaquePMPrBrowserRef* PMPrBrowserRef; +typedef struct OpaquePMPrBrowserContext* PMPrBrowserContext; +/* +Invalid printer browser reference number. +*/ +#define kPMPrBrowserInvalidRef ((PMPrBrowserRef)(-1)) +/* +Printer browser module-specific keys for the printer lookup specification +dictionary. This CFDictionary is supplied by the printer module and provides +the printer browser module with the information it needs to browse for a given +type of printer over its connection type, and to display it in the browser +view. + +The printer module supplies the following keys and values (these are more +fully defined in PMPrinterModule.h): + +kPMPrBrowserLookupKindKey: a CFStringRef to a human-readable printer type +string that can be displayed in the browser view. + +kPMPrBrowserLookupInfoKey: a CFPropertyListRef to connection-specific +information used to look up a particular kind of printer over a given IO +connection. + +kPMPrBrowserLookupIconKey: a CFDataRef to the icon family data for the +printer icon to be displayed in the browser view. + +In addition, PrintCenter adds the following information to the lookup +specification dictionary: + +kPMPrBrowserLookupRefKey: a CFTypeRef to PrintCenter-specific information +that must be returned by the printer browser module in the printer selection +specfication dictionary (see below) when a printer is selected that was +located using this lookup specification. + +PrintCenter informs the printer browser module of the number of lookup +specification dictionaries that are available when the module's Initialize() +function is called. Thereafter, the printer browser module can obtain +a copy of any of the lookup specification dictionaries by calling the +PMPrBrowserGetLookupSpec callback and specifying an index between 0 and n-1, +where n is the number of lookup specification dictionaries. + +PrintCenter creates a full copy of the printer lookup specification dictionary +before passing it to the printer browser module; the printer browser module +should call ::CFRelease() on the dictionary when it is no longer needed. +*/ +#define kPMPrBrowserLookupRefStr "PrBrowser Lookup Reference" +#define kPMPrBrowserLookupRefKey CFSTR("PrBrowser Lookup Reference") +/* +Keys for the printer selection specification dictionary. This CFDictionary +specifies the printers selected in the browser view. An array of these +dictionaries is is passed back to PrintCenter when it calls the printer +browser module's GetSelectedPrinters() function. + +An array of selection specification dictionaries is passed from PrintCenter +to the printer browser module when PrintCenter calls the WorksetPrinters() +function. These dictionaries specify which printers are already in the +Workset. The printer browser module can use this information to indicate in +its UI whether a printer has been added to the Workset. It can also use +this information in non-UI mode to avoid supplying duplicate printers during +automatic printer discovery. + +kPMPrBrowserSelectNameKey corresponds to a CFStringRef to a human-readable +printer name string, obtained from the printer or otherwise constructed by +the printer browser module. + +kPMPrBrowserSelectKindKey corresponds to a CFStringRef to a human-readable +printer description string that can be displayed in the PrintCenter Workset +window. For printer that uses Apple's PostScript printer module over an +AppleTalk connection, this would be the string "PostScript printer". Often +this is the same as the string corresponding to kPMPrBrowserLookupKindKey +in the printer lookup specification dictionary, but it is possible that +more specific printer model information might be obtained by the printer +browser module during the lookup. + +kPMPrBrowserSelectAddrKey corresponds to a CFDataRef to a connection-specific +address specification for the printer. On an AppleTalk connection, this would +be a standard NBP address of the form <name>:<type>@<zone>. + +kPMPrBrowserSelectRefKey corresponds to a CFTypeRef whose value is the same +as that corresponding to kPMPrBrowserLookupRefKey in the printer lookup +specification dictionary. The reference value in the lookup specification +dictionary that was used to locate the selected printer must be copied into +the printer selection specification dictionary and assigned this key. + +When PrintCenter supplies printer selection specification dictionaries using +the WorksetPrinters() function, the dictionaries do not contain a +kPMPrBrowserSelectRefKey entry; the printer browser module should not expect +to find a corresponding value for this key in those dictionaries. + +PrintCenter gets information about selected printers when it calls the +printer browser module's GetSelectedPrinters() function. + +PrintCenter will call ::CFRelease() on the printer selection specification +dictionary when it is no longer needed. + +The printer browser module should call ::CFRelease() on the array of +printer selection specification dictionaries supplied via the WorksetPrinters() +function when they are no longer needed. +*/ +#define kPMPrBrowserSelectNameStr "PrBrowser Selection Name" +#define kPMPrBrowserSelectNameKey CFSTR("PrBrowser Selection Name") +#define kPMPrBrowserSelectKindStr "PrBrowser Selection Kind" +#define kPMPrBrowserSelectKindKey CFSTR("PrBrowser Selection Kind") +#define kPMPrBrowserSelectAddrStr "PrBrowser Selection Address" +#define kPMPrBrowserSelectAddrKey CFSTR("PrBrowser Selection Address") +#define kPMPrBrowserSelectRefStr "PrBrowser Selection Reference" +#define kPMPrBrowserSelectRefKey CFSTR("PrBrowser Selection Reference") +/* +PrintCenter callback routines for printer browser modules. +*/ +typedef CALLBACK_API_C( OSStatus , PMPrBrowserGetLookupSpecProcPtr )(PMPrBrowserRef ref, UInt32 specIndex, CFDictionaryRef *lookupSpec); +typedef CALLBACK_API_C( OSStatus , PMPrBrowserSelectionStatusProcPtr )(PMPrBrowserRef ref, Boolean selected, Boolean addNow); +typedef CALLBACK_API_C( OSStatus , PMPrBrowserSyncRequestProcPtr )(PMPrBrowserRef ref); +/* +Callback parameter block. +*/ +struct PMPrBrowserCallbacks { + CFIndex version; /* Version number; always set to kPMPrBrowserAPIVersion. */ + + PMPrBrowserGetLookupSpecProcPtr getLookupSpec; + PMPrBrowserSyncRequestProcPtr syncRequest; + PMPrBrowserSelectionStatusProcPtr selStatus; +}; +typedef struct PMPrBrowserCallbacks PMPrBrowserCallbacks; +typedef PMPrBrowserCallbacks * PMPrBrowserCallbacksPtr; +/* +Required entry points for printer browser modules... +*/ +typedef CALLBACK_API_C( UInt32 , PMPrBrowserAPIVersionProcPtr )(void); +typedef CALLBACK_API_C( OSStatus , PMPrBrowserGetSelectedPrintersProcPtr )(PMPrBrowserContext context, CFArrayRef *printers); +typedef CALLBACK_API_C( OSStatus , PMPrBrowserInitializeProcPtr )(PMPrBrowserContext context, PMPrBrowserRef ref, PMPrBrowserCallbacks *callbacks, ControlRef pbUserPaneCtlHdl, UInt32 numLookupSpecs); +typedef CALLBACK_API_C( OSStatus , PMPrBrowserPrologueProcPtr )(PMPrBrowserContext *context, PMPrBrowserFlags prologueFlags, CFStringRef *title, UInt32 *minH, UInt32 *minV, UInt32 *maxH, UInt32 *maxV); +typedef CALLBACK_API_C( OSStatus , PMPrBrowserResizeProcPtr )(PMPrBrowserContext context, const Rect *frameRect); +typedef CALLBACK_API_C( OSStatus , PMPrBrowserSyncProcPtr )(PMPrBrowserContext context); +typedef CALLBACK_API_C( OSStatus , PMPrBrowserTerminateProcPtr )(PMPrBrowserContext context, OSStatus status); +typedef CALLBACK_API_C( OSStatus , PMPrBrowserWorksetPrintersProcPtr )(PMPrBrowserContext context, CFArrayRef printers); +typedef CALLBACK_API_C( SInt32 , PMCOMQueryInterfaceProcPtr )(void *thisPointer, CFUUIDBytes iid, void **ppv); +typedef CALLBACK_API_C( UInt32 , PMCOMAddRefProcPtr )(void * thisPointer); +typedef CALLBACK_API_C( UInt32 , PMCOMReleaseProcPtr )(void * thisPointer); +/* + Same as IUnknownVTbl from CFPluginCOM.h, but we don't want to drag in that header + because it defines many Windows types that could collide with other definitions +*/ +struct PMIUnknownVTbl { + void * _reserved; + PMCOMQueryInterfaceProcPtr QueryInterface; + PMCOMAddRefProcPtr AddRef; + PMCOMReleaseProcPtr Release; +}; +typedef struct PMIUnknownVTbl PMIUnknownVTbl; +/* +Define the Interface structures returned by Factories. + +PMInterfaceAPIVersion Interface... +*/ +struct PMInterfaceAPIVersion { + PMIUnknownVTbl u; /* Supplies COM compatibility; required of all CFPlugIns. */ + + PMPrBrowserAPIVersionProcPtr apiVersion; +}; +typedef struct PMInterfaceAPIVersion PMInterfaceAPIVersion; +typedef PMInterfaceAPIVersion * PMInterfaceAPIVersionPtr; +/* +PMInterfacePrBrowser Interface... +*/ +struct PMInterfacePrBrowser { + PMIUnknownVTbl u; /* Supplies COM compatibility; required of all CFPlugIns. */ + + /*Required entry points.*/ + PMPrBrowserGetSelectedPrintersProcPtr getSelectedPrinters; + PMPrBrowserInitializeProcPtr initialize; + PMPrBrowserPrologueProcPtr prologue; + PMPrBrowserResizeProcPtr resize; + PMPrBrowserSyncProcPtr sync; + PMPrBrowserTerminateProcPtr terminate; + PMPrBrowserWorksetPrintersProcPtr worksetPrinters; +}; +typedef struct PMInterfacePrBrowser PMInterfacePrBrowser; +typedef PMInterfacePrBrowser * PMInterfacePrBrowserPtr; + +#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 |