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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * image.h
  3.  *
  4.  * Arbitrary image 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: image.h,v $
  30.  * Revision 1.22  1999/08/24 06:54:36  robertj
  31.  * Cleaned up the smart pointer code (macros).
  32.  *
  33.  * Revision 1.21  1999/03/10 03:49:51  robertj
  34.  * More documentation adjustments.
  35.  *
  36.  * Revision 1.20  1999/03/09 08:01:48  robertj
  37.  * Changed comments for doc++ support (more to come).
  38.  *
  39.  * Revision 1.19  1999/02/16 08:08:45  robertj
  40.  * MSVC 6.0 compatibility changes.
  41.  *
  42.  * Revision 1.18  1998/09/23 06:23:52  robertj
  43.  * Added open source copyright license.
  44.  *
  45.  * Revision 1.17  1995/03/14 12:41:33  robertj
  46.  * Updated documentation to use HTML codes.
  47.  *
  48.  * Revision 1.16  1995/01/09  12:39:33  robertj
  49.  * Documentation.
  50.  *
  51.  * Revision 1.15  1994/12/21  11:53:06  robertj
  52.  * Documentation and variable normalisation.
  53.  *
  54.  * Revision 1.14  1994/12/12  10:01:31  robertj
  55.  * Renamed PWrapper to PSmartPointer.
  56.  *
  57.  * Revision 1.13  1994/12/05  11:34:08  robertj
  58.  * Major rewrite of images, pictures and pixmaps.
  59.  * Renamed PPict, PPixels and PImage to make sure all uses are found.
  60.  *
  61.  * Revision 1.12  1994/10/23  04:43:51  robertj
  62.  * Changed function name to be Write to be consistent with Read function in descendent classes.
  63.  *
  64.  * Revision 1.11  1994/08/23  11:32:52  robertj
  65.  * Oops
  66.  *
  67.  * Revision 1.10  1994/08/22  00:46:48  robertj
  68.  * Added pragma fro GNU C++ compiler.
  69.  *
  70.  * Revision 1.9  1994/06/25  11:55:15  robertj
  71.  * Unix version synchronisation.
  72.  *
  73.  * Revision 1.8  1994/04/20  12:17:44  robertj
  74.  * Split name into PFilePath
  75.  *
  76.  * Revision 1.7  1994/04/01  14:12:26  robertj
  77.  * Removed PDECLARE_ABSTRACT_CONTAINER.
  78.  *
  79.  * Revision 1.6  1994/01/03  04:42:23  robertj
  80.  * Mass changes to common container classes and interactors etc etc etc.
  81.  *
  82.  * Revision 1.5  1993/10/16  20:33:20  robertj
  83.  * Change image class to not be a PShape.
  84.  *
  85.  * Revision 1.4  1993/08/21  01:50:33  robertj
  86.  * Made Clone() function optional, default will assert if called.
  87.  *
  88.  * Revision 1.3  1993/07/14  12:49:16  robertj
  89.  * Fixed RCS keywords.
  90.  *
  91.  */
  92. #define _PIMAGE
  93. #ifdef __GNUC__
  94. #pragma interface
  95. #endif
  96. class PFile;
  97. class PImageBase;
  98. /**This class is used to represent an image. It works in conjuction with the
  99.    Ref{PImageBase} class using the "smart" pointer system.
  100.    
  101.    This is logically an abstract class and the user would normally create
  102.    one of the descendent classes. These are either pixel images descended from
  103.    Ref{PPixelBase} or a picture images in the Ref{PPictBase} class.
  104.    
  105.    A common use for images is by the Ref{PMemoryCanvas} class for drawing to
  106.    off screen memory.
  107.  */
  108. class PImage : public PSmartPointer
  109. {
  110.   PSMART_POINTER_INFO(PImage, PSmartPointer, PImageBase);
  111.   public:
  112.     PImage(PImageBase * obj = NULL);
  113. };
  114. /**A class representing an image. This may be either pixel images descended
  115.    from Ref{PPixelBase} or a picture images in the Ref{PPictBase} class.
  116.    
  117.    This is an abstract class and contains the common functionality of all
  118.    image types. A common use for images is by the Ref{PMemoryCanvas} class
  119.    for drawing to off screen memory.
  120.  */
  121. class PImageBase : public PSmartObject
  122. {
  123.   PCLASSINFO(PImageBase, PSmartObject);
  124.   protected:
  125.    /**Create an image, this may be a pixel image or a set of drawing
  126.        primitives in a "picture" (Metafile/PICT etc).
  127.      */
  128.     PImageBase(
  129.       PDIMENSION width,   /// Width of the image.
  130.       PDIMENSION height   /// Height of the image.
  131.     );
  132.     PImageBase(
  133.       const PDim & dim    /// Dimensions of the image.
  134.     );
  135.   public:
  136.     /**@name New functions for class */
  137.    /**Get the width of the image.
  138.     
  139.        @return
  140.        width.
  141.      */
  142.     PDIMENSION Width() const;
  143.    /**Get the height of the image.
  144.     
  145.        @return
  146.        height.
  147.      */
  148.     PDIMENSION Height() const;
  149.    /**Get the width and height of the image.
  150.     
  151.        @return
  152.        dimensions.
  153.      */
  154.         PDim GetDimensions() const;
  155.    /**Save the image into the specified file in a platform specific format.
  156.        Thus, for MS-Windwos, a Ref{PPixelBase} class would write a .BMP file.
  157.        @return
  158.        TRUE if written successfully.
  159.      */
  160.     virtual BOOL Write(
  161.       PFile & dwg   /// File to write the image to.
  162.     ) = 0;
  163.   protected:
  164.     // Member variables
  165.     /** Dimensions of the image. */
  166.     PDim size;
  167. #ifdef DOC_PLUS_PLUS
  168. };
  169. #endif
  170. // Class declaration continued in platform specific header file ///////////////