summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/PMPrinterModule.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/PMPrinterModule.h')
-rw-r--r--common/quicktime_win32/PMPrinterModule.h460
1 files changed, 460 insertions, 0 deletions
diff --git a/common/quicktime_win32/PMPrinterModule.h b/common/quicktime_win32/PMPrinterModule.h
new file mode 100644
index 0000000..ce04af4
--- /dev/null
+++ b/common/quicktime_win32/PMPrinterModule.h
@@ -0,0 +1,460 @@
+/*
+ File: PMPrinterModule.h
+
+ Contains: Mac OS X Printing Manager Printer 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 __CFSTRING__
+#include <CFString.h>
+#endif
+
+#ifndef __PMTICKET__
+#include <PMTicket.h>
+#endif
+
+#ifndef __PMPLUGINHEADER__
+#include <PMPluginHeader.h>
+#endif
+
+#ifndef __PMERRORS__
+#include <PMErrors.h>
+#endif
+
+#ifndef __PMRASTER__
+#include <PMRaster.h>
+#endif
+
+
+/* context ID for PM Modules */
+
+
+#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
+
+typedef struct OpaquePMContext* PMContext;
+/* Opaque types for image access: */
+typedef struct OpaquePMDrawingCtx* PMDrawingCtx;
+typedef struct OpaquePMImageRef* PMImageRef;
+/* Type ID, interface ID for the IOM CFPlugin */
+#define kPModuleTypeIDStr "5D69ED5E-D5B5-11D3-9EFF-00050209D9C1"
+#define kPModuleIntfIDStr "5EDEC4FA-D5B5-11D3-AAF2-00050209D9C1"
+/* PM API version numbers (see PMPluginHeader.h for the meaning of these defintions) */
+enum {
+ kPMBuildVersionMajor = 1,
+ kPMBuildVersionMinor = 0,
+ kPMBaseVersionMajor = 1,
+ kPMBaseVersionMinor = 0
+};
+
+/*
+Keys for the printer browser specification dictionary. This CFDictionary,
+created by the printer module, provides a 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 PrintCenter's Browser Window.
+
+kPMPrinterBrowserKindKey corresponds to a CFStringRef to a human-readable
+printer type string that can be displayed in the browser view. For a printer
+driven by Apple's PostScript printer module over an AppleTalk connection,
+this would be the string "PostScript printer".
+
+kPMPrinterBrowserInfoKey corresponds to a CFTypeRef to connection-specific
+information used to look up a particular kind of printer over a given IO
+connection. A PostScript printer module supporting AppleTalk might specify
+the NBP lookup string "LaserWriter".
+
+kPMPrinterBrowserIconKey corresponds to a CFDataRef to the icon family data
+for the printer icon to be displayed in the browser view. The family data
+are entirely contained within the CFDataRef; i.e., it is *not* a handle.
+
+kPMPrinterBrowserDeviceIDKey corresponds to a CFStringRef to a USB/Firewire
+IEEE-1284 DeviceID string. e.g., "COMMAND SET: PostScript;" or
+"MFG: Hewlett-Packard; MDL: DeskJet 935C;"
+*/
+#define kPMPrinterBrowserKindKey CFSTR("Printer Browser Kind")
+#define kPMPrinterBrowserInfoKey CFSTR("Printer Browser Info")
+#define kPMPrinterBrowserIconsKey CFSTR("Printer Browser Icons")
+#define kPMPrinterBrowserDeviceIDKey CFSTR("Printer Browser DeviceID")
+enum {
+ kPMBrowserInfoNumValues = 4
+};
+
+
+/* Status and Error notification: */
+
+/*
+ * PMNotificationProcPtr
+ *
+ * Discussion:
+ * A callback routine used for reporting printing status and errors
+ * during a print job Event is constructed with known keys defined
+ * below and passed to the printing manager in notificationDict
+ * notificationReplyDict is used for blocking recoverable errors to
+ * indicate user action
+ */
+typedef CALLBACK_API_C( OSStatus , PMNotificationProcPtr )(const void *jobContext, CFDictionaryRef notificationDict, CFDictionaryRef *notificationReplyDict);
+
+/*
+ * Discussion:
+ * Status and error event codes and keys reported by the printer
+ * module (used in PMNotificationProc)
+ */
+enum {
+
+ /*
+ * non-error printer status
+ */
+ kPMEventPrinterStatus = 4000,
+
+ /*
+ * a fatal printing error has occurred. The Printer Module MUST stop
+ * printing and return immediately after sending this event.
+ */
+ kPMEventErrorOccurred = 4001,
+
+ /*
+ * an auto-recoverable error occurred. The PM SHOULD keep trying to
+ * print the job without waiting for any user action. If the PM
+ * detects that the condition is cleared, it MUST send a
+ * kPMEventRecoverableErrorCleared event, otherwise the condition
+ * alert will not get cleared
+ */
+ kPMEventRecoverableErrorOccurred = 4002,
+
+ /*
+ * auto-recoverable error has been cleared, the job is continued
+ * automatically and without user intervention. This event causes
+ * the condition alert to close and the job state to change to
+ * "printing".
+ */
+ kPMEventRecoverableErrorCleared = 4003
+};
+
+
+/* Event keys used in notification dictionaries */
+#define kPMEventCodeKey CFSTR("com.apple.printing.EventCode")
+/* CFNumber (SInt32) containing the event code (above) */
+#define kPMErrorCodeKey CFSTR("com.apple.printing.ErrorCode")
+/* CFNumber (SInt32) containing the error code (i.e., OSStatus) */
+#define kPMErrorExplanationKey CFSTR("com.apple.printing.ErrorExplanation")
+/* CFString containing the text that shows up as bold text in the error/status alert */
+#define kPMErrorTextKey CFSTR("com.apple.printing.ErrorText")
+/* CFString containing the text that shows up as regular text in the error/status alert */
+#define kPMEventContextKey CFSTR("com.apple.printing.EventContext")
+/* CFNumber (SInt32) containing a context value. Used primarily to match a "cleared error" event with a prior "recoverable error" event */
+/* prototypes for callback routines used for accessing print data */
+typedef CALLBACK_API_C( OSStatus , PMJobStreamOpenProcPtr )(const void * jobContext);
+typedef CALLBACK_API_C( OSStatus , PMJobStreamReadWriteProcPtr )(const void *jobContext, void *buffPtr, UInt32 *size);
+typedef CALLBACK_API_C( OSStatus , PMJobStreamGetPosProcPtr )(const void *jobContext, UInt32 *markerPos);
+typedef CALLBACK_API_C( OSStatus , PMJobStreamSetPosProcPtr )(const void *jobContext, SInt16 posMode, UInt32 markerPos);
+typedef CALLBACK_API_C( OSStatus , PMJobStreamGetNextBandProcPtr )(const void *jobContext, PMRasterBand *pmRasterBand);
+/* the printing manager maintains this struct of callback procs for printer module data access */
+struct PMJobStreamProcs {
+ CFIndex version;
+
+ PMJobStreamOpenProcPtr PMJobStreamOpenProc;
+ PMJobStreamReadWriteProcPtr PMJobStreamReadProc;
+ PMJobStreamReadWriteProcPtr PMJobStreamWriteProc;
+ PMJobStreamGetPosProcPtr PMJobStreamGetPosProc;
+ PMJobStreamSetPosProcPtr PMJobStreamSetPosProc;
+ PMJobStreamGetPosProcPtr PMJobStreamGetEOFProc;
+};
+typedef struct PMJobStreamProcs PMJobStreamProcs;
+/* prototypes for callback routines used for communication with the device/connection */
+typedef CALLBACK_API_C( OSStatus , GetConnInfoProcPtr )(const void *jobContext, CFStringRef *connectionType, CFStringRef *pbmPath);
+typedef CALLBACK_API_C( OSStatus , PMIOOpenProcPtr )(const void * jobContext);
+typedef CALLBACK_API_C( OSStatus , PMIOReadProcPtr )(const void *jobContext, Ptr buffer, UInt32 *size, Boolean *eoj);
+typedef CALLBACK_API_C( OSStatus , PMIOWriteProcPtr )(const void *jobContext, Ptr buffer, UInt32 *size, Boolean eoj);
+typedef CALLBACK_API_C( OSStatus , PMIOStatusProcPtr )(const void *jobContext, CFStringRef *status);
+typedef CALLBACK_API_C( OSStatus , PMIOGetAttributeProcPtr )(const void *jobContext, CFStringRef attribute, CFTypeRef *result);
+typedef CALLBACK_API_C( OSStatus , PMIOSetAttributeProcPtr )(const void *jobContext, CFStringRef attribute, CFTypeRef data);
+typedef CALLBACK_API_C( OSStatus , PMIOCloseProcPtr )(const void * jobContext);
+
+/*
+ * PMIOProcs
+ *
+ * Discussion:
+ * The printing manager maintains this struct of callback procs for
+ * printer module communication with the device
+ */
+struct PMIOProcs {
+ CFIndex version;
+
+ /*
+ * Get connection type string and Printer Browser Module path
+ */
+ GetConnInfoProcPtr GetConnInfoProc;
+
+ /*
+ * Open connection with target printer
+ */
+ PMIOOpenProcPtr PMIOOpenProc;
+
+ /*
+ * Read data from printer
+ */
+ PMIOReadProcPtr PMIOReadProc;
+
+ /*
+ * Write data to printer. Data is not buffered no matter how small
+ * the buffer is. Therefore, it is recommended that the PM do its own
+ * buffering before this call is made.
+ */
+ PMIOWriteProcPtr PMIOWriteProc;
+
+ /*
+ * Get status from the printer if any
+ */
+ PMIOStatusProcPtr PMIOStatusProc;
+
+ /*
+ * Get the value for a particular IOM attribute (see PMIOModule.h for
+ * a list of attributes)
+ */
+ PMIOGetAttributeProcPtr PMIOGetAttributeProc;
+
+ /*
+ * Set a value for a particular IOM attribute (see PMIOModule.h for a
+ * list of attributes)
+ */
+ PMIOSetAttributeProcPtr PMIOSetAttributeProc;
+
+ /*
+ * Close connection with printer.
+ */
+ PMIOCloseProcPtr PMIOCloseProc;
+};
+typedef struct PMIOProcs PMIOProcs;
+typedef CALLBACK_API_C( OSStatus , PMCreatePrinterBrowserModuleInfoProcPtr )(CFStringRef connectionType, CFArrayRef *printerBrowserInfo);
+typedef CALLBACK_API_C( OSStatus , PMInitializeProcPtr )(CFDataRef printerAddress, const void *jobContext, const PMIOProcs *pmIOProcs, PMNotificationProcPtr pmNotificationProc, PMContext *printerModuleContext);
+typedef CALLBACK_API_C( OSStatus , PMCreatePrintingDialogExtensionsPathsProcPtr )(PMContext printerModuleContext, CFArrayRef *pdePaths);
+typedef CALLBACK_API_C( OSStatus , PMCreatePrinterTicketsProcPtr )(PMContext printerModuleContext, PMTicketRef *printerInfo, PMTemplateRef *jobTemplate);
+typedef CALLBACK_API_C( OSStatus , PMBeginJobProcPtr )(PMContext printerModuleContext, const void *jobContext, PMTicketRef jobTicket, PMTicketRef *converterSetup);
+typedef CALLBACK_API_C( OSStatus , PMPrintJobProcPtr )(PMContext printerModuleContext, const void *jobContext, PMTicketRef jobTicket, const PMJobStreamProcs *inDataProcs);
+typedef CALLBACK_API_C( OSStatus , PMPrintPageProcPtr )(PMContext printerModuleContext, const void *jobContext, PMTicketRef jobTicket, PMJobStreamGetNextBandProcPtr pmJobStreamGetNextBandProc);
+typedef CALLBACK_API_C( OSStatus , PMImageAccessProcPtr )(PMContext printerModuleContext, const void *jobContext, CFStringRef grafBase, PMDrawingCtx drawingCtx, PMImageRef imageRef, PMImageRef *outImageRefPtr);
+typedef CALLBACK_API_C( OSStatus , PMCancelJobProcPtr )(PMContext printerModuleContext, const void *jobContext);
+typedef CALLBACK_API_C( OSStatus , PMEndJobProcPtr )(PMContext printerModuleContext, const void *jobContext);
+typedef CALLBACK_API_C( OSStatus , PMTerminateProcPtr )(PMContext *printerModuleContext, const void *jobContext);
+
+/*
+ * PMProcs
+ *
+ * Discussion:
+ * Contains the function pointers required to be exported by a
+ * Printer Module.
+ */
+struct PMProcs {
+
+ /*
+ * The plugin header is required with all plugins and must proceed
+ * object's layout.
+ */
+ PMPlugInHeader pluginHeader;
+
+ /*
+ * For a given connection type in 'connectionType', returns a ticket
+ * containing printer browser information about the supported
+ * printers that can be browsed for on that connection. If the
+ * connection is not supported by the Printer Module,
+ * kPMUnsupportedConnection error is returned.
+ */
+ PMCreatePrinterBrowserModuleInfoProcPtr CreatePrinterBrowserModuleInfo;
+
+ /*
+ * Create a new instance of the Printer Module and place it's
+ * reference in 'printerModuleContext'. Few input parameters are
+ * passed via this API that the PM should store in its local context
+ * block for use during the session; such as: printerAddress,
+ * jobContext (used in callbacks), pmIOProcs (used for communicating
+ * with the device, and pmNotificationProc (used for reporting status
+ * and errors).
+ */
+ PMInitializeProcPtr Initialize;
+
+ /*
+ * Return one or more paths of this Printer Module's Print Dialog
+ * Extension(s) relative to base path /Library/Printers/
+ */
+ PMCreatePrintingDialogExtensionsPathsProcPtr CreatePrintingDialogExtensionsPaths;
+
+ /*
+ * Returns printer module's template and printerinfo tickets to the
+ * caller. A PrinterInfo ticket holds capability and product ID
+ * information whereas a Template holds range and default information
+ * about various print settings
+ */
+ PMCreatePrinterTicketsProcPtr CreatePrinterTickets;
+
+ /*
+ * Called by the Printing Manager to initiate a job. This function is
+ * intended as a "setup" function, so all the information needed to
+ * set up for printing is supplied: jobTicket has the control
+ * parameters for this job, as defined by the application and user;
+ * converterSetp allows the PM to setup a converter via standard
+ * ticket tags.
+ */
+ PMBeginJobProcPtr BeginJob;
+
+ /*
+ * Begin sending print data to the printer. The Printing Manager
+ * calls this API when page boundaries in the job can not be
+ * determined (i.e PM specific format). inDataProcs contains
+ * callbacks to access the print data; see PMJobStreamProcs
+ * definitions above for more info on the callback routines.
+ */
+ PMPrintJobProcPtr PrintJob;
+
+ /*
+ * Send only a specific page to the printer. The PM needs to process
+ * the data and make it ready for the printer hardware.
+ * PMJobStreamGetNextBandProc is a callback to get the next available
+ * band data.
+ */
+ PMPrintPageProcPtr PrintPage;
+
+ /*
+ * This API is called when an image is encountered during conversion.
+ * This allows the Printer Module to access and modify the image
+ * data (imageRef) and drawing context before the image is rasterized
+ * into the page bands. Modified image should be returned in
+ * outImageRefPtr.
+ */
+ PMImageAccessProcPtr ImageAccess;
+
+ /*
+ * Cancel the currently printing job. This function may be called
+ * while the PM is executing code in PrintJob or PrintPage.
+ */
+ PMCancelJobProcPtr CancelJob;
+
+ /*
+ * Finish up the previously printed job.
+ */
+ PMEndJobProcPtr EndJob;
+
+ /*
+ * Dispose of the current PM session data allocated in Initialize.
+ */
+ PMTerminateProcPtr Terminate;
+};
+typedef struct PMProcs PMProcs;
+/* PM interface is an object containing addresses to the module's entry points: */
+struct PMInterface {
+ const PMProcs * vtable;
+};
+typedef struct PMInterface PMInterface;
+typedef const PMInterface * PMInterfaceRef;
+/*
+ Paper names must all be ISO or PPD standard names, so we've defined constants here for
+ developers to use in their code, mostly to make things more readable.
+*/
+
+#define USExecutiveEnvelope CFSTR("Executive")
+#define Envelope9 CFSTR("na-number-9-envelope")
+#define Envelope10 CFSTR("na-number-10-envelope")
+#define Envelope10x15 CFSTR("na-10x15-envelope")
+#define EnvelopeB4 CFSTR("iso-b4-envelope")
+#define EnvelopeB5 CFSTR("iso-b5-envelope")
+#define EnvelopeC3 CFSTR("iso-c3-envelope")
+#define EnvelopeC4 CFSTR("iso-c4-envelope")
+#define EnvelopeC5 CFSTR("iso-c5-envelope")
+#define EnvelopeC6 CFSTR("iso-c6-envelope")
+#define Envelope6x9 CFSTR("na-6x9-envelope")
+#define Envelope7x9 CFSTR("na-7x9-envelope")
+#define Envelope9x11 CFSTR("na-9x11-envelope")
+#define Envelope9x12 CFSTR("na-9x12-envelope")
+#define Envelope10x13 CFSTR("na-10x13-envelope")
+#define Envelope10x14 CFSTR("na-10x14-envelope")
+#define EnvelopeMonarch CFSTR("monarch-envelope")
+#define EnvelopeLong CFSTR("iso-designated-long-envelope")
+#define Invoice CFSTR("invoice")
+#define USLetter CFSTR("na-letter")
+#define USLegal CFSTR("na-legal")
+#define Ledger CFSTR("ledger")
+#define Folio CFSTR("folio")
+#define Quarto CFSTR("quarto")
+#define A0 CFSTR("iso-a0")
+#define A1 CFSTR("iso-a1")
+#define A2 CFSTR("iso-a2")
+#define A3 CFSTR("iso-a3")
+#define A4 CFSTR("iso-a4")
+#define A5 CFSTR("iso-a5")
+#define A6 CFSTR("iso-a6")
+#define A7 CFSTR("iso-a7")
+#define A8 CFSTR("iso-a8")
+#define A9 CFSTR("iso-a9")
+#define B0 CFSTR("iso-b0")
+#define B1 CFSTR("iso-b1")
+#define B2 CFSTR("iso-b2")
+#define B3 CFSTR("iso-b3")
+#define B4 CFSTR("iso-b4")
+#define B5 CFSTR("iso-b5")
+#define B6 CFSTR("iso-b6")
+#define B7 CFSTR("iso-b7")
+#define B8 CFSTR("iso-b8")
+#define B9 CFSTR("iso-b9")
+#define B10 CFSTR("iso-b10")
+#define JISB0 CFSTR("jis-b0")
+#define JISB1 CFSTR("jis-b1")
+#define JISB2 CFSTR("jis-b2")
+#define JISB3 CFSTR("jis-b3")
+#define JISB4 CFSTR("jis-b4")
+#define JISB5 CFSTR("jis-b5")
+#define JISB7 CFSTR("jis-b7")
+#define JISB8 CFSTR("jis-b8")
+#define JISB9 CFSTR("jis-b9")
+#define JISB10 CFSTR("jis-b10")
+#define ASize CFSTR("a")
+#define BSize CFSTR("b")
+#define CSize CFSTR("c")
+#define DSize CFSTR("d")
+#define ESize CFSTR("e")
+#define iso10 CFSTR("iso-10")
+/* A string to define the default paper name. See sample code for usage.*/
+
+#define DefaultPaper CFSTR("DefaultPaperSize")
+
+
+#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