/******************************************************************************
PostScript Printer Language Support
Summary:
This file provides support for the PostScript printer language when using the
USB Embedded Host Printer Client Driver.
Description:
This file provides support for the PostScript printer language when using the
USB Embedded Host Printer Client Driver.
In general, PostScript is recommended for use with the USB Embedded Host
printer class when printing to a full sheet printer. Implementation of the
PostScript language across various printers is standard, ensuring uniform
output from printers produced by different manufacturers.
Notes:
The PostScript coordinate origin is located at the bottom left corner of the
paper. For consistency for the user, the coordinates are adjusted so the
origin is located at the top left corner. This matches the coordinate
system use by the Microchip Graphics library.
*******************************************************************************/
//DOM-IGNORE-BEGIN
/******************************************************************************
* FileName: usb_host_printer_postscript.h
* Dependencies: None
* Processor: PIC24/dsPIC30/dsPIC33/PIC32MX
* Compiler: C30 v3.10b/C32 v1.02
* Company: Microchip Technology, Inc.
Software License Agreement
The software supplied herewith by Microchip Technology Incorporated
(the Company) for its PICmicro® Microcontroller is intended and
supplied to you, the Companys customer, for use solely and
exclusively on Microchip PICmicro Microcontroller products. The
software is owned by the Company and/or its supplier, and is
protected under applicable copyright laws. All rights are reserved.
Any use in violation of the foregoing restrictions may subject the
user to criminal sanctions under applicable laws, as well as to
civil liability for the breach of the terms and conditions of this
license.
THIS SOFTWARE IS PROVIDED IN AN AS IS CONDITION. NO WARRANTIES,
WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
Change History:
Rev Description
----- -----------------------------------------
2.6a- No change
2.7a
*******************************************************************************/
//DOM-IGNORE-END
// *****************************************************************************
// *****************************************************************************
// Section: Constants
// *****************************************************************************
// *****************************************************************************
// This is the string that the printer language support determination
// routine will look for to determine if the printer supports this
// printer language. This string is case sensive.
#define LANGUAGE_ID_STRING_POSTSCRIPT "POSTSCRIPT"
// These are the support flags that are set for this language.
#define LANGUAGE_SUPPORT_FLAGS_POSTSCRIPT USB_PRINTER_FUNCTION_SUPPORT_VECTOR_GRAPHICS
// *****************************************************************************
// *****************************************************************************
// Section: Function Prototypes
// *****************************************************************************
// *****************************************************************************
/****************************************************************************
Function:
BYTE USBHostPrinterLanguagePostScript( BYTE address,
USB_PRINTER_COMMAND command, USB_DATA_POINTER data, DWORD size, BYTE transferFlags )
Summary:
This function executes printer commands for a PostScript printer.
Description:
This function executes printer commands for a PostScript printer. When
the application issues a printer command, the printer client driver
determines what language to use to communicate with the printer, and
transfers the command to that language support routine. As much as
possible, commands are designed to produce the same output regardless
of what printer language is used.
Not all printer commands support data from both RAM and ROM. Unless
otherwise noted, the data pointer is assumed to point to RAM, regardless of
the value of transferFlags. Refer to the specific command to see if ROM
data is supported.
Preconditions:
None
Parameters:
BYTE address - Device's address on the bus
USB_PRINTER_COMMAND command - Command to execute. See the enumeration
USB_PRINTER_COMMAND for the list of
valid commands and their requirements.
USB_DATA_POINTER data - Pointer to the required data. Note that
the caller must set transferFlags
appropriately to indicate if the pointer is
a RAM pointer or a ROM pointer.
DWORD size - Size of the data. For some commands, this
parameter is used to hold the data itself.
BYTE transferFlags - Flags that indicate details about the
transfer operation. Refer to these flags
* USB_PRINTER_TRANSFER_COPY_DATA
* USB_PRINTER_TRANSFER_STATIC_DATA
* USB_PRINTER_TRANSFER_NOTIFY
* USB_PRINTER_TRANSFER_FROM_ROM
* USB_PRINTER_TRANSFER_FROM_RAM
Return Values:
USB_PRINTER_SUCCESS - The command was executed successfully.
USB_PRINTER_UNKNOWN_DEVICE - A printer with the indicated address is not
attached
USB_PRINTER_TOO_MANY_DEVICES - The printer status array does not have
space for another printer.
USB_PRINTER_OUT_OF_MEMORY - Not enough available heap space to
execute the command.
other - See possible return codes from the
function USBHostPrinterWrite().
Remarks:
When developing new commands, keep in mind that the function
USBHostPrinterCommandReady() will be used before calling this function to
see if there is space available in the output transfer queue.
USBHostPrinterCommandReady() will routine TRUE if a single space is
available in the output queue. Therefore, each command can generate only
one output transfer.
Multiple printer languages may be used in a single application. The USB
Embedded Host Printer Client Driver will call the routine required for the
attached device.
***************************************************************************/
BYTE USBHostPrinterLanguagePostScript( BYTE address,
USB_PRINTER_COMMAND command, USB_DATA_POINTER data, DWORD size, BYTE transferFlags );
/****************************************************************************
Function:
BOOL USBHostPrinterLanguagePostScriptIsSupported( char *deviceID,
USB_PRINTER_FUNCTION_SUPPORT *support )
Description:
This function determines if the printer with the given device ID string
supports the PostScript printer language.
Preconditions:
None
Parameters:
char *deviceID - Pointer to the "COMMAND SET:" portion of the device ID
string of the attached printer.
USB_PRINTER_FUNCTION_SUPPORT *support - Pointer to returned information
about what types of functions this printer supports.
Return Values:
TRUE - The printer supports PostScript.
FALSE - The printer does not support PostScript.
Remarks:
The caller must first locate the "COMMAND SET:" section of the device ID
string. To ensure that only the "COMMAND SET:" section of the device ID
string is checked, the ";" at the end of the section should be temporarily
replaced with a NULL. Otherwise, this function may find the printer
language string in the comments or other section, and incorrectly indicate
that the printer supports the language.
Device ID strings are case sensitive.
***************************************************************************/
BOOL USBHostPrinterLanguagePostScriptIsSupported( char *deviceID,
USB_PRINTER_FUNCTION_SUPPORT *support );
|