wxcore-0.90.0.3: wxHaskell core

Portability | portable
Stability | provisional
Maintainer | wxhaskell-devel@lists.sourceforge.net
Safe Haskell | None

Graphics.UI.WXCore.Print

Contents

- Printing
- Callbacks
- Page and printer info
- Internal

Description

Printer abstraction layer. See `sampleswxPrint.hs` for a demo.

The application should create a `pageSetupDialog` to hold the printer settings of the user.

     f <- frame [text := "Print demo"]

     -- Create a pageSetup dialog with an initial margin of 25 mm.
     pageSetup <- pageSetupDialog f 25

The dialog can be shown using `pageSetupShowModal`. Furthermore, the function `printDialog` and `printPreview` can be used to show a print dialog and preview window.

     mprint   <- menuItem file
                    [ text := "&Print..."
                    , help := "Print a test"
                    , on command := printDialog pageSetup "Test"  pageFun printFun
                    ]
     mpreview <- menuItem file
                    [ text := "&Print preview"
                    , help := "Print preview"
                    , on command := printPreview pageSetup "Test" pageFun printFun

Those functions take a `PageFunction` and `PrintFunction` respectively that get called to determine the number of needed pages and to draw on the printer DC respectively. The framework takes automatic care of printer margins, preview scaling etc.

Synopsis

- pageSetupDialog :: Frame a -> Int -> IO (PageSetupDialog ())
- pageSetupShowModal :: PageSetupDialog a -> IO ()
- printDialog :: PageSetupDialog a -> String -> PageFunction -> PrintFunction -> IO ()
- printPreview :: PageSetupDialog a -> String -> PageFunction -> PrintFunction -> IO ()
- type PageFunction = PageInfo -> PrintInfo -> Size -> (Int, Int)
- type PrintFunction = PageInfo -> PrintInfo -> Size -> DC () -> Int -> IO ()
- data PageInfo = PageInfo {
  - pageSize :: Size
  - pageArea :: Rect
  }
- data PrintInfo = PrintInfo {
  - screenPPI :: Size
  - printerPPI :: Size
  - printPageSize :: Size
  }
- pageSetupDataGetPageInfo :: PageSetupDialogData a -> IO PageInfo
- pageSetupDataSetPageInfo :: PageSetupDialogData a -> PageInfo -> IO ()
- printOutGetPrintInfo :: Printout a -> IO PrintInfo
- pageSetupDialogGetFrame :: PageSetupDialog a -> IO (Frame ())

# Printing

pageSetupDialog :: Frame a -> Int -> IO (PageSetupDialog ())

Create a (hidden) page setup dialog that remembers printer settings. It is a parameter to the functions `printDialog` and `printPreview`. The creation function takes a parent frame and the initial page margins (in millimeters) as an argument.

pageSetupShowModal :: PageSetupDialog a -> IO ()

Show the page setup dialog

printDialog :: PageSetupDialog a -> String -> PageFunction -> PrintFunction -> IO ()

Show a print dialog.

printPreview :: PageSetupDialog a -> String -> PageFunction -> PrintFunction -> IO ()

Show a preview window

# Callbacks

type PageFunction = PageInfo -> PrintInfo -> Size -> (Int, Int)

Return a page range given page info, print info, and the printable size. The printable size is the number of pixels available for printing without the page margins.

type PrintFunction = PageInfo -> PrintInfo -> Size -> DC () -> Int -> IO ()

Print a page given page info, print info, the printable size, the printer device context and the current page. The printable size is the number of pixels available for printing without the page margins

# Page and printer info

data PageInfo

Information from the page setup dialog. All measurements are in millimeters.

Constructors

PageInfo |
Fields pageSize :: Size The page size (in millimeters) pageArea :: Rect The available page area (=margins) (in millimeters)

Instances

Show PageInfo |

data PrintInfo

Printer information.

Constructors

PrintInfo |
Fields screenPPI :: Size screen pixels per inch printerPPI :: Size printer pixels per inch printPageSize :: Size printable area (in pixels) = PageInfo pageSize minus printer margins

Instances

Show PrintInfo |

# Internal

pageSetupDataGetPageInfo :: PageSetupDialogData a -> IO PageInfo

Get page info

pageSetupDataSetPageInfo :: PageSetupDialogData a -> PageInfo -> IO ()

Set page info

printOutGetPrintInfo :: Printout a -> IO PrintInfo

Extract print info

pageSetupDialogGetFrame :: PageSetupDialog a -> IO (Frame ())

Get the parent frame of a `PageSetupDialog`.