prinfo.h
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:11k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * prinfo.h
  3.  *
  4.  * Printer job information class.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: prinfo.h,v $
  30.  * Revision 1.12  1999/03/10 03:49:52  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.11  1999/03/09 08:01:49  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.10  1999/02/16 08:08:46  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.9  1998/12/12 00:42:58  robertj
  40.  * Added functions for user request on printing selection only.
  41.  * Fixed transfer of start and end pages from PPrintDialog.
  42.  *
  43.  * Revision 1.8  1998/09/23 06:28:24  robertj
  44.  * Added open source copyright license.
  45.  *
  46.  * Revision 1.7  1995/06/17 11:13:01  robertj
  47.  * Documentation update.
  48.  *
  49.  * Revision 1.6  1995/03/14 12:42:11  robertj
  50.  * Updated documentation to use HTML codes.
  51.  *
  52.  * Revision 1.5  1995/01/11  09:45:05  robertj
  53.  * Documentation and normalisation.
  54.  *
  55.  * Revision 1.4  1994/08/23  11:32:52  robertj
  56.  * Oops
  57.  *
  58.  * Revision 1.3  1994/08/22  00:46:48  robertj
  59.  * Added pragma fro GNU C++ compiler.
  60.  *
  61.  * Revision 1.2  1994/06/25  11:55:15  robertj
  62.  * Unix version synchronisation.
  63.  *
  64.  * Revision 1.1  1994/04/01  14:25:36  robertj
  65.  * Initial revision
  66.  *
  67.  */
  68. #define _PPRINTINFO
  69. #ifdef __GNUC__
  70. #pragma interface
  71. #endif
  72. /**This class defines the setup parameters for a printer. Instances of this
  73.    class are usually created by the Ref{PPrintJobDialog} or
  74.    Ref{PPrinterSetupDialog} standard dialogs.
  75.    Not all of the specified parameters will have an effect on all platforms,
  76.    or even on all printers for a particular platform.
  77.  */
  78. class PPrintInfo : public PObject
  79. {
  80.   PCLASSINFO(PPrintInfo, PObject);
  81.   public:
  82.    /**Create an object to encapsulate printing information. The first form
  83.        selects the system default printer and port, the second allows an
  84.        arbitrary printer and port to be specified by the application.
  85.        
  86.        It is possible for there to be a different setup for the same printer
  87.        type on different devices, eg a "postscript" printer type on "LPT1" is
  88.        only A4 but on "LPT2" is capabile of A3.
  89.        Explicit selection of a printer type and device is rare as the string
  90.        contents are platform dependent. It is possible though that they may
  91.        come from a configuration file that is itself platform dependent.
  92.      */
  93.     PPrintInfo();
  94.     PPrintInfo(
  95.       const PString & printerType,
  96.      /**Printer type name for printing to, eg "Postscript". The possible
  97.          values for this parameter are platform dependent and would rarely be
  98.          set explicitly by the application.
  99.        */
  100.       const PString & devicePort
  101.      /**Output device or queue for printer, eg "LPT1" for MS-Windows or
  102.          "PS_LASER" for Unix. The possible values for this parameter are
  103.          platform dependent and would rarely be set explicitly by the
  104.          application.
  105.        */
  106.     );
  107.   /**@name New members for class */
  108.    /**Get the printer type name that this printer setup information is for.
  109.     
  110.        @return
  111.        string name of the printer type.
  112.      */
  113.     PString GetPrinter() const;
  114.    /**Get the printer device name that this printer setup information is for.
  115.     
  116.        @return
  117.        string name of the printer device.
  118.      */
  119.     PString GetDevice() const;
  120.     /** Standard paper sizes for printer setup. */
  121.     enum Forms {
  122.      /**Custom form size, the page size must be set by the
  123.          Ref{SetPaperSize()} function if this form type is used.
  124.        */
  125.       Custom,
  126.       /// Standard metric A3 size paper.
  127.       A3,       
  128.       /// Standard metric A4 size paper.
  129.       A4,       
  130.       /// Standard metric A5 size paper.
  131.       A5,       
  132.       /// Standard metric B4 size paper.
  133.       B4,       
  134.       /// Standard metric B5 size paper.
  135.       B5,       
  136.       /// Standard US letter size paper.
  137.       USLetter, 
  138.       /// Standard US legal size paper.
  139.       USLegal,  
  140.       /// Total number of form types thsi setup can understand.
  141.       MaxForm   
  142.     };
  143.    /**Set the print form used. This can be a standard paper size or the
  144.        #Custom# value which allows arbitrary paper sizes.
  145.        
  146.        Note that not all printers will take any notice of this parameter.
  147.      */
  148.     void SetForm(
  149.       Forms newForm   /// New standard paper size for printer setup.
  150.     );
  151.    /**Get the print form used. This can be a standard paper size or the
  152.        #Custom# value which allows arbitrary paper sizes.
  153.        
  154.        Note that not all printers will take any notice of this parameter.
  155.        @return
  156.        current form for printer setup.
  157.      */
  158.     Forms GetForm() const;
  159.    /**Set the paper size in tenths of a millimeter. A call to this function
  160.        will automatically set the form type to #Custom#.
  161.        Note that not all printers will take any notice of this parameter.
  162.      */
  163.     void SetPaperSize(
  164.       const PDim & dim      /// Dimensions of the paper page.
  165.     );
  166.    /**Get the paper size in tenths of a millimeter. If the form is
  167.        #Custom# then the value set in Ref{SetPaperSize()} is
  168.        returned. If a standard form is selected, eg #A4#, then the
  169.        size of the standard form is returned.
  170.        @return
  171.        current paper size.
  172.      */
  173.     PDim GetPaperSize() const;
  174.    /**Get the printer device resolution in dots per inch for the horizontal
  175.        and vertical dimensions. Usually these are the same but some dot matrix
  176.        or ink jet printers cannot render vertically as well as horizontally.
  177.        @return
  178.        printer resolution in DPI.
  179.      */
  180.     PDim GetResolution() const;
  181.     /** Set the number of copies to be produced by the print job. */
  182.     void SetCopies(
  183.       unsigned count    /// Number of copies to print.
  184.     );
  185.    /**Get the number of copies to be produced by the print job.
  186.     
  187.        @return
  188.        total copies to print.
  189.      */
  190.     unsigned GetCopies() const;
  191.    /**Set the paper orientation. The printing can be either {it portrait}
  192.        or {it landscape}.
  193.      */
  194.     void SetPortrait(
  195.       BOOL port = TRUE    /// Flag for portrait (TRUE) or landscape (FALSE).
  196.     );
  197.    /**Set the paper orientation to landscape. This is equivalent to
  198.        #SetPortrait(FALSE)#.
  199.      */
  200.     void SetLandscape();
  201.    /**Determine the paper orientation.
  202.     
  203.        @return
  204.        TRUE if paper is in portait mode, FALSE if landscape.
  205.      */
  206.     BOOL IsPortrait() const;
  207.    /**Determine if printer quality is in draft mode, otherwise final or letter
  208.        quality mode is used. Some printers, eg lasers, are never in draft
  209.        quality mode.
  210.        @return
  211.        TRUE if printing is in draft quality.
  212.      */
  213.     BOOL IsDraftQuality() const;
  214.    /**Set the starting page for the print job. This is effectively a count of
  215.        pages to skip before outputing data. Page 1 is the first page and will
  216.        print from the start of the print job.
  217.        Note if the Start page is set to zero, then the ability to set the page
  218.        range is disabled.
  219.      */
  220.     void SetStartPage(
  221.       unsigned page   /// First page to print.
  222.     );
  223.    /**Get the starting page for the print job. This is effectively a count of
  224.        pages to skip before outputing data. Page 1 is the first page and will
  225.        print from the start of the print job.
  226.        Note if the Start page is set to zero, then the ability to set the page
  227.        range is disabled.
  228.        @return
  229.        first page to print.
  230.      */
  231.     unsigned GetStartPage() const;
  232.    /**Set the ending page for the print job. Page 1 is the first page and will
  233.        print only that page. Use 0 or a very large number to print through to
  234.        the end of the print job.
  235.      */
  236.     void SetEndPage(
  237.       unsigned page   /// Last page to print.
  238.     );
  239.    /**Set the ending page for the print job. Page 1 is the first page and will
  240.        print only that page. Use 0 or a very large number to print through to
  241.        the end of the print job.
  242.        @return
  243.        last page to print.
  244.      */
  245.     unsigned GetEndPage() const;
  246.     /** Options for printing selected "items" only. */
  247.     enum SelectionOnly {
  248.       /// There is no such option as print selection.
  249.       NoSelectionOnly,
  250.       /// Print selection is available but is not required.
  251.       SelectionOnlyOff,
  252.       /// Only print the selection.
  253.       SelectionOnlyOn,
  254.     };
  255.    /**Set the flag for if the selection in the document is to be printed. If
  256.        the #NoSelectionOnly# valus is used then there is no
  257.        provision for the user to indicate that only the selction is to be
  258.        printed.
  259.      */
  260.     void SetSelectionOnly(
  261.       SelectionOnly selOnly
  262.     );
  263.    /**Get the flag for if the selection in the document is to be printed. If
  264.        the #NoSelectionOnly# valus is used then there is no
  265.        provision for the user to indicate that only the selction is to be
  266.        printed.
  267.        @return
  268.        Current selection only print flag state.
  269.      */
  270.     SelectionOnly GetSelectionOnly() const;
  271.    /**Simplification of the GetSelectionOnly() function which indicates that
  272.        the document selection is to be printed.
  273.        @return
  274.        TRUE if selection is to be printed.
  275.      */
  276.     BOOL IsSelectionOnly() const;
  277.   protected:
  278.     // Member variables
  279.     /** Printer type string. */
  280.     PString printer;
  281.     
  282.     /** Printer device string. */
  283.     PString device;
  284.     /** Standard paper size for setup. */
  285.     Forms form;
  286.     /** Current forms paper fize in tenths of a millimeter. */
  287.     PDim paperSize;
  288.     /** Current printer types resultion in dots per inch. */
  289.     PDim resolution;
  290.     /** First page to print. */
  291.     unsigned startPage;
  292.     /** Last page to print. */
  293.     unsigned endPage;
  294.     /** Print the selection */
  295.     SelectionOnly selectionOnly;
  296.     /** Number of copies to print. */
  297.     unsigned copies;
  298.     /** Page orientation, TRUE is portrait mode. */
  299.     BOOL orientation;
  300.     /** Printer is to print in draft quality. */
  301.     BOOL draftQuality;
  302. #ifdef DOC_PLUS_PLUS
  303. };
  304. #endif
  305. // Class declaration continued in platform specific header file ///////////////