frameobj.cpp
author insilmaril
Tue Apr 10 13:22:52 2007 +0000 (2007-04-10)
changeset 447 72afe12da1c8
parent 425 7014be3ac7d0
child 470 80ae7b79828c
permissions -rw-r--r--
1.8.71 Basic support for macros
insilmaril@0
     1
#include "frameobj.h"
insilmaril@0
     2
insilmaril@0
     3
#include <qcolor.h>
insilmaril@0
     4
insilmaril@0
     5
/////////////////////////////////////////////////////////////////
insilmaril@0
     6
// FrameObj
insilmaril@0
     7
/////////////////////////////////////////////////////////////////
insilmaril@0
     8
FrameObj::FrameObj() : MapObj()
insilmaril@0
     9
{
insilmaril@0
    10
//    cout << "Const FrameObj ()\n";
insilmaril@0
    11
    init ();
insilmaril@0
    12
}
insilmaril@0
    13
insilmaril@408
    14
FrameObj::FrameObj(QGraphicsScene *s) :MapObj(s)
insilmaril@0
    15
{
insilmaril@0
    16
//    cout << "Const FrameObj\n";
insilmaril@0
    17
    init ();
insilmaril@0
    18
}
insilmaril@0
    19
insilmaril@0
    20
FrameObj::~FrameObj()
insilmaril@0
    21
{
insilmaril@0
    22
	clear();
insilmaril@0
    23
}
insilmaril@0
    24
insilmaril@0
    25
void FrameObj::init()
insilmaril@0
    26
{
insilmaril@0
    27
    type=NoFrame;
insilmaril@0
    28
    border=0;
insilmaril@442
    29
	penColor=QColor (Qt::black);
insilmaril@442
    30
	brushColor=QColor (Qt::white);
insilmaril@0
    31
}
insilmaril@0
    32
insilmaril@0
    33
void FrameObj::clear()
insilmaril@0
    34
{
insilmaril@0
    35
    switch (type)
insilmaril@0
    36
    {
insilmaril@0
    37
		case NoFrame:
insilmaril@0
    38
			break;
insilmaril@0
    39
		case Rectangle:
insilmaril@0
    40
			delete rectFrame;
insilmaril@0
    41
			break;
insilmaril@421
    42
		case Ellipse:
insilmaril@421
    43
			delete ellipseFrame;
insilmaril@421
    44
			break;
insilmaril@0
    45
    }
insilmaril@0
    46
	type=NoFrame;
insilmaril@0
    47
	border=0;
insilmaril@0
    48
}
insilmaril@0
    49
insilmaril@0
    50
void FrameObj::move(double x, double y)
insilmaril@0
    51
{
insilmaril@0
    52
    switch (type)
insilmaril@0
    53
    {
insilmaril@0
    54
		case NoFrame:
insilmaril@0
    55
			break;
insilmaril@0
    56
		case Rectangle:
insilmaril@408
    57
			rectFrame->setPos (x,y);
insilmaril@0
    58
			break;
insilmaril@421
    59
		case Ellipse:
insilmaril@421
    60
			ellipseFrame->setPos (x,y);
insilmaril@421
    61
			break;
insilmaril@0
    62
    }
insilmaril@0
    63
}
insilmaril@0
    64
insilmaril@0
    65
void FrameObj::moveBy(double x, double y)
insilmaril@0
    66
{
insilmaril@0
    67
	MapObj::moveBy (x,y);
insilmaril@0
    68
}
insilmaril@0
    69
insilmaril@0
    70
void FrameObj::positionBBox()
insilmaril@0
    71
{
insilmaril@0
    72
}
insilmaril@0
    73
insilmaril@0
    74
void FrameObj::calcBBoxSize()
insilmaril@0
    75
{
insilmaril@0
    76
}
insilmaril@0
    77
insilmaril@408
    78
void FrameObj::setRect(const QRectF &r)
insilmaril@0
    79
{
insilmaril@0
    80
	bbox=r;
insilmaril@0
    81
    switch (type)
insilmaril@0
    82
    {
insilmaril@0
    83
		case NoFrame:
insilmaril@0
    84
			break;
insilmaril@0
    85
		case Rectangle:
insilmaril@425
    86
	//		rectFrame->prepareGeometryChange();
insilmaril@408
    87
			rectFrame->setRect (QRectF(bbox.x(),bbox.y(),bbox.width(),bbox.height() ));
insilmaril@0
    88
			break;
insilmaril@421
    89
		case Ellipse:
insilmaril@425
    90
	//		ellipseFrame->prepareGeometryChange();
insilmaril@421
    91
			ellipseFrame->setRect (QRectF(bbox.x(),bbox.y(),bbox.width(),bbox.height() ));
insilmaril@421
    92
			break;
insilmaril@0
    93
    }
insilmaril@0
    94
}
insilmaril@0
    95
insilmaril@0
    96
int FrameObj::getBorder()
insilmaril@0
    97
{
insilmaril@0
    98
	return border;
insilmaril@0
    99
}
insilmaril@0
   100
insilmaril@0
   101
FrameType FrameObj::getFrameType()
insilmaril@0
   102
{
insilmaril@0
   103
	return type;
insilmaril@0
   104
}
insilmaril@0
   105
insilmaril@0
   106
QString FrameObj::getFrameTypeName()
insilmaril@0
   107
{
insilmaril@0
   108
    switch (type)
insilmaril@0
   109
    {
insilmaril@0
   110
		case Rectangle:
insilmaril@0
   111
			return "Rectangle";
insilmaril@0
   112
			break;
insilmaril@421
   113
		case Ellipse:
insilmaril@421
   114
			return "Ellipse";
insilmaril@421
   115
			break;
insilmaril@0
   116
		default:
insilmaril@0
   117
			return "NoFrame";
insilmaril@0
   118
    }
insilmaril@0
   119
}
insilmaril@0
   120
