// -*- C++ -*- /** * \file PrinterParams.h * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * * \author Allan Rae * * Full author contact details are available in file CREDITS. */ #ifndef PRINTERPARAMS_H #define PRINTERPARAMS_H #include namespace lyx { /** This class contains (or should contain) all the parameters required for printing a buffer. Some work still needs to be done on this class and printing handling in general to make it nice and full-featured. The main things I'd like to add now is the ability to print a read-only document with different orientation, papersize or single/duplex state than the document's settings. ARRae 20000423 */ class PrinterParams { public: /// PrinterParams(); /// enum Target { /// PRINTER, /// FILE }; /** Test that all the fields contain valid entries. It's unlikely that the internal code will get this wrong however new ports and external scripts might drive the wrong values in. */ void testInvariant() const; public: /// Target target; /// std::string printer_name; /// std::string file_name; /// bool all_pages; /** Print a page range. Both from_page and to_page used to be strings because they're actually easier to work with that way. I've switched to_page to be an int. However, from_page will remain a string because I want the from_page field to be able to be used as a page range "1,3-5" and so on. I've modified the invariant test to match. ARRae 20000518 */ unsigned int from_page; /// unsigned int to_page; /// bool odd_pages; /// bool even_pages; /// unsigned int count_copies; /// bool sorted_copies; /// bool reverse_order; // The settings below should allow us to print any read-only doc in // whatever size/orientation we want it -- overriding the documents // settings. // Override the documents orientation // bool orientation; // Print n pages per physical sheet // unsigned int nup; // Override document settings for duplex. // bool duplex; }; } // namespace lyx #endif