floatobj.cpp
author insilmaril
Tue, 21 Feb 2006 16:18:23 +0000
changeset 217 375be2baa976
parent 173 309609406650
child 218 160459d924a1
permissions -rw-r--r--
rudimentary mmap import
insilmaril@0
     1
#include "floatobj.h"
insilmaril@0
     2
insilmaril@0
     3
extern QAction* actionEditToggleFloatExport;
insilmaril@0
     4
insilmaril@0
     5
/////////////////////////////////////////////////////////////////
insilmaril@0
     6
// FloatObj
insilmaril@0
     7
/////////////////////////////////////////////////////////////////
insilmaril@0
     8
insilmaril@0
     9
FloatObj::FloatObj ():LinkableMapObj() 
insilmaril@0
    10
{
insilmaril@0
    11
//    cout << "Const FloatObj ()\n";
insilmaril@0
    12
    setParObj (this);	
insilmaril@0
    13
    init();
insilmaril@0
    14
    depth=-1;
insilmaril@0
    15
}
insilmaril@0
    16
insilmaril@0
    17
FloatObj::FloatObj (QCanvas* c):LinkableMapObj(c)
insilmaril@0
    18
{
insilmaril@0
    19
//	cout << "Const FloatObj (c)  called from MapCenterObj (c)\n";
insilmaril@0
    20
    setParObj (this);	
insilmaril@0
    21
    init();
insilmaril@0
    22
    depth=-1;
insilmaril@0
    23
}
insilmaril@0
    24
insilmaril@0
    25
FloatObj::FloatObj (QCanvas* c, LinkableMapObj* p):LinkableMapObj (c)
insilmaril@0
    26
{
insilmaril@0
    27
//    cout << "Const FloatObj (c,p)\n";
insilmaril@0
    28
    setParObj (p);	
insilmaril@0
    29
    depth=p->getDepth()+1;
insilmaril@0
    30
    init();
insilmaril@0
    31
}
insilmaril@0
    32
insilmaril@0
    33
FloatObj::~FloatObj ()
insilmaril@0
    34
{
insilmaril@0
    35
//   cout << "Destr FloatObj\n";
insilmaril@0
    36
}
insilmaril@0
    37
insilmaril@0
    38
void FloatObj::init () 
insilmaril@0
    39
{
insilmaril@0
    40
    setChildObj(this);
insilmaril@0
    41
	relPos=getRandPos();
insilmaril@0
    42
	useOrientation=true;
insilmaril@0
    43
	floatExport=true;
insilmaril@0
    44
	zPlane=Z_ICON;
insilmaril@160
    45
	setLinkStyle (StyleParabel);
insilmaril@160
    46
	setHideLinkUnselected(true);
insilmaril@0
    47
}
insilmaril@0
    48
insilmaril@0
    49
void FloatObj::copy (FloatObj* other)
insilmaril@0
    50
{
insilmaril@0
    51
	LinkableMapObj::copy (other);
insilmaril@0
    52
	relPos=other->relPos;
insilmaril@0
    53
	useOrientation=other->useOrientation;
insilmaril@0
    54
	setVisibility (other->visible);
insilmaril@0
    55
}
insilmaril@0
    56
insilmaril@0
    57
void FloatObj::setRelPos()
insilmaril@0
    58
{
insilmaril@0
    59
	if (useOrientation)
insilmaril@0
    60
	{
insilmaril@0
    61
		if (parObj->getOrientation()==OrientLeftOfCenter)
insilmaril@0
    62
			relPos.setX ( parObj->x() +parObj->width() - bbox.width() -absPos.x());
insilmaril@0
    63
		else	
insilmaril@0
    64
			relPos.setX (absPos.x() - parObj->x() );
insilmaril@0
    65
	}
insilmaril@0
    66
	else
insilmaril@0
    67
		relPos.setX (absPos.x() - parObj->x() );
insilmaril@0
    68
	relPos.setY (absPos.y() - parObj->y() );
insilmaril@173
    69
	if (parObj)
insilmaril@173
    70
	{	
insilmaril@173
    71
		parObj->calcBBoxSize();
insilmaril@173
    72
		parObj->requestReposition();
insilmaril@173
    73
	}	
insilmaril@0
    74
}
insilmaril@0
    75
insilmaril@0
    76
