~ubuntu-branches/ubuntu/precise/koffice/precise

« back to all changes in this revision

Viewing changes to kformula/flake/elements/SquareRootElement.cpp

  • Committer: Bazaar Package Importer
  • Author(s): Alessandro Ghersi
  • Date: 2010-10-27 17:52:57 UTC
  • mfrom: (0.12.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20101027175257-s04zqqk5bs8ckm9o
Tags: 1:2.2.83-0ubuntu1
* Merge with Debian git remaining changes:
 - Add build-deps on librcps-dev, opengtl-dev, libqtgtl-dev, freetds-dev,
   create-resources, libspnav-dev
 - Remove needless build-dep on libwv2-dev
 - koffice-libs recommends create-resources
 - krita recommends pstoedit
 - Keep our patches
* New upstream release 2.3 beta 3
  - Remove debian/patches fixed by upstream
  - Update install files

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* This file is part of the KDE project
 
2
   Copyright (C) 2007 Martin Pfeiffer <hubipete@gmx.net>
 
3
 
 
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.
 
8
 
 
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.
 
13
 
 
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.
 
18
*/
 
19
 
 
20
#include "SquareRootElement.h"
 
21
#include "AttributeManager.h"
 
22
#include <QPainter>
 
23
#include <QPen>
 
24
#include <kdebug.h>
 
25
 
 
26
SquareRootElement::SquareRootElement( BasicElement* parent ) : RowElement( parent )
 
27
{
 
28
}
 
29
 
 
30
SquareRootElement::~SquareRootElement()
 
31
{
 
32
}
 
33
 
 
34
void SquareRootElement::paint( QPainter& painter, AttributeManager* am )
 
35
{
 
36
    Q_UNUSED( am )
 
37
//     BasicElement::paint(painter, am);
 
38
    QPen pen;
 
39
    pen.setWidth( m_lineThickness );
 
40
    painter.setPen( pen );
 
41
    painter.drawPath( m_rootSymbol );
 
42
}
 
43
 
 
44
void SquareRootElement::layout( const AttributeManager* am )
 
45
{
 
46
    RowElement::layout( am );
 
47
 
 
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;
 
53
 
 
54
    m_lineThickness = am->lineThickness(this);
 
55
 
 
56
    // Set the sqrt dimensions 
 
57
    QPointF childOffset( tickWidth + thinSpace, thinSpace + m_lineThickness );
 
58
 
 
59
    setWidth( width() + childOffset.x());
 
60
    setHeight( height() + childOffset.y());
 
61
    setBaseLine( baseLine() + childOffset.y());
 
62
 
 
63
    // Adapt the children's positions to the new offset
 
64
    foreach( BasicElement* element, childElements() )
 
65
        element->setOrigin( element->origin() + childOffset );
 
66
 
 
67
    QRectF rect = childrenBoundingRect();
 
68
    rect.translate(childOffset);
 
69
    setChildrenBoundingRect(rect);
 
70
 
 
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 );
 
77
 
 
78
}
 
79
 
 
80
ElementType SquareRootElement::elementType() const
 
81
{
 
82
    return SquareRoot;
 
83
}
 
84