home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 10 / ioProg_10.iso / soft / optima / hpp.z / WRECT.HPP < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-15  |  4.9 KB  |  181 lines

  1. /* %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2.    %     Copyright (C) 1994, by WATCOM International Inc.  All rights    %
  3.    %     reserved.  No part of this software may be reproduced or        %
  4.    %     used in any form or by any means - graphic, electronic or       %
  5.    %     mechanical, including photocopying, recording, taping or        %
  6.    %     information storage and retrieval systems - except with the     %
  7.    %     written permission of WATCOM International Inc.                 %
  8.    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  9. */
  10.  
  11. /*************************************************************************
  12.  *
  13.  * WRect --
  14.  *
  15.  *************************************************************************/
  16.  
  17. #ifndef _WRECT_HPP_INCLUDED
  18. #define _WRECT_HPP_INCLUDED
  19.  
  20. #ifndef _WNO_PRAGMA_PUSH
  21. #pragma pack(push,4);
  22. #pragma enum int;
  23. #endif
  24.  
  25. #ifndef _WDEF_HPP_INCLUDED
  26. #  include "wdef.hpp"
  27. #endif
  28. #ifndef _WPOINT_HPP_INCLUDED
  29. #  include "wpoint.hpp"
  30. #endif
  31. #ifndef _WSIZE_HPP_INCLUDED
  32. #  include "wsize.hpp"
  33. #endif
  34.  
  35. #ifndef _WINDEF_
  36. typedef struct tagRECT
  37. {
  38.     WLong    left;
  39.     WLong    top;
  40.     WLong    right;
  41.     WLong    bottom;
  42. } RECT, *PRECT;
  43.  
  44. typedef struct _RECTL 
  45. {
  46.     WLong    left;
  47.     WLong    top;
  48.     WLong    right;
  49.     WLong    bottom;
  50. } RECTL, *PRECTL, *LPRECTL;
  51. #endif
  52.  
  53. class WCMCLASS WRect {
  54.  
  55.         /**********************************************************
  56.          * Data members
  57.          *********************************************************/
  58.  
  59.     public:
  60.     
  61.         WLong x;
  62.         WLong y;
  63.         WLong w;
  64.         WLong h;
  65.  
  66.     public:
  67.  
  68.         /**********************************************************
  69.          * Constructors and Destructors
  70.          *********************************************************/
  71.  
  72.         WRect() { x = y = w = h = 0; }
  73.         WRect( WLong nx, WLong ny, WLong nw, WLong nh )
  74.                  { x = nx; y = ny; w = nw; h = nh; }
  75.         WRect( const WRect & o ) { x = o.x; y = o.y; w = o.w; h = o.h; }
  76.         WRect( const RECT & o ); // WCMINLINE
  77.         WRect( const RECTL & o ); // WCMINLINE
  78.  
  79.         // Note: no destructor is defined and none will be generated
  80.         // because the class has simple types as data and no virtual
  81.         // functions and does not inherit from anyone.
  82.  
  83.         /**********************************************************
  84.          * Properties
  85.          *********************************************************/
  86.  
  87.         // RECT 
  88.         //
  89.         //    Convert to/from the Windows RECT type.
  90.  
  91.         RECT  GetRECT() const;
  92.         void  SetRECT( const RECT & r );
  93.  
  94.         // RECTL
  95.         //
  96.         //    Convert to/from the Windows RECTL type.
  97.  
  98.         RECTL GetRECTL() const; // WCMINLINE
  99.         void  SetRECTL( const RECTL & r ); // WCMINLINE
  100.  
  101.         /**********************************************************
  102.          * Methods
  103.          *********************************************************/
  104.  
  105.         // Contains
  106.         //
  107.         //    True if a point is contained within a rectangle.
  108.  
  109.         WBool Contains( const WPoint & point ) const; // WCMINLINE
  110.     
  111.         // Create
  112.         //
  113.         //    Initialize the rectangle.
  114.  
  115.         void Create() { x = y = w = h = 0; }
  116.         void Create( WLong nx, WLong ny, WLong nw, WLong nh )
  117.                { x = nx; y = ny; w = nw; h = nh; }
  118.         void Create( const WRect & o )
  119.                { x = o.x; y = o.y; w = o.w; h = o.h; }
  120.         void Create( const RECT & o ); // WCMINLINE
  121.         void Create( const RECTL & o ); // WCMINLINE
  122.  
  123.         // Inflate -- relative grow
  124.  
  125.         WBool Inflate( const WSize & s ); // WCMINLINE
  126.  
  127.         // Normalize
  128.  
  129.         WBool Normalize();
  130.  
  131.         // Translate -- relative move
  132.  
  133.         void Translate( const WPoint & pt ); // WCMINLINE
  134.  
  135.         // UnionWith
  136.  
  137.         void UnionWith( const WRect & rectangle );
  138.  
  139.         // IntersectWith
  140.  
  141.         WBool IntersectWith( const WRect & rectangle );
  142.     
  143.         // Intersects
  144.  
  145.         WBool Intersects( const WRect & rectangle ) const;
  146.     
  147.         /**********************************************************
  148.          * Operators
  149.          *********************************************************/
  150.  
  151.         // == operator
  152.  
  153.         int operator==( const WRect & o ) const; // WCMINLINE
  154.  
  155.         // != operator
  156.  
  157.         int operator!=( const WRect & o ) const; // WCMINLINE
  158.     
  159.         // = operator
  160.  
  161.         WRect & operator=( const WRect & o )
  162.             { x = o.x; y = o.y; w = o.w; h = o.h; return *this; }
  163.         WRect & operator=( const RECT & o ); // WCMINLINE
  164.         WRect & operator=( const RECTL & o ); // WCMINLINE
  165.  
  166. };
  167.  
  168. #ifdef WCM_ENABLE_INLINES
  169.   #ifndef WCM_NO_WRECT_INLINES
  170.     #define WCMINLINE inline
  171.     #include "wrect.inl"
  172.   #endif
  173. #endif
  174.  
  175. #ifndef _WNO_PRAGMA_PUSH
  176. #pragma enum pop;
  177. #pragma pack(pop);
  178. #endif
  179.  
  180. #endif // _WRECT_HPP_INCLUDED
  181.