| 26 | } |
| 27 | |
| 28 | Valdi::Result<sk_sp<SkSVGDOM>> makeSVGDOM(const Valdi::BytesView& data) { |
| 29 | Image::initializeCodecs(); |
| 30 | SkMemoryStream stream(data.data(), data.size(), false); |
| 31 | |
| 32 | auto fontManager = snap_drawing::getSkFontMgrSingleton(); |
| 33 | auto resourceProvider = skresources::DataURIResourceProviderProxy::Make( |
| 34 | nullptr, skresources::ImageDecodeStrategy::kPreDecode, fontManager); |
| 35 | |
| 36 | auto dom = |
| 37 | SkSVGDOM::Builder().setFontManager(fontManager).setResourceProvider(std::move(resourceProvider)).make(stream); |
| 38 | if (!dom) { |
| 39 | return Valdi::Error("Unable to decode SVG"); |
| 40 | } |
| 41 | |
| 42 | return dom; |
| 43 | } |
| 44 | |
| 45 | Valdi::Result<std::pair<int, int>> getSVGSize(const Valdi::BytesView& data) { |
| 46 | auto dom = makeSVGDOM(data); |