1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3#include "qquicklineextruder_p.h"
4#include <QRandomGenerator>
5#include <cmath>
6
7/*!
8 \qmltype LineShape
9 \instantiates QQuickLineExtruder
10 \inqmlmodule QtQuick.Particles
11 \inherits ParticleExtruder
12 \brief Represents a line for affectors and emitters.
13 \ingroup qtquick-particles
14
15*/
16
17/*!
18 \qmlproperty bool QtQuick.Particles::LineShape::mirrored
19
20 By default, the line goes from (0,0) to (width, height) of the item that
21 this shape is being applied to.
22
23 If mirrored is set to true, this will be mirrored along the y axis.
24 The line will then go from (0,height) to (width, 0).
25*/
26
27QQuickLineExtruder::QQuickLineExtruder(QObject *parent) :
28 QQuickParticleExtruder(parent), m_mirrored(false)
29{
30}
31
32QPointF QQuickLineExtruder::extrude(const QRectF &r)
33{
34 qreal x,y;
35 if (!r.height()){
36 x = r.width() * QRandomGenerator::global()->generateDouble();
37 y = 0;
38 }else{
39 y = r.height() * QRandomGenerator::global()->generateDouble();
40 if (!r.width()){
41 x = 0;
42 }else{
43 x = r.width()/r.height() * y;
44 if (m_mirrored)
45 x = r.width() - x;
46 }
47 }
48 return QPointF(x,y);
49}
50
51#include "moc_qquicklineextruder_p.cpp"
52

source code of qtdeclarative/src/particles/qquicklineextruder.cpp