From 6abf74530d19ca8b2bec15e1fc30ee50369a1931 Mon Sep 17 00:00:00 2001 From: John Preston Date: Thu, 9 May 2019 13:49:29 +0300 Subject: [PATCH] QtLottie: Check each layer for visibility by frame. --- Telegram/SourceFiles/lottie/lottie_animation.cpp | 2 +- Telegram/ThirdParty/qtlottie | 2 +- .../qtlottie_helper/QtBodymovin/private/bmbase_p.h | 2 +- .../QtBodymovin/private/bmbasictransform_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmellipse_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmfill_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmfilleffect_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmfreeformshape_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmgfill_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmgroup_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmlayer_p.h | 6 +++--- .../qtlottie_helper/QtBodymovin/private/bmnulllayer_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmpathtrimmer_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmprecomplayer_p.h | 3 +-- .../qtlottie_helper/QtBodymovin/private/bmrect_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmrepeater_p.h | 2 +- .../QtBodymovin/private/bmrepeatertransform_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmround_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmshapelayer_p.h | 2 +- .../QtBodymovin/private/bmshapetransform_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmstroke_p.h | 2 +- .../qtlottie_helper/QtBodymovin/private/bmtrimpath_p.h | 2 +- 22 files changed, 24 insertions(+), 25 deletions(-) diff --git a/Telegram/SourceFiles/lottie/lottie_animation.cpp b/Telegram/SourceFiles/lottie/lottie_animation.cpp index 108878298..3e5b26fac 100644 --- a/Telegram/SourceFiles/lottie/lottie_animation.cpp +++ b/Telegram/SourceFiles/lottie/lottie_animation.cpp @@ -96,7 +96,7 @@ QImage Animation::frame(crl::time now) const { LottieRasterRenderer renderer(&p); for (const auto element : tree.children()) { if (element->active(frame)) { - element->render(renderer); + element->render(renderer, frame); } } } diff --git a/Telegram/ThirdParty/qtlottie b/Telegram/ThirdParty/qtlottie index ebd336ec4..9ab16cc8f 160000 --- a/Telegram/ThirdParty/qtlottie +++ b/Telegram/ThirdParty/qtlottie @@ -1 +1 @@ -Subproject commit ebd336ec4022c80274101239f13d1f847c759ce5 +Subproject commit 9ab16cc8fda724421f13656a2f0821abdeac30c7 diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmbase_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmbase_p.h index c7cc354d3..8019dbd0c 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmbase_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmbase_p.h @@ -88,7 +88,7 @@ public: virtual BMBase *findChild(const QString &childName); virtual void updateProperties(int frame); - virtual void render(LottieRenderer &renderer) const; + virtual void render(LottieRenderer &renderer, int frame) const; virtual void resolveAssets(const std::function &resolver); diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmbasictransform_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmbasictransform_p.h index a42e646d7..f8970d178 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmbasictransform_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmbasictransform_p.h @@ -63,7 +63,7 @@ public: void construct(const QJsonObject &definition); void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; QPointF anchorPoint() const; virtual QPointF position() const; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmellipse_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmellipse_p.h index a3d880999..cf49898a5 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmellipse_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmellipse_p.h @@ -69,7 +69,7 @@ public: void construct(const QJsonObject &definition); void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; bool acceptsTrim() const override; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmfill_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmfill_p.h index 060a2f0bb..64e1b8e19 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmfill_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmfill_p.h @@ -60,7 +60,7 @@ public: void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; QColor color() const; qreal opacity() const; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmfilleffect_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmfilleffect_p.h index 43888bb9f..38dee17f1 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmfilleffect_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmfilleffect_p.h @@ -62,7 +62,7 @@ public: void construct(const QJsonObject &definition); void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; QColor color() const; qreal opacity() const; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmfreeformshape_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmfreeformshape_p.h index c27e0c630..b8cba5ca5 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmfreeformshape_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmfreeformshape_p.h @@ -65,7 +65,7 @@ public: void construct(const QJsonObject &definition); void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; bool acceptsTrim() const override; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmgfill_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmgfill_p.h index 87fa0f588..36f539bca 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmgfill_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmgfill_p.h @@ -62,7 +62,7 @@ public: BMBase *clone() const override; void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; QGradient *value() const; QGradient::Type gradientType() const; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmgroup_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmgroup_p.h index 1683a1d40..eb25598fe 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmgroup_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmgroup_p.h @@ -65,7 +65,7 @@ public: void construct(const QJsonObject& definition); void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; bool acceptsTrim() const override; void applyTrim(const BMTrimPath &trimmer) override; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmlayer_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmlayer_p.h index dfe89ef5f..c8121287a 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmlayer_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmlayer_p.h @@ -65,7 +65,7 @@ public: void parse(const QJsonObject &definition) override; void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; BMBase *findChild(const QString &childName) override; @@ -75,10 +75,10 @@ public: int layerId() const; BMBasicTransform *transform() const; - void renderFullTransform(LottieRenderer &renderer) const; + void renderFullTransform(LottieRenderer &renderer, int frame) const; protected: - void renderEffects(LottieRenderer &renderer) const; + void renderEffects(LottieRenderer &renderer, int frame) const; virtual BMLayer *resolveLinkedLayer(); virtual BMLayer *linkedLayer() const; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmnulllayer_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmnulllayer_p.h index 7343ed8f8..932925032 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmnulllayer_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmnulllayer_p.h @@ -63,7 +63,7 @@ public: BMBase *clone() const override; void updateProperties(int frame) override; - void render(LottieRenderer &render) const override; + void render(LottieRenderer &render, int frame) const override; }; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmpathtrimmer_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmpathtrimmer_p.h index c0ab90bf9..e507fb6d0 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmpathtrimmer_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmpathtrimmer_p.h @@ -63,7 +63,7 @@ public: void applyTrim(BMShape *shape); void updateProperties(int frame); - void render(LottieRenderer &renderer) const; + void render(LottieRenderer &renderer, int frame) const; private: BMBase *m_root = nullptr; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmprecomplayer_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmprecomplayer_p.h index 1d6b36836..41d28f45d 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmprecomplayer_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmprecomplayer_p.h @@ -63,7 +63,7 @@ public: BMBase *clone() const override; void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; void resolveAssets(const std::function &resolver) override; QString refId() const; @@ -74,7 +74,6 @@ protected: private: QString m_refId; BMBase *m_layers = nullptr; - int m_layersFrame = 0; bool m_resolving = false; }; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmrect_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmrect_p.h index 924d82ffa..fa75eed3d 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmrect_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmrect_p.h @@ -68,7 +68,7 @@ public: bool setProperty(BMLiteral::PropertyType propertyType, QVariant value) override; void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; bool acceptsTrim() const override; QPointF position() const; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmrepeater_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmrepeater_p.h index de4f9eb26..151bdc609 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmrepeater_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmrepeater_p.h @@ -62,7 +62,7 @@ public: void construct(const QJsonObject& definition); void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; int copies() const; qreal offset() const; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmrepeatertransform_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmrepeatertransform_p.h index 259b05183..86147a21e 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmrepeatertransform_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmrepeatertransform_p.h @@ -59,7 +59,7 @@ public: void construct(const QJsonObject &definition); void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; qreal startOpacity() const; qreal endOpacity() const; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmround_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmround_p.h index 9a66b3506..fc499ef47 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmround_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmround_p.h @@ -68,7 +68,7 @@ public: void construct(const QJsonObject &definition); void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; bool acceptsTrim() const override; QPointF position() const; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmshapelayer_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmshapelayer_p.h index babd782ec..c69cc317a 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmshapelayer_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmshapelayer_p.h @@ -63,7 +63,7 @@ public: BMBase *clone() const override; void updateProperties(int frame) override; - void render(LottieRenderer &render) const override; + void render(LottieRenderer &render, int frame) const override; protected: QList m_maskProperties; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmshapetransform_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmshapetransform_p.h index f73f639d9..ca633323e 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmshapetransform_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmshapetransform_p.h @@ -62,7 +62,7 @@ public: void construct(const QJsonObject &definition); void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; qreal skew() const; qreal skewAxis() const; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmstroke_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmstroke_p.h index 633b68af9..3ebaef9e8 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmstroke_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmstroke_p.h @@ -59,7 +59,7 @@ public: BMBase *clone() const override; void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; QPen pen() const; qreal opacity() const; diff --git a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmtrimpath_p.h b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmtrimpath_p.h index 4f4ff42a4..faaa8dfc0 100644 --- a/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmtrimpath_p.h +++ b/Telegram/ThirdParty/qtlottie_helper/QtBodymovin/private/bmtrimpath_p.h @@ -63,7 +63,7 @@ public: void construct(const QJsonObject &definition); void updateProperties(int frame) override; - void render(LottieRenderer &renderer) const override; + void render(LottieRenderer &renderer, int frame) const override; bool acceptsTrim() const override; void applyTrim(const BMTrimPath &trimmer) override;