aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/viewer/Viewer.cpp
diff options
context:
space:
mode:
authorGravatar Chris Dalton <csmartdalton@google.com>2018-02-20 13:23:32 -0700
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-02-20 20:44:33 +0000
commit2d18f41858382fff91688a6318bc39cb22233f7e (patch)
tree25769915a2ca60575f96e9742643bea056cf6110 /tools/viewer/Viewer.cpp
parent5423f1f0c59b43b09ac216966b6af12f08955be7 (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.cpp30
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