]> git.saurik.com Git - wxWidgets.git/blame_incremental - docs/latex/wx/tprint.tex
slight warnings in wxprinterdc docs about constructor confusion - see http://www...
[wxWidgets.git] / docs / latex / wx / tprint.tex
... / ...
CommitLineData
1\section{Printing overview}\label{printingoverview}
2
3Classes: \helpref{wxPrintout}{wxprintout},
4\helpref{wxPrinter}{wxprinter},
5\helpref{wxPrintPreview}{wxprintpreview},
6\helpref{wxPrinterDC}{wxprinterdc},
7\helpref{wxPrintDialog}{wxprintdialog},
8\helpref{wxPrintData}{wxprintdata},
9\helpref{wxPrintDialogData}{wxprintdialogdata},
10\helpref{wxPageSetupDialog}{wxpagesetupdialog},
11\helpref{wxPageSetupDialogData}{wxpagesetupdialogdata}
12
13The printing framework relies on the application to provide classes
14whose member functions can respond to particular requests, such
15as `print this page' or `does this page exist in the document?'.
16This method allows wxWidgets to take over the housekeeping duties of
17turning preview pages, calling the print dialog box, creating
18the printer device context, and so on: the application can concentrate
19on the rendering of the information onto a device context.
20
21The \helpref{document/view framework}{docviewoverview} creates a default
22wxPrintout object for every view, calling wxView::OnDraw to achieve a
23prepackaged print/preview facility.
24
25A document's printing ability is represented in an application by a
26derived wxPrintout class. This class prints a page on request, and can
27be passed to the Print function of a wxPrinter object to actually print
28the document, or can be passed to a wxPrintPreview object to initiate
29previewing. The following code (from the printing sample) shows how easy
30it is to initiate printing, previewing and the print setup dialog, once the wxPrintout
31functionality has been defined. Notice the use of MyPrintout for
32both printing and previewing. All the preview user interface functionality
33is taken care of by wxWidgets. For details on how MyPrintout is defined,
34please look at the printout sample code.
35
36\begin{verbatim}
37 case WXPRINT_PRINT:
38 {
39 wxPrinter printer;
40 MyPrintout printout("My printout");
41 printer.Print(this, &printout, true);
42 break;
43 }
44 case WXPRINT_PREVIEW:
45 {
46 // Pass two printout objects: for preview, and possible printing.
47 wxPrintPreview *preview = new wxPrintPreview(new MyPrintout, new MyPrintout);
48 wxPreviewFrame *frame = new wxPreviewFrame(preview, this, "Demo Print Preview", wxPoint(100, 100), wxSize(600, 650));
49 frame->Centre(wxBOTH);
50 frame->Initialize();
51 frame->Show(true);
52 break;
53 }
54\end{verbatim}
55
56\section{Printing under Unix (GTK+)}\label{unixprinting}
57
58Printing under Unix has always been a cause of problems as Unix
59does not provide a standard way to display text and graphics
60on screen and print it to a printer using the same application
61programming interface - instead, displaying on screen is done
62via the X11 library while printing has to be done with using
63PostScript commands. This was particularly difficult to handle
64for the case of fonts with the result that only a selected
65number of application could offer WYSIWYG under Unix. Equally,
66wxWidgets offered its own printing implementation using PostScript
67which never really matched the screen display.
68
69Starting with version 2.8.X, the GNOME project provides printing
70support through the libgnomeprint and libgnomeprintui libraries
71by which especially the font problem is mostly solved. Beginning
72with version 2.5.4, the GTK+ port of wxWidgets can make use of
73these libraries if wxWidgets is configured accordingly and if the
74libraries are present. You need to configure wxWidgets with the
75{\it configure --with-gnomeprint} switch and you application will
76then search for the GNOME print libraries at runtime. If they
77are found, printing will be done through these, otherwise the
78application will fall back to the old PostScript printing code.
79Note that the application will not require the GNOME print libraries
80to be installed in order to run (there will be no dependency on
81these libraries).
82
83It is expected that the printing code that is currently implemented
84in the GNOME print libraries will be moved into GTK+ later.
85