diff options
author | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> | 2019-01-14 10:20:37 +0100 |
---|---|---|
committer | Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io> | 2019-01-21 14:13:01 +0000 |
commit | 888fb0ca5d5e18fe5d8b88ed721544bf204ac158 (patch) | |
tree | 694ce06751637d2a15dbfe4d3a8260c0e6938769 /src/bodymovin/bmpathtrimmer.cpp | |
parent | 7d089843c32296ba1d48713388c809996149138d (diff) |
Initial commit for Qt Lottie!
This implements a QML API to display graphics and animations
exported by the Bodymovin plugin in AfterEffects.
Done-by: Kari Hautamäki <kari.hautamaki@qt.io>
Change-Id: Idbcfc5c947e97c1a5a70947a262fe1be17de7504
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
Diffstat (limited to 'src/bodymovin/bmpathtrimmer.cpp')
-rw-r--r-- | src/bodymovin/bmpathtrimmer.cpp | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/src/bodymovin/bmpathtrimmer.cpp b/src/bodymovin/bmpathtrimmer.cpp new file mode 100644 index 0000000..c34a67f --- /dev/null +++ b/src/bodymovin/bmpathtrimmer.cpp @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the lottie-qt module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** 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 The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "bmpathtrimmer_p.h" + +#include "bmtrimpath_p.h" +#include "lottierenderer_p.h" + +#include <QPainterPath> + +QT_BEGIN_NAMESPACE + +BMPathTrimmer::BMPathTrimmer(BMBase *root) + : m_root(root) +{ + Q_ASSERT(m_root); +} + +void BMPathTrimmer::addTrim(BMTrimPath* trim) +{ + if (!trim) + return; + + m_trimPaths.append(trim); + + if (!m_appliedTrim) + m_appliedTrim = trim; + else + qCWarning(lcLottieQtBodymovinParser) + << "BM Shape Layer: more than one trim path found on the layer." + << "Only one (the first encountered) is supported"; +} + +bool BMPathTrimmer::inUse() const +{ + return !m_trimPaths.isEmpty(); +} + +void BMPathTrimmer::applyTrim(BMShape *shape) +{ + if (!m_appliedTrim) + return; + shape->applyTrim(*m_appliedTrim); +} + +void BMPathTrimmer::updateProperties(int frame) +{ + QPainterPath unifiedPath; + + if (m_appliedTrim) + m_appliedTrim->updateProperties(frame); + +// for (BMBase *child : m_root->children()) { +// // TODO: Create a better system for recognizing types +// if (child->type() >= 1000) +// continue; + +// BMShape *shape = static_cast<BMShape*>(child); + +// // TODO: Get a better way to inherit trimming +// if (shape->type() == BM_SHAPE_GROUP_IX && m_appliedTrim) +// shape->applyTrim(*m_appliedTrim); + +// shape->updateProperties(frame); + +// if (m_appliedTrim && shape->acceptsTrim()) +// shape->applyTrim(*m_appliedTrim); +// } +} + +void BMPathTrimmer::render(LottieRenderer &renderer) const +{ + Q_UNUSED(renderer); +// if (m_appliedTrim) { +// renderer.render(*m_appliedTrim); +// } +} + +QT_END_NAMESPACE |