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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * dim.h
  3.  *
  4.  * Coordinate system dimensions.
  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: dim.h,v $
  30.  * Revision 1.13  1999/03/10 03:49:51  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.12  1999/03/09 08:01:48  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.11  1999/02/16 08:08:45  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.10  1998/09/23 06:23:21  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.9  1995/06/04 08:46:20  robertj
  43.  * Added Add component functions.
  44.  *
  45.  * Revision 1.8  1995/03/14 12:41:20  robertj
  46.  * Updated documentation to use HTML codes.
  47.  *
  48.  * Revision 1.7  1994/12/13  11:47:55  robertj
  49.  * Documentation.
  50.  *
  51.  * Revision 1.6  1994/08/23  11:32:52  robertj
  52.  * Oops
  53.  *
  54.  * Revision 1.5  1994/08/22  00:46:48  robertj
  55.  * Added pragma fro GNU C++ compiler.
  56.  *
  57.  * Revision 1.4  1994/01/03  04:42:23  robertj
  58.  * Mass changes to common container classes and interactors etc etc etc.
  59.  *
  60.  * Revision 1.3  1993/11/20  17:26:28  robertj
  61.  * Added + and _ operators with PPoint classes
  62.  *
  63.  * Revision 1.2  1993/07/14  12:49:16  robertj
  64.  * Fixed RCS keywords.
  65.  *
  66.  */
  67. #define _PDIM
  68. #ifdef __GNUC__
  69. #pragma interface
  70. #endif
  71. class PPoint;
  72. /**This class represents a size in two dimensions. The pair of values are
  73.    platform dependent and are dependent on the standard type Ref{PDIMENSION}.
  74.  */
  75. class PDim : public PObject
  76. {
  77.   PCLASSINFO(PDim, PObject);
  78.   public:
  79.    /**Create a dimensions object with the initial width and height values of
  80.        zero.
  81.      */
  82.     PDim();
  83.     /** Create a dimension object with the initial width and height values. */
  84.     PDim(
  85.       PDIMENSION width,   /// Initial width of the dimensions.
  86.       PDIMENSION height   /// Initial height of the dimensions.
  87.     );
  88.     /** Create a copy of the specified dimension. */
  89.     PDim(
  90.       const PDim & dim    /// Initial dimensions.
  91.     );
  92.   /**@name Overrides from class PObject */
  93.    /**Create a copy of the specified dimensions.
  94.        @return
  95.        a new variable allocated on the heap with the same dimensions.
  96.      */
  97.     virtual PObject * Clone() const;
  98.    /**Determine the relative rank of the two dimensions.
  99.        @return
  100.        #EqualTo# if the two dimensions are the same,
  101.        #LessThan# if the area depicted by the two dimensions
  102.        (width*height) is smaller and #GreaterThan# if the area is
  103.        bigger.
  104.      */
  105.     virtual Comparison Compare(const PObject & obj) const;
  106.   /**@name New function for class */
  107.    /**Get the width dimension.
  108.     
  109.        @return
  110.        width.
  111.      */
  112.     PDIMENSION Width() const;
  113.    /**Get the height dimension.
  114.     
  115.        @return
  116.        height.
  117.      */
  118.     PDIMENSION Height() const;
  119.     /** Set the width dimension. */
  120.     void SetWidth(
  121.       PDIMENSION width  /// New width for dimensions.
  122.     );
  123.     /** Set the height dimension. */
  124.     void SetHeight(
  125.       PDIMENSION height  /// New height for dimensions.
  126.     );
  127.     /** Add a value to the width dimension. */
  128.     void AddWidth(
  129.       PORDINATE dw  /// Amount to add to the dimensions.
  130.     );
  131.     /** Add a value to the height dimension. */
  132.     void AddHeight(
  133.       PORDINATE dh  /// Amount to add to the dimensions.
  134.     );
  135.    /**Add the value to the dimension and return a third dimension.
  136.     
  137.        The operation is performed in cartesian coordinates so each dimension
  138.        is independently dealt with.
  139.        @return
  140.        sum dimension.
  141.      */
  142.     PDim operator+(
  143.       const PDim & dim  /// Dimension to add.
  144.     ) const;
  145.     PDim operator+(
  146.       const PPoint & pt  /// Point to add to the dimension.
  147.     ) const;
  148.    /**Add the value to the dimension.
  149.     
  150.        The operation is performed in cartesian coordinates so each dimension
  151.        is independently dealt with.
  152.        @return
  153.        reference to original dimension.
  154.      */
  155.     PDim & operator+=(
  156.       const PDim & dim  /// Dimension to add.
  157.     );
  158.     PDim & operator+=(
  159.       const PPoint & pt  /// Point to add to the dimension.
  160.     );
  161.    /**Subtract the value to the dimension and return a third dimension.
  162.     
  163.        The operation is performed in cartesian coordinates so each dimension
  164.        is independently dealt with.
  165.        @return
  166.        difference dimension.
  167.      */
  168.     PDim operator-(
  169.       const PDim & dim  /// Dimension to subtract.
  170.     ) const;
  171.     PDim operator-(
  172.       const PPoint & pt  /// Point to add to the dimension.
  173.     ) const;
  174.    /**Subtract the value to the dimension.
  175.     
  176.        The operation is performed in cartesian coordinates so each dimension
  177.        is independently dealt with.
  178.        @return
  179.        reference to original dimension.
  180.      */
  181.     PDim & operator-=(
  182.       const PDim & dim  /// Dimension to subtract.
  183.     );
  184.     PDim & operator-=(
  185.       const PPoint & pt  /// Point to add to the dimension.
  186.     );
  187.    /**Multiple the dimension by the scale factor and return a third dimension.
  188.     
  189.        The operation is performed in cartesian coordinates so each dimension
  190.        is independently dealt with.
  191.        @return
  192.        product dimension.
  193.      */
  194.     PDim operator*(
  195.       PDIMENSION scale  /// Scale factor to apply to dimension
  196.     ) const;
  197.    /**Multiply the dimension by the scale factor.
  198.     
  199.        The operation is performed in cartesian coordinates so each dimension
  200.        is independently dealt with.
  201.        @return
  202.        reference to original dimension.
  203.      */
  204.     PDim & operator*=(
  205.       PDIMENSION scale  /// Scale factor to apply to dimension
  206.     );
  207.    /**Divide the dimension by the scale factor and return a third dimension.
  208.     
  209.        The operation is performed in cartesian coordinates so each dimension
  210.        is independently dealt with.
  211.        @return
  212.        divided dimension.
  213.      */
  214.     PDim operator/(
  215.       PDIMENSION scale  /// Scale factor to apply to dimension
  216.     ) const;
  217.    /**Divide the dimension by the scale factor.
  218.     
  219.        The operation is performed in cartesian coordinates so each dimension
  220.        is independently dealt with.
  221.        @return
  222.        reference to original dimension.
  223.      */
  224.     PDim & operator/=(
  225.       PDIMENSION scale  /// Scale factor to apply to dimension
  226.     );
  227.   protected:
  228.     // Member variables
  229.     PDIMENSION width, height;
  230. #ifdef DOC_PLUS_PLUS
  231. };
  232. #endif
  233. // Class declaration continued in platform specific header file ///////////////