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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * cursor.h
  3.  *
  4.  * Cursor 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: cursor.h,v $
  30.  * Revision 1.14  1999/03/10 03:49:51  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.13  1999/03/09 08:01:48  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.12  1998/09/23 06:23:15  robertj
  37.  * Added open source copyright license.
  38.  *
  39.  * Revision 1.11  1995/03/14 12:41:16  robertj
  40.  * Updated documentation to use HTML codes.
  41.  *
  42.  * Revision 1.10  1994/12/21  11:52:49  robertj
  43.  * Documentation and variable normalisation.
  44.  *
  45.  * Revision 1.9  1994/12/13  11:47:49  robertj
  46.  * Documentation.
  47.  *
  48.  * Revision 1.8  1994/08/23  11:32:52  robertj
  49.  * Oops
  50.  *
  51.  * Revision 1.7  1994/08/22  00:46:48  robertj
  52.  * Added pragma fro GNU C++ compiler.
  53.  *
  54.  * Revision 1.6  1994/06/25  11:55:15  robertj
  55.  * Unix version synchronisation.
  56.  *
  57.  * Revision 1.5  1994/01/03  04:42:23  robertj
  58.  * Mass changes to common container classes and interactors etc etc etc.
  59.  *
  60.  * Revision 1.4  1993/12/01  16:09:05  robertj
  61.  * Windows NT port.
  62.  *
  63.  * Revision 1.3  1993/08/21  01:50:33  robertj
  64.  * Made Clone() function optional, default will assert if called.
  65.  *
  66.  * Revision 1.2  1993/07/14  12:49:16  robertj
  67.  * Fixed RCS keywords.
  68.  *
  69.  */
  70. #define _PCURSOR
  71. #ifdef __GNUC__
  72. #pragma interface
  73. #endif
  74. /**This class represents the specification for a cursor that moves in tandem
  75.    with the mouse or other pointing device.
  76.    An instance of a cursor is attached to every Ref{PInteractor} class and is
  77.    automatically made current whenever the mouse is over that interactor.
  78.    A cursor consists of a small pixel image that interacts with the screen to
  79.    yield transparent parts and or inverted parts as well as fixed colour
  80.    image parts.
  81.  */
  82. class PCursor : public PContainer
  83. {
  84.   PCONTAINERINFO(PCursor, PContainer);
  85.   public:
  86.     /** Create a standard arrow cursor. */
  87.     PCursor();
  88.    /**Create a cursor as loaded from the resources for the application. The
  89.        resource identifier is a unique number associated with the cursor in
  90.        the resources.
  91.      */
  92.     PCursor(
  93.       PRESOURCE_ID resID    /// Resource identifier constant.
  94.     );
  95.    /**Create a cursor from the raw pixel images. The dimensions of the pixel
  96.        images must be the same as determined by the
  97.        Ref{PApplication::GetCursorSize()} function. They must also have a
  98.        depth of 1 bit per pixel.
  99.        
  100.        Pixels on the screen are determined by applying the and mask to it, then
  101.        the xor mask. Thus pixels can be transparent, inverted, cleared or set
  102.        as required.
  103.        
  104.        The hot spot is the poin within the cursor bit map that is the actual
  105.        cursor position, eg the point of the arrow cursor, the centre of a
  106.        cross hair cursor etc.
  107.      */
  108.     PCursor(
  109.       const PPixelImage & andMask,  /// Mask for pixels in the cursor.
  110.       const PPixelImage & xorMask,  /// Value for pixels in the cursor.
  111.       const PPoint & hotSpot        /// Hot spot relative to corner of bit map
  112.     );
  113.   /**@name Overrides from class PObject */
  114.    /**Determine if the two cursors are the same. Note that this is different
  115.        from having two cursors that merely {bf look} the same. They must be
  116.        references to the same cursor or if loaded from resources, the same
  117.        resource ID.
  118.        
  119.        @return
  120.        #EqualTo# if reference the same cursor,
  121.        #GreaterThan# if different.
  122.      */
  123.     virtual Comparison Compare(
  124.       const PObject & obj   /// Other cursor to compare against.
  125.     ) const;
  126.   private:
  127.     // Overrides from class PContainer
  128.     virtual BOOL SetSize(PINDEX newSize);
  129. #ifdef DOC_PLUS_PLUS
  130. };
  131. #endif
  132. // Class declaration continued in platform specific header file ///////////////