aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/ok_dsts.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/ok_dsts.cpp')
-rw-r--r--tools/ok_dsts.cpp20
1 files changed, 11 insertions, 9 deletions
diff --git a/tools/ok_dsts.cpp b/tools/ok_dsts.cpp
index 41dfdcf34a..cc47ac4fbe 100644
--- a/tools/ok_dsts.cpp
+++ b/tools/ok_dsts.cpp
@@ -9,25 +9,27 @@
#include "SkSurface.h"
struct SWDst : Dst {
+ SkImageInfo info;
sk_sp<SkSurface> surface;
- static std::unique_ptr<Dst> Create(Options options, SkISize size) {
- SkImageInfo info = SkImageInfo::MakeN32Premul(size.width(), size.height());
+ static std::unique_ptr<Dst> Create(Options options) {
+ SkImageInfo info = SkImageInfo::MakeN32Premul(0,0);
if (options("ct") == "565") { info = info.makeColorType(kRGB_565_SkColorType); }
if (options("ct") == "f16") { info = info.makeColorType(kRGBA_F16_SkColorType); }
+
SWDst dst;
- dst.surface = SkSurface::MakeRaster(info);
+ dst.info = info;
return move_unique(dst);
}
- SkCanvas* canvas() override {
- return surface->getCanvas();
+ bool draw(Src* src) override {
+ auto size = src->size();
+ surface = SkSurface::MakeRaster(info.makeWH(size.width(), size.height()));
+ return src->draw(surface->getCanvas());
}
- void write(std::string path_prefix) override {
- auto image = surface->makeImageSnapshot();
- sk_sp<SkData> png{image->encode()};
- SkFILEWStream{(path_prefix + ".png").c_str()}.write(png->data(), png->size());
+ sk_sp<SkImage> image() override {
+ return surface->makeImageSnapshot();
}
};
static Register sw{"sw", SWDst::Create};