add .svg sources to fm
Change-Id: Ic364059cb277773a5d5f8011be2b68b757e889f2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/204280
Commit-Queue: Mike Klein <mtklein@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/tools/fm/fm.cpp b/tools/fm/fm.cpp
index 884f60b..af53936 100644
--- a/tools/fm/fm.cpp
+++ b/tools/fm/fm.cpp
@@ -19,6 +19,7 @@
#include "SkPDFDocument.h"
#include "SkPicture.h"
#include "SkPictureRecorder.h"
+#include "SkSVGDOM.h"
#include "ToolUtils.h"
#include "gm.h"
#include <chrono>
@@ -153,6 +154,17 @@
};
}
+static Source svg_source(SkString name, sk_sp<SkSVGDOM> svg) {
+ return {
+ name,
+ svg->containerSize().isEmpty() ? SkISize{1000,1000}
+ : svg->containerSize().toCeil(),
+ [svg](SkCanvas* canvas) { svg->render(canvas); },
+ [](GrContextOptions*) {},
+ };
+}
+
+
static sk_sp<SkImage> draw_with_cpu(std::function<void(SkCanvas*)> draw,
SkImageInfo info) {
if (sk_sp<SkSurface> surface = SkSurface::MakeRaster(info)) {
@@ -323,6 +335,10 @@
if (std::shared_ptr<SkCodec> codec = SkCodec::MakeFromData(blob)) {
sources.push_back(codec_source(name, codec));
}
+ SkMemoryStream stream{blob};
+ if (sk_sp<SkSVGDOM> svg = SkSVGDOM::MakeFromStream(stream)) {
+ sources.push_back(svg_source(name, svg));
+ }
}
}
if (sources.empty()) {