aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar jvanverth <jvanverth@google.com>2016-06-16 09:52:35 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-06-16 09:52:35 -0700
commitc7027ab03f2e8bab4c74bc1b047642622d3d682b (patch)
tree72baa4e6345d6e3bbdb2b0165130a637a9778f19 /tools
parentc4ce6b592487305de251bbebaf8eeee38371b877 (diff)
Add samples to Viewer.
This adds support with animation, assuming the sample has implemented onAnimate. Event handling has not been implemented. BUG=skia: GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2056343004 Committed: https://skia.googlesource.com/skia/+/76963e73704a42a18c29d6fbdcccb566e5c67658 Review-Url: https://codereview.chromium.org/2056343004
Diffstat (limited to 'tools')
-rw-r--r--tools/viewer/ImageSlide.cpp2
-rw-r--r--tools/viewer/ImageSlide.h2
-rw-r--r--tools/viewer/SKPSlide.cpp2
-rw-r--r--tools/viewer/SKPSlide.h2
-rwxr-xr-xtools/viewer/SampleSlide.cpp45
-rwxr-xr-xtools/viewer/SampleSlide.h34
-rw-r--r--tools/viewer/Slide.h6
-rw-r--r--tools/viewer/Viewer.cpp11
8 files changed, 97 insertions, 7 deletions
diff --git a/tools/viewer/ImageSlide.cpp b/tools/viewer/ImageSlide.cpp
index 4a03185733..de5ce4ca1e 100644
--- a/tools/viewer/ImageSlide.cpp
+++ b/tools/viewer/ImageSlide.cpp
@@ -35,7 +35,7 @@ void ImageSlide::draw(SkCanvas* canvas) {
}
}
-void ImageSlide::load() {
+void ImageSlide::load(SkScalar, SkScalar) {
sk_sp<SkData> encoded = SkData::MakeFromFileName(fPath.c_str());
fImage = SkImage::MakeFromEncoded(encoded);
fImage->asLegacyBitmap(&fOriginalBitmap, SkImage::kRO_LegacyBitmapMode);
diff --git a/tools/viewer/ImageSlide.h b/tools/viewer/ImageSlide.h
index 88254ddc03..0dd816e878 100644
--- a/tools/viewer/ImageSlide.h
+++ b/tools/viewer/ImageSlide.h
@@ -21,7 +21,7 @@ public:
SkISize getDimensions() const override;
void draw(SkCanvas* canvas) override;
- void load() override;
+ void load(SkScalar winWidth, SkScalar winHeight) override;
void unload() override;
private:
diff --git a/tools/viewer/SKPSlide.cpp b/tools/viewer/SKPSlide.cpp
index 6a9899b92f..9419253f0c 100644
--- a/tools/viewer/SKPSlide.cpp
+++ b/tools/viewer/SKPSlide.cpp
@@ -48,7 +48,7 @@ static sk_sp<SkPicture> read_picture(const char path[]) {
return pic;
}
-void SKPSlide::load() {
+void SKPSlide::load(SkScalar, SkScalar) {
fPic = read_picture(fPath.c_str());
fCullRect = fPic->cullRect().roundOut();
}
diff --git a/tools/viewer/SKPSlide.h b/tools/viewer/SKPSlide.h
index 42845fa30d..ff92ed1a39 100644
--- a/tools/viewer/SKPSlide.h
+++ b/tools/viewer/SKPSlide.h
@@ -19,7 +19,7 @@ public:
SkISize getDimensions() const override { return fCullRect.size(); }
void draw(SkCanvas* canvas) override;
- void load() override;
+ void load(SkScalar winWidth, SkScalar winHeight) override;
void unload() override;
private:
diff --git a/tools/viewer/SampleSlide.cpp b/tools/viewer/SampleSlide.cpp
new file mode 100755
index 0000000000..5e02ff1da7
--- /dev/null
+++ b/tools/viewer/SampleSlide.cpp
@@ -0,0 +1,45 @@
+/*
+* 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 "SampleSlide.h"
+
+#include "SkCanvas.h"
+#include "SkCommonFlags.h"
+#include "SkOSFile.h"
+#include "SkStream.h"
+
+SampleSlide::SampleSlide(const SkViewFactory* factory) : fViewFactory(factory) {
+ SkView* view = (*factory)();
+ SampleCode::RequestTitle(view, &fName);
+ view->unref();
+}
+
+SampleSlide::~SampleSlide() {}
+
+void SampleSlide::draw(SkCanvas* canvas) {
+ fView->draw(canvas);
+}
+
+void SampleSlide::load(SkScalar winWidth, SkScalar winHeight) {
+ fView = (*fViewFactory)();
+ fView->setVisibleP(true);
+ fView->setClipToBounds(false);
+ fView->setSize(winWidth, winHeight);
+}
+
+void SampleSlide::unload() {
+ fView->unref();
+ fView = nullptr;
+}
+
+#if defined(SK_BUILD_FOR_ANDROID)
+// these are normally defined in SkOSWindow_unix, but we don't
+// want to include that
+void SkEvent::SignalNonEmptyQueue() {}
+
+void SkEvent::SignalQueueTimer(SkMSec delay) {}
+#endif
diff --git a/tools/viewer/SampleSlide.h b/tools/viewer/SampleSlide.h
new file mode 100755
index 0000000000..3d772d093d
--- /dev/null
+++ b/tools/viewer/SampleSlide.h
@@ -0,0 +1,34 @@
+/*
+* Copyright 2016 Google Inc.
+*
+* Use of this source code is governed by a BSD-style license that can be
+* found in the LICENSE file.
+*/
+
+#ifndef SampleSlide_DEFINED
+#define SampleSlide_DEFINED
+
+#include "Slide.h"
+#include "SampleCode.h"
+
+class SampleSlide : public Slide {
+public:
+ SampleSlide(const SkViewFactory* factory);
+ ~SampleSlide() override;
+
+ void draw(SkCanvas* canvas) override;
+ void load(SkScalar winWidth, SkScalar winHeight) override;
+ void unload() override;
+ bool animate(const SkAnimTimer& timer) override {
+ if (SampleView::IsSampleView(fView)) {
+ return ((SampleView*)fView)->animate(timer);
+ }
+ return false;
+ }
+
+private:
+ const SkViewFactory* fViewFactory;
+ SkView* fView;
+};
+
+#endif
diff --git a/tools/viewer/Slide.h b/tools/viewer/Slide.h
index cdc225b0a8..bc0ffd4016 100644
--- a/tools/viewer/Slide.h
+++ b/tools/viewer/Slide.h
@@ -19,11 +19,13 @@ class Slide : public SkRefCnt {
public:
virtual ~Slide() {}
- virtual SkISize getDimensions() const = 0;
+ virtual SkISize getDimensions() const {
+ return SkISize::Make(0, 0);
+ }
virtual void draw(SkCanvas* canvas) = 0;
virtual bool animate(const SkAnimTimer&) { return false; }
- virtual void load() {}
+ virtual void load(SkScalar winWidth, SkScalar winHeight) {}
virtual void unload() {}
SkString getName() { return fName; }
diff --git a/tools/viewer/Viewer.cpp b/tools/viewer/Viewer.cpp
index 7052a3ac79..43697f88b8 100644
--- a/tools/viewer/Viewer.cpp
+++ b/tools/viewer/Viewer.cpp
@@ -9,6 +9,7 @@
#include "GMSlide.h"
#include "ImageSlide.h"
+#include "SampleSlide.h"
#include "SKPSlide.h"
#include "SkCanvas.h"
@@ -205,6 +206,14 @@ void Viewer::initSlides() {
fSlides[fSlides.count() - i - 1] = temp;
}
+ // samples
+ const SkViewRegister* reg = SkViewRegister::Head();
+ while (reg) {
+ sk_sp<Slide> slide(new SampleSlide(reg->factory()));
+ fSlides.push_back(slide);
+ reg = reg->next();
+ }
+
// SKPs
for (int i = 0; i < FLAGS_skps.count(); i++) {
if (SkStrEndsWith(FLAGS_skps[i], ".skp")) {
@@ -270,7 +279,7 @@ void Viewer::setupCurrentSlide(int previousSlide) {
}
// prepare dimensions for image slides
- fSlides[fCurrentSlide]->load();
+ fSlides[fCurrentSlide]->load(SkIntToScalar(fWindow->width()), SkIntToScalar(fWindow->height()));
fGesture.reset();
fDefaultMatrix.reset();