mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-07 17:29:36 +00:00
1
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user