insilmaril@0
   121
void FrameObj::setFrameType(const FrameType &t)
insilmaril@0
   122
{
insilmaril@0
   123
	if (t!=type)
insilmaril@0
   124
	{
insilmaril@0
   125
		clear();
insilmaril@0
   126
		type=t;
insilmaril@0
   127
		switch (type)
insilmaril@0
   128
		{
insilmaril@0
   129
			case NoFrame:
insilmaril@0
   130
				border=0;
insilmaril@0
   131
				break;
insilmaril@0
   132
			case Rectangle:
insilmaril@0
   133
				border=10;
insilmaril@442
   134
				rectFrame = scene->addRect(QRectF(0,0,0,0), QPen(penColor), brushColor);
insilmaril@408
   135
				rectFrame->setZValue(Z_FRAME);
insilmaril@442
   136
				rectFrame->show();
insilmaril@421
   137
				break;
insilmaril@421
   138
			case Ellipse:
insilmaril@421
   139
				border=10;
insilmaril@442
   140
				ellipseFrame = scene->addEllipse(QRectF(0,0,0,0), QPen(penColor), brushColor);
insilmaril@421
   141
				ellipseFrame->setZValue(Z_FRAME);
insilmaril@442
   142
				ellipseFrame->show();
insilmaril@0
   143
				break;
insilmaril@0
   144
		}
insilmaril@0
   145
	}
insilmaril@442
   146
	setVisibility (visible);
insilmaril@0
   147
}
insilmaril@0
   148
insilmaril@0
   149
void FrameObj::setFrameType(const QString &t)
insilmaril@0
   150
{
insilmaril@0
   151
	if (t=="Rectangle")
insilmaril@0
   152
		FrameObj::setFrameType (Rectangle);
insilmaril@421
   153
	else if (t=="Ellipse")	
insilmaril@421
   154
		FrameObj::setFrameType (Ellipse);
insilmaril@0
   155
	else	
insilmaril@0
   156
		FrameObj::setFrameType (NoFrame);
insilmaril@0
   157
}
insilmaril@0
   158
insilmaril@442
   159
void FrameObj::setPenColor (QColor col)
insilmaril@442
   160
{
insilmaril@442
   161
	penColor=col;
insilmaril@442
   162
	repaint();
insilmaril@442
   163
}
insilmaril@442
   164
insilmaril@442
   165
QColor FrameObj::getPenColor ()
insilmaril@442
   166
{
insilmaril@442
   167
	return penColor;
insilmaril@442
   168
}
insilmaril@442
   169
insilmaril@442
   170
void FrameObj::setBrushColor (QColor col)
insilmaril@442
   171
{
insilmaril@442
   172
	brushColor=col;
insilmaril@442
   173
	repaint();
insilmaril@442
   174
}
insilmaril@442
   175
insilmaril@442
   176
QColor FrameObj::getBrushColor ()
insilmaril@442
   177
{
insilmaril@442
   178
	return brushColor;
insilmaril@442
   179
}
insilmaril@442
   180
insilmaril@442
   181
void FrameObj::repaint()
insilmaril@442
   182
{
insilmaril@442
   183
	switch (type)
insilmaril@442
   184
	{
insilmaril@442
   185
		case Rectangle:
insilmaril@442
   186
			rectFrame->setPen   (penColor);
insilmaril@442
   187
			rectFrame->setBrush (brushColor);
insilmaril@442
   188
			break;
insilmaril@442
   189
		case Ellipse:
insilmaril@442
   190
			ellipseFrame->setPen   (penColor);
insilmaril@442
   191
			ellipseFrame->setBrush (brushColor);
insilmaril@442
   192
			break;
insilmaril@442
   193
		default:
insilmaril@442
   194
			break;
insilmaril@442
   195
	}
insilmaril@442
   196
}
insilmaril@442
   197
insilmaril@442
   198
insilmaril@0
   199
void FrameObj::setVisibility (bool v)
insilmaril@0
   200
{
insilmaril@0
   201
    MapObj::setVisibility(v);
insilmaril@140
   202
	switch (type)
insilmaril@140
   203
	{
insilmaril@140
   204
		case NoFrame:
insilmaril@140
   205
			break;
insilmaril@140
   206
		case Rectangle:
insilmaril@140
   207
			if (visible)
insilmaril@140
   208
				rectFrame->show();
insilmaril@140
   209
			else    
insilmaril@140
   210
				rectFrame->hide();
insilmaril@140
   211
			break;
insilmaril@421
   212
		case Ellipse:
insilmaril@421
   213
			if (visible)
insilmaril@421
   214
				ellipseFrame->show();
insilmaril@421
   215
			else    
insilmaril@421
   216
				ellipseFrame->hide();
insilmaril@421
   217
			break;
insilmaril@140
   218
	}
insilmaril@0
   219
}
insilmaril@0
   220
insilmaril@421
   221
QString FrameObj::saveToDir ()
insilmaril@421
   222
{
insilmaril@421
   223
	QString	frameTypeAttr=attribut ("frameType",getFrameTypeName());
insilmaril@442
   224
	QString	penColAttr=attribut ("penColor",penColor.name() );
insilmaril@442
   225
	QString	brushColAttr=attribut ("brushColor",brushColor.name() );
insilmaril@442
   226
	return singleElement ("frame",frameTypeAttr + penColAttr + brushColAttr);
insilmaril@421
   227
}
insilmaril@421
   228