From a73d76af31d8ad04716fb611d7987dfd1762f5e9 Mon Sep 17 00:00:00 2001 From: halcanary Date: Mon, 17 Oct 2016 13:19:02 -0700 Subject: skp_parser compiles with GN. NOTRY=true GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2281733003 Review-Url: https://codereview.chromium.org/2281733003 --- tools/skp_parser.cpp | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 tools/skp_parser.cpp (limited to 'tools/skp_parser.cpp') diff --git a/tools/skp_parser.cpp b/tools/skp_parser.cpp new file mode 100644 index 0000000000..d242524566 --- /dev/null +++ b/tools/skp_parser.cpp @@ -0,0 +1,59 @@ +/* + * Copyright 2016 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include + +#include "SkDebugCanvas.h" +#include "SkNullCanvas.h" +#include "SkStream.h" + +#ifdef SK_BUILD_FOR_WIN +#include +#include +#endif + +int main(int argc, char** argv) { + if (argc < 2) { + SkDebugf("Usage:\n %s SKP_FILE [DATA_URL]\n", argv[0]); + return 1; + } + SkFILEStream input(argv[1]); + if (!input.isValid()) { + SkDebugf("Bad file: '%s'\n", argv[1]); + return 2; + } + sk_sp pic = SkPicture::MakeFromStream(&input); + if (!pic) { + SkDebugf("Bad skp: '%s'\n", argv[1]); + return 3; + } + SkISize size = pic->cullRect().roundOut().size(); + SkDebugCanvas debugCanvas(size.width(), size.height()); + pic->playback(&debugCanvas); + sk_sp nullCanvas(SkCreateNullCanvas()); + UrlDataManager dataManager(SkString("data")); + Json::Value json = debugCanvas.toJSON( + dataManager, debugCanvas.getSize(), nullCanvas.get()); + if (argc > 2) { + if (UrlDataManager::UrlData* data = + dataManager.getDataFromUrl(SkString(argv[2]))) { + SkData* skdata = data->fData.get(); + SkASSERT(skdata); + #ifdef SK_BUILD_FOR_WIN + fflush(stdout); + (void)_setmode(_fileno(stdout), _O_BINARY); + #endif + fwrite(skdata->data(), skdata->size(), 1, stdout); + } else { + SkDebugf("Bad data url.\n"); + return 4; + } + } else { + Json::StyledStreamWriter(" ").write(std::cout, json); + } + return 0; +} -- cgit v1.2.3