1
/* This file is part of the KDE project
2
Copyright (C) 2007 Martin Pfeiffer <hubipete@gmx.net>
4
This library is free software; you can redistribute it and/or
5
modify it under the terms of the GNU Library General Public
6
License as published by the Free Software Foundation; either
7
version 2 of the License, or (at your option) any later version.
9
This library is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
Library General Public License for more details.
14
You should have received a copy of the GNU Library General Public License
15
along with this library; see the file COPYING.LIB. If not, write to
16
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17
Boston, MA 02110-1301, USA.
20
#include "SquareRootElement.h"
21
#include "AttributeManager.h"
26
SquareRootElement::SquareRootElement( BasicElement* parent ) : RowElement( parent )
30
SquareRootElement::~SquareRootElement()
34
void SquareRootElement::paint( QPainter& painter, AttributeManager* am )
37
// BasicElement::paint(painter, am);
39
pen.setWidth( m_lineThickness );
40
painter.setPen( pen );
41
painter.drawPath( m_rootSymbol );
44
void SquareRootElement::layout( const AttributeManager* am )
46
RowElement::layout( am );
48
qreal thinSpace = am->layoutSpacing( this );
49
qreal symbolHeight = baseLine();
50
if( height() > symbolHeight*1.3 ) symbolHeight = height();
51
symbolHeight += thinSpace;
52
qreal tickWidth = symbolHeight / 3.0;
54
m_lineThickness = am->lineThickness(this);
56
// Set the sqrt dimensions
57
QPointF childOffset( tickWidth + thinSpace, thinSpace + m_lineThickness );
59
setWidth( width() + childOffset.x());
60
setHeight( height() + childOffset.y());
61
setBaseLine( baseLine() + childOffset.y());
63
// Adapt the children's positions to the new offset
64
foreach( BasicElement* element, childElements() )
65
element->setOrigin( element->origin() + childOffset );
67
QRectF rect = childrenBoundingRect();
68
rect.translate(childOffset);
69
setChildrenBoundingRect(rect);
71
// Draw the sqrt symbol into a QPainterPath as buffer
72
m_rootSymbol = QPainterPath();
73
m_rootSymbol.moveTo( m_lineThickness, 2.0 * symbolHeight / 3.0 );
74
m_rootSymbol.lineTo( 0 + tickWidth/2.0, symbolHeight-m_lineThickness/2 );
75
m_rootSymbol.lineTo( 0 + tickWidth, m_lineThickness/2 );
76
m_rootSymbol.lineTo( width() - m_lineThickness/2, m_lineThickness/2 );
80
ElementType SquareRootElement::elementType() const