// qmorphinganimation.sip generated by MetaSIP
//
// This file is part of the Qt3DAnimation Python extension module.
//
// Copyright (c) 2024 Riverbank Computing Limited <info@riverbankcomputing.com>
// 
// This file is part of PyQt6-3D.
// 
// 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 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.
// 
// If you do not wish to use this file under the terms of the GPL version 3.0
// then you may purchase a commercial license.  For more information contact
// info@riverbankcomputing.com.
// 
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.


namespace Qt3DAnimation
{
%TypeHeaderCode
#include <qmorphinganimation.h>
%End

    class QMorphingAnimation : public Qt3DAnimation::QAbstractAnimation
    {
%TypeHeaderCode
#include <qmorphinganimation.h>
%End

    public:
        enum Method
        {
            Normalized,
            Relative,
        };

        explicit QMorphingAnimation(QObject *parent /TransferThis/ = 0);
        QList<float> targetPositions() const;
        float interpolator() const;
        Qt3DRender::QGeometryRenderer *target() const;
        QString targetName() const;
        Qt3DAnimation::QMorphingAnimation::Method method() const;
        QEasingCurve easing() const;
        void setMorphTargets(const QList<Qt3DAnimation::QMorphTarget *> &targets);
        void addMorphTarget(Qt3DAnimation::QMorphTarget *target);
        void removeMorphTarget(Qt3DAnimation::QMorphTarget *target);
        void setWeights(int positionIndex, const QList<float> &weights);
        QList<float> getWeights(int positionIndex);
        QList<Qt3DAnimation::QMorphTarget *> morphTargetList();

    public slots:
        void setTargetPositions(const QList<float> &targetPositions);
        void setTarget(Qt3DRender::QGeometryRenderer *target);
        void setTargetName(const QString name);
        void setMethod(Qt3DAnimation::QMorphingAnimation::Method method);
        void setEasing(const QEasingCurve &easing);

    signals:
        void targetPositionsChanged(const QList<float> &targetPositions);
        void interpolatorChanged(float interpolator);
        void targetChanged(Qt3DRender::QGeometryRenderer *target);
        void targetNameChanged(const QString &name);
        void methodChanged(Qt3DAnimation::QMorphingAnimation::Method method /ScopesStripped=1/);
        void easingChanged(const QEasingCurve &easing);
    };
};
