X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FPrinterParams.h;h=06dd555d15db2d4c9f808b7711414b60e90a89ab;hb=2523638092e2024bac408eee98ad2094bc4e4089;hp=670c32ae2207af39fa39191781a7b5d3bbb25995;hpb=d6665cba427b04ae37f42c846398cad518d2be0f;p=lyx.git diff --git a/src/PrinterParams.h b/src/PrinterParams.h index 670c32ae22..06dd555d15 100644 --- a/src/PrinterParams.h +++ b/src/PrinterParams.h @@ -1,13 +1,13 @@ // -*- C++ -*- /* This file is part of * ====================================================== - * + * * LyX, The Document Processor - * + * * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team + * Copyright 1995-2001 The LyX Team * - * This file Copyright 1999-2000 + * This file Copyright 1999-2001 * Allan Rae *====================================================== */ @@ -15,13 +15,11 @@ #ifndef PRINTERPARAMS_H #define PRINTERPARAMS_H -#ifndef LYXRC_H -#error You must include lyxrc.h before PrinterParams.h -#endif +#include "lyxrc.h" #ifdef ENABLE_ASSERTIONS +#include "support/lstrings.h" #include "support/LAssert.h" -extern bool containsOnly(string const &, char const *); #endif @@ -47,17 +45,8 @@ struct PrinterParams { string printer_name; /// string file_name; - /// We allow printing of even pages in a range and so on. - enum WhichPages{ - /// - ALL, - /// - ODD, - /// - EVEN - }; /// - WhichPages which_pages; + 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 @@ -65,44 +54,74 @@ struct PrinterParams { a page range "1,3-5" and so on. I've modified the invariant test to match. ARRae 20000518 */ - string from_page; + unsigned int from_page; /// - int to_page; + unsigned int to_page; /// - bool reverse_order; + bool odd_pages; + /// + bool even_pages; /// - bool unsorted_copies; + unsigned int count_copies; /// - 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 + // Override the documents orientation // bool orientation; // Print n pages per physical sheet // unsigned int nup; // Override document settings for duplex. // bool duplex; + /** Test that all the fields contain valid entries. It's unlikely + that the internal code will get this wrong (at least for the + xforms code anyway) however new ports and external scripts + might drive the wrong values in. + */ + void testInvariant() const + { +#ifdef ENABLE_ASSERTIONS + switch (target) { + case PRINTER: + //Assert(!printer_name.empty()); + break; + case FILE: + lyx::Assert(!file_name.empty()); + break; + default: + lyx::Assert(false); + break; + } +#endif + } + /// PrinterParams(Target const & t = PRINTER, string const & pname = lyxrc.printer, string const & fname = string(), - WhichPages const wp = ALL, - string const & from = string(), - int const & to = 0, - bool const reversed = false, - bool const unsorted = false, - int const & num_copies = 1) + bool const all = true, + unsigned int const & from = 1, + unsigned int const & to = 0, + bool const odd = true, + bool const even = true, + unsigned int const & copies = 1, + bool const sorted = false, + bool const reverse = false) : target(t), printer_name(pname), file_name(fname), - which_pages(wp), + all_pages(all), from_page(from), to_page(to), - reverse_order(reversed), - unsorted_copies(unsorted), - count_copies(num_copies) + odd_pages(odd), + even_pages(even), + count_copies(copies), + sorted_copies(sorted), + reverse_order(reverse) { testInvariant(); } @@ -111,59 +130,17 @@ struct PrinterParams { : target(pp.target), printer_name(pp.printer_name), file_name(pp.file_name), - which_pages(pp.which_pages), + all_pages(pp.all_pages), from_page(pp.from_page), to_page(pp.to_page), - reverse_order(pp.reverse_order), - unsorted_copies(pp.unsorted_copies), - count_copies(pp.count_copies) + odd_pages(pp.odd_pages), + even_pages(pp.even_pages), + count_copies(pp.count_copies), + sorted_copies(pp.sorted_copies), + reverse_order(pp.reverse_order) { testInvariant(); } - -// do we need these? -// friend bool operator==(PrinterParams const &, PrinterParams const &); -// friend bool operator<(PrinterParams const &, PrinterParams const &); - - /** Test that all the fields contain valid entries. It's unlikely - that the internal code will get this wrong (at least for the - xforms code anyway) however new ports and external scripts - might drive the wrong values in. - */ - void testInvariant() const - { -#ifdef ENABLE_ASSERTIONS - if (!from_page.empty()) { - // Assert(from_page == number or empty) - Assert(containsOnly(from_page, "1234567890")); - } - if (to_page) { - // Assert(to_page == empty - // or number iff from_page set) - Assert(!from_page.empty()); - } - switch (target) { - case PRINTER: -// Assert(!printer_name.empty()); - break; - case FILE: - Assert(!file_name.empty()); - break; - default: - Assert(false); - break; - } - switch (which_pages) { - case ALL: - case ODD: - case EVEN: - break; - default: - Assert(false); - break; - } -#endif - } }; #endif