@@ -1252,27 +1252,32 @@ sk_sp<sksg::RenderNode> AttachComposition(const skjson::ObjectValue& comp, Attac
1252
1252
} // namespace
1253
1253
1254
1254
sk_sp<Animation> Animation::Make (SkStream* stream, const ResourceProvider* provider, Stats* stats) {
1255
- Stats stats_storage;
1256
- if (!stats)
1257
- stats = &stats_storage;
1258
- memset (stats, 0 , sizeof (struct Stats ));
1259
-
1260
1255
if (!stream->hasLength ()) {
1261
1256
// TODO: handle explicit buffering?
1262
1257
LOG (" !! cannot parse streaming content\n " );
1263
1258
return nullptr ;
1264
1259
}
1265
1260
1266
- stats->fJsonSize = stream->getLength ();
1267
- const auto t0 = SkTime::GetMSecs ();
1268
-
1269
1261
auto data = SkData::MakeFromStream (stream, stream->getLength ());
1270
1262
if (!data) {
1271
1263
SkDebugf (" !! Failed to read the input stream.\n " );
1272
1264
return nullptr ;
1273
1265
}
1274
1266
1275
- const skjson::DOM dom (static_cast <const char *>(data->data ()), data->size ());
1267
+ return Make (static_cast <const char *>(data->data ()), data->size (), provider, stats);
1268
+ }
1269
+
1270
+ sk_sp<Animation> Animation::Make (const char * data, size_t data_len,
1271
+ const ResourceProvider* provider, Stats* stats) {
1272
+ Stats stats_storage;
1273
+ if (!stats)
1274
+ stats = &stats_storage;
1275
+ memset (stats, 0 , sizeof (struct Stats ));
1276
+
1277
+ stats->fJsonSize = data_len;
1278
+ const auto t0 = SkTime::GetMSecs ();
1279
+
1280
+ const skjson::DOM dom (data, data_len);
1276
1281
if (!dom.root ().is <skjson::ObjectValue>()) {
1277
1282
// TODO: more error info.
1278
1283
SkDebugf (" !! Failed to parse JSON input.\n " );
@@ -1323,16 +1328,17 @@ sk_sp<Animation> Animation::MakeFromFile(const char path[], const ResourceProvid
1323
1328
const SkString fDir ;
1324
1329
};
1325
1330
1326
- const auto jsonStream = SkStream::MakeFromFile (path);
1327
- if (!jsonStream )
1331
+ const auto data = SkData::MakeFromFileName (path);
1332
+ if (!data )
1328
1333
return nullptr ;
1329
1334
1330
1335
std::unique_ptr<ResourceProvider> defaultProvider;
1331
1336
if (!res) {
1332
1337
defaultProvider = skstd::make_unique<DirectoryResourceProvider>(SkOSPath::Dirname (path));
1333
1338
}
1334
1339
1335
- return Make (jsonStream.get (), res ? res : defaultProvider.get (), stats);
1340
+ return Make (static_cast <const char *>(data->data ()), data->size (),
1341
+ res ? res : defaultProvider.get (), stats);
1336
1342
}
1337
1343
1338
1344
Animation::Animation (const ResourceProvider& resources,
0 commit comments