First checkin, AXE release 0.2
[AXE.git] / src / geometry.h
1
2 /**************************************************************************
3 **  (c) Copyright 1998, Andromeda Technology & Automation
4 ***************************************************************************
5 ** MODULE INFORMATION *
6 ***********************
7 **      FILE NAME      : geometry.h
8 **      SYSTEM NAME    : AXE - Andromeda X-windows Encapsulation
9 **      VERSION NUMBER : $Revision: 1.1 $
10 **
11 **  DESCRIPTION      :  Definition of geometry classes: point, size, rect
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   : Mar 04, 1998
21 **      LAST UPDATE     : Jul 05, 2000
22 **      MODIFICATIONS   : 
23 **************************************************************************/
24
25 /*****************************
26    $Log: geometry.h,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.h,v 1.1 2002-07-25 08:01:27 arjen Exp $"; */
33
34 #ifndef  AXE_GEOMETRY_H
35 #define  AXE_GEOMETRY_H
36
37 class point
38 {
39 public:
40
41    short   x, y;
42
43    point()
44    {
45       x = 0; y = 0;
46    }
47
48    point(short _x, short _y)
49    {
50       x = _x;
51       y = _y;
52    }
53 };
54
55 class size
56 {
57 public:
58
59    unsigned short w, h;
60
61    size()
62    {
63       w = 0;
64       h = 0;
65    } 
66
67    size(unsigned short width, unsigned short height)
68    {
69       w = width;
70       h = height;
71    }
72 };
73
74 class rectangle
75 {
76    short          x, y;
77    unsigned short w, h;
78
79
80 public:
81
82    rectangle()
83    {
84       x      = 0;
85       y      = 0;
86       w      = 0;
87       h      = 0;
88    }
89
90    rectangle(int _x, int _y, unsigned int _w, unsigned int _h)
91    {
92       x      = _x;
93       y      = _y;
94       w      = _w;
95       h      = _h;
96    }
97
98    rectangle(point p, size s)
99    {
100       x      = p.x;
101       y      = p.y;
102       w      = s.w;
103       h      = s.h;
104    }
105
106    //  Define a rectangle by its diagonal
107
108    rectangle(point p1, point p2);
109
110    point Origin()
111    {
112       return point(x, y);
113    }
114
115    size Size()
116    {
117       return size(w, h);
118    }
119
120    bool encloses(point);
121    bool encloses(rectangle);
122 };
123
124 point operator + (point p1, point p2);
125 point operator + (point p, size s);
126
127 //
128 //   ParseGeometryString
129
130 #endif