diff --git a/examples/LottieExtension.cpp b/examples/LottieExtension.cpp index 8fa273b9..6a035466 100644 --- a/examples/LottieExtension.cpp +++ b/examples/LottieExtension.cpp @@ -162,7 +162,7 @@ struct UserExample : tvgexam::Example auto picture = slot3->picture(); if (!tvgexam::verify(picture->load(EXAMPLE_DIR"/lottie/extensions/slotsample3.json"))) return false; - const char* slotJson = R"({"path_img":{"id":"image_0","w":200,"h":300,"u":"images/","p":"logo.png","e":0}})"; + const char* slotJson = R"({"path_img":{"p":{"id":"image_0","w":200,"h":300,"u":"images/","p":"logo.png","e":0}}})"; if (!tvgexam::verify(slot3->override(slotJson))) return false; sizing(picture, 3); diff --git a/src/loaders/lottie/tvgLottieParser.cpp b/src/loaders/lottie/tvgLottieParser.cpp index b7880924..d554299a 100644 --- a/src/loaders/lottie/tvgLottieParser.cpp +++ b/src/loaders/lottie/tvgLottieParser.cpp @@ -958,6 +958,8 @@ void LottieParser::parseImage(LottieImage* image, const char* data, const char* LottieObject* LottieParser::parseAsset() { + enterObject(); + LottieObject* obj = nullptr; unsigned long id = 0; @@ -1019,7 +1021,6 @@ void LottieParser::parseAssets() { enterArray(); while (nextArrayValue()) { - enterObject(); auto asset = parseAsset(); if (asset) comp->assets.push(asset); else TVGERR("LOTTIE", "Invalid Asset!"); @@ -1508,7 +1509,10 @@ bool LottieParser::apply(LottieSlot* slot, bool byDefault) break; } case LottieProperty::Type::Image: { - obj = parseAsset(); + while (auto key = nextObjectKey()) { + if (KEY_AS("p")) obj = parseAsset(); + else skip(key); + } context.parent = obj; break; }