diff options
Diffstat (limited to 'src/declarative/items/qquickclipnode.cpp')
-rw-r--r-- | src/declarative/items/qquickclipnode.cpp | 120 |
1 files changed, 0 insertions, 120 deletions
diff --git a/src/declarative/items/qquickclipnode.cpp b/src/declarative/items/qquickclipnode.cpp deleted file mode 100644 index 4aeb2dcf69..0000000000 --- a/src/declarative/items/qquickclipnode.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtDeclarative module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include "qquickclipnode_p.h" - -#include <QtGui/qvector2d.h> -#include <QtCore/qmath.h> - -QQuickDefaultClipNode::QQuickDefaultClipNode(const QRectF &rect) - : m_rect(rect) - , m_radius(0) - , m_dirty_geometry(true) - , m_geometry(QSGGeometry::defaultAttributes_Point2D(), 0) -{ - setGeometry(&m_geometry); - setIsRectangular(true); -} - -void QQuickDefaultClipNode::setRect(const QRectF &rect) -{ - m_rect = rect; - m_dirty_geometry = true; -} - -void QQuickDefaultClipNode::setRadius(qreal radius) -{ - m_radius = radius; - m_dirty_geometry = true; - setIsRectangular(radius == 0); -} - -void QQuickDefaultClipNode::update() -{ - if (m_dirty_geometry) { - updateGeometry(); - m_dirty_geometry = false; - } -} - -void QQuickDefaultClipNode::updateGeometry() -{ - QSGGeometry *g = geometry(); - - if (qFuzzyIsNull(m_radius)) { - g->allocate(4); - QSGGeometry::updateRectGeometry(g, m_rect); - - } else { - int vertexCount = 0; - - // Radius should never exceeds half of the width or half of the height - qreal radius = qMin(qMin(m_rect.width() / 2, m_rect.height() / 2), m_radius); - QRectF rect = m_rect; - rect.adjust(radius, radius, -radius, -radius); - - int segments = qMin(30, qCeil(radius)); // Number of segments per corner. - - g->allocate((segments + 1) * 2); - - QVector2D *vertices = (QVector2D *)g->vertexData(); - - for (int part = 0; part < 2; ++part) { - for (int i = 0; i <= segments; ++i) { - //### Should change to calculate sin/cos only once. - qreal angle = qreal(0.5 * M_PI) * (part + i / qreal(segments)); - qreal s = qFastSin(angle); - qreal c = qFastCos(angle); - qreal y = (part ? rect.bottom() : rect.top()) - radius * c; // current inner y-coordinate. - qreal lx = rect.left() - radius * s; // current inner left x-coordinate. - qreal rx = rect.right() + radius * s; // current inner right x-coordinate. - - vertices[vertexCount++] = QVector2D(rx, y); - vertices[vertexCount++] = QVector2D(lx, y); - } - } - - markDirty(DirtyGeometry); - } - setClipRect(m_rect); -} - |