mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-10 16:29:55 +00:00
lottie/parser: update the lottie tree dump method.
Change-Id: Ie126e11a20493517df69fdd2a03a091bc802a733
This commit is contained in:
parent
4dff9ab5a5
commit
3756e7cb93
@ -1,7 +1,10 @@
|
|||||||
|
|
||||||
#include "lottieparser.h"
|
#include "lottieparser.h"
|
||||||
|
|
||||||
#define DEBUG_PARSER
|
|
||||||
|
//#define DEBUG_PARSER
|
||||||
|
|
||||||
|
#define DEBUG_PRINT_TREE
|
||||||
|
|
||||||
// This parser implements JSON token-by-token parsing with an API that is
|
// This parser implements JSON token-by-token parsing with an API that is
|
||||||
// more direct; we don't have to create handler object and
|
// more direct; we don't have to create handler object and
|
||||||
@ -1856,97 +1859,104 @@ void LottieParserImpl::parseProperty(LOTAnimatable<T> &obj)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG_PARSER
|
#ifdef DEBUG_PRINT_TREE
|
||||||
|
|
||||||
class LOTDataInspector {
|
class LOTDataInspector {
|
||||||
public:
|
public:
|
||||||
void visit(LOTCompositionData *obj)
|
void visit(LOTCompositionData *obj, std::string level)
|
||||||
{
|
{
|
||||||
vDebug << "[COMP_START:: static:" << obj->isStatic()
|
vDebug <<" { "
|
||||||
<< " v:" << obj->mVersion << " [{ stFm endFm fmRate } { "
|
<<level
|
||||||
<< obj->mStartFrame << " " << obj->mEndFrame << " }]\n";
|
<<"Composition:: a: " << !obj->isStatic()
|
||||||
visit(obj->mRootLayer.get());
|
<< ", v: " << obj->mVersion
|
||||||
vDebug << "[COMP End ]\n";
|
<< ", stFm: "<< obj->startFrame()
|
||||||
|
<< ", endFm: "<< obj->endFrame()<<"\n";
|
||||||
|
level.append("\t");
|
||||||
|
visit(obj->mRootLayer.get(), level);
|
||||||
|
level.erase(level.end() -1 , level.end());
|
||||||
|
vDebug << " } " <<level<<"Composition End \n";
|
||||||
}
|
}
|
||||||
void visit(LOTLayerData *obj)
|
void visit(LOTLayerData *obj, std::string level)
|
||||||
{
|
{
|
||||||
vDebug << "[LAYER_START:: type:" << layerType(obj->mLayerType)
|
vDebug << level
|
||||||
<< " id:" << obj->mId << " Pid:" << obj->mParentId
|
<<"{ "
|
||||||
<< " static:" << obj->isStatic()
|
<<layerType(obj->mLayerType)
|
||||||
<< "[{ stFm endFm stTm tmStrch } { " << obj->mInFrame << " "
|
<< ", id:" << obj->mId << " Pid:" << obj->mParentId
|
||||||
<< obj->mOutFrame << " " << obj->mStartFrame << " "
|
<< ", a:" << !obj->isStatic()
|
||||||
<< obj->mTimeStreatch << " }]";
|
<< ", inFm:" << obj->mInFrame
|
||||||
|
<< ", outFm:" << obj->mOutFrame
|
||||||
visitChildren(static_cast<LOTGroupData *>(obj));
|
<<"\n";
|
||||||
|
visitChildren(static_cast<LOTGroupData *>(obj), level);
|
||||||
vDebug << "[LAYER_END:: type:"
|
vDebug << level
|
||||||
<< layerType(obj->mLayerType).c_str()
|
<<"} "
|
||||||
<< " id:" << obj->mId << "\n";
|
<<layerType(obj->mLayerType).c_str()
|
||||||
|
<< ", id: " << obj->mId << "\n";
|
||||||
}
|
}
|
||||||
void visitChildren(LOTGroupData *obj)
|
void visitChildren(LOTGroupData *obj, std::string level)
|
||||||
{
|
{
|
||||||
for (const auto& child : obj->mChildren) visit(child.get());
|
level.append("\t");
|
||||||
|
for (const auto& child : obj->mChildren) visit(child.get(), level);
|
||||||
}
|
}
|
||||||
|
|
||||||
void visit(LOTData *obj) {
|
void visit(LOTData *obj, std::string level) {
|
||||||
switch (obj->mType) {
|
switch (obj->mType) {
|
||||||
case LOTData::Type::Repeater: {
|
case LOTData::Type::Repeater: {
|
||||||
vDebug << "[REPEATER_START]";
|
vDebug << level<<"{ Repeater:";
|
||||||
visitChildren(static_cast<LOTGroupData *>(obj));
|
visitChildren(static_cast<LOTGroupData *>(obj), level);
|
||||||
vDebug << "[REPEATER_END]";
|
vDebug << level<<"} Repeater";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LOTData::Type::ShapeGroup: {
|
case LOTData::Type::ShapeGroup: {
|
||||||
vDebug << "[GROUP_START:: static:" << obj->isStatic() << "]";
|
vDebug << level <<"{ ShapeGroup: a:" << !obj->isStatic();
|
||||||
visitChildren(static_cast<LOTGroupData *>(obj));
|
visitChildren(static_cast<LOTGroupData *>(obj), level);
|
||||||
vDebug << "[GROUP_END]";
|
vDebug << level <<"} ShapeGroup";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LOTData::Type::Layer:{
|
case LOTData::Type::Layer:{
|
||||||
visit(static_cast<LOTLayerData *>(obj));
|
visit(static_cast<LOTLayerData *>(obj), level);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LOTData::Type::Trim:{
|
case LOTData::Type::Trim:{
|
||||||
vDebug << "[TRIM: static: " << obj->isStatic() << " ]";
|
vDebug << level<<"{ Trim: a:" << !obj->isStatic() << " }";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LOTData::Type::Rect:{
|
case LOTData::Type::Rect:{
|
||||||
vDebug << "[RECT: static:" << obj->isStatic() << "]";
|
vDebug <<level<< "{ Rect: a:" << !obj->isStatic() << " }";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LOTData::Type::Ellipse:{
|
case LOTData::Type::Ellipse:{
|
||||||
vDebug << "[RECT: static:" << obj->isStatic() << "]";
|
vDebug << level<<"{ Ellipse: a:" << !obj->isStatic() << " }";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LOTData::Type::Shape:{
|
case LOTData::Type::Shape:{
|
||||||
vDebug << "[SHAPE: static:" << obj->isStatic() << "]";
|
vDebug << level<<"{ Shape: a:" << !obj->isStatic() << " }";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LOTData::Type::Polystar:{
|
case LOTData::Type::Polystar:{
|
||||||
vDebug << "[POLYSTAR: static:" << obj->isStatic() << "]";
|
vDebug << level<<"{ Polystar: a:" << !obj->isStatic() << " }";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LOTData::Type::Transform:{
|
case LOTData::Type::Transform:{
|
||||||
vDebug << "[TRANSFORM: static: " << obj->isStatic() << " ]";
|
vDebug << level<<"{ Transform: a: " << !obj->isStatic() << " }";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LOTData::Type::Stroke:{
|
case LOTData::Type::Stroke:{
|
||||||
vDebug << "[SHAPE: static:" << obj->isStatic() << "]";
|
vDebug << level<<"{ Stroke: a:" << !obj->isStatic() << " }";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LOTData::Type::GStroke:{
|
case LOTData::Type::GStroke:{
|
||||||
vDebug << "[TRANSFORM: static: " << obj->isStatic() << " ]";
|
vDebug << level<<"{ GStroke: a:" << !obj->isStatic() << " }";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LOTData::Type::Fill:{
|
case LOTData::Type::Fill:{
|
||||||
vDebug << "[FILL: static:" << obj->isStatic() << "]";
|
vDebug << level<<"{ Fill: a:" << !obj->isStatic() << " }";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case LOTData::Type::GFill:{
|
case LOTData::Type::GFill:{
|
||||||
auto f = static_cast<LOTGFillData *>(obj);
|
auto f = static_cast<LOTGFillData *>(obj);
|
||||||
vDebug << "[GFILL: static:" << f->isStatic()
|
vDebug << level<<"{ GFill: a:" << !f->isStatic()
|
||||||
<< " ty:" << f->mGradientType << " s:" << f->mStartPoint.value(0)
|
<< ", ty:" << f->mGradientType << ", s:" << f->mStartPoint.value(0)
|
||||||
<< " e:" << f->mEndPoint.value(0) << "]";
|
<< ", e:" << f->mEndPoint.value(0) << " }";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -1958,25 +1968,25 @@ public:
|
|||||||
{
|
{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case LayerType::Precomp:
|
case LayerType::Precomp:
|
||||||
return "Precomp";
|
return "Layer::Precomp";
|
||||||
break;
|
break;
|
||||||
case LayerType::Null:
|
case LayerType::Null:
|
||||||
return "Null";
|
return "Layer::Null";
|
||||||
break;
|
break;
|
||||||
case LayerType::Shape:
|
case LayerType::Shape:
|
||||||
return "Shape";
|
return "Layer::Shape";
|
||||||
break;
|
break;
|
||||||
case LayerType::Solid:
|
case LayerType::Solid:
|
||||||
return "Solid";
|
return "Layer::Solid";
|
||||||
break;
|
break;
|
||||||
case LayerType::Image:
|
case LayerType::Image:
|
||||||
return "Image";
|
return "Layer::Image";
|
||||||
break;
|
break;
|
||||||
case LayerType::Text:
|
case LayerType::Text:
|
||||||
return "Text";
|
return "Layer::Text";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return "Unknow";
|
return "Layer::Unknown";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2000,9 +2010,9 @@ std::shared_ptr<LOTModel> LottieParser::model()
|
|||||||
model->mRoot = d->composition();
|
model->mRoot = d->composition();
|
||||||
model->mRoot->processRepeaterObjects();
|
model->mRoot->processRepeaterObjects();
|
||||||
|
|
||||||
#ifdef DEBUG_PARSER
|
#ifdef DEBUG_PRINT_TREE
|
||||||
LOTDataInspector inspector;
|
LOTDataInspector inspector;
|
||||||
inspector.visit(model->mRoot.get());
|
inspector.visit(model->mRoot.get(),"");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return model;
|
return model;
|
||||||
|
|||||||
@ -104,7 +104,7 @@ VDebug::VDebug(LogLevel level, char const* file, char const* function,
|
|||||||
encode<uint32_t>(line);
|
encode<uint32_t>(line);
|
||||||
encode<LogLevel>(level);
|
encode<LogLevel>(level);
|
||||||
if (level == LogLevel::INFO) {
|
if (level == LogLevel::INFO) {
|
||||||
m_logAll = true;
|
m_logAll = false;
|
||||||
} else {
|
} else {
|
||||||
m_logAll = true;
|
m_logAll = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user