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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * imgicon.h
  3.  *
  4.  * Image icon 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: imgicon.h,v $
  30.  * Revision 1.12  1999/03/10 03:49:51  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.11  1999/03/09 08:01:48  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.10  1998/09/23 06:23:55  robertj
  37.  * Added open source copyright license.
  38.  *
  39.  * Revision 1.9  1995/03/14 12:41:34  robertj
  40.  * Updated documentation to use HTML codes.
  41.  *
  42.  * Revision 1.8  1995/01/06  10:31:24  robertj
  43.  * Documentation.
  44.  *
  45.  * Revision 1.7  1994/12/21  11:53:08  robertj
  46.  * Documentation and variable normalisation.
  47.  *
  48.  * Revision 1.6  1994/12/05  11:22:47  robertj
  49.  * Added constructor to convert from PPixelImage to PImgIcon.
  50.  *
  51.  * Revision 1.5  1994/08/23  11:32:52  robertj
  52.  * Oops
  53.  *
  54.  * Revision 1.4  1994/08/22  00:46:48  robertj
  55.  * Added pragma fro GNU C++ compiler.
  56.  *
  57.  * Revision 1.3  1994/06/25  11:55:15  robertj
  58.  * Unix version synchronisation.
  59.  *
  60.  * Revision 1.2  1994/01/03  04:42:23  robertj
  61.  * Mass changes to common container classes and interactors etc etc etc.
  62.  *
  63.  * Revision 1.1  1993/12/31  06:42:23  robertj
  64.  * Initial revision
  65.  *
  66.  */
  67. #define _PIMGICON
  68. #ifdef __GNUC__
  69. #pragma interface
  70. #endif
  71. /**A class representing an image icon. This differs from a Ref{PPixelImage}
  72.    class object in its internal representation of the pixels. The
  73.    Ref{PPixelImage} is a device and largely platform independent format. The
  74.    PImgIcon is tied to a particular device (screen, printer etc) and platform.
  75.    Generally, a PImgIcon is faster to draw but may consume limited resources.
  76.    There is also less flexibility for image processing as the image pixels are
  77.    not available to be modified.
  78.    For example, for X-Windows a PPixelImage is a client resource and every time
  79.    it needs to be drawn the pixel data must be transfered to the X server. A
  80.    PImgIcon is an X server resource and does not need this transfer so is much
  81.    faster. However, as X server memory may be limited, this may not be used
  82.    with impunity.
  83.    This class is typically used for small user interface images such as icons
  84.    within image push buttons in a tool bar. For this purpose the images are
  85.    usually created via a resource.
  86.    
  87.    There is no intrinsic requirement that the image be small or drawn to the
  88.    device it was created for. However, not doing this can have unexpected
  89.    results, especially in colours and scaling.
  90.  */
  91. class PImgIcon : public PContainer
  92. {
  93.   PCONTAINERINFO(PImgIcon, PContainer);
  94.   public:
  95.    /**Create image icons. If no resource is specified then an empty image is
  96.        created. With these contructors the screen is assumed to be the device
  97.        that the image is to be drawn to.
  98.      */
  99.     PImgIcon();
  100.     PImgIcon(
  101.       PRESOURCE_ID resID    /// Resource identifier for the image.
  102.     );
  103.    /**Create an image icon from the arbitrary pixel image using the canvas as
  104.        the target device.
  105.      */
  106.     PImgIcon(
  107.       PCanvas & canvas,       /// Canvas for the device dependent image.
  108.       const PPixelImage & pix /// Device independent image to convert.
  109.     );
  110.   /**@name Overrides from class PObject */
  111.    /**Determine if the two icons are the same. Note that this is different
  112.        from having two icons that merely {bf look} the same. They must be
  113.        references to the same icon or if loaded from resources, the same
  114.        resource ID.
  115.        @return
  116.        #EqualTo# if reference the same icon,
  117.        #GreaterThan# if different.
  118.      */
  119.     virtual Comparison Compare(
  120.       const PObject & obj   /// Image icon to compare against.
  121.     ) const;
  122.     /**@name New functions for class */
  123.    /**Get the dimensions of the image.
  124.     
  125.        @return
  126.        width and height of image icon.
  127.      */
  128.     virtual PDim GetDimensions() const;
  129.   private:
  130.   // Overrides from class PContainer
  131.     virtual BOOL SetSize(
  132.       PINDEX size   /// New size of image icon container, ignored.
  133.     );
  134.     // Do nothing, size is always one image icon.
  135. #ifdef DOC_PLUS_PLUS
  136. };
  137. #endif
  138. // Class declaration continued in platform specific header file ///////////////