The following information is provided as is, and the authors take no responsibility for the correctness.

IMF - Zenographics SuperPrint/SuperRip spool file format

Although not an actual PDL, Zenographics IMF is used for spooling print jobs on Windows (instead of EMF) prior to conversion to the target PDL like ZjStream, PCL, PostScript...

The Zenographics SuperPrint driver spools the Windows DDI calls to IMF, and the SuperPrint Print Processor later converts this IMF into the target PDL, typically ZjStream.

See also: ZjStream - Zenographics SuperPrint Zj Stream

Reference

IMF Elements

IMF element consists of the followng parts.

  1. IMF Pipe Header
    Pipe header is 32 bytes header (8 of 4-byte data) that carries element information. Each element carries a “Message” which is the meaning of this element. Details are described at the next section.
  2. Block Pointers
    Each element needs some Data Blocks. Block Pointers points to the offset of each data block. The number of Block Pointers can be found in nBlocks of Pipe Header.
  3. Data Blocks
    Each element needs some Data Blocks. Data Blocks keeps necessary information for the element.
  4. Link Block
    Large memory block allocated at kernel mode can be attached as a link block. This block has such a link block data. When a link block is attached to the element, cbLink field of Pipe Header has non-zeno value.
Pipe Header 20 bytes
Block Pointer 1 4 bytes
...
Block Pointer (n) 4 bytes
Data Block 1 n bytes
...
Data Block (n) n bytes
Link Block n bytes

IMF Pipe Header

Pipe header is 32 bytes header (8 of 4-byte data) that carries element information. Each element carries a “Message” which is the meaning of this element. Details are described at the next section.

Field Size Description
dwSignature 4 bytes dwSignature is a constant value of 0xDCA99ADC. which specifies the start of an IMF element.
cbNext 4 bytes cbNext is the size of this IMF element in bytes.
cbLink 4 bytes cbLink is the size of link block attached at the bottom of this element.
cbPrevious 4 bytes cbPrevious is size of previous IMF element.
dwMessageId 4 bytes dwMessageId specifies the type of this element. One of the SDPIPE_ constants specified further down.
dwMisc 4 bytes dwMisc is used to hold additional information for the Message.
dwProcessId 4 bytes dwProcessId holds the process ID
cBlocks 4 bytes cBlocks shows how many data blocks are used for this IMF element

//dwMessageId constants
SDPIPE_CTRL              0
SDPIPE_STARTDOC          1
SDPIPE_STARTPAGE         2
SDPIPE_ENDPAGE           3
SDPIPE_ENDDOC            4
SDPIPE_RESETDC           5
SDPIPE_CACHE             6
SDPIPE_CACHECHAR         7
SDPIPE_PUTSUBOBJ         8
SDPIPE_PUTBITMAPSUBOBJ   9
SDPIPE_UNCLIPSUBOBJ     10
SDPIPE_PATTBRUSH        11
//the following are purely informational, and optional
SDPIPE_DOCINFO          12
SDPIPE_PAGEINFO         13

IMF CTRL

  • dwMessageId
    = SDPIPE_CTRL
  • dwMisc
    = Control ID
//Control IDs
SDPIPE_CTRL_MISC_RANDOM_ACCESS  0x00000002
SDPIPE_CTRL_MISC_EOF            0xFFFFFFFF

 
formats/page_description_languages/imf.txt · Last modified: 2010/04/12 13:54 by 123.184.107.221
 

All text is available under the terms of the GNU Free Documentation License (see Copyrights for details). Disclaimers

Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki