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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * pcanvas.h
  3.  *
  4.  * Printer canvas.
  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: pcanvas.h,v $
  30.  * Revision 1.16  1999/03/10 03:49:52  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.15  1999/03/09 08:01:49  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.14  1999/02/16 08:08:46  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.13  1998/09/23 06:24:38  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.12  1998/03/20 03:14:40  robertj
  43.  * Added function to get physical bounds of canvas. Allows to scale drawing.
  44.  *
  45.  * Revision 1.11  1995/06/17 11:12:51  robertj
  46.  * Documentation update.
  47.  *
  48.  * Revision 1.10  1995/03/14 12:41:59  robertj
  49.  * Updated documentation to use HTML codes.
  50.  *
  51.  * Revision 1.9  1994/12/21  11:53:20  robertj
  52.  * Documentation and variable normalisation.
  53.  *
  54.  * Revision 1.8  1994/08/23  11:32:52  robertj
  55.  * Oops
  56.  *
  57.  * Revision 1.7  1994/08/22  00:46:48  robertj
  58.  * Added pragma fro GNU C++ compiler.
  59.  *
  60.  * Revision 1.6  1994/06/25  11:55:15  robertj
  61.  * Unix version synchronisation.
  62.  *
  63.  * Revision 1.5  1994/03/07  07:38:19  robertj
  64.  * Major enhancementsacross the board.
  65.  *
  66.  * Revision 1.4  1994/01/03  04:42:23  robertj
  67.  * Mass changes to common container classes and interactors etc etc etc.
  68.  *
  69.  * Revision 1.3  1993/08/21  01:50:33  robertj
  70.  * Made Clone() function optional, default will assert if called.
  71.  *
  72.  * Revision 1.2  1993/07/14  12:49:16  robertj
  73.  * Fixed RCS keywords.
  74.  *
  75.  */
  76. #define _PPRINTCANVAS
  77. #ifdef __GNUC__
  78. #pragma interface
  79. #endif
  80. /**A canvas that will go to a printer. Outputing to a printer consists of
  81.    drawing to an area that represents a printed page. The application then
  82.    completes each page and creates a new blank page to be drawn to.
  83.   *********************************** NOTE ***********************************
  84.   On Some platforms, canvases are a limited resource. Do NOT create and leave
  85.   them around for long periods. As soon as it is not required till the next
  86.   user event, destroy it!
  87.   ****************************************************************************
  88.  */
  89. class PPrintCanvas : public PCanvas
  90. {
  91.   PCLASSINFO(PPrintCanvas, PCanvas);
  92.   public:
  93.    /**Create a canvas that will go to the default printer device using its
  94.        default printer setup.
  95.      */
  96.     PPrintCanvas(
  97.       const PString & job
  98.      /**Arbitrary name to identify to print job on some platforms, eg an
  99.          identifier in the print queue for MS-Windows.
  100.        */
  101.     );
  102.    /**Create a canvas that will go to the specified printer device using its
  103.        default printer setup.
  104.      */
  105.     PPrintCanvas(
  106.       const PString & job,
  107.      /**Arbitrary name to identify to print job on some platforms, eg an
  108.          identifier in the print queue for MS-Windows.
  109.        */
  110.       const PString & printer,
  111.      /**Printer type name for printing to, eg "Postscript". The possible
  112.          values for this parameter are platform dependent and would rarely be
  113.          set explicitly by the application.
  114.        */
  115.       const PString & device
  116.      /**Output device or queue for printer, eg "LPT1" for MS-Windows or
  117.          "PS_LASER" for Unix. The possible values for this parameter are
  118.          platform dependent and would rarely be set explicitly by the
  119.          application.
  120.        */
  121.     );
  122.    /**Create a canvas that will go to the specified printer device using the
  123.        specified printer setup.
  124.      */
  125.     PPrintCanvas(
  126.       const PString & job,
  127.      /**Arbitrary name to identify to print job on some platforms, eg an
  128.          identifier in the print queue for MS-Windows.
  129.        */
  130.       const PPrintInfo & info
  131.      /**Printer specification describing all optional information on the
  132.          selected printer. This would typically be obtained via the
  133.          Ref{PPrintJobDialog} class.
  134.        */
  135.     );
  136.     /** Destroy the printer canvas, freing all resource used. */
  137.     virtual ~PPrintCanvas();
  138.   /**@name New functions for class */
  139.    /**Begin output to a new page. This will close and queue the current page
  140.        and provide a clean new page for further drawing operations.
  141.        
  142.        @return
  143.        TRUE if previous page was successfully queued and the new page is ready
  144.        to be drawn to.
  145.      */
  146.     BOOL NewPage();
  147.    /**Set the drawable area of the printer page. This can limit the amount of
  148.        the page specified in the printer setup that is actually used for the
  149.        printing. This can be usefull for output code that scales to the
  150.        Ref{GetDrawingBounds()} function, but it is not desired that it scale
  151.        to the full page size.
  152.      */
  153.     void SetDrawingBounds(
  154.       const PRect & bounds    /// New bounds for canvas.
  155.     );
  156.    /**Get the current printer setup information for the print canvas.
  157.     
  158.        @return
  159.        reference to the current print info.
  160.      */
  161.     const PPrintInfo & GetPrintInfo() const;
  162.    /**This allows the print parameters to be changed in mid job. Note that
  163.        this can only occur between pages, so there is an implicit
  164.        Ref{NewPage()} call in this function.
  165.        
  166.        Not all items in the PPrintInfo can be changed in the middle of the
  167.        print job, eg changing the printer type from "Postscript" to "HPPCL".
  168.        These changes are ignored by the ChangePrintInfo() function.
  169.      */
  170.     void ChangePrintInfo(
  171.       const PPrintInfo & info   /// New print information.
  172.     );
  173.   protected:
  174.     // New functions for class
  175.     void Construct();
  176.       // Internal function for common constructor code.
  177.     /**@name Member fields */
  178.    /**Arbitrary name to identify to print job on some platforms, eg an
  179.        identifier in the print queue for MS-Windows.
  180.      */
  181.     PString jobName;
  182.    /**Printer specification describing all optional information on the
  183.        selected printer. This would typically be obtained via the
  184.        Ref{PPrintJobDialog} class.
  185.      */
  186.     PPrintInfo printInfo;
  187. #ifdef DOC_PLUS_PLUS
  188. };
  189. #endif
  190. // Class declaration continued in platform specific header file ///////////////