flagobj.cpp
author insilmaril
Thu, 17 Jul 2008 09:27:20 +0000
branchrelease-1-12-maintained
changeset 39 e37153bea487
parent 0 7a96bd401351
child 2 608f976aa7bb
child 103 c810a11d11d9
permissions -rw-r--r--
removed pixel garbage on right side of exported images
insilmaril@0
     1
#include "flagobj.h"
insilmaril@0
     2
insilmaril@0
     3
/////////////////////////////////////////////////////////////////
insilmaril@0
     4
// FlagObj
insilmaril@0
     5
/////////////////////////////////////////////////////////////////
insilmaril@0
     6
FlagObj::FlagObj()
insilmaril@0
     7
{
insilmaril@0
     8
//    cout << "Const FlagObj ()\n";
insilmaril@0
     9
    init ();
insilmaril@0
    10
}
insilmaril@0
    11
insilmaril@0
    12
FlagObj::FlagObj(QCanvas* c):MapObj(c) 
insilmaril@0
    13
{
insilmaril@0
    14
//    cout << "Const FlagObj\n";
insilmaril@0
    15
    init ();
insilmaril@0
    16
}
insilmaril@0
    17
insilmaril@0
    18
FlagObj::FlagObj (FlagObj* io)
insilmaril@0
    19
{
insilmaril@0
    20
    copy (io);
insilmaril@0
    21
}
insilmaril@0
    22
insilmaril@0
    23
FlagObj::~FlagObj()
insilmaril@0
    24
{
insilmaril@0
    25
//    cout << "Destr FlagObj  " << name << "\n";
insilmaril@0
    26
	delete (icon);
insilmaril@0
    27
}
insilmaril@0
    28
insilmaril@0
    29
insilmaril@0
    30
void FlagObj::init ()
insilmaril@0
    31
{
insilmaril@0
    32
	name="undefined";
insilmaril@0
    33
insilmaril@0
    34
	icon=new ImageObj (canvas);
insilmaril@0
    35
	icon->move (absPos.x(), absPos.y() );
insilmaril@0
    36
	button=NULL;
insilmaril@0
    37
	state=false;
insilmaril@0
    38
}
insilmaril@0
    39
insilmaril@0
    40
void FlagObj::copy (FlagObj* other)
insilmaril@0
    41
{
insilmaril@0
    42
    MapObj::copy(other);
insilmaril@0
    43
	name=other->name;
insilmaril@0
    44
	tooltip=other->tooltip;
insilmaril@0
    45
	state=other->state;
insilmaril@0
    46
	icon->copy(other->icon);
insilmaril@0
    47
	setVisibility (other->isVisibleObj() );
insilmaril@0
    48
	// button is not copied, because
insilmaril@0
    49
	// we won't copy to a parentRow and
insilmaril@0
    50
	// all others don't need a button
insilmaril@0
    51
}
insilmaril@0
    52
insilmaril@0
    53
void FlagObj::move(double x, double y)
insilmaril@0
    54
{
insilmaril@0
    55
    MapObj::move(x,y);
insilmaril@0
    56
	icon->move(x,y);
insilmaril@0
    57
	positionBBox();
insilmaril@0
    58
}
insilmaril@0
    59
insilmaril@0
    60
void FlagObj::moveBy(double x, double y)
insilmaril@0
    61
{
insilmaril@0
    62
    move (x+absPos.x(),y+absPos.y() );
insilmaril@0
    63
}
insilmaril@0
    64
insilmaril@0
    65
void FlagObj::setVisibility (bool v)
insilmaril@0
    66
{
insilmaril@0
    67
    MapObj::setVisibility(v);
insilmaril@0
    68
	if (v && state)
insilmaril@0
    69
	    icon->setVisibility(true);
insilmaril@0
    70
	else
insilmaril@0
    71
	    icon->setVisibility(false);
insilmaril@0
    72
}
insilmaril@0
    73
insilmaril@0
    74
void FlagObj::load (const QString &fn)
insilmaril@0
    75
{
insilmaril@0
    76
	icon->load(fn);
insilmaril@0
    77
	calcBBoxSize();
insilmaril@0
    78
	positionBBox();
insilmaril@0
    79
}
insilmaril@0
    80
insilmaril@0
    81
void FlagObj::load (const QPixmap &pm)
insilmaril@0
    82
{
insilmaril@0
    83
	icon->load(pm);
insilmaril@0
    84
	calcBBoxSize();
insilmaril@0
    85
	positionBBox();
insilmaril@0
    86
}
insilmaril@0
    87
insilmaril@0
    88
void FlagObj::setName(const QString &n)
insilmaril@0
    89
{
insilmaril@0
    90
	name=n;
insilmaril@0
    91
}
insilmaril@0
    92
insilmaril@0
    93
