annotate window/rect.h @ 66:d112357a0ec1

Fix a bug with savegames introduced with changeset c7bcc0ec2267. Warning: savegames created since c7bcc0ec2267 are probably corrupted, you may have to start the game over. If you chose not to do so, you should replace all occurrences of 'TextWindow' by 'TextImplWindow', and 'Text Window' by 'TextImpl Window' in your save files.
author Thibaut Girka <thib@sitedethib.com>
date Sat, 11 Dec 2010 18:36:20 +0100
parents 223b71206888
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
223b71206888 Initial import
thib
parents:
diff changeset
1 /*
223b71206888 Initial import
thib
parents:
diff changeset
2 * Copyright (c) 2004-2006 Kazunori "jagarl" Ueno
223b71206888 Initial import
thib
parents:
diff changeset
3 * All rights reserved.
223b71206888 Initial import
thib
parents:
diff changeset
4 *
223b71206888 Initial import
thib
parents:
diff changeset
5 * Redistribution and use in source and binary forms, with or without
223b71206888 Initial import
thib
parents:
diff changeset
6 * modification, are permitted provided that the following conditions
223b71206888 Initial import
thib
parents:
diff changeset
7 * are met:
223b71206888 Initial import
thib
parents:
diff changeset
8 * 1. Redistributions of source code must retain the above copyright
223b71206888 Initial import
thib
parents:
diff changeset
9 * notice, this list of conditions and the following disclaimer.
223b71206888 Initial import
thib
parents:
diff changeset
10 * 2. Redistributions in binary form must reproduce the above copyright
223b71206888 Initial import
thib
parents:
diff changeset
11 * notice, this list of conditions and the following disclaimer in the
223b71206888 Initial import
thib
parents:
diff changeset
12 * documentation and/or other materials provided with the distribution.
223b71206888 Initial import
thib
parents:
diff changeset
13 * 3. The name of the author may not be used to endorse or promote products
223b71206888 Initial import
thib
parents:
diff changeset
14 * derived from this software without specific prior written permission.
223b71206888 Initial import
thib
parents:
diff changeset
15 *
223b71206888 Initial import
thib
parents:
diff changeset
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
223b71206888 Initial import
thib
parents:
diff changeset
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
223b71206888 Initial import
thib
parents:
diff changeset
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
223b71206888 Initial import
thib
parents:
diff changeset
19 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
223b71206888 Initial import
thib
parents:
diff changeset
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
223b71206888 Initial import
thib
parents:
diff changeset
21 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
223b71206888 Initial import
thib
parents:
diff changeset
22 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
223b71206888 Initial import
thib
parents:
diff changeset
23 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
223b71206888 Initial import
thib
parents:
diff changeset
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
223b71206888 Initial import
thib
parents:
diff changeset
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
223b71206888 Initial import
thib
parents:
diff changeset
26 */
223b71206888 Initial import
thib
parents:
diff changeset
27
223b71206888 Initial import
thib
parents:
diff changeset
28
223b71206888 Initial import
thib
parents:
diff changeset
29 #ifndef __RECT_H__
223b71206888 Initial import
thib
parents:
diff changeset
30 #define __RECT_H__
223b71206888 Initial import
thib
parents:
diff changeset
31
223b71206888 Initial import
thib
parents:
diff changeset
32 #include<vector>
223b71206888 Initial import
thib
parents:
diff changeset
33
223b71206888 Initial import
thib
parents:
diff changeset
34 struct Rect {
223b71206888 Initial import
thib
parents:
diff changeset
35 int lx, rx; // x = [lx,rx)
223b71206888 Initial import
thib
parents:
diff changeset
36 int ty, by; // y = [ty,by)
223b71206888 Initial import
thib
parents:
diff changeset
37
223b71206888 Initial import
thib
parents:
diff changeset
38 Rect(int x1, int y1);
223b71206888 Initial import
thib
parents:
diff changeset
39 Rect(int x1, int y1, int x2, int y2);
223b71206888 Initial import
thib
parents:
diff changeset
40 Rect(const Rect& rect);
223b71206888 Initial import
thib
parents:
diff changeset
41 Rect(const class Surface& rect);
223b71206888 Initial import
thib
parents:
diff changeset
42 Rect(const class TextGlyph& glyph);
223b71206888 Initial import
thib
parents:
diff changeset
43 void intersect(const Rect& rect);
223b71206888 Initial import
thib
parents:
diff changeset
44 bool is_crossed(const Rect& rect) const;
223b71206888 Initial import
thib
parents:
diff changeset
45 bool is_inner(const Rect& inner_rect) const;
223b71206888 Initial import
thib
parents:
diff changeset
46 bool is_nearly_inner(const Rect& inner_rect, int delta) const;
223b71206888 Initial import
thib
parents:
diff changeset
47 void join(const Rect& rect);
223b71206888 Initial import
thib
parents:
diff changeset
48 void rmove(int add_x, int add_y);
223b71206888 Initial import
thib
parents:
diff changeset
49 /** Subtracts rect from this. The resulting area is the set of pixels contained in this but not in the rect.
223b71206888 Initial import
thib
parents:
diff changeset
50 * result will be push_backed to ret_array.
223b71206888 Initial import
thib
parents:
diff changeset
51 */
223b71206888 Initial import
thib
parents:
diff changeset
52 void subtract(const Rect& rect, std::vector<Rect>& ret_array) const;
223b71206888 Initial import
thib
parents:
diff changeset
53 bool point_in(int x, int y) const;
223b71206888 Initial import
thib
parents:
diff changeset
54 bool empty(void) const {
223b71206888 Initial import
thib
parents:
diff changeset
55 return (lx == rx) || (ty == by);
223b71206888 Initial import
thib
parents:
diff changeset
56 }
223b71206888 Initial import
thib
parents:
diff changeset
57 int width(void) const {
223b71206888 Initial import
thib
parents:
diff changeset
58 return rx-lx;
223b71206888 Initial import
thib
parents:
diff changeset
59 }
223b71206888 Initial import
thib
parents:
diff changeset
60 int height(void) const {
223b71206888 Initial import
thib
parents:
diff changeset
61 return by-ty;
223b71206888 Initial import
thib
parents:
diff changeset
62 }
223b71206888 Initial import
thib
parents:
diff changeset
63 };
223b71206888 Initial import
thib
parents:
diff changeset
64
223b71206888 Initial import
thib
parents:
diff changeset
65 inline bool operator ==(const Rect& r1, const Rect& r2) {
223b71206888 Initial import
thib
parents:
diff changeset
66 return (r1.lx == r2.lx && r1.rx == r2.rx && r1.ty == r2.ty && r1.by == r2.by);
223b71206888 Initial import
thib
parents:
diff changeset
67 }
223b71206888 Initial import
thib
parents:
diff changeset
68 inline bool Rect::point_in(int x, int y) const {
223b71206888 Initial import
thib
parents:
diff changeset
69 return (lx <= x && x < rx && ty <= y && y < by);
223b71206888 Initial import
thib
parents:
diff changeset
70 }
223b71206888 Initial import
thib
parents:
diff changeset
71
223b71206888 Initial import
thib
parents:
diff changeset
72 struct Color {
223b71206888 Initial import
thib
parents:
diff changeset
73 int r,g,b,a;
223b71206888 Initial import
thib
parents:
diff changeset
74 Color(int _r, int _g, int _b) : r(_r),g(_g),b(_b),a(0xff) {}
223b71206888 Initial import
thib
parents:
diff changeset
75 Color(int _r, int _g, int _b, int _a) : r(_r),g(_g),b(_b),a(_a) {}
223b71206888 Initial import
thib
parents:
diff changeset
76 };
223b71206888 Initial import
thib
parents:
diff changeset
77 #endif