mapobj.cpp
author insilmaril
Tue, 08 Sep 2009 12:15:39 +0000
changeset 792 7d67be709091
parent 790 133e2ed6b9c5
child 794 d922fb6ea482
permissions -rw-r--r--
First results in moving colliding MapCenters apart
insilmaril@754
     1
#include "geometry.h"
insilmaril@0
     2
#include "mapobj.h"
insilmaril@129
     3
#include "misc.h"
insilmaril@0
     4
insilmaril@0
     5
/////////////////////////////////////////////////////////////////
insilmaril@0
     6
// MapObj
insilmaril@0
     7
/////////////////////////////////////////////////////////////////
insilmaril@0
     8
MapObj::MapObj ()
insilmaril@0
     9
{
insilmaril@408
    10
	//qWarning ( "Const MapObj (): Please set scene somehow!!!");
insilmaril@408
    11
	scene=NULL;
insilmaril@0
    12
    init ();
insilmaril@0
    13
}
insilmaril@0
    14
insilmaril@790
    15
MapObj::MapObj (QGraphicsScene *s, TreeItem *ti)
insilmaril@0
    16
{
insilmaril@0
    17
//  cout << "Const MapObj\n";
insilmaril@408
    18
    scene=s;
insilmaril@790
    19
	treeItem=ti;
insilmaril@0
    20
    init ();
insilmaril@0
    21
}
insilmaril@0
    22
insilmaril@0
    23
insilmaril@0
    24
MapObj::MapObj (MapObj* mo)
insilmaril@0
    25
{
insilmaril@0
    26
//    cout << "CopyConst MapObj\n";
insilmaril@0
    27
    copy (mo);
insilmaril@0
    28
}
insilmaril@0
    29
insilmaril@0
    30
MapObj::~MapObj ()
insilmaril@0
    31
{
insilmaril@0
    32
//    cout << "Destr MapObj\n";
insilmaril@0
    33
}
insilmaril@0
    34
insilmaril@0
    35
void MapObj::init ()
insilmaril@0
    36
{
insilmaril@408
    37
    absPos=QPointF(0,0);
insilmaril@0
    38
    visible=true;
insilmaril@0
    39
}
insilmaril@0
    40
insilmaril@0
    41
void MapObj::copy(MapObj* other)
insilmaril@0
    42
{
insilmaril@408
    43
//    scene=other->scene;	// already set in constr. of child, use that one...
insilmaril@0
    44
    absPos=other->absPos;
insilmaril@0
    45
	bbox.setX (other->bbox.x() );
insilmaril@0
    46
	bbox.setY (other->bbox.y() );
insilmaril@408
    47
	bbox.setSize (QSizeF(other->bbox.width(), other->bbox.height() ) );
insilmaril@0
    48
}
insilmaril@0
    49
insilmaril@790
    50
void MapObj::setTreeItem (TreeItem *ti)
insilmaril@790
    51
{
insilmaril@790
    52
	treeItem=ti;
insilmaril@790
    53
}
insilmaril@790
    54
insilmaril@790
    55
TreeItem* MapObj::getTreeItem () const
insilmaril@790
    56
{
insilmaril@790
    57
	return treeItem;
insilmaril@790
    58
}
insilmaril@790
    59
insilmaril@790
    60
insilmaril@408
    61
QGraphicsScene* MapObj::getScene()
insilmaril@0
    62
{
insilmaril@408
    63
	return scene;
insilmaril@0
    64
}
insilmaril@0
    65
insilmaril@408
    66
qreal MapObj::x() 
insilmaril@0
    67
{
insilmaril@0
    68
    return absPos.x();
insilmaril@0
    69
}
insilmaril@0
    70
insilmaril@408
    71
qreal MapObj::y() 
insilmaril@0
    72
{
insilmaril@0
    73
    return absPos.y();
insilmaril@0
    74
}
insilmaril@0
    75
insilmaril@408
    76
qreal MapObj::width() 
insilmaril@0
    77
{
insilmaril@0
    78
    return bbox.width();
insilmaril@0
    79
}
insilmaril@0
    80
insilmaril@408
    81
qreal MapObj::height() 
insilmaril@0
    82
{
insilmaril@0
    83
    return bbox.height();
insilmaril@0
    84
}
insilmaril@0
    85
insilmaril@408
    86
QPointF MapObj::getAbsPos() 
insilmaril@227
    87
{
insilmaril@227
    88
    return absPos;
insilmaril@227
    89
}
insilmaril@227
    90
insilmaril@129
    91
QString MapObj::getPos()
insilmaril@129
    92
{
insilmaril@792
    93
	return qpointFToString(absPos);
insilmaril@129
    94
}
insilmaril@129
    95
insilmaril@0
    96
void MapObj::move (double x, double y) 
insilmaril@0
    97
{
insilmaril@408
    98
    absPos.setX( x);
insilmaril@408
    99
    absPos.setY( y);
insilmaril@408
   100
    bbox.moveTo(QPointF(x,y));
insilmaril@408
   101
    clickBox.moveTo(QPointF(x,y));
insilmaril@408
   102
}
insilmaril@408
   103
insilmaril@408
   104
void MapObj::move (QPointF p)
insilmaril@408
   105
{
insilmaril@408
   106
	absPos=p;
insilmaril@408
   107
	bbox.moveTo (p);
insilmaril@408
   108
	clickBox.moveTo (p);
insilmaril@0
   109
}
insilmaril@0
   110
insilmaril@0
   111
void MapObj::moveBy (double x, double y) 
insilmaril@0
   112
{
insilmaril@336
   113
    MapObj::move (x+absPos.x(),y+absPos.y() );
insilmaril@408
   114
	bbox.moveTo (bbox.x()+x,bbox.y()+y);
insilmaril@408
   115
	clickBox.moveTo (clickBox.x()+x,clickBox.y()+y);
insilmaril@0
   116
}
insilmaril@0
   117
insilmaril@408
   118
QRectF MapObj::getBBox()
insilmaril@0
   119
{
insilmaril@0
   120
    return bbox;
insilmaril@0
   121
}
insilmaril@0
   122
insilmaril@792
   123
ConvexPolygon MapObj::getBoundingPolygon()
insilmaril@792
   124
{
insilmaril@792
   125
	QPolygonF p;
insilmaril@792
   126
	p<<bbox.topLeft()<<bbox.topRight()<<bbox.bottomRight()<<bbox.bottomLeft();
insilmaril@792
   127
	return p;
insilmaril@792
   128
}
insilmaril@792
   129
insilmaril@645
   130
QRectF MapObj::getClickBox()
insilmaril@645
   131
{
insilmaril@645
   132
    return clickBox;
insilmaril@645
   133
}
insilmaril@175
   134
insilmaril@754
   135
bool MapObj::isInClickBox (const QPointF &p)
insilmaril@754
   136
{
insilmaril@754
   137
	return isInBox (p,clickBox);
insilmaril@754
   138
}
insilmaril@0
   139
insilmaril@408
   140
QSizeF MapObj::getSize()
insilmaril@0
   141
{
insilmaril@0
   142
    return bbox.size();
insilmaril@0
   143
}
insilmaril@0
   144
insilmaril@0
   145
insilmaril@0
   146
bool MapObj::isVisibleObj()
insilmaril@0
   147
{
insilmaril@0
   148
    return visible;
insilmaril@0
   149
}
insilmaril@0
   150
insilmaril@0
   151
void MapObj::setVisibility(bool v)
insilmaril@0
   152
{
insilmaril@0
   153
    visible=v;
insilmaril@0
   154
}
insilmaril@93
   155