const QString FlagObj::getName()
insilmaril@0
    94
{
insilmaril@0
    95
	return name;
insilmaril@0
    96
}
insilmaril@0
    97
insilmaril@0
    98
void FlagObj::setToolTip(const QString &n)
insilmaril@0
    99
{
insilmaril@0
   100
	tooltip=n;
insilmaril@0
   101
}
insilmaril@0
   102
insilmaril@0
   103
const QString FlagObj::getToolTip()
insilmaril@0
   104
{
insilmaril@0
   105
	return tooltip;
insilmaril@0
   106
}
insilmaril@0
   107
insilmaril@0
   108
void FlagObj::setButton(QAction* b)
insilmaril@0
   109
{
insilmaril@0
   110
    button=b;
insilmaril@0
   111
}
insilmaril@0
   112
insilmaril@0
   113
void FlagObj::updateButton()
insilmaril@0
   114
{
insilmaril@0
   115
	if (button)
insilmaril@0
   116
		button->setOn(state);
insilmaril@0
   117
	else
insilmaril@0
   118
		qWarning ("FlagObj::updateButton  no button defined");
insilmaril@0
   119
}
insilmaril@0
   120
insilmaril@0
   121
QPixmap FlagObj::getPixmap()
insilmaril@0
   122
{
insilmaril@0
   123
	return icon->getPixmap();
insilmaril@0
   124
}
insilmaril@0
   125
insilmaril@0
   126
bool FlagObj::isActive()
insilmaril@0
   127
{
insilmaril@0
   128
	return state;
insilmaril@0
   129
}
insilmaril@0
   130
insilmaril@0
   131
void FlagObj::toggle()
insilmaril@0
   132
{
insilmaril@0
   133
	if (state)
insilmaril@0
   134
		deactivate();
insilmaril@0
   135
	else
insilmaril@0
   136
		activate();
insilmaril@0
   137
}
insilmaril@0
   138
insilmaril@0
   139
void FlagObj::activate()
insilmaril@0
   140
{
insilmaril@0
   141
	state=true;
insilmaril@0
   142
	// only show icon, if flag itself is visible 
insilmaril@0
   143
	if (visible) 
insilmaril@0
   144
	{
insilmaril@0
   145
		icon->setVisibility (true);
insilmaril@0
   146
		calcBBoxSize();
insilmaril@0
   147
	}	
insilmaril@0
   148
}
insilmaril@0
   149
insilmaril@0
   150
void FlagObj::deactivate()
insilmaril@0
   151
{
insilmaril@0
   152
	state=false;
insilmaril@0
   153
	// if flag itself is invisible we don't need to call 
insilmaril@0
   154
	if (visible) 
insilmaril@0
   155
	{
insilmaril@0
   156
		icon->setVisibility (false);
insilmaril@0
   157
		calcBBoxSize();
insilmaril@0
   158
	}	
insilmaril@0
   159
}
insilmaril@0
   160
insilmaril@0
   161
void FlagObj::setEnabled(bool b)
insilmaril@0
   162
{
insilmaril@0
   163
	button->setEnabled (b);
insilmaril@0
   164
}	
insilmaril@0
   165
	
insilmaril@0
   166
insilmaril@0
   167
void FlagObj::setUsed (bool b)
insilmaril@0
   168
{
insilmaril@0
   169
	used=b;
insilmaril@0
   170
}
insilmaril@0
   171
insilmaril@0
   172
bool FlagObj::isUsed()
insilmaril@0
   173
{
insilmaril@0
   174
	return used;
insilmaril@0
   175
}
insilmaril@0
   176
insilmaril@0
   177
void FlagObj::saveToDir (const QString &tmpdir, const QString &prefix)
insilmaril@0
   178
{
insilmaril@0
   179
	QString fn=tmpdir + prefix + name + ".png";
insilmaril@0
   180
	icon->save (fn,"PNG");
insilmaril@0
   181
}
insilmaril@0
   182
insilmaril@0
   183
void FlagObj::positionBBox()
insilmaril@0
   184
{
insilmaril@0
   185
    bbox.setX (absPos.x() );
insilmaril@0
   186
    bbox.setY (absPos.y() );
insilmaril@0
   187
}
insilmaril@0
   188
insilmaril@0
   189
void FlagObj::calcBBoxSize()
insilmaril@0
   190
{
insilmaril@0
   191
	if (visible && state)
insilmaril@0
   192
	{
insilmaril@0
   193
		bbox.setSize (	QSize(
insilmaril@0
   194
			icon->boundingRect().width(), 
insilmaril@0
   195
			icon->boundingRect().height() ) );
insilmaril@0
   196
	} else
insilmaril@0
   197
	{
insilmaril@0
   198
		bbox.setSize (QSize(0,0));
insilmaril@0
   199
	}
insilmaril@0
   200
}
insilmaril@0
   201