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/bmfill.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/bmfill.cpp')
-rw-r--r-- | src/bodymovin/bmfill.cpp | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/src/bodymovin/bmfill.cpp b/src/bodymovin/bmfill.cpp new file mode 100644 index 0000000..76012b3 --- /dev/null +++ b/src/bodymovin/bmfill.cpp @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** 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 "bmfill_p.h" + +QT_BEGIN_NAMESPACE + +BMFill::BMFill(const BMFill &other) + : BMShape(other) +{ + m_color = other.m_color; + m_opacity = other.m_opacity; +} + +BMFill::BMFill(const QJsonObject &definition, BMBase *parent) +{ + setParent(parent); + BMBase::parse(definition); + if (m_hidden) + return; + + qCDebug(lcLottieQtBodymovinParser) << "BMFill::construct():" << m_name; + + QJsonObject color = definition.value(QLatin1String("c")).toObject(); + m_color.construct(color); + + QJsonObject opacity = definition.value(QLatin1String("o")).toObject(); + opacity = resolveExpression(opacity); + m_opacity.construct(opacity); +} + +BMBase *BMFill::clone() const +{ + return new BMFill(*this); +} + +void BMFill::updateProperties(int frame) +{ + m_color.update(frame); + m_opacity.update(frame); +} + +void BMFill::render(LottieRenderer &renderer) const +{ + renderer.render(*this); +} + +QColor BMFill::color() const +{ + QVector4D cVec = m_color.value(); + QColor color; + qreal r = static_cast<qreal>(cVec.x()); + qreal g = static_cast<qreal>(cVec.y()); + qreal b = static_cast<qreal>(cVec.z()); + qreal a = static_cast<qreal>(cVec.w()); + color.setRgbF(r, g, b, a); + return color; +} + +qreal BMFill::opacity() const +{ + return m_opacity.value(); +} + +QT_END_NAMESPACE |