void FloatObj::setRelPos(const QPoint &p)
insilmaril@0
    77
{
insilmaril@0
    78
	relPos=p;
insilmaril@173
    79
	if (parObj)
insilmaril@173
    80
	{	parObj->calcBBoxSize();
insilmaril@173
    81
		parObj->requestReposition();
insilmaril@173
    82
	}	
insilmaril@173
    83
}
insilmaril@173
    84
insilmaril@173
    85
QPoint FloatObj::getRelPos ()
insilmaril@173
    86
{
insilmaril@173
    87
	return relPos;
insilmaril@0
    88
}
insilmaril@0
    89
insilmaril@0
    90
void FloatObj::setZ(const int &i)
insilmaril@0
    91
{
insilmaril@0
    92
	zPlane=i;
insilmaril@0
    93
}
insilmaril@0
    94
insilmaril@0
    95
int FloatObj::z()
insilmaril@0
    96
{
insilmaril@0
    97
	return zPlane;
insilmaril@0
    98
}
insilmaril@0
    99
insilmaril@0
   100
insilmaril@0
   101
void FloatObj::setUseOrientation (const bool &b)
insilmaril@0
   102
{	
insilmaril@0
   103
	if (useOrientation!=b)
insilmaril@0
   104
	{
insilmaril@0
   105
		useOrientation=b;
insilmaril@0
   106
		requestReposition();
insilmaril@0
   107
	}	
insilmaril@0
   108
}
insilmaril@0
   109
insilmaril@0
   110
void FloatObj::setFloatExport(const bool& b)
insilmaril@0
   111
{
insilmaril@0
   112
	floatExport=b;
insilmaril@0
   113
}
insilmaril@0
   114
insilmaril@0
   115
bool FloatObj::getFloatExport()
insilmaril@0
   116
{
insilmaril@0
   117
	return floatExport;
insilmaril@0
   118
}
insilmaril@0
   119
insilmaril@0
   120
void FloatObj::move (double x, double y)
insilmaril@0
   121
{
insilmaril@0
   122
	MapObj::move(x,y);
insilmaril@0
   123
	selbox->move(x,y);
insilmaril@0
   124
}
insilmaril@0
   125
insilmaril@0
   126
void FloatObj::move (QPoint p)
insilmaril@0
   127
{
insilmaril@0
   128
	move (p.x(), p.y());
insilmaril@0
   129
}
insilmaril@0
   130
insilmaril@0
   131
void FloatObj::reposition()
insilmaril@0
   132
{
insilmaril@0
   133
	if (useOrientation)
insilmaril@0
   134
	{
insilmaril@0
   135
		if (parObj->getOrientation()==OrientLeftOfCenter)
insilmaril@0
   136
			move (parObj->x() - relPos.x() + parObj->width() - bbox.width(), parObj->y()+relPos.y());
insilmaril@0
   137
		else	
insilmaril@0
   138
			move (parObj->x()+relPos.x(), parObj->y()+relPos.y());
insilmaril@0
   139
	}		
insilmaril@0
   140
	else
insilmaril@0
   141
		move (parObj->x()+relPos.x(), parObj->y()+relPos.y());
insilmaril@0
   142
	updateLink();	
insilmaril@0
   143
}
insilmaril@0
   144
insilmaril@0
   145
QRect FloatObj::getTotalBBox()
insilmaril@0
   146
{
insilmaril@0
   147
	return bbox;
insilmaril@0
   148
}
insilmaril@0
   149
insilmaril@0
   150
QRect FloatObj::getBBoxSizeWithChilds()
insilmaril@0
   151
{
insilmaril@0
   152
	return bboxTotal;
insilmaril@0
   153
}
insilmaril@0
   154
insilmaril@0
   155
void FloatObj::select()
insilmaril@0
   156
{
insilmaril@0
   157
    LinkableMapObj::select();
insilmaril@173
   158
	setLinkColor(parObj->getLinkColor());
insilmaril@0
   159
insilmaril@0
   160
	// Update FloatExport switch in context menu
insilmaril@0
   161
	if (floatExport)
insilmaril@0
   162
		actionEditToggleFloatExport->setEnabled (true);
insilmaril@0
   163
	else	
insilmaril@0
   164
		actionEditToggleFloatExport->setEnabled (true);
insilmaril@0
   165
insilmaril@0
   166
insilmaril@0
   167
}
insilmaril@0
   168
insilmaril@0
   169
void FloatObj::unselect()
insilmaril@0
   170
{
insilmaril@0
   171
	LinkableMapObj::unselect();
insilmaril@0
   172
}
insilmaril@0
   173