diff options
author | Chris Dalton <csmartdalton@google.com> | 2018-02-20 13:23:32 -0700 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-02-20 20:44:33 +0000 |
commit | 2d18f41858382fff91688a6318bc39cb22233f7e (patch) | |
tree | 25769915a2ca60575f96e9742643bea056cf6110 /tools/viewer/Viewer.cpp | |
parent | 5423f1f0c59b43b09ac216966b6af12f08955be7 (diff) |
Resurrect pathfinder in viewer and rename to "bisect"
Bug: skia:
Change-Id: If8d2f46b8f27fefc3a0f983eb649654e0fb4afcb
Reviewed-on: https://skia-review.googlesource.com/108685
Commit-Queue: Chris Dalton <csmartdalton@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Diffstat (limited to 'tools/viewer/Viewer.cpp')
-rw-r--r-- | tools/viewer/Viewer.cpp | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp index c412218939..6582490d50 100644 --- a/tools/viewer/Viewer.cpp +++ b/tools/viewer/Viewer.cpp @@ -7,6 +7,7 @@ #include "Viewer.h" +#include "BisectSlide.h" #include "GMSlide.h" #include "ImageSlide.h" #include "Resources.h" @@ -82,6 +83,8 @@ static DEFINE_string2(backend, b, "sw", "Backend to use. Allowed values are " BA static DEFINE_int32(msaa, 1, "Number of subpixel samples. 0 for no HW antialiasing."); +DEFINE_string(bisect, "", "Path to a .skp or .svg file to bisect."); + DECLARE_int32(threads) const char* kBackendTypeStrings[sk_app::Window::kBackendTypeCount] = { @@ -478,23 +481,36 @@ Viewer::Viewer(int argc, char** argv, void* platformData) void Viewer::initSlides() { fAllSlideNames = Json::Value(Json::arrayValue); + // Bisect slide. + if (!FLAGS_bisect.isEmpty()) { + sk_sp<BisectSlide> bisect = BisectSlide::Create(FLAGS_bisect[0]); + if (bisect && !SkCommandLineFlags::ShouldSkip(FLAGS_match, bisect->getName().c_str())) { + if (FLAGS_bisect.count() >= 2) { + for (const char* ch = FLAGS_bisect[1]; *ch; ++ch) { + bisect->onChar(*ch); + } + } + fSlides.push_back(std::move(bisect)); + } + } + + // GMs + int firstGM = fSlides.count(); const skiagm::GMRegistry* gms(skiagm::GMRegistry::Head()); while (gms) { std::unique_ptr<skiagm::GM> gm(gms->factory()(nullptr)); if (!SkCommandLineFlags::ShouldSkip(FLAGS_match, gm->getName())) { sk_sp<Slide> slide(new GMSlide(gm.release())); - fSlides.push_back(slide); + fSlides.push_back(std::move(slide)); } gms = gms->next(); } - - // reverse array - for (int i = 0; i < fSlides.count()/2; ++i) { - sk_sp<Slide> temp = fSlides[i]; - fSlides[i] = fSlides[fSlides.count() - i - 1]; - fSlides[fSlides.count() - i - 1] = temp; + // reverse gms + int numGMs = fSlides.count() - firstGM; + for (int i = 0; i < numGMs/2; ++i) { + std::swap(fSlides[firstGM + i], fSlides[fSlides.count() - i - 1]); } // samples |