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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * pict.h
  3.  *
  4.  * Metafile pixture image.
  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: pict.h,v $
  30.  * Revision 1.19  1999/08/24 06:54:36  robertj
  31.  * Cleaned up the smart pointer code (macros).
  32.  *
  33.  * Revision 1.18  1999/03/10 03:49:52  robertj
  34.  * More documentation adjustments.
  35.  *
  36.  * Revision 1.17  1999/03/09 08:01:49  robertj
  37.  * Changed comments for doc++ support (more to come).
  38.  *
  39.  * Revision 1.16  1999/02/16 08:08:46  robertj
  40.  * MSVC 6.0 compatibility changes.
  41.  *
  42.  * Revision 1.15  1998/09/23 06:27:59  robertj
  43.  * Added open source copyright license.
  44.  *
  45.  * Revision 1.14  1995/03/14 12:42:01  robertj
  46.  * Updated documentation to use HTML codes.
  47.  *
  48.  * Revision 1.13  1995/01/09  12:38:56  robertj
  49.  * Documentation.
  50.  *
  51.  * Revision 1.12  1994/12/12  10:04:44  robertj
  52.  * Renamed PWrapper to PSmartPointer.
  53.  *
  54.  * Revision 1.11  1994/12/05  11:34:11  robertj
  55.  * Major rewrite of images, pictures and pixmaps.
  56.  * Renamed PPict, PPixels and PImage to make sure all uses are found.
  57.  *
  58.  * Revision 1.10  1994/10/23  04:50:13  robertj
  59.  * Changed Save to Write to better match Read function.
  60.  *
  61.  * Revision 1.9  1994/08/23  11:32:52  robertj
  62.  * Oops
  63.  *
  64.  * Revision 1.8  1994/08/22  00:46:48  robertj
  65.  * Added pragma fro GNU C++ compiler.
  66.  *
  67.  * Revision 1.7  1994/06/25  11:55:15  robertj
  68.  * Unix version synchronisation.
  69.  *
  70.  * Revision 1.6  1994/04/03  08:34:18  robertj
  71.  * Added help and focus functionality.
  72.  *
  73.  * Revision 1.5  1994/01/03  04:42:23  robertj
  74.  * Mass changes to common container classes and interactors etc etc etc.
  75.  *
  76.  * Revision 1.4  1993/12/31  06:45:38  robertj
  77.  * Made inlines optional for debugging purposes.
  78.  *
  79.  * Revision 1.3  1993/12/29  04:40:47  robertj
  80.  * Mac port.
  81.  *
  82.  * Revision 1.2  1993/12/01  16:09:05  robertj
  83.  * Windows NT port.
  84.  *
  85.  * Revision 1.1  1993/10/16  20:33:20  robertj
  86.  * Initial revision
  87.  *
  88.  */
  89. #define _PPICT
  90. #ifdef __GNUC__
  91. #pragma interface
  92. #endif
  93. class PPictBase;
  94. /**This class is used to represent a picture image. It works in conjuction with
  95.    the Ref{PPictBase} class using the "smart" pointer system.
  96.    
  97.    A picture image is one for which a set of drawing commands is stored and
  98.    rendered. This gives very low memory usage and the ability to scale the
  99.    image to any size. However, complex images such as photographs are not
  100.    representable by this format. The alternative is to use a
  101.    Ref{PPixelImage} which stores each pixel individually.
  102.    A common use for images is by the Ref{PMemoryCanvas} class for drawing to
  103.    off screen memory.
  104.  */
  105. class PPictImage : public PImage {
  106.   PSMART_POINTER_INFO(PPictImage, PImage, PPictBase);
  107.   public:
  108.    /**Create a picture drawing. The picture image may then be drawn
  109.        into via a Ref{PMemoryCanvas} instance.
  110.      */
  111.     PPictImage(PPictBase * obj = NULL);
  112.    /**Create a picture drawing, loading it from the applications resources.
  113.        There is no platform independent way to create these resources but this
  114.        function is provided if needed by an application and the author is
  115.        willing to provide the resources manually.
  116.      */
  117.     PPictImage(
  118.       PRESOURCE_ID resID    /// Unique identifier for picture image resource.
  119.     );
  120.    /**Create a picture drawing, reading the picture from the file in a
  121.        platform specific format. For example, under MS-Windows this would read
  122.        a ".WMF" file format.
  123.      */
  124.     PPictImage(
  125.       PFile & dwg   /// File to read picture image from.
  126.     );
  127. };
  128. class PPictBase : public PImageBase
  129. {
  130.   PCLASSINFO(PPictBase, PImageBase)
  131. /* A class representing a graphic drawing shape that is a picture image.
  132.    This is used in conjuction with the Ref{PPictImage} class using the
  133.    "smart" pointer system.
  134.    A picture image is one for which a set of drawing commands is stored and
  135.    rendered. This gives very low memory usage and the ability to scale the
  136.    image to any size. However, complex images such as photographs are not
  137.    representable by this format. The alternative is to use a Ref{PPixelImage}
  138.    which stores each pixel individually.
  139.  */
  140.   protected:
  141.    /**Create an empty picture drawing. The picture image may then be drawn
  142.        into via a Ref{PMemoryCanvas} instance.
  143.      */
  144.     PPictBase();
  145.    /**Create a picture drawing, loading it from the applications resources.
  146.        There is no platform independent way to create these resources but this
  147.        function is provided if needed by an application and the author is
  148.        willing to provide the resources manually.
  149.      */
  150.     PPictBase(
  151.       PRESOURCE_ID resID    /// Unique identifier for picture image resource.
  152.     );
  153.       
  154.    /**Create a picture drawing, reading the picture from the file in a
  155.        platform specific format. For example, under MS-Windows this would read
  156.        a ".WMF" file format.
  157.      */
  158.     PPictBase(
  159.       PFile & dwg   /// File to read picture image from.
  160.     );
  161.     /** Destroy the picture and its internal storage. */
  162.     ~PPictBase();
  163.   public:
  164.     /**@name Overrides from class PObject */
  165.    /**Determine if the two picture images are the same. Note that this is
  166.        different from having two picture images that merely {bf look} the
  167.        same. They must be references to the same picture image file or if
  168.        loaded from resources, the same resource ID.
  169.        @return
  170.        #EqualTo# if reference the same picture image,
  171.        #GreaterThan# if different.
  172.      */
  173.     virtual Comparison Compare(
  174.       const PObject & obj   /// Another picture image to compare against.
  175.     ) const;
  176.   /**@name Overrides from class PImage */
  177.    /**Save the picture drawing into the specified file in platform specific
  178.        format. For example, under MS-Windows this would write a ".WMF" file
  179.        format.
  180.      */
  181.     virtual BOOL Write(
  182.       PFile & dwg   /// File to write the picture image to.
  183.     );
  184.   friend class PPictImage;
  185.   
  186. #ifdef DOC_PLUS_PLUS
  187. };
  188. #endif
  189. // Class declaration continued in platform specific header file ///////////////