File: mapobj.cpp

package info (click to toggle)
vym 1.8.1-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 3,000 kB
  • ctags: 1,599
  • sloc: cpp: 14,723; sh: 373; xml: 277; perl: 89; makefile: 16
file content (161 lines) | stat: -rw-r--r-- 2,607 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
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
#include "mapobj.h"
#include "misc.h"

/////////////////////////////////////////////////////////////////
// MapObj
/////////////////////////////////////////////////////////////////
MapObj::MapObj ()
{
	//qWarning ( "Const MapObj (): Please set canvas somehow!!!");
	canvas=NULL;
    init ();
}

MapObj::MapObj (QCanvas* c)
{
//  cout << "Const MapObj\n";
    canvas=c;
    init ();
}


MapObj::MapObj (MapObj* mo)
{
//    cout << "CopyConst MapObj\n";
    copy (mo);
}

MapObj::~MapObj ()
{
//    cout << "Destr MapObj\n";
}

void MapObj::init ()
{
    absPos=QPoint(0,0);
    visible=true;
}

void MapObj::copy(MapObj* other)
{
//    canvas=other->canvas;	// already set in constr. of child, use that one...
    absPos=other->absPos;
	bbox.setX (other->bbox.x() );
	bbox.setY (other->bbox.y() );
	bbox.setSize (QSize(other->bbox.width(), other->bbox.height() ) );
}

QCanvas* MapObj::getCanvas()
{
	return canvas;
}

int MapObj::x() 
{
    return absPos.x();
}

int MapObj::y() 
{
    return absPos.y();
}

int MapObj::width() 
{
    return bbox.width();
}

int MapObj::height() 
{
    return bbox.height();
}

QPoint MapObj::getAbsPos() 
{
    return absPos;
}

QString MapObj::getPos()
{
	return qpointToString(absPos);
}

void MapObj::move (double x, double y) 
{
    int xi=static_cast <int> (x);
    int yi=static_cast <int> (y);
    absPos.setX( xi);
    absPos.setY( yi);
    bbox.moveTopLeft(QPoint(xi,yi));
    clickBox.moveTopLeft(QPoint(xi,yi));
}

void MapObj::moveBy (double x, double y) 
{
	int ix=(int)x;
	int iy=(int)y;
    MapObj::move (x+absPos.x(),y+absPos.y() );
	bbox.moveBy (ix,iy);
	clickBox.moveBy (ix,iy);
}

bool MapObj::inBox(const QPoint &p)
{
    if (p.x() >= clickBox.left() && p.x() <= clickBox.right()  
	&& p.y() <= clickBox.bottom() && p.y() >= clickBox.top() )
		return true;
    return false;	
}

QRect MapObj::getBBox()
{
    return bbox;
}

QRect MapObj::addBBox(QRect r1, QRect r2)
{	
	// Find smallest QRect containing given rectangles

	QRect n;
	// Set left border
	if (r1.left() <= r2.left() )
		n.setLeft(r1.left() );
	else
		n.setLeft(r2.left() );
		
	// Set top border		
	if (r1.top() <= r2.top() )
		n.setTop(r1.top() );
	else
		n.setTop(r2.top() );
		
	// Set right border
	if (r1.right() <= r2.right() )
		n.setRight(r2.right() );
	else
		n.setRight(r1.right() );
		
	// Set bottom 
	if (r1.bottom() <= r2.bottom() )
		n.setBottom(r2.bottom() );
	else
		n.setBottom(r1.bottom() );
	return n;
}

QSize MapObj::getSize()
{
    return bbox.size();
}


bool MapObj::isVisibleObj()
{
    return visible;
}

void MapObj::setVisibility(bool v)
{
    visible=v;
}