Apply full transform
[profile/ivi/qtdeclarative.git] / src / particles / qquickparticlesystem.cpp
index 4fd6108..e0b050d 100644 (file)
@@ -1,38 +1,38 @@
 /****************************************************************************
 **
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
 **
 ** This file is part of the QtQuick module of the Qt Toolkit.
 **
 ** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia.  For licensing terms and
+** conditions see http://qt.digia.com/licensing.  For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
 ** 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.
+** Alternatively, 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
+** In addition, as a special exception, Digia gives you certain additional
+** rights.  These rights are described in the Digia 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.
-**
-**
-**
-**
+** 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.
 **
 **
 ** $QT_END_LICENSE$
@@ -101,9 +101,11 @@ DEFINE_BOOL_CONFIG_OPTION(qmlParticlesDebug, QML_PARTICLES_DEBUG)
 */
 
 /*!
-    \qmlclass ParticleSystem QQuickParticleSystem
+    \qmltype ParticleSystem
+    \instantiates QQuickParticleSystem
     \inqmlmodule QtQuick.Particles 2
-    \brief The ParticleSystem brings together ParticlePainter, Emitter and Affector elements.
+    \brief A system which includes particle painter, emitter, and affector types
+    \ingroup qtquick-particles
 
 */
 
@@ -139,7 +141,7 @@ DEFINE_BOOL_CONFIG_OPTION(qmlParticlesDebug, QML_PARTICLES_DEBUG)
     but you will need to resume it in order for additional particles to be generated
     by the system.
 
-    To kill all the particles in the system, use a Kill affector.
+    To kill all the particles in the system, use an Age affector.
 */
 
 /*!
@@ -155,7 +157,7 @@ DEFINE_BOOL_CONFIG_OPTION(qmlParticlesDebug, QML_PARTICLES_DEBUG)
 */
 
 /*!
-    \qmlmethod void QtQuick.Particles2::ParticleSystem::pause
+    \qmlmethod QtQuick.Particles2::ParticleSystem::pause()
 
     Pauses the simulation if it is running.
 
@@ -163,7 +165,7 @@ DEFINE_BOOL_CONFIG_OPTION(qmlParticlesDebug, QML_PARTICLES_DEBUG)
 */
 
 /*!
-    \qmlmethod void QtQuick.Particles2::ParticleSystem::resume
+    \qmlmethod QtQuick.Particles2::ParticleSystem::resume()
 
     Resumes the simulation if it is paused.
 
@@ -171,7 +173,7 @@ DEFINE_BOOL_CONFIG_OPTION(qmlParticlesDebug, QML_PARTICLES_DEBUG)
 */
 
 /*!
-    \qmlmethod void QtQuick.Particles2::ParticleSystem::start
+    \qmlmethod QtQuick.Particles2::ParticleSystem::start()
 
     Starts the simulation if it has not already running.
 
@@ -179,7 +181,7 @@ DEFINE_BOOL_CONFIG_OPTION(qmlParticlesDebug, QML_PARTICLES_DEBUG)
 */
 
 /*!
-    \qmlmethod void QtQuick.Particles2::ParticleSystem::stop
+    \qmlmethod QtQuick.Particles2::ParticleSystem::stop()
 
     Stops the simulation if it is running.
 
@@ -187,14 +189,14 @@ DEFINE_BOOL_CONFIG_OPTION(qmlParticlesDebug, QML_PARTICLES_DEBUG)
 */
 
 /*!
-    \qmlmethod void QtQuick.Particles2::ParticleSystem::restart
+    \qmlmethod QtQuick.Particles2::ParticleSystem::restart()
 
     Stops the simulation if it is running, and then starts it.
 
     \sa stop, restart, running
 */
 /*!
-    \qmlmethod void QtQuick.Particles2::ParticleSystem::reset
+    \qmlmethod QtQuick.Particles2::ParticleSystem::reset()
 
     Discards all currently existing particles.
 
@@ -459,7 +461,7 @@ QQuickParticleData::QQuickParticleData(QQuickParticleSystem* sys)
     yx = 0;
     yy = 1;
     rotation = 0;
-    rotationSpeed = 0;
+    rotationVelocity = 0;
     autoRotate = 0;
     animIdx = 0;
     frameDuration = 1;
@@ -501,7 +503,7 @@ void QQuickParticleData::clone(const QQuickParticleData& other)
     yx = other.yx;
     yy = other.yy;
     rotation = other.rotation;
-    rotationSpeed = other.rotationSpeed;
+    rotationVelocity = other.rotationVelocity;
     autoRotate = other.autoRotate;
     animIdx = other.animIdx;
     frameDuration = other.frameDuration;
@@ -1092,10 +1094,13 @@ QQuickParticleData* QQuickParticleSystem::newDatum(int groupId, bool respectLimi
 void QQuickParticleSystem::emitParticle(QQuickParticleData* pd)
 {// called from prepareNextFrame()->emitWindow - enforce?
     //Account for relative emitter position
-    QPointF offset = this->mapFromItem(pd->e, QPointF(0, 0));
-    if (!offset.isNull()) {
-        pd->x += offset.x();
-        pd->y += offset.y();
+    bool okay = false;
+    QTransform t = pd->e->itemTransform(this, &okay);
+    if (okay) {
+        qreal tx,ty;
+        t.map(pd->x, pd->y, &tx, &ty);
+        pd->x = tx;
+        pd->y = ty;
     }
 
     finishNewDatum(pd);