lottie/parser: update the lottie tree dump method.

Change-Id: Ie126e11a20493517df69fdd2a03a091bc802a733
This commit is contained in:
subhransu mohanty 2018-09-12 15:59:39 +09:00
parent 4dff9ab5a5
commit 3756e7cb93
2 changed files with 63 additions and 53 deletions

View File

@ -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() <<layerType(obj->mLayerType).c_str()
<< " id:" << obj->mId << "\n"; << ", 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;

View File

@ -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;
} }