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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * mcanvas.h
  3.  *
  4.  * Memory 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: mcanvas.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:48  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.14  1999/02/16 08:08:45  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.13  1998/09/23 06:24:11  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.12  1995/03/14 12:41:42  robertj
  43.  * Updated documentation to use HTML codes.
  44.  *
  45.  * Revision 1.11  1994/12/21  11:53:14  robertj
  46.  * Documentation and variable normalisation.
  47.  *
  48.  * Revision 1.10  1994/12/05  11:34:10  robertj
  49.  * Major rewrite of images, pictures and pixmaps.
  50.  * Renamed PPict, PPixels and PImage to make sure all uses are found.
  51.  *
  52.  * Revision 1.9  1994/08/23  11:32:52  robertj
  53.  * Oops
  54.  *
  55.  * Revision 1.8  1994/08/22  00:46:48  robertj
  56.  * Added pragma fro GNU C++ compiler.
  57.  *
  58.  * Revision 1.7  1994/06/25  11:55:15  robertj
  59.  * Unix version synchronisation.
  60.  *
  61.  * Revision 1.6  1994/03/07  07:38:19  robertj
  62.  * Major enhancementsacross the board.
  63.  *
  64.  * Revision 1.5  1994/01/03  04:42:23  robertj
  65.  * Mass changes to common container classes and interactors etc etc etc.
  66.  *
  67.  * Revision 1.4  1993/10/16  20:33:20  robertj
  68.  * Changed memory canvas to output to PImage which is no longer a bitmap.
  69.  *
  70.  * Revision 1.3  1993/08/21  01:50:33  robertj
  71.  * Made Clone() function optional, default will assert if called.
  72.  *
  73.  * Revision 1.2  1993/07/14  12:49:16  robertj
  74.  * Fixed RCS keywords.
  75.  *
  76.  */
  77. #define _PMEMORYCANVAS
  78. #ifdef __GNUC__
  79. #pragma interface
  80. #endif
  81. /**A drawable area that will go to a Ref{PImage} in memory. Note that the
  82.    Ref{PImage} object passed to the PMemoryCanvas is undefined while the
  83.    PMemoryCanvas exists. Not until the PMemoryCanvas is destroyed is the
  84.    Ref{PImage} object guarenteed to be updated.
  85.   *********************************** NOTE ***********************************
  86.   On Some platforms, canvases are a limited resource. Do NOT create and leave
  87.   them around for long periods. As soon as it is not required till the next
  88.   user event, destroy it!
  89.   ****************************************************************************
  90.  */
  91. class PMemoryCanvas : public PCanvas
  92. {
  93.   PCLASSINFO(PMemoryCanvas, PCanvas);
  94.   public:
  95.    /**Create a canvas using the specified image. The image will receive the
  96.        drawing operations made to the canvas. The two types of images,
  97.        Ref{PPixelImage} and Ref{PPictImage} will store the commands
  98.        differently according to their internal representation of an image.
  99.      */
  100.     PMemoryCanvas(
  101.       const PImage & img  /// Image to draw into.
  102.     );
  103.       /** Destroy the canvas and image. */
  104.     virtual ~PMemoryCanvas();
  105.     /**@name Overrides from class PCanvas */
  106.    /**Get the drawable area of the image, for instance, this would be the
  107.        dimensions of the Ref{PPixelImage} used by the canvas.
  108.        @return
  109.        rectangle for the maximum size of the drawable area.
  110.      */
  111.     virtual PRect GetDrawingBounds() const;
  112.     /**@name New functions for class */
  113.    /**Get the image created by the canvas. While this will allow you to
  114.        obtain a reference to the image instance being drawn to by the canvas,
  115.        the state of the image is indeterminate while the PMemoryCanvas instance
  116.        still exists. For example in X windows when a PPixelImage is being
  117.        created, the pixels are not tranferred from the X server to the client
  118.        until the PMemoryCanvas is destroyed.
  119.      */
  120.     const PImage GetImage();
  121.   protected:
  122.     /// Image to draw into.
  123.     PImage image;
  124.     // New functions for class
  125.     void Construct();
  126.       // Internal function for common constructor code.
  127. #ifdef DOC_PLUS_PLUS
  128. };
  129. #endif
  130. // Class declaration continued in platform specific header file ///////////////