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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * pattern.h
  3.  *
  4.  * Pattern description.
  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: pattern.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:49  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.14  1998/09/23 06:24:34  robertj
  37.  * Added open source copyright license.
  38.  *
  39.  * Revision 1.13  1995/03/14 12:41:57  robertj
  40.  * Updated documentation to use HTML codes.
  41.  *
  42.  * Revision 1.12  1995/01/27  11:11:41  robertj
  43.  * Added simple pattern bitmap constructor.
  44.  *
  45.  * Revision 1.11  1995/01/06  10:31:05  robertj
  46.  * Documentation.
  47.  *
  48.  * Revision 1.10  1994/08/23  11:32:52  robertj
  49.  * Oops
  50.  *
  51.  * Revision 1.9  1994/08/22  00:46:48  robertj
  52.  * Added pragma fro GNU C++ compiler.
  53.  *
  54.  * Revision 1.8  1994/06/25  11:55:15  robertj
  55.  * Unix version synchronisation.
  56.  *
  57.  * Revision 1.7  1994/01/03  04:42:23  robertj
  58.  * Mass changes to common container classes and interactors etc etc etc.
  59.  *
  60.  * Revision 1.6  1993/12/31  06:45:38  robertj
  61.  * Made inlines optional for debugging purposes.
  62.  *
  63.  * Revision 1.5  1993/12/29  04:40:47  robertj
  64.  * Mac port.
  65.  *
  66.  * Revision 1.4  1993/12/01  16:09:05  robertj
  67.  * Windows NT port.
  68.  *
  69.  * Revision 1.3  1993/08/21  01:50:33  robertj
  70.  * Made Clone() function optional, default will assert if called.
  71.  *
  72.  * Revision 1.2  1993/07/14  12:49:16  robertj
  73.  * Fixed RCS keywords.
  74.  *
  75.  */
  76. #define _PPATTERN
  77. #ifdef __GNUC__
  78. #pragma interface
  79. #endif
  80. class PCanvas;
  81. class PPixelImage;
  82. /**A class representing a graphic drawing pattern for filling areas. This is
  83.    used by the Ref{PCanvas} class when drawing enclosed shapes such as
  84.    rectangles, ellipses etc.
  85.    
  86.    This is very similar to the other "pixmap" class such as Ref{PCursor}, or
  87.    Ref{PImgIcon}, but is more specialised for the purpose of filling a
  88.    drawable area. This is relevant to some platforms that use a special type
  89.    for this operation (eg MacOS).
  90.  */
  91. class PPattern : public PContainer
  92. {
  93.   PCONTAINERINFO(PPattern, PContainer);
  94.   public:
  95.    /**Create a pattern, loading it from the resource. The resource is of the
  96.        type PATTERN.
  97.        
  98.        If no resource identifier is specified then an empty pattern is created.
  99.        That is a solid foreground colour is used.
  100.      */
  101.     PPattern();
  102.     PPattern(
  103.       PRESOURCE_ID resID    /// Resource identifier for the pattern.
  104.     );
  105.     /** Type for bit array for a pattern. */
  106.     typedef BYTE Bits[8];
  107.    /**Create a pattern from the arbitrary set of bits.
  108.      */
  109.     PPattern(
  110.       Bits bits  /// Bits used for a bi-level pattern.
  111.     );
  112.    /**Create a pattern from the arbitrary pixel image using the canvas as the
  113.        target device.
  114.      */
  115.     PPattern(
  116.       PCanvas & canvas,       /// Canvas for the device dependent image.
  117.       const PPixelImage & pix /// Device independent image to convert.
  118.     );
  119.   /**@name Overrides from class PObject */
  120.    /**Determine if the two patterns are the same. Note that this is different
  121.        from having two patterns that merely {bf look} the same. They must
  122.        be references to the same pattern or if loaded from resources, the same
  123.        resource ID.
  124.        @return
  125.        #EqualTo# if reference the same icon,
  126.        #GreaterThan# if different.
  127.      */
  128.     virtual Comparison Compare(
  129.       const PObject & obj   /// Pattern to compare against.
  130.     ) const;
  131.   /**@name New functions for class */
  132.    /**Get the dimensions of the pattern.
  133.     
  134.        @return
  135.        width and height of pattern.
  136.      */
  137.     PDim GetDimensions() const;
  138.   private:
  139.     // Overrides from class PContainer
  140.     virtual BOOL SetSize(
  141.       PINDEX size   // New size of pattern container, ignored.
  142.     );
  143.     // Do nothing, size is always one pattern.
  144. #ifdef DOC_PLUS_PLUS
  145. };
  146. #endif
  147. // Class declaration continued in platform specific header file ///////////////