File: uirect2d.h

package info (click to toggle)
openmohaa 0.82.1%2Bdfsg-1
  • links: PTS, VCS
  • area: contrib
  • in suites: forky, sid
  • size: 34,192 kB
  • sloc: cpp: 315,720; ansic: 275,789; sh: 312; xml: 246; asm: 141; makefile: 7
file content (135 lines) | stat: -rw-r--r-- 3,573 bytes parent folder | download
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
/*
===========================================================================
Copyright (C) 2015 the OpenMoHAA team

This file is part of OpenMoHAA source code.

OpenMoHAA source code is free software; you can redistribute it
and/or modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the License,
or (at your option) any later version.

OpenMoHAA source code is distributed in the hope that it will be
useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with OpenMoHAA source code; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
===========================================================================
*/

#pragma once

#include "uipoint2d.h"
#include "uisize2d.h"

class UIRect2D
{
public:
    UIPoint2D pos;
    UISize2D  size;

public:
    UIRect2D();
    UIRect2D(float x, float y, float width, float height);
    UIRect2D(const UIPoint2D& pos, const UISize2D& size);

    float     getMinX() const;
    float     getMinY() const;
    float     getMaxX() const;
    float     getMaxY() const;
    UIPoint2D getUpperLeft() const;
    UIPoint2D getUpperRight() const;
    UIPoint2D getLowerLeft() const;
    UIPoint2D getLowerRight() const;

    bool contains(const UIPoint2D& pos) const;
    bool contains(float x, float y) const;
    bool contains(int x, int y) const;
    bool contains(const UIRect2D& pos) const;
    bool intersects(const UIRect2D& pos) const;
};

inline UIRect2D::UIRect2D() {}

inline UIRect2D::UIRect2D(float x, float y, float width, float height)
{
    pos  = UIPoint2D(x, y);
    size = UISize2D(width, height);
}

inline UIRect2D::UIRect2D(const UIPoint2D& pos, const UISize2D& size)
{
    this->pos  = pos;
    this->size = size;
}

inline float UIRect2D::getMinX(void) const
{
    return pos.x;
}

inline float UIRect2D::getMinY(void) const
{
    return pos.y;
}

inline float UIRect2D::getMaxX(void) const
{
    return pos.x + size.width;
}

inline float UIRect2D::getMaxY(void) const
{
    return pos.y + size.height;
}

inline UIPoint2D UIRect2D::getUpperLeft(void) const
{
    return UIPoint2D(getMinX(), getMinY());
}

inline UIPoint2D UIRect2D::getUpperRight(void) const
{
    return UIPoint2D(getMaxX(), getMinY());
}

inline UIPoint2D UIRect2D::getLowerLeft(void) const
{
    return UIPoint2D(getMinX(), getMaxY());
}

inline UIPoint2D UIRect2D::getLowerRight(void) const
{
    return UIPoint2D(getMaxX(), getMaxY());
}

inline bool UIRect2D::contains(const UIPoint2D& pos) const
{
    return pos.x >= this->pos.x && pos.x <= this->pos.x + size.width && pos.y >= this->pos.y
        && pos.y <= this->pos.y + size.height;
}

inline bool UIRect2D::contains(float x, float y) const
{
    return x >= this->pos.x && x <= this->pos.x + size.width && y >= this->pos.y && y <= this->pos.y + size.height;
}

inline bool UIRect2D::contains(int x, int y) const
{
    return x >= this->pos.x && x <= this->pos.x + size.width && y >= this->pos.y && y <= this->pos.y + size.height;
}

inline bool UIRect2D::contains(const UIRect2D& pos) const
{
    return pos.pos.x >= this->pos.x && pos.pos.x <= this->pos.x + size.width && pos.pos.y >= this->pos.y
        && pos.pos.y <= this->pos.y + size.height;
}

inline bool UIRect2D::intersects(const UIRect2D& pos) const
{
    // FIXME: stub
    return false;
}