QtLottie: Check each layer for visibility by frame.

This commit is contained in:
John Preston 2019-05-09 13:49:29 +03:00
parent 08ad74da8f
commit 6abf74530d
22 changed files with 24 additions and 25 deletions

View File

@ -96,7 +96,7 @@ QImage Animation::frame(crl::time now) const {
LottieRasterRenderer renderer(&p); LottieRasterRenderer renderer(&p);
for (const auto element : tree.children()) { for (const auto element : tree.children()) {
if (element->active(frame)) { if (element->active(frame)) {
element->render(renderer); element->render(renderer, frame);
} }
} }
} }

@ -1 +1 @@
Subproject commit ebd336ec4022c80274101239f13d1f847c759ce5 Subproject commit 9ab16cc8fda724421f13656a2f0821abdeac30c7

View File

@ -88,7 +88,7 @@ public:
virtual BMBase *findChild(const QString &childName); virtual BMBase *findChild(const QString &childName);
virtual void updateProperties(int frame); 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<BMAsset*(QString)> &resolver); virtual void resolveAssets(const std::function<BMAsset*(QString)> &resolver);

View File

@ -63,7 +63,7 @@ public:
void construct(const QJsonObject &definition); void construct(const QJsonObject &definition);
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
QPointF anchorPoint() const; QPointF anchorPoint() const;
virtual QPointF position() const; virtual QPointF position() const;

View File

@ -69,7 +69,7 @@ public:
void construct(const QJsonObject &definition); void construct(const QJsonObject &definition);
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
bool acceptsTrim() const override; bool acceptsTrim() const override;

View File

@ -60,7 +60,7 @@ public:
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
QColor color() const; QColor color() const;
qreal opacity() const; qreal opacity() const;

View File

@ -62,7 +62,7 @@ public:
void construct(const QJsonObject &definition); void construct(const QJsonObject &definition);
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
QColor color() const; QColor color() const;
qreal opacity() const; qreal opacity() const;

View File

@ -65,7 +65,7 @@ public:
void construct(const QJsonObject &definition); void construct(const QJsonObject &definition);
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
bool acceptsTrim() const override; bool acceptsTrim() const override;

View File

@ -62,7 +62,7 @@ public:
BMBase *clone() const override; BMBase *clone() const override;
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
QGradient *value() const; QGradient *value() const;
QGradient::Type gradientType() const; QGradient::Type gradientType() const;

View File

@ -65,7 +65,7 @@ public:
void construct(const QJsonObject& definition); void construct(const QJsonObject& definition);
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
bool acceptsTrim() const override; bool acceptsTrim() const override;
void applyTrim(const BMTrimPath &trimmer) override; void applyTrim(const BMTrimPath &trimmer) override;

View File

@ -65,7 +65,7 @@ public:
void parse(const QJsonObject &definition) override; void parse(const QJsonObject &definition) override;
void updateProperties(int frame) 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; BMBase *findChild(const QString &childName) override;
@ -75,10 +75,10 @@ public:
int layerId() const; int layerId() const;
BMBasicTransform *transform() const; BMBasicTransform *transform() const;
void renderFullTransform(LottieRenderer &renderer) const; void renderFullTransform(LottieRenderer &renderer, int frame) const;
protected: protected:
void renderEffects(LottieRenderer &renderer) const; void renderEffects(LottieRenderer &renderer, int frame) const;
virtual BMLayer *resolveLinkedLayer(); virtual BMLayer *resolveLinkedLayer();
virtual BMLayer *linkedLayer() const; virtual BMLayer *linkedLayer() const;

View File

@ -63,7 +63,7 @@ public:
BMBase *clone() const override; BMBase *clone() const override;
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &render) const override; void render(LottieRenderer &render, int frame) const override;
}; };

View File

@ -63,7 +63,7 @@ public:
void applyTrim(BMShape *shape); void applyTrim(BMShape *shape);
void updateProperties(int frame); void updateProperties(int frame);
void render(LottieRenderer &renderer) const; void render(LottieRenderer &renderer, int frame) const;
private: private:
BMBase *m_root = nullptr; BMBase *m_root = nullptr;

View File

@ -63,7 +63,7 @@ public:
BMBase *clone() const override; BMBase *clone() const override;
void updateProperties(int frame) 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<BMAsset*(QString)> &resolver) override; void resolveAssets(const std::function<BMAsset*(QString)> &resolver) override;
QString refId() const; QString refId() const;
@ -74,7 +74,6 @@ protected:
private: private:
QString m_refId; QString m_refId;
BMBase *m_layers = nullptr; BMBase *m_layers = nullptr;
int m_layersFrame = 0;
bool m_resolving = false; bool m_resolving = false;
}; };

View File

@ -68,7 +68,7 @@ public:
bool setProperty(BMLiteral::PropertyType propertyType, QVariant value) override; bool setProperty(BMLiteral::PropertyType propertyType, QVariant value) override;
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
bool acceptsTrim() const override; bool acceptsTrim() const override;
QPointF position() const; QPointF position() const;

View File

@ -62,7 +62,7 @@ public:
void construct(const QJsonObject& definition); void construct(const QJsonObject& definition);
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
int copies() const; int copies() const;
qreal offset() const; qreal offset() const;

View File

@ -59,7 +59,7 @@ public:
void construct(const QJsonObject &definition); void construct(const QJsonObject &definition);
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
qreal startOpacity() const; qreal startOpacity() const;
qreal endOpacity() const; qreal endOpacity() const;

View File

@ -68,7 +68,7 @@ public:
void construct(const QJsonObject &definition); void construct(const QJsonObject &definition);
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
bool acceptsTrim() const override; bool acceptsTrim() const override;
QPointF position() const; QPointF position() const;

View File

@ -63,7 +63,7 @@ public:
BMBase *clone() const override; BMBase *clone() const override;
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &render) const override; void render(LottieRenderer &render, int frame) const override;
protected: protected:
QList<int> m_maskProperties; QList<int> m_maskProperties;

View File

@ -62,7 +62,7 @@ public:
void construct(const QJsonObject &definition); void construct(const QJsonObject &definition);
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
qreal skew() const; qreal skew() const;
qreal skewAxis() const; qreal skewAxis() const;

View File

@ -59,7 +59,7 @@ public:
BMBase *clone() const override; BMBase *clone() const override;
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
QPen pen() const; QPen pen() const;
qreal opacity() const; qreal opacity() const;

View File

@ -63,7 +63,7 @@ public:
void construct(const QJsonObject &definition); void construct(const QJsonObject &definition);
void updateProperties(int frame) override; void updateProperties(int frame) override;
void render(LottieRenderer &renderer) const override; void render(LottieRenderer &renderer, int frame) const override;
bool acceptsTrim() const override; bool acceptsTrim() const override;
void applyTrim(const BMTrimPath &trimmer) override; void applyTrim(const BMTrimPath &trimmer) override;