-
Notifications
You must be signed in to change notification settings - Fork 0
/
IACanvasRectangle.cpp
75 lines (58 loc) · 1.95 KB
/
IACanvasRectangle.cpp
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
// Interface Editor: a basic circuit editor
// Copyright (C) 2004 David Yuste Romero ([email protected])
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "IACanvasRectangle.h"
#include "IAPort.h"
#include <qpainter.h>
IACanvasRectangle::IACanvasRectangle( IAPort * port, QCanvas * canvas )
: QCanvasRectangle( canvas )
{
this->prt = port;
setBrush( QBrush(QColor( 235, 245, 255 )) );
setPen( QPen( QColor( 30, 30, 50 ), 1, DotLine) );
updatePort();
show();
}
IAPort * IACanvasRectangle::port()
{
return this->prt;
}
void IACanvasRectangle::updatePort()
{
QFont stdFont;
QFontMetrics fm( stdFont );
invalidate();
setSize( canvas()->width()- fm.width( "FFFF " ), fm.lineSpacing()*port()->size() );
move( fm.width( "FFFF " ), fm.lineSpacing()*port()->baseAddress() );
update();
if( canvas() )
canvas()->update();
}
void IACanvasRectangle::draw( QPainter & p )
{
QCanvasRectangle::draw( p );
// Añadimos a la salida el nombre
QString output = port()->name();
// y el modo de acceso
output += " (";
if( port()->readable() && port()->writable() )
output += "L/E";
else if( port()->readable() )
output += "L";
else if( port()->writable() )
output += "E";
output += ")";
p.drawText( x()+5, y(), p.fontMetrics().width(output), p.fontMetrics().lineSpacing(), 0, output );
}