Message protocol between the printer applications and other applications (referred to as the client from now on).

INTRO
The printer application manages printer selection and printing files in the background (scheduled on nul events). The following message reasons are described below.

Message_PrintFile       &80140
Message_WillPrint       &80141
Message_PrintSave       &80142
Message_PrintBusy       &80144
Message_PrintTypeOdd &80145
Message_PrintTypeKnown &80146

DRAGGING FILE ICON FROM SAVE BOX OF CLIENT TO PRINTER ICON A client can cause the same effect without user intervention by issuing Message_PrintSave. Which is treated by the printer application in the same way as DataSave. Except that if the printer is busy the reply Message_PrintBusy is sent rather than putting up an error box. The printer application receives a DataSave message. In case the client can improve on the default print action the printer application issues the message Message_PrintFile recorded delivery. The parameter block has

12 reference number of original DataSave message 40 file type of data
44 zero terminated scrap filename

The client has 3 options

  1. It can ignore the broadcast
    In this case when the printer application sees the broadcast bounced it resumes the original protocol with a DataSaveAck. This would be use if the client uses the same format when saving to a printer as when saving to a filing system.
  2. It can acknowledge the broadcast with Message_WillPrint In this case the printer application takes no further action. This would be used if the client wants to handle printing itself.
  3. It can save its data to the scrap file and acknowledge the broadcast with Message_DataLoad. The file type should reflect the new data format if it has been converted (eg text or PostScript). In this case the printer application will issue a DataLoadAck and print the scrap file in the background as if resulting from dragging file icon from filer window (see below). DRAGGING FILE ICON FROM FILER WINDOW TO PRINTER ICON The printer application receives a DataLoad Message and checks if some sort of text file. File types FFF, FFE, FEB are considered text as are some printer specific ones (eg FF5 PostScript). If it is not text it issues the broadcast message Message_PrintTypeOdd recorded delivery. The parameter block has

    12 0
    40 file type
    44 zero terminated filename

    If there is client that knows how to print this file type it should acknowledge with the message Message_PrintTypeKnown. The client can either print the file itself or put its output to <Printer$Temp> for the printer application to print in the background. If it uses <Printer$Temp> it should return the file type of the modified data in offset 40 of the message block.

    If the broadcast is bounced the printer application will look at Alias$@PrintType_xxx and if this is unset ask for confirmation from the user.