diff options
Diffstat (limited to 'tqtinterface/qt4/src/kernel/tqprinter.cpp')
-rw-r--r-- | tqtinterface/qt4/src/kernel/tqprinter.cpp | 1198 |
1 files changed, 1198 insertions, 0 deletions
diff --git a/tqtinterface/qt4/src/kernel/tqprinter.cpp b/tqtinterface/qt4/src/kernel/tqprinter.cpp new file mode 100644 index 0000000..31c5c19 --- /dev/null +++ b/tqtinterface/qt4/src/kernel/tqprinter.cpp @@ -0,0 +1,1198 @@ +/********************************************************************** +** +** Implementation of TQPrinter class +** +** Created : 941003 +** +** Copyright (C) 2010 Timothy Pearson and (C) 1992-2008 Trolltech ASA. +** +** This file is part of the kernel module of the TQt GUI Toolkit. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free TQt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing requirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** This file may be used under the terms of the Q Public License as +** defined by Trolltech ASA and appearing in the file LICENSE.TQPL +** included in the packaging of this file. Licensees holding valid TQt +** Commercial licenses may use this file in accordance with the TQt +** Commercial License Agreement provided with the Software. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#include <tqtglobaldefines.h> +// Nasty, nasty horrid HACK to get access to QPrinter's private members +// This is TERRIBLE and I wish there was a way around it +// This is a good example of the new, broken & irritating Qt4 API, +// and the corresponding loss in functionality versus Qt3. +// See also tqrect.cpp +#define private protected +#include <Qt/qprinter.h> +#undef private + +#include "tqprinter.h" +#include "tqprinter_p.h" + +#ifndef TQT_NO_PRINTER + +#ifdef USE_QT4 + +#include "tqprintdialog.h" +#include "private/qt4_qprinter_p.h" + +#ifdef Q_WS_MAC +bool qt_compat_QPrinter_pageSetup(QPrinter *p, QWidget *parent) +{ + QPageSetupDialog psd(p, parent); + return psd.exec() != 0; +} +#endif // Q_WS_MAC + +bool qt_compat_QPrinter_printSetup(QPrinter *printer, QWidget *parent) +{ + TQPrintDialog dlg(TQT_TQPRINTER(printer), TQT_TQWIDGET(parent)); + return dlg.exec() != 0; +} + +#ifdef Q_WS_MAC +/*! + Executes a page setup dialog so that the user can configure the type of + page used for printing. Returns true if the contents of the dialog are + accepted; returns false if the dialog is canceled. +*/ +bool TQPrinter::pageSetup(QWidget *parent) +{ + return qt_compat_QPrinter_pageSetup(this, parent); +} + +/*! + Executes a print setup dialog so that the user can configure the printing + process. Returns true if the contents of the dialog are accepted; returns + false if the dialog is canceled. +*/ +bool TQPrinter::printSetup(QWidget *parent) +{ + return qt_compat_QPrinter_printSetup(this, parent); +} +#endif // Q_WS_MAC + +/*! + Use QPrintDialog instead. + + \oldcode + if (printer->setup(parent)) + ... + \newcode + QPrintDialog dialog(printer, parent); + if (dialog.exec()) + ... + \endcode +*/ +bool TQPrinter::setup(QWidget *parent) +{ + return qt_compat_QPrinter_printSetup(this, parent) +#ifdef Q_WS_MAC + && qt_compat_QPrinter_pageSetup(this, parent); +#endif + ; +} + +/*! + Use QPrintDialog::minPage() instead. +*/ +int TQPrinter::minPage() const +{ + return d_ptr->minPage; +} + +/*! + Use QPrintDialog::maxPage() instead. +*/ +int TQPrinter::maxPage() const +{ + return d_ptr->maxPage; +} + +/*! + Use QPrintDialog::setMinMax() instead. +*/ +void TQPrinter::setMinMax( int minPage, int maxPage ) +{ + Q_ASSERT_X(minPage <= maxPage, "QPrinter::setMinMax", + "'min' must be less than or equal to 'max'"); + d_ptr->minPage = minPage; + d_ptr->maxPage = maxPage; + d_ptr->options |= QPrintDialog::PrintPageRange; +} + +/*! + Use QPrintDialog::setOption(QPrintDialog::PrintCollateCopies) + or QPrintDialog::setOptions(QPrintDialog::options() + & ~QPrintDialog::PrintCollateCopies) instead, depending on \a + enable. +*/ +void TQPrinter::setCollateCopiesEnabled(bool enable) +{ + if (enable) + d_ptr->options |= QPrintDialog::PrintCollateCopies; + else + d_ptr->options &= ~QPrintDialog::PrintCollateCopies; +} + +/*! + Returns true if the printer is set up to collate copies of printed documents; + otherwise returns false. + + Use QPrintDialog::isOptionEnabled(QPrintDialog::PrintCollateCopies) + instead. + + \sa collateCopies() +*/ +bool TQPrinter::collateCopiesEnabled() const +{ + return (d_ptr->options & QPrintDialog::PrintCollateCopies); +} + +/*! + Use QPrintDialog instead. +*/ +void TQPrinter::setOptionEnabled( PrinterOption option, bool enable ) +{ + if (enable) + d_ptr->options |= QPrintDialog::PrintDialogOption(1 << option); + else + d_ptr->options &= ~QPrintDialog::PrintDialogOption(1 << option); +} + +/*! + Use QPrintDialog instead. +*/ +bool TQPrinter::isOptionEnabled( PrinterOption option ) const +{ + return (d_ptr->options & QPrintDialog::PrintDialogOption(option)); +} + +/*! + \fn void QPrinter::setOutputToFile(bool enable) + + Specifies whether the output should be written to a file or sent + directly to the printer. + + Will output to a file if \a enable is true, or will output + directly to the printer if \a enable is false. + + \sa outputToFile(), setOutputFileName() +*/ +void TQPrinter::setOutputToFile(bool f) +{ + if (f) { + if (outputFileName().isEmpty()) + setOutputFileName(QLatin1String("untitled_printer_document")); + } else { + setOutputFileName(QString()); + } +} + +#else // USE_QT4 + +/*! + \class TQPrinter tqprinter.h + \brief The TQPrinter class is a paint tqdevice that paints on a printer. + + \ingroup images + \ingroup graphics + \mainclass + + On Windows it uses the built-in printer drivers. On X11 it + generates postscript and sends that to lpr, lp, or another print + command. + + TQPrinter is used in much the same way as TQWidget and TQPixmap are + used. The big difference is that you must keep track of the pages. + + TQPrinter supports a number of settable parameters, most of which + can be changed by the end user when the application calls + TQPrinter::setup(). + + The most important parameters are: + \list + \i setOrientation() tells TQPrinter which page orientation to use (virtual). + \i setPageSize() tells TQPrinter what page size to expect from the + printer. + \i setResolution() tells TQPrinter what resolution you wish the + printer to provide (in dpi). + \i setFullPage() tells TQPrinter whether you want to deal with the + full page or just with the part the printer can draw on. The + default is FALSE, so that by default you should be able to paint + on (0,0). If TRUE the origin of the coordinate system will be in + the top left corner of the paper and most probably the printer + will not be able to paint something there due to it's physical + margins. + \i setNumCopies() tells TQPrinter how many copies of the document + it should print. + \i setMinMax() tells TQPrinter and TQPrintDialog what the allowed + range for fromPage() and toPage() are. + \endlist + + Except where noted, you can only call the set functions before + setup(), or between TQPainter::end() and setup(). (Some may take + effect between setup() and begin(), or between begin() and end(), + but that's strictly undocumented and such behaviour may differ + depending on platform.) + + There are also some settings that the user sets (through the + printer dialog) and that applications are expected to obey: + + \list + + \i pageOrder() tells the application program whether to print + first-page-first or last-page-first. + + \i colorMode() tells the application program whether to print in + color or grayscale. (If you print in color and the printer does + not support color, TQt will try to approximate. The document may + take longer to print, but the quality should not be made visibly + poorer.) + + \i fromPage() and toPage() indicate what pages the application + program should print. + + \i paperSource() tells the application progam which paper source + to print from. + + \endlist + + You can of course call these functions to establish defaults + before you ask the user through TQPrinter::setup(). + + Once you start printing, calling newPage() is essential. You will + probably also need to look at the TQPaintDeviceMetrics for the + printer (see the \link simple-application.html#printersimple print + function\endlink in the Application walk-through). In previous versions, + paint tqdevice metrics were valid only after the TQPrinter has been set + up, i.e. after setup() has returned successfully. This is no longer + the case and paint tqdevice metrics can be requested safely before set up. + + If you want to abort the print job, abort() will try its best to + stop printing. It may cancel the entire job or just some of it. + + \omit Need a function to setup() without a dialog (i.e. use defaults). + \endomit + + The TrueType font embedding for TQt's postscript driver uses code + by David Chappell of Trinity College Computing Center. + + \legalese + + Copyright 1995, Trinity College Computing Center. + Written by David Chappell. + + Permission to use, copy, modify, and distribute this software and + its documentation for any purpose and without fee is hereby + granted, provided that the above copyright notice appear in all + copies and that both that copyright notice and this permission + notice appear in supporting documentation. This software is + provided "as is" without express or implied warranty. + + TrueType font support. These functions allow PPR to generate + PostScript fonts from Microsoft compatible TrueType font files. + + The functions in this file do most of the work to convert a + TrueType font to a type 3 PostScript font. + + Most of the material in this file is derived from a program called + "ttf2ps" which L. S. Ng posted to the usenet news group + "comp.sources.postscript". The author did not provide a copyright + notice or indicate any restrictions on use. + + Last revised 11 July 1995. + +*/ + +/*! + \enum TQPrinter::PrinterMode + + This enum describes the mode the printer should work in. It + basically presets a certain resolution and working mode. + + \value ScreenResolution Sets the resolution of the print tqdevice to + the screen resolution. This has the big advantage that the results + obtained when painting on the printer will match more or less + exactly the visible output on the screen. It is the easiest to + use, as font metrics on the screen and on the printer are the + same. This is the default value. ScreenResolution will produce a + lower quality output than HighResolution and should only be used + for drafts. + + \value PrinterResolution Use the physical resolution of the + printer on Windows. On Unix, set the postscript resolution to 72 + dpi. + + \value HighResolution Use printer resolution on windows, set the + resolution of the postscript driver to 600dpi. + + \value Compatible Almost the same as PrinterResolution, but keeps + some peculiarities of the TQt 2.x printer driver. This is useful + for applications ported from TQt 2.x to TQt 3.x. +*/ + +/*! + \enum TQPrinter::Orientation + + This enum type (not to be confused with Orientation) is used + to specify each page's orientation. + + \value Portrait the page's height is greater than its width (the + default). + + \value Landscape the page's width is greater than its height. + + This type interacts with \l TQPrinter::PageSize and + TQPrinter::setFullPage() to determine the final size of the page + available to the application. +*/ + + +/*! + \enum TQPrinter::PageSize + + This enum type specifies what paper size TQPrinter should use. + TQPrinter does not check that the paper size is available; it just + uses this information, together with TQPrinter::Orientation and + TQPrinter::setFullPage(), to determine the printable area (see + TQPaintDeviceMetrics). + + The defined sizes (with setFullPage(TRUE)) are: + + \value A0 841 x 1189 mm This value is not supported on windows. + \value A1 594 x 841 mm This value is not supported on windows. + \value A2 420 x 594 mm + \value A3 297 x 420 mm + \value A4 210 x 297 mm, 8.26 x 11.7 inches + \value A5 148 x 210 mm + \value A6 105 x 148 mm + \value A7 74 x 105 mm + \value A8 52 x 74 mm + \value A9 37 x 52 mm + \value B0 1030 x 1456 mm + \value B1 728 x 1030 mm + \value B10 32 x 45 mm + \value B2 515 x 728 mm + \value B3 364 x 515 mm + \value B4 257 x 364 mm + \value B5 182 x 257 mm, 7.17 x 10.13 inches + \value B6 128 x 182 mm + \value B7 91 x 128 mm + \value B8 64 x 91 mm + \value B9 45 x 64 mm + \value C5E 163 x 229 mm + \value Comm10E 105 x 241 mm, US Common #10 Envelope + \value DLE 110 x 220 mm + \value Executive 7.5 x 10 inches, 191 x 254 mm + \value Folio 210 x 330 mm + \value Ledger 432 x 279 mm + \value Legal 8.5 x 14 inches, 216 x 356 mm + \value Letter 8.5 x 11 inches, 216 x 279 mm + \value Tabloid 279 x 432 mm + \value Custom + \value NPageSize (internal) + + With setFullPage(FALSE) (the default), the metrics will be a bit + smaller; how much depends on the printer in use. +*/ + + +/*! + \enum TQPrinter::PageOrder + + This enum type is used by TQPrinter to tell the application program + how to print. + + \value FirstPageFirst the lowest-numbered page should be printed + first. + + \value LastPageFirst the highest-numbered page should be printed + first. +*/ + +/*! + \enum TQPrinter::ColorMode + + This enum type is used to indicate whether TQPrinter should print + in color or not. + + \value Color print in color if available, otherwise in grayscale. + + \value GrayScale print in grayscale, even on color printers. + Might be a little faster than \c Color. This is the default. +*/ + +/*! + \enum TQPrinter::PaperSource + + This enum type specifies what paper source TQPrinter is to use. + TQPrinter does not check that the paper source is available; it + just uses this information to try and set the paper source. + Whether it will set the paper source depends on whether the + printer has that particular source. + + Note: this is currently only implemented for Windows. + + \value OnlyOne + \value Lower + \value Middle + \value Manual + \value Envelope + \value EnvelopeManual + \value Auto + \value Tractor + \value SmallFormat + \value LargeFormat + \value LargeCapacity + \value Cassette + \value FormSource +*/ + +/*! + \enum TQPrinter::PrintRange + + This enum is used to specify which print range the application + should use to print. + + \value AllPages All pages should be printed + \value Selection Only the selection should be printed. + \value PageRange From page, to page option. + + \sa setPrintRange(), printRange() +*/ + +/*! + \enum TQPrinter::PrinterOption + + This enum describes various printer options that appear in the + printer setup dialog. It is used to enable and disable these + options in the setup dialog. + + \value PrintToFile Describes if print to file should be enabled. + \value PrintSelection Describes if printing selections should be enabled. + \value PrintPageRange Describes if printing page ranges (from, to) should + be enabled + + \sa setOptionEnabled(), isOptionEnabled() +*/ + + +/*! + \fn TQString TQPrinter::printerName() const + + Returns the printer name. This value is initially set to the name + of the default printer. + + \sa setPrinterName() +*/ + +/*! + \fn bool TQPrinter::outputToFile() const + + Returns TRUE if the output should be written to a file, or FALSE + if the output should be sent directly to the printer. The default + setting is FALSE. + + This function is currently only supported under X11 and Mac OS X. + + \sa setOutputToFile(), setOutputFileName() +*/ + +/*! + Specifies whether the output should be written to a file or sent + directly to the printer. + + Will output to a file if \a enable is TRUE, or will output + directly to the printer if \a enable is FALSE. + + This function is currently only supported under X11 and Mac OS X. + + \sa outputToFile(), setOutputFileName() +*/ + +void TQPrinter::setOutputToFile( bool enable ) +{ + if ( state != 0 ) { +#if defined(TQT_CHECK_STATE) + qWarning( "TQPrinter::setOutputToFile: Cannot do this during printing" ); +#endif + return; + } + output_file = enable; +} + + +/*! + \fn TQString TQPrinter::outputFileName() const + + Returns the name of the output file. There is no default file + name. + + \sa setOutputFileName(), setOutputToFile() +*/ + +/*! + Sets the name of the output file to \a fileName. + + Setting a null or empty name (0 or "") disables output to a file, + i.e. calls setOutputToFile(FALSE). Setting a non-empty name + enables output to a file, i.e. calls setOutputToFile(TRUE). + + This function is currently only supported under X11. + + \sa outputFileName(), setOutputToFile() +*/ + +void TQPrinter::setOutputFileName( const TQString &fileName ) +{ + if ( state != 0 ) { +#if defined(TQT_CHECK_STATE) + qWarning("TQPrinter::setOutputFileName: Cannot do this during printing"); +#endif + return; + } + output_filename = fileName; + output_file = !output_filename.isEmpty(); +} + + +/*! + \fn TQString TQPrinter::printProgram() const + + Returns the name of the program that sends the print output to the + printer. + + The default is to return a null string; meaning that TQPrinter will + try to be smart in a system-dependent way. On X11 only, you can + set it to something different to use a specific print program. + + On Windows, this function returns the name of the printer tqdevice + driver. + + \sa setPrintProgram() setPrinterSelectionOption() +*/ + +/*! + Sets the name of the program that should do the print job to \a + printProg. + + On X11, this function sets the program to call with the PostScript + output. On other platforms, it has no effect. + + \sa printProgram() +*/ + +void TQPrinter::setPrintProgram( const TQString &printProg ) +{ + print_prog = printProg; +} + + +/*! + \fn TQString TQPrinter::docName() const + + Returns the document name. + + \sa setDocName() +*/ + +/*! + Sets the document name to \a name. +*/ + +void TQPrinter::setDocName( const TQString &name ) +{ + if ( state != 0 ) { +#if defined(TQT_CHECK_STATE) + qWarning( "TQPrinter::setDocName: Cannot do this during printing" ); +#endif + return; + } + doc_name = name; +} + + +/*! + \fn TQString TQPrinter::creator() const + + Returns the name of the application that created the document. + + \sa setCreator() +*/ + +/*! + Sets the name of the application that created the document to \a + creator. + + This function is only applicable to the X11 version of TQt. If no + creator name is specified, the creator will be set to "TQt" + followed by some version number. + + \sa creator() +*/ + +void TQPrinter::setCreator( const TQString &creator ) +{ + creator_name = creator; +} + + +/*! + \fn Orientation TQPrinter::orientation() const + + Returns the orientation setting. The default value is \c + TQPrinter::Portrait. + + \sa setOrientation() +*/ + +/*! + Sets the print orientation to \a orientation. + + The orientation can be either \c TQPrinter::Portrait or \c + TQPrinter::Landscape. + + The printer driver reads this setting and prints using the + specified orientation. On Windows this setting won't take effect + until the printer dialog is shown (using TQPrinter::setup()). + + Windows only! This option can be changed while printing and will + take effect from the next call to newPage() + + \sa orientation() +*/ + +void TQPrinter::setOrientation( Orientation orientation ) +{ + orient = orientation; +#if defined(TQ_WS_WIN) + reinit(); +#endif +} + + +/*! + \fn PageSize TQPrinter::pageSize() const + + Returns the printer page size. The default value is system-dependent. + + \sa setPageSize() +*/ + + +/*! + Sets the printer page size to \a newPageSize if that size is + supported. The result if undefined if \a newPageSize is not + supported. + + The default page size is system-dependent. + + This function is useful mostly for setting a default value that + the user can override in the print dialog when you call setup(). + + \sa pageSize() PageSize setFullPage() setResolution() +*/ + +void TQPrinter::setPageSize( PageSize newPageSize ) +{ + if ( newPageSize > NPageSize ) { +#if defined(TQT_CHECK_STATE) + qWarning("TQPrinter::SetPageSize: illegal page size %d", newPageSize ); +#endif + return; + } + page_size = newPageSize; +#if defined(TQ_WS_WIN) + reinit(); +#endif +} + +/*! + Sets the page order to \a newPageOrder. + + The page order can be \c TQPrinter::FirstPageFirst or \c + TQPrinter::LastPageFirst. The application programmer is responsible + for reading the page order and printing accordingly. + + This function is useful mostly for setting a default value that + the user can override in the print dialog when you call setup(). + + \bug This value is not kept in sync with the Windows or Mac OS X printer + dialogs. +*/ + +void TQPrinter::setPageOrder( PageOrder newPageOrder ) +{ + page_order = newPageOrder; +#if defined(TQ_WS_WIN) + reinit(); +#endif +} + + +/*! + Returns the current page order. + + The default page order is \c FirstPageFirst. + + \bug This value is not kept in sync with the Windows or Mac OS X printer + dialogs. +*/ + +TQPrinter::PageOrder TQPrinter::pageOrder() const +{ + return page_order; +} + + +/*! + Sets the printer's color mode to \a newColorMode, which can be + either \c Color or \c GrayScale (the default). + + \sa colorMode() +*/ + +void TQPrinter::setColorMode( ColorMode newColorMode ) +{ + color_mode = newColorMode; +#if defined(TQ_WS_WIN) + reinit(); +#endif +} + + +/*! + Returns the current color mode. The default color mode is \c + Color. + + \sa setColorMode() +*/ + +TQPrinter::ColorMode TQPrinter::colorMode() const +{ + return color_mode; +} + + +/*! + \fn int TQPrinter::fromPage() const + + Returns the from-page setting. The default value is 0. + + If fromPage() and toPage() both return 0 this signifies 'print the + whole document'. + + The programmer is responsible for reading this setting and + printing accordingly. + + \sa setFromTo(), toPage() +*/ + +/*! + \fn int TQPrinter::toPage() const + + Returns the to-page setting. The default value is 0. + + If fromPage() and toPage() both return 0 this signifies 'print the + whole document'. + + The programmer is responsible for reading this setting and + printing accordingly. + + \sa setFromTo(), fromPage() +*/ + +/*! + Sets the from-page and to-page settings to \a fromPage and \a + toPage respectively. + + The from-page and to-page settings specify what pages to print. + + If fromPage() and toPage() both return 0 this signifies 'print the + whole document'. + + This function is useful mostly to set a default value that the + user can override in the print dialog when you call setup(). + + \sa fromPage(), toPage(), setMinMax(), setup() +*/ + +void TQPrinter::setFromTo( int fromPage, int toPage ) +{ + if ( state != 0 ) { +#if defined(TQT_CHECK_STATE) + qWarning( "TQPrinter::setFromTo: Cannot do this during printing" ); +#endif + return; + } + from_pg = fromPage; + to_pg = toPage; +} + + +/*! + \fn int TQPrinter::minPage() const + + Returns the min-page setting, i.e. the lowest page number a user + is allowed to choose. The default value is 0. + + \sa maxPage(), setMinMax() setFromTo() +*/ + +/*! + \fn int TQPrinter::maxPage() const + + Returns the max-page setting. A user can't choose a higher page + number than maxPage() when they select a print range. The default + value is 0. + + \sa minPage(), setMinMax() setFromTo() +*/ + +/*! + Sets the min-page and max-page settings to \a minPage and \a + maxPage respectively. + + The min-page and max-page restrict the from-page and to-page + settings. When the printer setup dialog appears, the user cannot + select a from page or a to page that are outside the range + specified by min and max pages. + + \sa minPage(), maxPage(), setFromTo(), setup() +*/ + +void TQPrinter::setMinMax( int minPage, int maxPage ) +{ + min_pg = minPage; + max_pg = maxPage; + if ( from_pg == 0 || from_pg < minPage ) + from_pg = minPage; + if ( to_pg == 0 || to_pg > maxPage ) + to_pg = maxPage; +} + + +/*! + \fn int TQPrinter::numCopies() const + + Returns the number of copies to be printed. The default value is 1. + + This value will return the number of times the application is + required to print in order to match the number specified in the + printer setup dialog. This has been done since some printer + drivers are not capable of buffering up the copies and the + application in those cases have to make an explicit call to the + print code for each copy. + + \sa setNumCopies() +*/ + +/*! + \fn bool TQPrinter::collateCopiesEnabled() const + + \internal + + Returns TRUE if the application should provide the user with the + option of choosing a collated printout; otherwise returns FALSE. + + Collation means that each page is printed in order, i.e. print the + first page, then the second page, then the third page and so on, and + then repeat this sequence for as many copies as have been requested. + If you don't collate you get several copies of the first page, then + several copies of the second page, then several copies of the third + page, and so on. + + \sa setCollateCopiesEnabled() setCollateCopies() collateCopies() +*/ + +/*! + \fn void TQPrinter::setCollateCopiesEnabled(bool enable) + + \internal + + If \a enable is TRUE (the default) the user is given the choice of + whether to print out multiple copies collated in the print dialog. + If \a enable is FALSE, then collateCopies() will be ignored. + + Collation means that each page is printed in order, i.e. print the + first page, then the second page, then the third page and so on, and + then repeat this sequence for as many copies as have been requested. + If you don't collate you get several copies of the first page, then + several copies of the second page, then several copies of the third + page, and so on. + + \sa collateCopiesEnabled() setCollateCopies() collateCopies() +*/ + +/*! + \fn bool TQPrinter::collateCopies() const + + \internal + + Returns TRUE if collation is turned on when multiple copies is selected. + Returns FALSE if it is turned off when multiple copies is selected. + + \sa collateCopiesEnabled() setCollateCopiesEnabled() setCollateCopies() +*/ + +/*! + \internal + + Sets the default value for collation checkbox when the print dialog appears. + If \a on is TRUE, it will enable setCollateCopiesEnabled(). + The default value is FALSE. This value will be changed by what the + user presses in the print dialog. + + \sa collateCopiesEnabled() setCollateCopiesEnabled() collateCopies() +*/ + +void TQPrinter::setCollateCopies(bool on) +{ + if (!collateCopiesEnabled() && on) + setCollateCopiesEnabled(on); + usercolcopies = on; +} + +/*! + Sets the number of copies to be printed to \a numCopies. + + The printer driver reads this setting and prints the specified + number of copies. + + \sa numCopies(), setup() +*/ + +void TQPrinter::setNumCopies( int numCopies ) +{ + ncopies = numCopies; +#if defined(TQ_WS_WIN) + reinit(); +#endif +} + + +/*! + Returns the printer options selection string. This is useful only + if the print command has been explicitly set. + + The default value (a null string) implies that the printer should + be selected in a system-dependent manner. + + Any other value implies that the given value should be used. + + \sa setPrinterSelectionOption() +*/ + +TQString TQPrinter::printerSelectionOption() const +{ + return option_string; +} + + +/*! + Sets the printer to use \a option to select the printer. \a option + is null by default (which implies that TQt should be smart enough + to guess correctly), but it can be set to other values to use a + specific printer selection option. + + If the printer selection option is changed while the printer is + active, the current print job may or may not be affected. + + \sa printerSelectionOption() +*/ + +void TQPrinter::setPrinterSelectionOption( const TQString & option ) +{ + option_string = option; +} + + +/*! + Sets TQPrinter to have the origin of the coordinate system at the + top-left corner of the paper if \a fp is TRUE, or where it thinks + the top-left corner of the printable area is if \a fp is FALSE. + + The default is FALSE. You can (probably) print on (0,0), and + TQPaintDeviceMetrics will report something smaller than the size + indicated by PageSize. (Note that TQPrinter may be wrong on Unix + systems - it does not have perfect knowledge of the physical + printer.) + + If you set \a fp to TRUE, TQPaintDeviceMetrics will report the + exact same size as indicated by \c PageSize, but you cannot print + on all of that - you must take care of the output margins + yourself. + + \sa PageSize setPageSize() TQPaintDeviceMetrics fullPage() +*/ + +void TQPrinter::setFullPage( bool fp ) +{ + to_edge = fp; +} + + +/*! + Returns TRUE if the origin of the printer's coordinate system is + at the corner of the sheet and FALSE if it is at the edge of the + printable area. + + See setFullPage() for details and caveats. + + \sa setFullPage() PageSize TQPaintDeviceMetrics +*/ + +bool TQPrinter::fullPage() const +{ + return to_edge; +} + + +/*! + Requests that the printer prints at \a dpi or as near to \a dpi as + possible. + + This setting affects the coordinate system as returned by, for + example, TQPaintDeviceMetrics and TQPainter::viewport(). + + The value depends on the \c PrintingMode used in the TQPrinter + constructor. By default, the dpi value of the screen is used. + + This function must be called before setup() to have an effect on + all platforms. + + \sa resolution() setPageSize() +*/ + +void TQPrinter::setResolution( int dpi ) +{ + res = dpi; + res_set = TRUE; +} + + +/*! + Returns the current assumed resolution of the printer, as set by + setResolution() or by the printer subsystem. + + \sa setResolution() +*/ + +int TQPrinter::resolution() const +{ + return res; +} + +/*! + Sets the paper source setting to \a source. + + Windows only! This option can be changed while printing and will + take effect from the next call to newPage() + + \sa paperSource() +*/ + +void TQPrinter::setPaperSource( PaperSource source ) +{ + paper_source = source; +#if defined(TQ_WS_WIN) + reinit(); +#endif +} + +/*! + Returns the currently set paper source of the printer. + + \sa setPaperSource() +*/ + +TQPrinter::PaperSource TQPrinter::paperSource() const +{ + return paper_source; +} + +/*! + Sets the default selected page range to be used when the print setup + dialog is opened to \a range. If the PageRange specified by \a range is + currently disabled the function does nothing. + + \sa printRange() +*/ +void TQPrinter::setPrintRange( PrintRange range ) +{ + if( range != AllPages ) + if( range == Selection + && !isOptionEnabled( PrintSelection ) ) + setOptionEnabled( PrintSelection, TRUE ); + else if( range == PageRange + && !isOptionEnabled( PrintPageRange ) ) + setOptionEnabled( PrintPageRange, TRUE ); + d->printRange = range; +} + +/*! + Returns the PageRange of the TQPrinter. After the print setup dialog + has been opened, this function returns the value selected by the user. + + \sa setPrintRange() +*/ +TQPrinter::PrintRange TQPrinter::printRange() const +{ + return d->printRange; +} + +/*! + Enables the printer option with the identifier \a option if \a + enable is TRUE, and disables option \a option if \a enable is FALSE. + + \sa isOptionEnabled() +*/ +void TQPrinter::setOptionEnabled( PrinterOption option, bool enable ) +{ + if( enable ) { + d->printerOptions |= ( 1 << option ); + if( ( option == PrintPageRange ) && min_pg==0 && max_pg==0 ) + max_pg = 9999; + } else { + d->printerOptions &= ( ~( 1 << option ) ); + } +} + +/*! + Returns TRUE if the printer option with identifier \a option is enabled; + otherwise returns FALSE. + + \sa setOptionEnabled() + */ +bool TQPrinter::isOptionEnabled( PrinterOption option ) +{ + return d->printerOptions & ( 1 << option ); +} + +#endif // USE_QT4 + +#endif // TQT_NO_PRINTER + |