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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * icanvas.h
  3.  *
  4.  * Interactor Canvas ancestor 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: icanvas.h,v $
  30.  * Revision 1.15  1999/03/10 03:49:51  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.14  1999/03/09 08:01:48  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.13  1999/02/16 08:08:45  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.12  1998/09/23 06:23:46  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.11  1995/06/17 11:12:38  robertj
  43.  * Documentation update.
  44.  *
  45.  * Revision 1.10  1995/03/14 12:41:30  robertj
  46.  * Updated documentation to use HTML codes.
  47.  *
  48.  * Revision 1.9  1994/12/21  11:53:02  robertj
  49.  * Documentation and variable normalisation.
  50.  *
  51.  * Revision 1.8  1994/08/23  11:32:52  robertj
  52.  * Oops
  53.  *
  54.  * Revision 1.7  1994/08/22  00:46:48  robertj
  55.  * Added pragma fro GNU C++ compiler.
  56.  *
  57.  * Revision 1.6  1994/06/25  11:55:15  robertj
  58.  * Unix version synchronisation.
  59.  *
  60.  * Revision 1.5  1994/03/07  07:38:19  robertj
  61.  * Major enhancementsacross the board.
  62.  *
  63.  * Revision 1.4  1994/01/15  03:40:36  robertj
  64.  * Added destructor for Mac.
  65.  *
  66.  * Revision 1.4  1994/01/15  03:30:33  robertj
  67.  * Added destructor for use by Mac.
  68.  *
  69.  * Revision 1.3  1994/01/03  04:42:23  robertj
  70.  * Mass changes to common container classes and interactors etc etc etc.
  71.  *
  72.  * Revision 1.2  1993/07/14  12:49:16  robertj
  73.  * Fixed RCS keywords.
  74.  *
  75.  */
  76. #define _PINTERACTORCANVAS
  77. #ifdef __GNUC__
  78. #pragma interface
  79. #endif
  80. class PInteractor;
  81. /**A canvas that is attached to an interactor on the screen. This is an
  82.    abstract class with two main descendents. If the application wants to draw
  83.    into the interactor outside of the automatic update mechanism it must use
  84.    Ref{PDrawCanvas}, while the Ref{PInteractor::OnRedraw()} function of an
  85.    interactor receives an instance of the Ref{PRedrawCanvas} class.
  86.   *********************************** NOTE ***********************************
  87.   On Some platforms, canvases are a limited resource. Do NOT create and leave
  88.   them around for long periods. As soon as it is not required till the next
  89.   user event, destroy it!
  90.   ****************************************************************************
  91.  */
  92. class PInteractorCanvas : public PCanvas
  93. {
  94.   PCLASSINFO(PInteractorCanvas, PCanvas);
  95.   public:
  96.     /** Create a canvas associated with an interactor on the screen. */
  97.     PInteractorCanvas(
  98.       PInteractor * theInteractor,  /// Interactor canvas is attached to.
  99.       BOOL inPixels
  100.      /**Set the initial canvas coordinates are in screen pixels. The default
  101.          is for the coordinates to be set to one based on the current font for
  102.          the interactor (1/4 the average character widthand 1/8 the height).
  103.        */
  104.     );
  105.     /** Destroy the interactor canvas. */
  106.     ~PInteractorCanvas();
  107.     /**@name Overrides from class PCanvas */
  108.    /**Get the drawable area of the interactor, this would be the dimensions
  109.        of the Ref{PInteractor} class associated with the canvas. A canvas
  110.        associated with a Ref{PScrollable} class, however, could return a
  111.        drawable area much larger than the interactors size.
  112.        @return
  113.        rectangle for the maximum size of the drawable area.
  114.      */
  115.     virtual PRect GetDrawingBounds() const;
  116.     /**@name New functions for class */
  117.    /**Get the interactor that the canvas is attached to.
  118.     
  119.        @return
  120.        pointer to interactor drawn to by the canvas.
  121.      */
  122.     PInteractor * GetInteractor() const;
  123.    /**Scroll the contents of the canvas by the amount specified. The entire
  124.        contents of the interactor are moved. The area "left behind" by the
  125.        move is unchanged. If a rectangle is specified then only that part of
  126.        the canvas contents is scrolled.
  127.      */
  128.     void Scroll(
  129.       const PPoint & amt  /// Amount to scroll.
  130.     );
  131.     void Scroll(
  132.       const PPoint & amt, /// Amount to scroll.
  133.       const PRect & rect  /// Area of canvas to scroll.
  134.     );
  135.     void Scroll(
  136.       PORDINATE dx,       /// Amount to scroll horizontally.
  137.       PORDINATE dy        /// Amount to scroll vertically.
  138.     );
  139.     void Scroll(
  140.       PORDINATE dx,       /// Amount to scroll horizontally.
  141.       PORDINATE dy,       /// Amount to scroll vertically.
  142.       const PRect & rect  /// Area of canvas to scroll.
  143.     );
  144.    /**Copy the contents of the srcRect in this canvas to the destination
  145.        canvas at the position specified or area rectangle. If a rectangle is
  146.        specified then the image is stretched or compressed to fit.
  147.      */
  148.     void Copy(
  149.       const PRect & srcRect,  /// Area in canvas to copy.
  150.       PCanvas & dst,          /// Canvas to copy area to.
  151.       const PPoint & pt       /// Position in canvas to copy the area to.
  152.     );
  153.     void Copy(
  154.       const PRect & srcRect,  /// Area in canvas to copy.
  155.       PCanvas & dst,          /// Canvas to copy area to.
  156.       const PRect & dstRect   /// Area in destination canvas to copy the area.
  157.     );
  158.   protected:
  159.     // New functions for class
  160.     void Construct(BOOL inPixels);
  161.       // Common constructor code.
  162.       
  163.     // Member variables
  164.       /** The interactor this canvas is attached to. */
  165.     PInteractor * interactor;
  166. #ifdef DOC_PLUS_PLUS
  167. };
  168. #endif
  169. // Class declaration continued in platform specific header file ///////////////