summaryrefslogtreecommitdiffstats
path: root/tqtinterface/qt4/src/kernel/tqprinter.cpp
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-07-10 15:17:53 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-07-10 15:17:53 -0500
commitdda8474928bd7276e1fad8fb7a601e7c83ff2bc2 (patch)
tree7f83910598b33b12730035f086df20b5a53ab99c /tqtinterface/qt4/src/kernel/tqprinter.cpp
parent6260b6178868c03aab1644bf93b0ef043654bdb0 (diff)
downloadexperimental-dda8474928bd7276e1fad8fb7a601e7c83ff2bc2.tar.gz
experimental-dda8474928bd7276e1fad8fb7a601e7c83ff2bc2.zip
Added TQt4 HEAD
Diffstat (limited to 'tqtinterface/qt4/src/kernel/tqprinter.cpp')
-rw-r--r--tqtinterface/qt4/src/kernel/tqprinter.cpp1198
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
+