PDumper modules:

Load PDumper on first call to any
SWI which needs to use it (i.e. Not SetInfo, SetPrinter, PageSize?)

Can't add a 'Set opposite colour' given the current architecture of the PDriver module.

Add a Screendump facility - no, this should be a higher level operation

New antialiased colour call to allow for future enhancements of the operatins system in the area of Draw and even now with Fonts.


Calls which PDumperXX module must implement:

Initialise

Declare itself to the PDumper module (if loaded)

Grab any RMA it needs

Finalise

Declare itself as dead to the PDumper module

Free its RMA

Service

Pick up the Service_PDumperStarting service and respond to it.

SWI

No swi table

PDumper calls:

Start page

Input:
R1 = file handle
R2 = strip type (0=mono, ... )
Returns:
Nothing
Performs:
Write out to the file the codes for starting a new page before graphics printing. This includes the reset printer control sequence.

      

End page

Input:
R1 = file handle
R2 = strip type (0=mono, ... )
Returns:
Nothing:
Performs:
Writes out to the file the codes for finishing a page of graphics. This includes a form-feed and a reset sequence.

Dump strip

Input:
R0 -> strip
R1 = file handle
R2 = strip type (0=mono, ... )
R3 = dump width (bytes)
R4 = dump height (rows)
R5 = row width in bytes ( >=R3 ) R6 -> line_prologue
R7 = vertical interlace in lo-byte + horizontal interlace in second byte Returns:
Nothing
Performs:
Dumps the sprite buffer pointed to by R0 to the file handle in a manner the printer will understand. This must include line start sequences, line epilogue sequences, and so on. The strip pointed to by R0 contains the data for the strip in rows, always a multiple of a word long For 24-bit dumps it points to the data for the first pass.

Return best colour

Input:
R0 = RGB colour (&BBGGRR00)
R2 = strip type (0=mono, ... )
Pass?
Returns:
R3 = Colour number (meaning depends on strip type) Performs:
Finds the best colour match to a required TRUE RGB colour for the current pass and strip type. The colour number should be in the range 0-1 for monchrome dumps, 0-255 for other dumps (except true 24-bit dumps).

Return list of 17 colours (for antialiasing)

Input:
R0 = RGB colour (&BBGGRR00)
R1 = RGB colour (&BBGGRR00)
R2 = strip type (0=mono, ... )
R3 -> buffer for 17 words
Pass?
Returns:
R3 -> buffer (now filled)
Performs:
Finds the best colour match to a range of required TRUE RGB colour for the current pass and strip type. The colour numbers should be in the range 0-1 for monchrome dumps, 0-255 for other dumps (except true 24-bit dumps). There are 17 numbers for all the colours: ( x R0 + (1 - x) R1 ) / 16, for x = 0 to 16.

Plot sprite (scaled)

Plot sprite (transformed)

Plot sprite greyscaled

Plot sprite mask

PDumper_SetPrinter

Input:
Dumper dependent:
R1 -> filename containing palette file Returns:
Nothing
Performs:
Points to the palette file for a particular dumper.

PDumper_ReadInfo

Input:
R4 = version number of printer dumper driver Returns:
R0 = set of strip types it can handle R1 = minimum dump depth (dump depth = integer multiple of this ) R2 -> branch table
R3 = value of R12 for branches
R4 = version number of printer dumper driver it expects to use Peforms:
This call returns pertinent information about the printer dumper module. If the printer dumper driver module is too old (i.e. the version number is too small) then the call should return an error.