.TH "PPK Overview" 3 "24th December 2000" .SH "Data Structures" .PP A simplified view of the main data structures is illustrated below. Note that each array member pp_\fIxxx\fP in the PPK_Printer structure has a corresponding structure member named pp_Num\fIxxx\fP which gives the number of items in the array (e.g. pp_PaperTypes and pp_NumPaperTypes). These members are not shown, for brevity. .sp '\" This picture shows interesting bits of PPK_Env and PPK_Printer, '\" and a little of how they link together. '\" '\" picture begins { .ce \fBFig 1:\fP Main Data Structures .PS down # # The main data struct # sx = 0.7 sy = 0.7 "PPK_Env" at (-sx,0.3) move to (-sx, 0.1) dy = 0.18 boxwid = 2 * sx boxht = dy NumPrinters: box invis NumCopies: box invis Printers: box invis Page: box invis UserSettings: box invis PrintProgress: box invis IoCallBack: box invis "pe_NumPrinters" ljust at NumPrinters.w "pe_NumCopies" ljust at NumCopies.w "pe_Printers" ljust at Printers.w "pe_Page" ljust at Page.w "pe_UserSettings" ljust at UserSettings.w "pe_PrintProgress" ljust at PrintProgress.w "pe_IoCallBack" ljust at IoCallBack.w boxht = 7 * dy + dy/2 P: box at (-sx -0.1,-sy + dy) move to P.ne + (1.5,0) "PPK_Printer" at Here move to Here + (0,-0.3) boxwid = 2 * sx boxht = dy ModelNumber: box invis Aliases: box invis Tables: box invis Resolutions: box invis PaperSizes: box invis PaperTypes: box invis Settings: box invis Media: box invis "pp_ModelNumber" ljust at ModelNumber.w "pp_Aliases[]" ljust at Aliases.w "pp_Tables[]" ljust at Tables.w "pp_Resolutions[]" ljust at Resolutions.w "pp_PaperSizes[]" ljust at PaperSizes.w "pp_PaperTypes[]" ljust at PaperTypes.w "pp_Settings[]" ljust at Settings.w "pp_Media" ljust at Media.w boxht = 8 * dy + dy/2 P2: box at PaperSizes + (-0.1, 0.1) # # The sizes array # boxwid = 0.5 move to last box.e + (1.0,0) Sz: [ A: box height 0.2 "size0" B: box height 0.2 "size1" C: box height 0.4 "..." ] spline -> right from PaperSizes.e - (0.3,0) to last [].A.nw down gap = 1.0 move to last [].A.ne + (gap,0) # # The aliases array # boxwid = 0.6 Al: [ A: box height 0.2 "alias0" B: box height 0.2 "alias1" C: box height 0.4 "..." ] spline -> right from Aliases.e - (0.3,0) to last [].A.nw spline -> right from Printers.e - (0.3,0) to P2.nw down .PE '\" picture ends } '\" ============================= .SH "Pixel Formats" .PP The PPK supports the pixel formats used by the XXX. Specifically, it supports these formats: .IP "\(bu" 4 1 byte grayscale. .IP "\(bu" 4 2 byte RGBA. 5 bits each of red, blue, green, and a single bit for alpha transparency (`on' means opaque). The colors are assumed to be pre-multiplied (i.e. the transparency bit is simply ignored). .IP "\(bu" 4 3 byte RGB. Tightly packed. .IP "\(bu" 4 4 byte RGBA. 1 byte each of red, blue, green, and alpha transparency (255 means fully opaque). The colors are assumed to be pre-multiplied (i.e. the transparency byte is simply ignored).