First checkin, AXE release 0.2
[AXE.git] / src / geometry.cpp
1
2 /**************************************************************************
3 **  (c) Copyright 1998, Andromeda Technology & Automation
4 ***************************************************************************
5 ** MODULE INFORMATION *
6 ***********************
7 **      FILE NAME      : geometry.cpp
8 **      SYSTEM NAME    : AXE - Andromeda X-windows Encapsulation
9 **      VERSION NUMBER : $Revision: 1.1 $
10 **
11 **  DESCRIPTION      :  Implementation of geometry classes
12 **
13 **  EXPORTED OBJECTS : 
14 **  LOCAL    OBJECTS : 
15 **  MODULES  USED    :
16 ***************************************************************************
17 **  ADMINISTRATIVE INFORMATION *
18 ********************************
19 **      ORIGINAL AUTHOR : Arjen Baart - arjen@andromeda.nl
20 **      CREATION DATE   : Apr 04, 1998
21 **      LAST UPDATE     : Apr 04, 1998
22 **      MODIFICATIONS   : 
23 **************************************************************************/
24
25 /*****************************
26    $Log: geometry.cpp,v $
27    Revision 1.1  2002-07-25 08:01:27  arjen
28    First checkin, AXE release 0.2
29
30 *****************************/
31
32 static const char *RCSID = "$Id: geometry.cpp,v 1.1 2002-07-25 08:01:27 arjen Exp $";
33
34 #include "geometry.h"
35
36 rectangle::rectangle(point p1, point p2)
37 {
38    if (p1.x < p2.x)
39    {
40       x = p1.x;
41       w = p2.x - p1.x;
42    }
43    else
44    {
45       x = p2.x;
46       w = p1.x - p2.x;
47    }
48
49    if (p1.y < p2.y)
50    {
51       y = p1.y;
52       h = p2.y - p1.y;
53    }
54    else
55    {
56       y = p2.y;
57       h = p1.y - p2.y;
58    }
59 }
60
61 bool rectangle::encloses(point p)
62 {
63    return p.x > x && p.x < x + w && p.y > y && p.y < y + h;
64 }
65
66 bool rectangle::encloses(rectangle r)
67 {
68    return encloses(r.Origin()) && encloses(r.Origin() + r.Size());
69 }
70
71 point operator + (point p1, point p2)
72 {
73    p1.x += p2.x;
74    p1.y += p2.y;
75
76    return p1;
77 }
78
79 point operator + (point p, size s)
80 {
81    p.x += s.w;
82    p.y += s.h;
83
84    return p;
85 }
86