File: plrect_8h-source.html

package info (click to toggle)
paintlib 2.6.2-8
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 7,900 kB
  • ctags: 3,875
  • sloc: cpp: 25,209; sh: 10,600; ansic: 1,891; makefile: 119
file content (281 lines) | stat: -rw-r--r-- 15,496 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>paintlib: plrect.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.2 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a></div>
<h1>plrect.h</h1><div class="fragment"><pre>00001 <span class="comment">/*</span>
00002 <span class="comment">/--------------------------------------------------------------------</span>
00003 <span class="comment">|</span>
00004 <span class="comment">|      $Id: plrect_8h-source.html,v 1.4 2004/09/15 15:26:32 uzadow Exp $</span>
00005 <span class="comment">|</span>
00006 <span class="comment">|      Copyright (c) 1996-2002 Ulrich von Zadow</span>
00007 <span class="comment">|</span>
00008 <span class="comment">\--------------------------------------------------------------------</span>
00009 <span class="comment">*/</span>
00010 
00011 <span class="preprocessor">#ifndef INCL_PLRECT</span>
00012 <span class="preprocessor"></span><span class="preprocessor">#define INCL_PLRECT</span>
00013 <span class="preprocessor"></span>
00014 <span class="preprocessor">#include "plpoint.h"</span>
00015 <span class="comment"></span>
00016 <span class="comment">//! Simple rectangle class.</span>
00017 <span class="comment">//! Contains all points from tl up to but not including br.</span>
<a name="l00018"></a><a class="code" href="classPLRect.html">00018</a> <span class="comment"></span><span class="keyword">class </span><a class="code" href="classPLRect.html">PLRect</a>
00019 {
00020 <span class="keyword">public</span>:<span class="comment"></span>
00021 <span class="comment">  //!</span>
00022 <span class="comment"></span>  <a class="code" href="classPLPoint.html">PLPoint</a> tl;<span class="comment"></span>
00023 <span class="comment">  //!</span>
00024 <span class="comment"></span>  <a class="code" href="classPLPoint.html">PLPoint</a> br;
00025 <span class="comment"></span>
00026 <span class="comment">  //!</span>
00027 <span class="comment"></span>  <a class="code" href="classPLRect.html">PLRect</a>
00028   ();
00029 <span class="comment"></span>
00030 <span class="comment">  //!</span>
00031 <span class="comment"></span>  <a class="code" href="classPLRect.html">PLRect</a>
00032   ( <span class="keywordtype">int</span> left,
00033     <span class="keywordtype">int</span> top,
00034     <span class="keywordtype">int</span> right,
00035     <span class="keywordtype">int</span> bottom
00036   );
00037 <span class="comment"></span>
00038 <span class="comment">  //!</span>
00039 <span class="comment"></span>  <a class="code" href="classPLRect.html">PLRect</a>
00040   ( <span class="keyword">const</span> <a class="code" href="classPLPoint.html">PLPoint</a>&amp; TL,
00041     <span class="keyword">const</span> <a class="code" href="classPLPoint.html">PLPoint</a>&amp; BR
00042   );
00043 <span class="comment"></span>
00044 <span class="comment">  //!</span>
00045 <span class="comment"></span>  <span class="keywordtype">bool</span> <span class="keyword">operator</span> ==
00046   ( <span class="keyword">const</span> <a class="code" href="classPLRect.html">PLRect</a> &amp; rect
00047   ) <span class="keyword">const</span>;
00048 <span class="comment"></span>
00049 <span class="comment">  //!</span>
00050 <span class="comment"></span>  <span class="keywordtype">bool</span> <span class="keyword">operator</span> !=
00051   ( <span class="keyword">const</span> <a class="code" href="classPLRect.html">PLRect</a> &amp; rect
00052   ) <span class="keyword">const</span>;
00053 <span class="comment"></span>
00054 <span class="comment">  //!</span>
00055 <span class="comment"></span>  <span class="keywordtype">int</span> Width 
00056   () <span class="keyword">const</span>;
00057 <span class="comment"></span>
00058 <span class="comment">  //!</span>
00059 <span class="comment"></span>  <span class="keywordtype">int</span> Height
00060   () <span class="keyword">const</span>;
00061 <span class="comment"></span>
00062 <span class="comment">  //!</span>
00063 <span class="comment"></span>  <span class="keywordtype">void</span> SetWidth
00064   (<span class="keywordtype">int</span> width
00065   );
00066  <span class="comment"></span>
00067 <span class="comment">  //!</span>
00068 <span class="comment"></span>  <span class="keywordtype">void</span> SetHeight
00069   (<span class="keywordtype">int</span> height
00070   );
00071 <span class="comment"></span>
00072 <span class="comment">  //!</span>
00073 <span class="comment"></span>  <span class="keywordtype">bool</span> Contains 
00074   ( <span class="keyword">const</span> <a class="code" href="classPLPoint.html">PLPoint</a>&amp; pt
00075   ) <span class="keyword">const</span>;
00076 <span class="comment"></span>
00077 <span class="comment">  //!</span>
00078 <span class="comment"></span>  <span class="keywordtype">bool</span> Contains 
00079   ( <span class="keyword">const</span> <a class="code" href="classPLRect.html">PLRect</a>&amp; rect
00080   ) <span class="keyword">const</span>;
00081 <span class="comment"></span>
00082 <span class="comment">  //!</span>
00083 <span class="comment"></span>  <span class="keywordtype">bool</span> Intersects
00084   ( <span class="keyword">const</span> <a class="code" href="classPLRect.html">PLRect</a>&amp; rect
00085   ) <span class="keyword">const</span>;
00086 <span class="comment"></span>
00087 <span class="comment">  //!</span>
00088 <span class="comment"></span>  <span class="keywordtype">void</span> Expand
00089   ( <span class="keyword">const</span> <a class="code" href="classPLRect.html">PLRect</a>&amp; rect
00090   );
00091 <span class="comment"></span>
00092 <span class="comment">  //!</span>
00093 <span class="comment"></span>  <span class="keywordtype">void</span> Intersect
00094   ( <span class="keyword">const</span> <a class="code" href="classPLRect.html">PLRect</a>&amp; rect
00095   );
00096 };
00097 
00098 <span class="keyword">inline</span> PLRect::PLRect
00099 ()
00100 {}
00101 
00102 <span class="keyword">inline</span> PLRect::PLRect
00103   ( <span class="keyword">const</span> <a class="code" href="classPLPoint.html">PLPoint</a>&amp; TL,
00104     <span class="keyword">const</span> <a class="code" href="classPLPoint.html">PLPoint</a>&amp; BR
00105   ): tl(TL), br(BR)
00106 {}
00107 
00108 <span class="keyword">inline</span> PLRect::PLRect
00109   ( <span class="keywordtype">int</span> left,
00110     <span class="keywordtype">int</span> top,
00111     <span class="keywordtype">int</span> right,
00112     <span class="keywordtype">int</span> bottom
00113   ) : tl(left, top), 
00114       br (right, bottom)
00115 {}
00116 
00117 <span class="keyword">inline</span> <span class="keywordtype">bool</span> PLRect::operator ==
00118 ( <span class="keyword">const</span> <a class="code" href="classPLRect.html">PLRect</a> &amp; rect
00119 ) <span class="keyword">const</span>
00120 {
00121   <span class="keywordflow">return</span> (tl == rect.tl &amp;&amp; br == rect.br);
00122 }
00123 
00124 <span class="keyword">inline</span> <span class="keywordtype">bool</span> PLRect::operator !=
00125 ( <span class="keyword">const</span> <a class="code" href="classPLRect.html">PLRect</a> &amp; rect
00126 ) <span class="keyword">const</span>
00127 {
00128   <span class="keywordflow">return</span> !(rect==*<span class="keyword">this</span>);
00129 }
00130 
00131 <span class="keyword">inline</span> <span class="keywordtype">int</span> PLRect::Width 
00132 () <span class="keyword">const</span>
00133 {
00134   <span class="keywordflow">return</span> br.x-tl.x;
00135 }
00136 
00137 <span class="keyword">inline</span> <span class="keywordtype">int</span> PLRect::Height
00138 () <span class="keyword">const</span>
00139 {
00140   <span class="keywordflow">return</span> br.y-tl.y;
00141 }
00142 
00143 <span class="keyword">inline</span> <span class="keywordtype">void</span> PLRect::SetWidth
00144 (<span class="keywordtype">int</span> width
00145 )
00146 {
00147     br.x = tl.x+width;
00148 }
00149  
00150 <span class="keyword">inline</span> <span class="keywordtype">void</span> PLRect::SetHeight
00151 (<span class="keywordtype">int</span> height
00152 )
00153 {
00154     br.y = tl.y+height;
00155 }
00156 
00157 <span class="keyword">inline</span> <span class="keywordtype">bool</span> PLRect::Contains 
00158 ( <span class="keyword">const</span> <a class="code" href="classPLPoint.html">PLPoint</a>&amp; pt
00159 ) <span class="keyword">const</span>
00160 {
00161     <span class="keywordflow">return</span> (pt.x &gt;= tl.x &amp;&amp; pt.x &lt; br.x &amp;&amp;
00162         pt.y &gt;= tl.y &amp;&amp; pt.y &lt; br.y);
00163 }
00164 
00165 <span class="keyword">inline</span> <span class="keywordtype">bool</span> PLRect::Contains 
00166 ( <span class="keyword">const</span> <a class="code" href="classPLRect.html">PLRect</a>&amp; rect
00167 ) <span class="keyword">const</span>
00168 {
00169     <a class="code" href="classPLPoint.html">PLPoint</a> brpt (rect.br.x-1, rect.br.y-1);
00170     <span class="keywordflow">return</span> Contains(rect.tl) &amp;&amp; Contains(brpt);
00171 }
00172 
00173 <span class="keyword">inline</span> <span class="keywordtype">bool</span> PLRect::Intersects
00174   ( <span class="keyword">const</span> <a class="code" href="classPLRect.html">PLRect</a>&amp; rect
00175   ) <span class="keyword">const</span>
00176 {   
00177     <span class="keywordflow">if</span> (rect.br.x &lt;= tl.x || rect.tl.x &gt;= br.x ||
00178         rect.br.y &lt;= tl.y || rect.tl.y &gt;= br.y)
00179       <span class="keywordflow">return</span> <span class="keyword">false</span>;
00180     <span class="keywordflow">else</span>
00181       <span class="keywordflow">return</span> <span class="keyword">true</span>;
00182 }
00183 
00184 <span class="preprocessor">#ifndef  min</span>
00185 <span class="preprocessor"></span><span class="preprocessor">#define min(a, b)       ((a) &lt; (b) ? (a) : (b))</span>
00186 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00187 <span class="preprocessor"></span>
00188 <span class="preprocessor">#ifndef  max</span>
00189 <span class="preprocessor"></span><span class="preprocessor">#define max(a, b)       ((a) &lt; (b) ? (b) : (a))</span>
00190 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
00191 <span class="preprocessor"></span>
00192 <span class="keyword">inline</span> <span class="keywordtype">void</span> PLRect::Expand
00193   ( <span class="keyword">const</span> <a class="code" href="classPLRect.html">PLRect</a>&amp; rect
00194   )
00195 {
00196     tl.x = min(tl.x, rect.tl.x);
00197     tl.y = min(tl.y, rect.tl.y);
00198     br.x = max(br.x, rect.br.x);
00199     br.y = max(br.y, rect.br.y);
00200 }
00201 
00202 <span class="keyword">inline</span> <span class="keywordtype">void</span> PLRect::Intersect
00203   ( <span class="keyword">const</span> <a class="code" href="classPLRect.html">PLRect</a>&amp; rect
00204   )
00205 {
00206     tl.x = max(tl.x, rect.tl.x);
00207     tl.y = max(tl.y, rect.tl.y);
00208     br.x = min(br.x, rect.br.x);
00209     br.y = min(br.y, rect.br.y);
00210 }
00211 
00212 <span class="preprocessor">#undef min</span>
00213 <span class="preprocessor"></span><span class="preprocessor">#undef max</span>
00214 <span class="preprocessor"></span>
00215 <span class="preprocessor">#endif</span>
00216 <span class="preprocessor"></span>
00217 <span class="comment">/*</span>
00218 <span class="comment">/--------------------------------------------------------------------</span>
00219 <span class="comment">|</span>
00220 <span class="comment">|      $Log: plrect_8h-source.html,v $
00220 <span class="comment">|      Revision 1.4  2004/09/15 15:26:32  uzadow
00220 <span class="comment">|      Linux compatibility changes, doc update.
00220 <span class="comment">|</span>
00221 <span class="comment">|      Revision 1.11  2004/06/06 12:56:38  uzadow</span>
00222 <span class="comment">|      Doxygenified documentation.</span>
00223 <span class="comment">|</span>
00224 <span class="comment">|      Revision 1.10  2004/02/21 18:37:08  uzadow</span>
00225 <span class="comment">|      Fixed rect.Intersects() again.</span>
00226 <span class="comment">|</span>
00227 <span class="comment">|      Revision 1.8  2004/02/21 16:48:24  uzadow</span>
00228 <span class="comment">|      Fixed rect.Intersects()</span>
00229 <span class="comment">|</span>
00230 <span class="comment">|      Revision 1.7  2003/10/15 21:24:04  uzadow</span>
00231 <span class="comment">|      *** empty log message ***</span>
00232 <span class="comment">|</span>
00233 <span class="comment">|      Revision 1.6  2003/08/17 18:04:38  uzadow</span>
00234 <span class="comment">|      Added PLRect::Intersect()</span>
00235 <span class="comment">|</span>
00236 <span class="comment">|      Revision 1.5  2003/08/17 15:04:30  uzadow</span>
00237 <span class="comment">|      Added PLRect::Intersects() and Expand()</span>
00238 <span class="comment">|</span>
00239 <span class="comment">|      Revision 1.4  2003/03/19 14:33:14  uzadow</span>
00240 <span class="comment">|      Added Rect.Contains</span>
00241 <span class="comment">|</span>
00242 <span class="comment">|      Revision 1.3  2002/03/31 13:36:42  uzadow</span>
00243 <span class="comment">|      Updated copyright.</span>
00244 <span class="comment">|</span>
00245 <span class="comment">|      Revision 1.2  2001/09/28 19:50:56  uzadow</span>
00246 <span class="comment">|      Added some 24 bpp stuff &amp; other minor features.</span>
00247 <span class="comment">|</span>
00248 <span class="comment">|      Revision 1.1  2001/09/24 14:24:52  uzadow</span>
00249 <span class="comment">|      Added PLRect.</span>
00250 <span class="comment">|</span>
00251 <span class="comment">|      Revision 1.4  2001/09/16 19:03:22  uzadow</span>
00252 <span class="comment">|      Added global name prefix PL, changed most filenames.</span>
00253 <span class="comment">|</span>
00254 <span class="comment">|      Revision 1.3  2000/11/21 20:20:36  uzadow</span>
00255 <span class="comment">|      Changed bool to bool.</span>
00256 <span class="comment">|</span>
00257 <span class="comment">|      Revision 1.2  2000/01/10 23:52:59  Ulrich von Zadow</span>
00258 <span class="comment">|      Changed formatting &amp; removed tabs.</span>
00259 <span class="comment">|</span>
00260 <span class="comment">|      Revision 1.1  1999/12/09 16:35:58  Ulrich von Zadow</span>
00261 <span class="comment">|      Added PLRect.</span>
00262 <span class="comment">|</span>
00263 <span class="comment">|</span>
00264 <span class="comment">\--------------------------------------------------------------------</span>
00265 <span class="comment">*/</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Sep 13 16:16:40 2004 for paintlib by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 > 
</a>1.3.2 </small></address>
</body>
</html>