aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Brian Osman <brianosman@google.com>2017-11-22 16:36:07 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-11-29 18:12:35 +0000
commitede860e91c2a0021266907885ea2c9b4be09e121 (patch)
tree65e11fcdab6d13d133fc881f38d3efda85402d92
parent3f67914c01f32fe61fd0af5022ebfd4e19d68f0e (diff)
Delete even more unused views code
Bug: skia: Change-Id: I41480aa89dfcd8cb7e016e477cbabe354f35ce8a Reviewed-on: https://skia-review.googlesource.com/75480 Reviewed-by: Mike Reed <reed@google.com> Commit-Queue: Brian Osman <brianosman@google.com>
-rw-r--r--gn/samples.gni2
-rw-r--r--include/views/SkEvent.h14
-rw-r--r--include/views/SkKey.h40
-rw-r--r--include/views/SkSystemEventTypes.h25
-rw-r--r--include/views/SkView.h205
-rw-r--r--samplecode/ClockFaceView.cpp1
-rw-r--r--samplecode/GMSampleView.cpp95
-rw-r--r--samplecode/GMSampleView.h37
-rw-r--r--samplecode/OverView.cpp174
-rw-r--r--samplecode/OverView.h18
-rw-r--r--samplecode/PerlinPatch.cpp3
-rw-r--r--samplecode/SampleAAGeometry.cpp10
-rw-r--r--samplecode/SampleAll.cpp1
-rw-r--r--samplecode/SampleAndroidShadows.cpp1
-rw-r--r--samplecode/SampleAnimatedText.cpp1
-rw-r--r--samplecode/SampleArc.cpp6
-rw-r--r--samplecode/SampleAtlas.cpp2
-rw-r--r--samplecode/SampleCCPRGeometry.cpp1
-rw-r--r--samplecode/SampleChart.cpp1
-rw-r--r--samplecode/SampleChineseFling.cpp2
-rw-r--r--samplecode/SampleClipDrawMatch.cpp24
-rw-r--r--samplecode/SampleCode.cpp67
-rw-r--r--samplecode/SampleCode.h37
-rw-r--r--samplecode/SampleConcavePaths.cpp6
-rw-r--r--samplecode/SampleDither.cpp1
-rw-r--r--samplecode/SampleFatBits.cpp13
-rw-r--r--samplecode/SampleFilterFuzz.cpp1
-rw-r--r--samplecode/SampleFilterQuality.cpp15
-rw-r--r--samplecode/SampleFuzz.cpp1
-rw-r--r--samplecode/SampleGradients.cpp1
-rw-r--r--samplecode/SampleHT.cpp1
-rw-r--r--samplecode/SampleHairline.cpp1
-rw-r--r--samplecode/SampleIdentityScale.cpp1
-rw-r--r--samplecode/SampleLayers.cpp18
-rw-r--r--samplecode/SampleLines.cpp1
-rw-r--r--samplecode/SampleManyRects.cpp1
-rw-r--r--samplecode/SamplePatch.cpp1
-rw-r--r--samplecode/SamplePath.cpp10
-rw-r--r--samplecode/SamplePathClip.cpp2
-rw-r--r--samplecode/SamplePathFinder.cpp3
-rw-r--r--samplecode/SamplePathFuzz.cpp1
-rw-r--r--samplecode/SamplePathOverstroke.cpp6
-rw-r--r--samplecode/SamplePathText.cpp1
-rw-r--r--samplecode/SampleQuadStroker.cpp3
-rw-r--r--samplecode/SampleRectanizer.cpp2
-rw-r--r--samplecode/SampleRegion.cpp1
-rw-r--r--samplecode/SampleRepeatTile.cpp16
-rw-r--r--samplecode/SampleShaders.cpp9
-rwxr-xr-xsamplecode/SampleShadowColor.cpp1
-rwxr-xr-xsamplecode/SampleShadowReference.cpp1
-rwxr-xr-xsamplecode/SampleShadowUtils.cpp1
-rw-r--r--samplecode/SampleShip.cpp2
-rw-r--r--samplecode/SampleSlides.cpp1
-rw-r--r--samplecode/SampleStringArt.cpp1
-rw-r--r--samplecode/SampleStrokePath.cpp5
-rw-r--r--samplecode/SampleSubpixelTranslate.cpp1
-rw-r--r--samplecode/SampleText.cpp1
-rw-r--r--samplecode/SampleTextAlpha.cpp1
-rw-r--r--samplecode/SampleTextBox.cpp1
-rw-r--r--samplecode/SampleTextOnPath.cpp8
-rw-r--r--samplecode/SampleUnpremul.cpp2
-rw-r--r--samplecode/SampleVertices.cpp1
-rw-r--r--samplecode/SampleXfer.cpp92
-rw-r--r--src/views/SkEvent.cpp135
-rw-r--r--src/views/SkView.cpp623
-rw-r--r--tools/viewer/SampleSlide.cpp1
66 files changed, 63 insertions, 1698 deletions
diff --git a/gn/samples.gni b/gn/samples.gni
index 6e1bcac893..6bef4af8fb 100644
--- a/gn/samples.gni
+++ b/gn/samples.gni
@@ -8,8 +8,6 @@ _samplecode = get_path_info("../samplecode", "abspath")
samples_sources = [
"$_samplecode/ClockFaceView.cpp",
- "$_samplecode/GMSampleView.cpp",
- "$_samplecode/OverView.cpp",
"$_samplecode/PerlinPatch.cpp",
"$_samplecode/Sample2PtRadial.cpp",
"$_samplecode/SampleAAClip.cpp",
diff --git a/include/views/SkEvent.h b/include/views/SkEvent.h
index 0efc19a6ea..aad3f58f3a 100644
--- a/include/views/SkEvent.h
+++ b/include/views/SkEvent.h
@@ -11,11 +11,6 @@
#include "SkMetaData.h"
#include "SkString.h"
-class SkDOM;
-struct SkDOMNode;
-
-#include "../private/SkLeanWindows.h"
-
/** Unique 32bit id used to identify an instance of SkEventSink. When events are
posted, they are posted to a specific sinkID. When it is time to dispatch the
event, the sinkID is used to find the specific SkEventSink object. If it is found,
@@ -143,11 +138,6 @@ public:
/** Return the underlying metadata object */
const SkMetaData& getMetaData() const { return fMeta; }
- /** Call this to initialize the event from the specified XML node */
- void inflate(const SkDOM&, const SkDOMNode*);
-
- SkDEBUGCODE(void dump(const char title[] = nullptr);)
-
///////////////////////////////////////////////////////////////////////////
private:
@@ -155,10 +145,6 @@ private:
mutable char* fType; // may be characters with low bit set to know that it is not a pointer
uint32_t f32;
- // these are for our implementation of the event queue
- SkMSec fTime;
- SkEvent* fNextEvent; // either in the delay or normal event queue
-
void initialize(const char* type, size_t typeLen);
};
diff --git a/include/views/SkKey.h b/include/views/SkKey.h
index 036e2c3176..d4575a56ca 100644
--- a/include/views/SkKey.h
+++ b/include/views/SkKey.h
@@ -12,46 +12,6 @@
#include "SkTypes.h"
-enum SkKey {
- //reordering these to match android.app.KeyEvent
- kNONE_SkKey, //corresponds to android's UNKNOWN
-
- kLeftSoftKey_SkKey,
- kRightSoftKey_SkKey,
-
- kHome_SkKey, //!< the home key - added to match android
- kBack_SkKey, //!< (CLR)
- kSend_SkKey, //!< the green (talk) key
- kEnd_SkKey, //!< the red key
-
- k0_SkKey,
- k1_SkKey,
- k2_SkKey,
- k3_SkKey,
- k4_SkKey,
- k5_SkKey,
- k6_SkKey,
- k7_SkKey,
- k8_SkKey,
- k9_SkKey,
- kStar_SkKey, //!< the * key
- kHash_SkKey, //!< the # key
-
- kUp_SkKey,
- kDown_SkKey,
- kLeft_SkKey,
- kRight_SkKey,
-
- kOK_SkKey, //!< the center key
-
- kVolUp_SkKey, //!< volume up - match android
- kVolDown_SkKey, //!< volume down - same
- kPower_SkKey, //!< power button - same
- kCamera_SkKey, //!< camera - same
-
- kSkKeyCount
-};
-
enum SkModifierKeys {
kShift_SkModifierKey = 1 << 0,
kControl_SkModifierKey = 1 << 1,
diff --git a/include/views/SkSystemEventTypes.h b/include/views/SkSystemEventTypes.h
deleted file mode 100644
index bb2b5d5279..0000000000
--- a/include/views/SkSystemEventTypes.h
+++ /dev/null
@@ -1,25 +0,0 @@
-
-/*
- * Copyright 2006 The Android Open Source Project
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-
-#ifndef SkSystemEventTypes_DEFINED
-#define SkSystemEventTypes_DEFINED
-
-/*
- The goal of these strings is two-fold:
- 1) make funny strings (containing at least one char < 32) to avoid colliding with "user" strings
- 2) keep them <= 4 bytes, so we can avoid an allocation in SkEvent::setType()
-*/
-#define SK_EventType_Delay "\xd" "lay"
-#define SK_EventType_Inval "nv" "\xa" "l"
-#define SK_EventType_Key "key" "\x1"
-#define SK_EventType_OnEnd "on" "\xe" "n"
-#define SK_EventType_Unichar "\xc" "har"
-#define SK_EventType_KeyUp "key" "\xf"
-
-#endif
diff --git a/include/views/SkView.h b/include/views/SkView.h
index 5a61d9e521..9a84af832d 100644
--- a/include/views/SkView.h
+++ b/include/views/SkView.h
@@ -16,9 +16,6 @@
#include "SkMetaData.h"
class SkCanvas;
-class SkLayerView;
-class SkDOM;
-struct SkDOMNode;
/** \class SkView
@@ -79,62 +76,10 @@ public:
void setSize(const SkPoint& size) { this->setSize(size.fX, size.fY); }
void setWidth(SkScalar width) { this->setSize(width, fHeight); }
void setHeight(SkScalar height) { this->setSize(fWidth, height); }
- /** Return a rectangle set to [0, 0, width, height] */
- void getLocalBounds(SkRect* bounds) const;
-
- /** Loc - the view's offset with respect to its parent in its view hiearchy.
- NOTE: For more complex transforms, use Local Matrix. The tranformations
- are applied in the following order:
- canvas->translate(fLoc.fX, fLoc.fY);
- canvas->concat(fMatrix);
- */
- /** Return the view's left edge */
- SkScalar locX() const { return fLoc.fX; }
- /** Return the view's top edge */
- SkScalar locY() const { return fLoc.fY; }
- /** Set the view's left and top edge. This does not affect the view's size */
- void setLoc(SkScalar x, SkScalar y);
- void setLoc(const SkPoint& loc) { this->setLoc(loc.fX, loc.fY); }
- void setLocX(SkScalar x) { this->setLoc(x, fLoc.fY); }
- void setLocY(SkScalar y) { this->setLoc(fLoc.fX, y); }
-
- /** Local Matrix - matrix used to tranform the view with respect to its
- parent in its view hiearchy. Use setLocalMatrix to apply matrix
- transformations to the current view and in turn affect its children.
- NOTE: For simple offsets, use Loc. The transformations are applied in
- the following order:
- canvas->translate(fLoc.fX, fLoc.fY);
- canvas->concat(fMatrix);
- */
- const SkMatrix& getLocalMatrix() const { return fMatrix; }
- void setLocalMatrix(const SkMatrix& matrix);
-
- /** Offset (move) the view by the specified dx and dy. This does not affect the view's size */
- void offset(SkScalar dx, SkScalar dy);
/** Call this to have the view draw into the specified canvas. */
virtual void draw(SkCanvas* canvas);
- /** Call this to invalidate part of all of a view, requesting that the view's
- draw method be called. The rectangle parameter specifies the part of the view
- that should be redrawn. If it is null, it specifies the entire view bounds.
- */
- void inval(SkRect* rectOrNull);
-
- // Focus management
-
- SkView* getFocusView() const;
- bool hasFocus() const;
-
- enum FocusDirection {
- kNext_FocusDirection,
- kPrev_FocusDirection,
-
- kFocusDirectionCount
- };
- bool acceptFocus();
- SkView* moveFocus(FocusDirection);
-
// Click handling
class Click {
@@ -142,11 +87,6 @@ public:
Click(SkView* target);
virtual ~Click();
- const char* getType() const { return fType; }
- bool isType(const char type[]) const;
- void setType(const char type[]); // does NOT make a copy of the string
- void copyType(const char type[]); // makes a copy of the string
-
enum State {
kDown_State,
kMoved_State,
@@ -155,16 +95,11 @@ public:
SkPoint fOrig, fPrev, fCurr;
SkIPoint fIOrig, fIPrev, fICurr;
State fState;
- void* fOwner;
unsigned fModifierKeys;
SkMetaData fMeta;
private:
SkEventSinkID fTargetID;
- char* fType;
- bool fWeOwnTheType;
-
- void resetType();
friend class SkView;
};
@@ -174,163 +109,23 @@ public:
static void DoClickMoved(Click*, int x, int y, unsigned modi);
static void DoClickUp(Click*, int x, int y, unsigned modi);
- /** Send the event to the view's parent, and its parent etc. until one of them
- returns true from its onEvent call. This view is returned. If no parent handles
- the event, null is returned.
- */
- SkView* sendEventToParents(const SkEvent&);
- /** Send the query to the view's parent, and its parent etc. until one of them
- returns true from its onQuery call. This view is returned. If no parent handles
- the query, null is returned.
- */
- SkView* sendQueryToParents(SkEvent*);
-
- // View hierarchy management
-
- /** Return the view's parent, or null if it has none. This does not affect the parent's reference count. */
- SkView* getParent() const { return fParent; }
- SkView* attachChildToFront(SkView* child);
- /** Attach the child view to this view, and increment the child's reference count. The child view is added
- such that it will be drawn before all other child views.
- The child view parameter is returned.
- */
- SkView* attachChildToBack(SkView* child);
- /** If the view has a parent, detach the view from its parent and decrement the view's reference count.
- If the parent was the only owner of the view, this will cause the view to be deleted.
- */
- void detachFromParent();
- /** Attach the child view to this view, and increment the child's reference count. The child view is added
- such that it will be drawn after all other child views.
- The child view parameter is returned.
- */
- /** Detach all child views from this view. */
- void detachAllChildren();
-
- /** Convert the specified point from global coordinates into view-local coordinates
- * Return true on success; false on failure
- */
- bool globalToLocal(SkPoint* pt) const {
- if (pt) {
- return this->globalToLocal(pt->fX, pt->fY, pt);
- }
- return true; // nothing to do so return true
- }
- /** Convert the specified x,y from global coordinates into view-local coordinates, returning
- the answer in the local parameter.
- */
- bool globalToLocal(SkScalar globalX, SkScalar globalY, SkPoint* local) const;
-
- /** \class F2BIter
-
- Iterator that will return each of this view's children, in
- front-to-back order (the order used for clicking). The first
- call to next() returns the front-most child view. When
- next() returns null, there are no more child views.
- */
- class F2BIter {
- public:
- F2BIter(const SkView* parent);
- SkView* next();
- private:
- SkView* fFirstChild, *fChild;
- };
-
- /** \class B2FIter
-
- Iterator that will return each of this view's children, in
- back-to-front order (the order they are drawn). The first
- call to next() returns the back-most child view. When
- next() returns null, there are no more child views.
- */
- class B2FIter {
- public:
- B2FIter(const SkView* parent);
- SkView* next();
- private:
- SkView* fFirstChild, *fChild;
- };
-
- /** Call this to initialize this view based on the specified XML node
- */
- void inflate(const SkDOM& dom, const SkDOMNode* node);
-
- SkDEBUGCODE(void dump(bool recurse) const;)
-
protected:
/** Override this to draw inside the view. Be sure to call the inherited version too */
virtual void onDraw(SkCanvas*);
/** Override this to be notified when the view's size changes. Be sure to call the inherited version too */
virtual void onSizeChange();
- /** Override this if you want to handle an inval request from this view or one of its children.
- Tyically this is only overridden by the by the "window". If your subclass does handle the
- request, return true so the request will not continue to propogate to the parent.
- */
- virtual bool handleInval(const SkRect*);
- //! called once before all of the children are drawn (or clipped/translated)
- virtual SkCanvas* beforeChildren(SkCanvas* c) { return c; }
- //! called once after all of the children are drawn (or clipped/translated)
- virtual void afterChildren(SkCanvas*) {}
-
- //! called right before this child's onDraw is called
- virtual void beforeChild(SkView* /*child*/, SkCanvas*) {}
- //! called right after this child's onDraw is called
- virtual void afterChild(SkView* /*child*/, SkCanvas*) {}
/** Override this if you might handle the click
*/
virtual Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi);
- /** Override this to decide if your children are targets for a click.
- The default returns true, in which case your children views will be
- candidates for onFindClickHandler. Returning false wil skip the children
- and just call your onFindClickHandler.
- */
- virtual bool onSendClickToChildren(SkScalar x, SkScalar y, unsigned modi);
/** Override this to track clicks, returning true as long as you want to track
the pen/mouse.
*/
virtual bool onClick(Click*);
- /** Override this to initialize your subclass from the XML node. Be sure to call the inherited version too */
- virtual void onInflate(const SkDOM& dom, const SkDOMNode* node);
- /** Override this if you want to perform post initialization work based on the ID dictionary built
- during XML parsing. Be sure to call the inherited version too.
- */
-
-public:
-#ifdef SK_DEBUG
- void validate() const;
-#else
- void validate() const {}
-#endif
- // default action is to inval the view
- virtual void onFocusChange(bool gainFocusP);
-
-protected:
-
- // override these if you're acting as a layer/host
- virtual bool onGetFocusView(SkView**) const { return false; }
- virtual bool onSetFocusView(SkView*) { return false; }
private:
SkScalar fWidth, fHeight;
- SkMatrix fMatrix;
- SkPoint fLoc;
- SkView* fParent;
- SkView* fFirstChild;
- SkView* fNextSibling;
- SkView* fPrevSibling;
uint8_t fFlags;
- uint8_t fContainsFocus;
-
- friend class B2FIter;
- friend class F2BIter;
-
- friend class SkLayerView;
-
- bool setFocusView(SkView* fvOrNull);
- SkView* acceptFocus(FocusDirection);
- void detachFromParent_NoLayout();
- /** Compute the matrix to transform view-local coordinates into global ones */
- void localToGlobal(SkMatrix* matrix) const;
};
#endif
diff --git a/samplecode/ClockFaceView.cpp b/samplecode/ClockFaceView.cpp
index 8de2f9339d..841df26e7b 100644
--- a/samplecode/ClockFaceView.cpp
+++ b/samplecode/ClockFaceView.cpp
@@ -207,7 +207,6 @@ protected:
fInterp = 0;
fDx = -fDx;
}
- this->inval(nullptr);
}
}
diff --git a/samplecode/GMSampleView.cpp b/samplecode/GMSampleView.cpp
deleted file mode 100644
index ffa33cedfc..0000000000
--- a/samplecode/GMSampleView.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright 2015 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "GMSampleView.h"
-#include "SkData.h"
-
-GMSampleView::GMSampleView(GM* gm) : fShowSize(false), fGM(gm) {}
-
-GMSampleView::~GMSampleView() {
- delete fGM;
-}
-
-SkEvent* GMSampleView::NewShowSizeEvt(bool doShowSize) {
- SkEvent* evt = new SkEvent("GMSampleView::showSize");
- evt->setFast32(doShowSize);
- return evt;
-}
-
-bool GMSampleView::onQuery(SkEvent* evt) {
- if (SampleCode::TitleQ(*evt)) {
- SkString name("GM:");
- name.append(fGM->getName());
- SampleCode::TitleR(evt, name.c_str());
- return true;
- }
-
- SkUnichar uni;
- if (SampleCode::CharQ(*evt, &uni)) {
- if (fGM->handleKey(uni)) {
- this->inval(nullptr);
- return true;
- }
- }
-
- return this->INHERITED::onQuery(evt);
-}
-
-bool GMSampleView::onEvent(const SkEvent& evt) {
- if (evt.isType("GMSampleView::showSize")) {
- fShowSize = SkToBool(evt.getFast32());
- return true;
- }
- return this->INHERITED::onEvent(evt);
-}
-
-#include "SkPicture.h"
-static sk_sp<SkPicture> round_trip_serialize(SkPicture* src) {
- return SkPicture::MakeFromData(src->serialize().get());
-}
-
-#include "SkPictureRecorder.h"
-void GMSampleView::onDrawContent(SkCanvas* canvas) {
- SkPictureRecorder recorder;
- SkCanvas* origCanvas = canvas;
-
- if (false) {
- SkISize size = fGM->getISize();
- canvas = recorder.beginRecording(SkRect::MakeIWH(size.width(), size.height()));
- }
-
- {
- SkAutoCanvasRestore acr(canvas, fShowSize);
- fGM->drawContent(canvas);
- }
-
- if (origCanvas != canvas) {
- sk_sp<SkPicture> pic = recorder.finishRecordingAsPicture();
- if (false) {
- pic = round_trip_serialize(pic.get());
- }
- origCanvas->drawPicture(pic);
- canvas = origCanvas;
- }
-
- if (fShowSize) {
- SkISize size = fGM->getISize();
- SkRect r = SkRect::MakeWH(SkIntToScalar(size.width()),
- SkIntToScalar(size.height()));
- SkPaint paint;
- paint.setColor(0x40FF8833);
- canvas->drawRect(r, paint);
- }
-}
-
-void GMSampleView::onDrawBackground(SkCanvas* canvas) {
- fGM->drawBackground(canvas);
-}
-
-bool GMSampleView::onAnimate(const SkAnimTimer& timer) {
- return fGM->animate(timer);
-}
diff --git a/samplecode/GMSampleView.h b/samplecode/GMSampleView.h
deleted file mode 100644
index 6424b43d25..0000000000
--- a/samplecode/GMSampleView.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2011 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef GMSampleView_DEFINED
-#define GMSampleView_DEFINED
-
-#include "SampleCode.h"
-#include "gm.h"
-
-class GMSampleView : public SampleView {
-private:
- bool fShowSize;
- typedef skiagm::GM GM;
-
-public:
- GMSampleView(GM*);
- ~GMSampleView() override;
-
- static SkEvent* NewShowSizeEvt(bool doShowSize);
-
-protected:
- bool onQuery(SkEvent*) override;
- bool onEvent(const SkEvent&) override;
- void onDrawContent(SkCanvas*) override;
- void onDrawBackground(SkCanvas*) override;
- bool onAnimate(const SkAnimTimer&) override;
-
-private:
- GM* fGM;
- typedef SampleView INHERITED;
-};
-
-#endif
diff --git a/samplecode/OverView.cpp b/samplecode/OverView.cpp
deleted file mode 100644
index cb56783a8b..0000000000
--- a/samplecode/OverView.cpp
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright 2011 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#include "OverView.h"
-#include "SampleCode.h"
-#include "SkCanvas.h"
-#include "SkView.h"
-
-static const char gIsOverview[] = "is-overview";
-
-static int to_lower(int c) {
- if ('A' <= c && c <= 'Z') {
- c = c - 'A' + 'a';
- }
- return c;
-}
-
-static void make_lc(SkString* str) {
- char* ptr = str->writable_str();
- while (*ptr) {
- *ptr = to_lower(*ptr);
- ptr += 1;
- }
-}
-
-static bool case_insensitive_find(const SkString& base, const SkString& sub) {
- SkString lcBase(base);
- SkString lcSub(sub);
- make_lc(&lcBase);
- make_lc(&lcSub);
- return lcBase.find(lcSub.c_str()) >= 0;
-}
-
-static bool draw_this_name(const SkString& name, const SkString& filter) {
- if (filter.isEmpty()) {
- return true;
- }
- return case_insensitive_find(name, filter);
-}
-
-class OverView : public SkView {
-public:
- OverView(int count, const SkViewFactory* factories[]);
- ~OverView() override;
-
-protected:
- bool onEvent(const SkEvent&) override;
- bool onQuery(SkEvent* evt) override {
- if (SampleCode::TitleQ(*evt)) {
- SampleCode::TitleR(evt, "Overview");
- return true;
- }
- if (evt->isType(gIsOverview)) {
- return true;
- }
- SkUnichar uni;
- if (SampleCode::CharQ(*evt, &uni)) {
- if (uni >= ' ') {
- fMatchStr.appendUnichar(uni);
- }
- this->inval(nullptr);
- return true;
- }
- return this->INHERITED::onQuery(evt);
- }
-
- void onDraw(SkCanvas* canvas) override;
-
- bool onSendClickToChildren(SkScalar x, SkScalar y, unsigned modi) override {
- return false;
- }
-
- Click* onFindClickHandler(SkScalar cx, SkScalar cy, unsigned modi) override {
- const SkRect crect = SkRect::MakeXYWH(cx - 0.5f, cy - 0.5f, 1, 1);
- SkPoint loc = this->start();
- for (int i = 0; i < fCount; ++i) {
- if (draw_this_name(fNames[i], fMatchStr)) {
- if (this->bounds(loc).intersects(crect)) {
- SkEvent evt("set-curr-index");
- evt.setFast32(i);
- this->sendEventToParents(evt);
- break;
- }
- this->next(&loc);
- }
- }
- return nullptr;
- }
-
-private:
- int fCount;
- const SkViewFactory** fFactories;
- SkString* fNames;
- SkString fMatchStr;
- SkPaint fNamePaint;
- SkPaint::FontMetrics fNameMetrics;
- SkScalar fNameW;
- SkScalar fNameH;
-
- SkRect bounds(const SkPoint& loc) const {
- return SkRect::MakeXYWH(loc.x(), loc.y() + fNameMetrics.fAscent, fNameW, fNameH);
- }
-
- SkPoint start() const {
- return SkPoint::Make(10, -fNameMetrics.fTop);
- }
-
- void next(SkPoint* loc) const {
- loc->fY += fNameH;
- if (loc->fY > this->height() - fNameMetrics.fBottom) {
- loc->fY = -fNameMetrics.fTop;
- loc->fX += fNameW;
- }
- }
-
- typedef SkView INHERITED;
-};
-
-SkView* create_overview(int count, const SkViewFactory* factories[]) {
- return new OverView(count, factories);
-}
-
-bool is_overview(SkView* view) {
- SkEvent isOverview(gIsOverview);
- return view->doQuery(&isOverview);
-}
-
-OverView::OverView(int count, const SkViewFactory* factories[]) {
- fCount = count;
- fFactories = factories;
-
- fNames = new SkString[count];
- for (int i = 0; i < count; ++i) {
- SkView* view = (*fFactories[i])();
- if (view) {
- (void)SampleCode::RequestTitle(view, &fNames[i]);
- if (0 == fNames[i].find("GM:")) {
- fNames[i].remove(0, 3);
- }
- }
- }
-
- fNamePaint.setAntiAlias(true);
- fNamePaint.setTextSize(12);
- fNameW = 160;
- fNameH = fNamePaint.getFontMetrics(&fNameMetrics);
-}
-
-OverView::~OverView() {
- delete[] fNames;
-}
-
-bool OverView::onEvent(const SkEvent& evt) {
- return this->INHERITED::onEvent(evt);
-}
-
-void OverView::onDraw(SkCanvas* canvas) {
- SkPaint paint;
- paint.setColor(0xFFF8F8F8);
- canvas->drawPaint(paint);
-
- SkPoint loc = this->start();
- for (int i = 0; i < fCount; ++i) {
- if (draw_this_name(fNames[i], fMatchStr)) {
- canvas->drawRect(this->bounds(loc), paint);
- canvas->drawString(fNames[i], loc.x(), loc.y(), fNamePaint);
- this->next(&loc);
- }
- }
-}
diff --git a/samplecode/OverView.h b/samplecode/OverView.h
deleted file mode 100644
index 3412b19b0f..0000000000
--- a/samplecode/OverView.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef SAMPLECODE_OVERVIEW_H_
-#define SAMPLECODE_OVERVIEW_H_
-
-class SkView;
-class SkViewFactory;
-
-SkView* create_overview(int, const SkViewFactory*[]);
-
-bool is_overview(SkView* view);
-
-#endif // SAMPLECODE_OVERVIEW_H_
diff --git a/samplecode/PerlinPatch.cpp b/samplecode/PerlinPatch.cpp
index d20a0fb838..9faf5ca60e 100644
--- a/samplecode/PerlinPatch.cpp
+++ b/samplecode/PerlinPatch.cpp
@@ -119,7 +119,7 @@ protected:
SkUnichar uni;
if (SampleCode::CharQ(*evt, &uni)) {
switch (uni) {
- case 'g': fShowGrid = !fShowGrid; this->inval(nullptr); return true;
+ case 'g': fShowGrid = !fShowGrid; return true;
default: break;
}
}
@@ -207,7 +207,6 @@ protected:
fTexScale += yDiff / 10.0f;
fTexScale = SkTMax(0.1f, SkTMin(20.f, fTexScale));
}
- this->inval(nullptr);
return true;
}
diff --git a/samplecode/SampleAAGeometry.cpp b/samplecode/SampleAAGeometry.cpp
index 55aebda621..3d5426e637 100644
--- a/samplecode/SampleAAGeometry.cpp
+++ b/samplecode/SampleAAGeometry.cpp
@@ -883,7 +883,6 @@ public:
bool constructPath() {
construct_path(fPath);
- this->inval(nullptr);
return true;
}
@@ -909,7 +908,6 @@ public:
PathUndo* next = fUndo->fNext;
delete fUndo;
fUndo = next;
- this->inval(nullptr);
return true;
}
@@ -932,7 +930,6 @@ public:
bool hideAll() {
fHideAll ^= true;
- this->inval(nullptr);
return true;
}
@@ -991,7 +988,6 @@ public:
matrix.setScale(1.f / 1.5f, 1.f / 1.5f, bounds.centerX(), bounds.centerY());
fPath.transform(matrix);
validatePath();
- this->inval(nullptr);
return true;
}
@@ -1007,7 +1003,6 @@ public:
SkScalar offsetY = (this->height() - bounds.height()) / 2 - bounds.fTop;
fPath.offset(offsetX, offsetY);
validatePath();
- this->inval(nullptr);
return true;
}
@@ -1017,7 +1012,6 @@ public:
matrix.setScale(1.5f, 1.5f, bounds.centerX(), bounds.centerY());
fPath.transform(matrix);
validatePath();
- this->inval(nullptr);
return true;
}
@@ -1038,7 +1032,6 @@ public:
bool showLegend() {
fShowLegend ^= true;
- this->inval(nullptr);
return true;
}
@@ -1670,7 +1663,6 @@ public:
SkIntToScalar(click->fICurr.fY - click->fIPrev.fY));
set_path_pt(fActivePt, pt, &fPath);
validatePath();
- this->inval(nullptr);
return true;
}
case MyClick::kPathType:
@@ -1678,7 +1670,6 @@ public:
fPath.offset(SkIntToScalar(click->fICurr.fX - click->fIPrev.fX),
SkIntToScalar(click->fICurr.fY - click->fIPrev.fY));
validatePath();
- this->inval(nullptr);
return true;
case MyClick::kVerbType: {
fActiveVerb = myClick->verbHit();
@@ -1790,7 +1781,6 @@ public:
break;
}
setControlButtonsPos();
- this->inval(nullptr);
return true;
}
diff --git a/samplecode/SampleAll.cpp b/samplecode/SampleAll.cpp
index ea7d508979..5e4700a5db 100644
--- a/samplecode/SampleAll.cpp
+++ b/samplecode/SampleAll.cpp
@@ -431,7 +431,6 @@ protected:
virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) {
fClickPt.set(x, y);
- this->inval(nullptr);
return this->INHERITED::onFindClickHandler(x, y, modi);
}
diff --git a/samplecode/SampleAndroidShadows.cpp b/samplecode/SampleAndroidShadows.cpp
index f15df9fe37..3db994adda 100644
--- a/samplecode/SampleAndroidShadows.cpp
+++ b/samplecode/SampleAndroidShadows.cpp
@@ -115,7 +115,6 @@ protected:
break;
}
if (handled) {
- this->inval(nullptr);
return true;
}
}
diff --git a/samplecode/SampleAnimatedText.cpp b/samplecode/SampleAnimatedText.cpp
index 29bd192130..f93cecaf8f 100644
--- a/samplecode/SampleAnimatedText.cpp
+++ b/samplecode/SampleAnimatedText.cpp
@@ -13,7 +13,6 @@
#include "SkColorFilter.h"
#include "SkImage.h"
#include "SkRandom.h"
-#include "SkSystemEventTypes.h"
#include "SkTime.h"
#include "SkTypeface.h"
#include "Timer.h"
diff --git a/samplecode/SampleArc.cpp b/samplecode/SampleArc.cpp
index abdcdec2fd..2073060645 100644
--- a/samplecode/SampleArc.cpp
+++ b/samplecode/SampleArc.cpp
@@ -196,12 +196,6 @@ protected:
return true;
}
- SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
- // fSweep += SK_Scalar1;
- this->inval(nullptr);
- return this->INHERITED::onFindClickHandler(x, y, modi);
- }
-
private:
SkScalar fSweep;
diff --git a/samplecode/SampleAtlas.cpp b/samplecode/SampleAtlas.cpp
index f89b37da75..bb42fc182b 100644
--- a/samplecode/SampleAtlas.cpp
+++ b/samplecode/SampleAtlas.cpp
@@ -223,7 +223,7 @@ protected:
SkUnichar uni;
if (SampleCode::CharQ(*evt, &uni)) {
switch (uni) {
- case 'C': fDrawable->toggleUseColors(); this->inval(nullptr); return true;
+ case 'C': fDrawable->toggleUseColors(); return true;
default: break;
}
}
diff --git a/samplecode/SampleCCPRGeometry.cpp b/samplecode/SampleCCPRGeometry.cpp
index 8633398337..16041f5be7 100644
--- a/samplecode/SampleCCPRGeometry.cpp
+++ b/samplecode/SampleCCPRGeometry.cpp
@@ -60,7 +60,6 @@ private:
void updateAndInval() {
this->updateGpuData();
- this->inval(nullptr);
}
void updateGpuData();
diff --git a/samplecode/SampleChart.cpp b/samplecode/SampleChart.cpp
index 46ce7d3904..3e663ec4e2 100644
--- a/samplecode/SampleChart.cpp
+++ b/samplecode/SampleChart.cpp
@@ -164,7 +164,6 @@ protected:
}
fShift += kShiftPerFrame;
- this->inval(nullptr);
}
private:
diff --git a/samplecode/SampleChineseFling.cpp b/samplecode/SampleChineseFling.cpp
index 536f2c2abd..fb9ba29885 100644
--- a/samplecode/SampleChineseFling.cpp
+++ b/samplecode/SampleChineseFling.cpp
@@ -79,8 +79,6 @@ protected:
// now "fling" a random amount
fIndex += fRand.nextRangeU(5, 20);
fIndex %= fBlobs.count();
-
- this->inval(nullptr);
}
private:
diff --git a/samplecode/SampleClipDrawMatch.cpp b/samplecode/SampleClipDrawMatch.cpp
index b2158a6c86..0745eff9d7 100644
--- a/samplecode/SampleClipDrawMatch.cpp
+++ b/samplecode/SampleClipDrawMatch.cpp
@@ -141,17 +141,17 @@ protected:
SkUnichar uni;
if (SampleCode::CharQ(*evt, &uni)) {
switch (uni) {
- case '1': fGeom = kRect_Geometry; this->inval(nullptr); return true;
- case '2': fGeom = kRRect_Geometry; this->inval(nullptr); return true;
- case '3': fGeom = kCircle_Geometry; this->inval(nullptr); return true;
- case '4': fGeom = kConvexPath_Geometry; this->inval(nullptr); return true;
- case '5': fGeom = kConcavePath_Geometry; this->inval(nullptr); return true;
- case '6': fGeom = kRectAndRect_Geometry; this->inval(nullptr); return true;
- case '7': fGeom = kRectAndRRect_Geometry; this->inval(nullptr); return true;
- case '8': fGeom = kRectAndConvex_Geometry; this->inval(nullptr); return true;
- case '9': fGeom = kRectAndConcave_Geometry; this->inval(nullptr); return true;
- case 'f': fSign = -fSign; this->inval(nullptr); return true;
- case 't': fClipFirst = !fClipFirst; this->inval(nullptr); return true;
+ case '1': fGeom = kRect_Geometry; return true;
+ case '2': fGeom = kRRect_Geometry; return true;
+ case '3': fGeom = kCircle_Geometry; return true;
+ case '4': fGeom = kConvexPath_Geometry; return true;
+ case '5': fGeom = kConcavePath_Geometry; return true;
+ case '6': fGeom = kRectAndRect_Geometry; return true;
+ case '7': fGeom = kRectAndRRect_Geometry; return true;
+ case '8': fGeom = kRectAndConvex_Geometry; return true;
+ case '9': fGeom = kRectAndConcave_Geometry; return true;
+ case 'f': fSign = -fSign; return true;
+ case 't': fClipFirst = !fClipFirst; return true;
default: break;
}
}
@@ -239,8 +239,6 @@ protected:
int saveCount = canvas->save();
this->drawGeometry(canvas, offset, false);
canvas->restoreToCount(saveCount);
-
- this->inval(nullptr);
}
SkMSec GetMSecs() const {
diff --git a/samplecode/SampleCode.cpp b/samplecode/SampleCode.cpp
index 84c3945ba2..252ca2a670 100644
--- a/samplecode/SampleCode.cpp
+++ b/samplecode/SampleCode.cpp
@@ -26,16 +26,6 @@ bool SampleCode::CharQ(const SkEvent& evt, SkUnichar* outUni) {
return false;
}
-bool SampleCode::KeyQ(const SkEvent& evt, SkKey* outKey) {
- if (evt.isType(gKeyEvtName, sizeof(gKeyEvtName) - 1)) {
- if (outKey) {
- *outKey = (SkKey)evt.getFast32();
- }
- return true;
- }
- return false;
-}
-
bool SampleCode::TitleQ(const SkEvent& evt) {
return evt.isType(gTitleEvtName, sizeof(gTitleEvtName) - 1);
}
@@ -54,22 +44,6 @@ bool SampleCode::RequestTitle(SkView* view, SkString* title) {
return false;
}
-bool SampleCode::PrefSizeQ(const SkEvent& evt) {
- return evt.isType(gPrefSizeEvtName, sizeof(gPrefSizeEvtName) - 1);
-}
-
-void SampleCode::PrefSizeR(SkEvent* evt, SkScalar width, SkScalar height) {
- SkASSERT(evt && PrefSizeQ(*evt));
- SkScalar size[2];
- size[0] = width;
- size[1] = height;
- evt->setScalars(gPrefSizeEvtName, 2, size);
-}
-
-bool SampleCode::FastTextQ(const SkEvent& evt) {
- return evt.isType(gFastTextEvtName, sizeof(gFastTextEvtName) - 1);
-}
-
SkViewRegister* SkViewRegister::gHead;
SkViewRegister::SkViewRegister(SkViewFactory* fact) : fFact(fact) {
fFact->ref();
@@ -87,48 +61,21 @@ SkView* SkFuncViewFactory::operator() () const {
return (*fCreateFunc)();
}
-#include "GMSampleView.h"
-
-SkGMSampleViewFactory::SkGMSampleViewFactory(GMFactoryFunc func)
- : fFunc(func) {
-}
-
-SkView* SkGMSampleViewFactory::operator() () const {
- skiagm::GM* gm = fFunc(nullptr);
- gm->setMode(skiagm::GM::kSample_Mode);
- return new GMSampleView(gm);
-}
-
SkViewRegister::SkViewRegister(SkViewCreateFunc func) {
fFact = new SkFuncViewFactory(func);
fChain = gHead;
gHead = this;
}
-SkViewRegister::SkViewRegister(GMFactoryFunc func) {
- fFact = new SkGMSampleViewFactory(func);
- fChain = gHead;
- gHead = this;
-}
-
///////////////////////////////////////////////////////////////////////////////
static const char is_sample_view_tag[] = "sample-is-sample-view";
-static const char repeat_count_tag[] = "sample-set-repeat-count";
bool SampleView::IsSampleView(SkView* view) {
SkEvent evt(is_sample_view_tag);
return view->doQuery(&evt);
}
-bool SampleView::onEvent(const SkEvent& evt) {
- if (evt.isType(repeat_count_tag)) {
- fRepeatCount = evt.getFast32();
- return true;
- }
- return this->INHERITED::onEvent(evt);
-}
-
bool SampleView::onQuery(SkEvent* evt) {
if (evt->isType(is_sample_view_tag)) {
return true;
@@ -143,16 +90,14 @@ void SampleView::onDraw(SkCanvas* canvas) {
}
this->onDrawBackground(canvas);
- for (int i = 0; i < fRepeatCount; i++) {
- SkAutoCanvasRestore acr(canvas, true);
- this->onDrawContent(canvas);
+ SkAutoCanvasRestore acr(canvas, true);
+ this->onDrawContent(canvas);
#if SK_SUPPORT_GPU
- // Ensure the GrContext doesn't combine GrDrawOps across draw loops.
- if (GrContext* context = canvas->getGrContext()) {
- context->flush();
- }
-#endif
+ // Ensure the GrContext doesn't combine GrDrawOps across draw loops.
+ if (GrContext* context = canvas->getGrContext()) {
+ context->flush();
}
+#endif
}
void SampleView::onDrawBackground(SkCanvas* canvas) {
diff --git a/samplecode/SampleCode.h b/samplecode/SampleCode.h
index 65b05a1466..053d6821a2 100644
--- a/samplecode/SampleCode.h
+++ b/samplecode/SampleCode.h
@@ -10,40 +10,25 @@
#include "SkColor.h"
#include "SkEvent.h"
-#include "SkKey.h"
#include "SkView.h"
-class GrContext;
class SkAnimTimer;
#define DEF_SAMPLE(code) \
static SkView* SK_MACRO_APPEND_LINE(F_)() { code } \
static SkViewRegister SK_MACRO_APPEND_LINE(R_)(SK_MACRO_APPEND_LINE(F_));
-#define MAX_ZOOM_LEVEL 8
-#define MIN_ZOOM_LEVEL -8
-
static const char gCharEvtName[] = "SampleCode_Char_Event";
-static const char gKeyEvtName[] = "SampleCode_Key_Event";
static const char gTitleEvtName[] = "SampleCode_Title_Event";
-static const char gPrefSizeEvtName[] = "SampleCode_PrefSize_Event";
-static const char gFastTextEvtName[] = "SampleCode_FastText_Event";
-static const char gUpdateWindowTitleEvtName[] = "SampleCode_UpdateWindowTitle";
class SampleCode {
public:
- static bool KeyQ(const SkEvent&, SkKey* outKey);
static bool CharQ(const SkEvent&, SkUnichar* outUni);
static bool TitleQ(const SkEvent&);
static void TitleR(SkEvent*, const char title[]);
static bool RequestTitle(SkView* view, SkString* title);
- static bool PrefSizeQ(const SkEvent&);
- static void PrefSizeR(SkEvent*, SkScalar width, SkScalar height);
-
- static bool FastTextQ(const SkEvent&);
-
friend class SampleWindow;
};
@@ -67,29 +52,10 @@ private:
SkViewCreateFunc fCreateFunc;
};
-namespace skiagm {
-class GM;
-}
-
-// factory function that creates a skiagm::GM
-typedef skiagm::GM* (*GMFactoryFunc)(void*);
-
-// Takes a GM factory function and implements the SkViewFactory interface
-// by making the GM and wrapping it in a GMSampleView. GMSampleView bridges
-// the SampleView interface to skiagm::GM.
-class SkGMSampleViewFactory : public SkViewFactory {
-public:
- SkGMSampleViewFactory(GMFactoryFunc func);
- SkView* operator() () const override;
-private:
- GMFactoryFunc fFunc;
-};
-
class SkViewRegister : public SkRefCnt {
public:
explicit SkViewRegister(SkViewFactory*);
explicit SkViewRegister(SkViewCreateFunc);
- explicit SkViewRegister(GMFactoryFunc);
~SkViewRegister() {
fFact->unref();
@@ -113,7 +79,6 @@ class SampleView : public SkView {
public:
SampleView()
: fBGColor(SK_ColorWHITE)
- , fRepeatCount(1)
, fHaveCalledOnceBeforeDraw(false)
{}
@@ -129,14 +94,12 @@ protected:
virtual void onOnceBeforeDraw() {}
// overrides
- virtual bool onEvent(const SkEvent& evt);
virtual bool onQuery(SkEvent* evt);
virtual void onDraw(SkCanvas*);
SkColor fBGColor;
private:
- int fRepeatCount;
bool fHaveCalledOnceBeforeDraw;
typedef SkView INHERITED;
};
diff --git a/samplecode/SampleConcavePaths.cpp b/samplecode/SampleConcavePaths.cpp
index 7ff6819ac4..de9f9b6334 100644
--- a/samplecode/SampleConcavePaths.cpp
+++ b/samplecode/SampleConcavePaths.cpp
@@ -134,12 +134,6 @@ protected:
}
}
- virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y,
- unsigned modi) {
- this->inval(nullptr);
- return this->INHERITED::onFindClickHandler(x, y, modi);
- }
-
private:
typedef SampleView INHERITED;
};
diff --git a/samplecode/SampleDither.cpp b/samplecode/SampleDither.cpp
index 6d91fda3ad..fbe25ddcaa 100644
--- a/samplecode/SampleDither.cpp
+++ b/samplecode/SampleDither.cpp
@@ -159,7 +159,6 @@ protected:
draw_sweep(canvas, fBM.width()>>2, fBM.height()>>2, fAngle);
fAngle += SK_Scalar1/2;
- this->inval(nullptr);
}
private:
diff --git a/samplecode/SampleFatBits.cpp b/samplecode/SampleFatBits.cpp
index 723dca8605..e85c87bc66 100644
--- a/samplecode/SampleFatBits.cpp
+++ b/samplecode/SampleFatBits.cpp
@@ -379,7 +379,6 @@ public:
void setStyle(FatBits::Style s) {
fFB.setStyle(s);
- this->inval(nullptr);
}
protected:
@@ -393,19 +392,15 @@ protected:
switch (uni) {
case 'c':
fFB.setUseClip(!fFB.getUseClip());
- this->inval(nullptr);
return true;
case 'r':
fIsRect = !fIsRect;
- this->inval(nullptr);
return true;
case 'o':
fFB.toggleRectAsOval();
- this->inval(nullptr);
return true;
case 'x':
fFB.setGrid(!fFB.getGrid());
- this->inval(nullptr);
return true;
case 's':
if (FatBits::kStroke_Style == fFB.getStyle()) {
@@ -419,32 +414,25 @@ protected:
SkPaint::kButt_Cap, SkPaint::kRound_Cap, SkPaint::kSquare_Cap,
};
fFB.fStrokeCap = caps[(fFB.fStrokeCap + 1) % 3];
- this->inval(nullptr);
return true;
} break;
case 'a':
fFB.setAA(!fFB.getAA());
- this->inval(nullptr);
return true;
case 'w':
fFB.setShowSkeleton(!fFB.getShowSkeleton());
- this->inval(nullptr);
return true;
case 'g':
fFB.togglePixelColors();
- this->inval(nullptr);
return true;
case 't':
fFB.setTriangle(!fFB.getTriangle());
- this->inval(nullptr);
return true;
case '-':
fFB.fStrokeWidth -= 0.125f;
- this->inval(nullptr);
return true;
case '=':
fFB.fStrokeWidth += 0.125f;
- this->inval(nullptr);
return true;
}
}
@@ -503,7 +491,6 @@ protected:
fPts[1].offset(dx, dy);
fPts[2].offset(dx, dy);
}
- this->inval(nullptr);
return true;
}
diff --git a/samplecode/SampleFilterFuzz.cpp b/samplecode/SampleFilterFuzz.cpp
index 97fe6fc760..40dc87f4c6 100644
--- a/samplecode/SampleFilterFuzz.cpp
+++ b/samplecode/SampleFilterFuzz.cpp
@@ -805,7 +805,6 @@ protected:
virtual void onDrawContent(SkCanvas* canvas) {
do_fuzz(canvas);
- this->inval(0);
}
private:
diff --git a/samplecode/SampleFilterQuality.cpp b/samplecode/SampleFilterQuality.cpp
index abe1a9097d..a68fa173fc 100644
--- a/samplecode/SampleFilterQuality.cpp
+++ b/samplecode/SampleFilterQuality.cpp
@@ -175,11 +175,11 @@ protected:
SkUnichar uni;
if (SampleCode::CharQ(*evt, &uni)) {
switch (uni) {
- case '1': fAngle.inc(-ANGLE_DELTA); this->inval(nullptr); return true;
- case '2': fAngle.inc( ANGLE_DELTA); this->inval(nullptr); return true;
- case '3': fScale.inc(-SCALE_DELTA); this->inval(nullptr); return true;
- case '4': fScale.inc( SCALE_DELTA); this->inval(nullptr); return true;
- case '5': fShowFatBits = !fShowFatBits; this->inval(nullptr); return true;
+ case '1': fAngle.inc(-ANGLE_DELTA); return true;
+ case '2': fAngle.inc( ANGLE_DELTA); return true;
+ case '3': fScale.inc(-SCALE_DELTA); return true;
+ case '4': fScale.inc( SCALE_DELTA); return true;
+ case '5': fShowFatBits = !fShowFatBits; return true;
default: break;
}
}
@@ -296,11 +296,6 @@ protected:
return true;
}
- virtual bool handleKey(SkKey key) {
- this->inval(nullptr);
- return true;
- }
-
private:
typedef SampleView INHERITED;
};
diff --git a/samplecode/SampleFuzz.cpp b/samplecode/SampleFuzz.cpp
index a0cb0e02ba..63504cd77a 100644
--- a/samplecode/SampleFuzz.cpp
+++ b/samplecode/SampleFuzz.cpp
@@ -380,7 +380,6 @@ protected:
virtual void onDrawContent(SkCanvas* canvas) {
do_fuzz(canvas);
- this->inval(nullptr);
}
private:
diff --git a/samplecode/SampleGradients.cpp b/samplecode/SampleGradients.cpp
index 19ba74b821..247bcf6111 100644
--- a/samplecode/SampleGradients.cpp
+++ b/samplecode/SampleGradients.cpp
@@ -160,7 +160,6 @@ protected:
if (false) { // avoid bit rot, suppress warning
test_alphagradients(canvas);
}
- this->inval(nullptr);
}
private:
diff --git a/samplecode/SampleHT.cpp b/samplecode/SampleHT.cpp
index e1483bef2c..7eb98068f2 100644
--- a/samplecode/SampleHT.cpp
+++ b/samplecode/SampleHT.cpp
@@ -171,7 +171,6 @@ protected:
break;
}
}
- this->inval(nullptr);
return nullptr;
}
diff --git a/samplecode/SampleHairline.cpp b/samplecode/SampleHairline.cpp
index fe9e07cb1c..0adc9c31b2 100644
--- a/samplecode/SampleHairline.cpp
+++ b/samplecode/SampleHairline.cpp
@@ -228,7 +228,6 @@ protected:
SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
fDoAA = !fDoAA;
- this->inval(nullptr);
return this->INHERITED::onFindClickHandler(x, y, modi);
}
diff --git a/samplecode/SampleIdentityScale.cpp b/samplecode/SampleIdentityScale.cpp
index 5fbba699df..6bf948daed 100644
--- a/samplecode/SampleIdentityScale.cpp
+++ b/samplecode/SampleIdentityScale.cpp
@@ -72,7 +72,6 @@ protected:
canvas->drawBitmap( fBM, 100, 100, &paint );
canvas->restore();
canvas->drawString(text, 100, 400, paint );
- this->inval(nullptr);
}
private:
diff --git a/samplecode/SampleLayers.cpp b/samplecode/SampleLayers.cpp
index 3ba6d69313..36ed2ab666 100644
--- a/samplecode/SampleLayers.cpp
+++ b/samplecode/SampleLayers.cpp
@@ -22,7 +22,6 @@
#include "SkTime.h"
#include "SkTypeface.h"
#include "SkUtils.h"
-#include "SkKey.h"
#include "SkDrawFilter.h"
#include "SkClipOpPriv.h"
@@ -191,21 +190,6 @@ protected:
test_fade(canvas);
}
- SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
- this->inval(nullptr);
-
- return this->INHERITED::onFindClickHandler(x, y, modi);
- }
-
- bool onClick(Click* click) override {
- return this->INHERITED::onClick(click);
- }
-
- virtual bool handleKey(SkKey) {
- this->inval(nullptr);
- return true;
- }
-
private:
typedef SkView INHERITED;
};
@@ -271,12 +255,10 @@ protected:
}
SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
- this->inval(nullptr);
return new Click(this);
}
bool onClick(Click* click) override {
- this->inval(nullptr);
fCenter = click->fCurr;
return this->INHERITED::onClick(click);
}
diff --git a/samplecode/SampleLines.cpp b/samplecode/SampleLines.cpp
index bf43e8b9c4..657962ca1d 100644
--- a/samplecode/SampleLines.cpp
+++ b/samplecode/SampleLines.cpp
@@ -94,7 +94,6 @@ protected:
SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
fAlpha = SkScalarRoundToInt(y);
- this->inval(nullptr);
return nullptr;
}
private:
diff --git a/samplecode/SampleManyRects.cpp b/samplecode/SampleManyRects.cpp
index cb19595fe4..737787abc2 100644
--- a/samplecode/SampleManyRects.cpp
+++ b/samplecode/SampleManyRects.cpp
@@ -62,7 +62,6 @@ protected:
canvas->drawRect(rect, paint);
canvas->restore();
}
- this->inval(nullptr);
}
private:
diff --git a/samplecode/SamplePatch.cpp b/samplecode/SamplePatch.cpp
index 47786bfa3d..80f051dee3 100644
--- a/samplecode/SamplePatch.cpp
+++ b/samplecode/SamplePatch.cpp
@@ -322,7 +322,6 @@ protected:
bool onClick(Click* click) override {
fPts[((PtClick*)click)->fIndex].set(click->fCurr.fX - DX, click->fCurr.fY - DY);
- this->inval(nullptr);
return true;
}
diff --git a/samplecode/SamplePath.cpp b/samplecode/SamplePath.cpp
index ec92fdfc1a..dceb925ca0 100644
--- a/samplecode/SamplePath.cpp
+++ b/samplecode/SamplePath.cpp
@@ -197,7 +197,6 @@ protected:
SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
fShowHairline = !fShowHairline;
- this->inval(nullptr);
return this->INHERITED::onFindClickHandler(x, y, modi);
}
@@ -248,7 +247,6 @@ public:
void toggle(bool& value) {
value = !value;
- this->inval(nullptr);
}
protected:
@@ -298,7 +296,6 @@ protected:
if (click->fMeta.findS32("index", &index)) {
SkASSERT((unsigned)index < N);
fPts[index] = click->fCurr;
- this->inval(nullptr);
return true;
}
return false;
@@ -364,12 +361,10 @@ public:
void toggle(bool& value) {
value = !value;
- this->inval(nullptr);
}
void toggle3(int& value) {
value = (value + 1) % 3;
- this->inval(nullptr);
}
protected:
@@ -388,8 +383,8 @@ protected:
case '4': this->toggle3(fJoinType); return true;
case '5': this->toggle3(fCapType); return true;
case '6': this->toggle(fClosed); return true;
- case '-': fWidth -= 5; this->inval(nullptr); return true;
- case '=': fWidth += 5; this->inval(nullptr); return true;
+ case '-': fWidth -= 5; return true;
+ case '=': fWidth += 5; return true;
default: break;
}
}
@@ -435,7 +430,6 @@ protected:
if (click->fMeta.findS32("index", &index)) {
SkASSERT((unsigned)index < N);
fPts[index] = click->fCurr;
- this->inval(nullptr);
return true;
}
return false;
diff --git a/samplecode/SamplePathClip.cpp b/samplecode/SamplePathClip.cpp
index 5fdaeedb55..029b1c9dc9 100644
--- a/samplecode/SamplePathClip.cpp
+++ b/samplecode/SamplePathClip.cpp
@@ -61,7 +61,6 @@ protected:
bool onClick(Click* click) override {
fCenter.set(click->fCurr.fX, click->fCurr.fY);
- this->inval(nullptr);
return false;
}
@@ -307,7 +306,6 @@ protected:
bool onClick(Click* click) override {
((MyClick*)click)->handleMove();
- this->inval(nullptr);
return false;
}
diff --git a/samplecode/SamplePathFinder.cpp b/samplecode/SamplePathFinder.cpp
index 7c7dca1576..d53c40bb5e 100644
--- a/samplecode/SamplePathFinder.cpp
+++ b/samplecode/SamplePathFinder.cpp
@@ -94,7 +94,6 @@ private:
} else {
fTrail.push_back('X');
}
- this->inval(nullptr);
}
return true;
case 'x':
@@ -104,7 +103,6 @@ private:
fTossedPaths.reset(fPaths.begin() + midpt, fPaths.count() - midpt);
fPaths.resize_back(midpt);
fTrail.push_back('x');
- this->inval(nullptr);
}
return true;
case 'Z': {
@@ -117,7 +115,6 @@ private:
ch = fTrail.back();
fTrail.pop_back();
} while (ch != 'x');
- this->inval(nullptr);
}
return true;
}
diff --git a/samplecode/SamplePathFuzz.cpp b/samplecode/SamplePathFuzz.cpp
index ac9ffc9122..13c72ca0f1 100644
--- a/samplecode/SamplePathFuzz.cpp
+++ b/samplecode/SamplePathFuzz.cpp
@@ -686,7 +686,6 @@ protected:
path_fuzz_stroker(&offscreen, fIndex += 100);
canvas->drawBitmap(offscreen, 0, 0);
}
- this->inval(nullptr);
}
private:
diff --git a/samplecode/SamplePathOverstroke.cpp b/samplecode/SamplePathOverstroke.cpp
index a2d1b89b86..b6202a7784 100644
--- a/samplecode/SamplePathOverstroke.cpp
+++ b/samplecode/SamplePathOverstroke.cpp
@@ -43,27 +43,21 @@ class OverstrokeView : public SampleView {
switch (uni) {
case ',':
fStroke += 1.0;
- this->inval(nullptr);
return true;
case '.':
fStroke -= 1.0;
- this->inval(nullptr);
return true;
case 'x':
fPathType = (fPathType + 1) % 4;
- this->inval(nullptr);
return true;
case 'c':
fClosePath = !fClosePath;
- this->inval(nullptr);
return true;
case 'f':
fDrawFillPath = !fDrawFillPath;
- this->inval(nullptr);
return true;
case 'D':
fDumpHex = !fDumpHex;
- this->inval(nullptr);
return true;
default:
break;
diff --git a/samplecode/SamplePathText.cpp b/samplecode/SamplePathText.cpp
index 12bb282a74..31b0a7d8b9 100644
--- a/samplecode/SamplePathText.cpp
+++ b/samplecode/SamplePathText.cpp
@@ -58,7 +58,6 @@ public:
if (SampleCode::CharQ(*evt, &unichar)) {
if (unichar == 'X') {
fDoClip = !fDoClip;
- this->inval(nullptr);
return true;
}
}
diff --git a/samplecode/SampleQuadStroker.cpp b/samplecode/SampleQuadStroker.cpp
index fa45d6eb0d..59d6ed5a1e 100644
--- a/samplecode/SampleQuadStroker.cpp
+++ b/samplecode/SampleQuadStroker.cpp
@@ -212,7 +212,6 @@ protected:
default:
fText.appendUnichar(uni);
}
- this->inval(nullptr);
return true;
}
return this->INHERITED::onQuery(evt);
@@ -697,7 +696,6 @@ protected:
draw_button(canvas, fRRectButton);
draw_button(canvas, fCircleButton);
draw_button(canvas, fTextButton);
- this->inval(nullptr);
}
class MyClick : public Click {
@@ -771,7 +769,6 @@ protected:
if (index < (int) SK_ARRAY_COUNT(fPts)) {
fPts[index].offset(SkIntToScalar(click->fICurr.fX - click->fIPrev.fX),
SkIntToScalar(click->fICurr.fY - click->fIPrev.fY));
- this->inval(nullptr);
} else if (index == (int) SK_ARRAY_COUNT(fPts) + 1) {
fWeight = MapScreenYtoValue(click->fICurr.fY, fWeightControl, 0, 5);
} else if (index == (int) SK_ARRAY_COUNT(fPts) + 2) {
diff --git a/samplecode/SampleRectanizer.cpp b/samplecode/SampleRectanizer.cpp
index 0657464ef1..fe1275d1f9 100644
--- a/samplecode/SampleRectanizer.cpp
+++ b/samplecode/SampleRectanizer.cpp
@@ -126,8 +126,6 @@ protected:
str.printf("Press \'h\' to toggle rects");
canvas->drawString(str, 50, kHeight + 150, blackBigFont);
-
- this->inval(nullptr);
}
private:
diff --git a/samplecode/SampleRegion.cpp b/samplecode/SampleRegion.cpp
index 1fee2fa7f9..0ddd8940ec 100644
--- a/samplecode/SampleRegion.cpp
+++ b/samplecode/SampleRegion.cpp
@@ -395,7 +395,6 @@ protected:
bool onClick(Click* click) override {
fRect.offset(click->fICurr.fX - click->fIPrev.fX,
click->fICurr.fY - click->fIPrev.fY);
- this->inval(nullptr);
return true;
}
diff --git a/samplecode/SampleRepeatTile.cpp b/samplecode/SampleRepeatTile.cpp
index f56492dc0f..e0f9910fe8 100644
--- a/samplecode/SampleRepeatTile.cpp
+++ b/samplecode/SampleRepeatTile.cpp
@@ -8,7 +8,6 @@
#include "SkView.h"
#include "SkCanvas.h"
#include "SkShader.h"
-#include "SkKey.h"
static void make_bitmap(SkBitmap* bm) {
const int W = 100;
@@ -64,21 +63,6 @@ protected:
canvas->drawPaint(paint);
}
- SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
- this->inval(nullptr);
-
- return this->INHERITED::onFindClickHandler(x, y, modi);
- }
-
- bool onClick(Click* click) override {
- return this->INHERITED::onClick(click);
- }
-
- virtual bool handleKey(SkKey) {
- this->inval(nullptr);
- return true;
- }
-
private:
typedef SampleView INHERITED;
};
diff --git a/samplecode/SampleShaders.cpp b/samplecode/SampleShaders.cpp
index 7ca74ccdb2..2f545a38c0 100644
--- a/samplecode/SampleShaders.cpp
+++ b/samplecode/SampleShaders.cpp
@@ -100,15 +100,6 @@ protected:
canvas->drawRect(r, paint);
}
- SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
- this->inval(nullptr);
- return this->INHERITED::onFindClickHandler(x, y, modi);
- }
-
- bool onClick(Click* click) override {
- return this->INHERITED::onClick(click);
- }
-
private:
typedef SampleView INHERITED;
};
diff --git a/samplecode/SampleShadowColor.cpp b/samplecode/SampleShadowColor.cpp
index aa5a8ef37e..07720ae0a5 100755
--- a/samplecode/SampleShadowColor.cpp
+++ b/samplecode/SampleShadowColor.cpp
@@ -89,7 +89,6 @@ protected:
break;
}
if (handled) {
- this->inval(nullptr);
return true;
}
}
diff --git a/samplecode/SampleShadowReference.cpp b/samplecode/SampleShadowReference.cpp
index 99ff4b2c8b..ef63fc5b4e 100755
--- a/samplecode/SampleShadowReference.cpp
+++ b/samplecode/SampleShadowReference.cpp
@@ -69,7 +69,6 @@ protected:
break;
}
if (handled) {
- this->inval(nullptr);
return true;
}
}
diff --git a/samplecode/SampleShadowUtils.cpp b/samplecode/SampleShadowUtils.cpp
index c37d8d2b28..7e6079156d 100755
--- a/samplecode/SampleShadowUtils.cpp
+++ b/samplecode/SampleShadowUtils.cpp
@@ -96,7 +96,6 @@ protected:
break;
}
if (handled) {
- this->inval(nullptr);
return true;
}
}
diff --git a/samplecode/SampleShip.cpp b/samplecode/SampleShip.cpp
index 08f794abab..3abfaf7f05 100644
--- a/samplecode/SampleShip.cpp
+++ b/samplecode/SampleShip.cpp
@@ -151,8 +151,6 @@ protected:
canvas->drawRect(SkRect::MakeXYWH(0, 0, 200, 24), paint);
paint.setColor(SK_ColorWHITE);
canvas->drawString(outString, 5, 15, paint);
-
- this->inval(nullptr);
}
#if 0
diff --git a/samplecode/SampleSlides.cpp b/samplecode/SampleSlides.cpp
index 91daa2a567..5c6fb79624 100644
--- a/samplecode/SampleSlides.cpp
+++ b/samplecode/SampleSlides.cpp
@@ -702,7 +702,6 @@ protected:
SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
this->init();
fIndex = (fIndex + 1) % SK_ARRAY_COUNT(gProc);
- this->inval(nullptr);
return nullptr;
}
diff --git a/samplecode/SampleStringArt.cpp b/samplecode/SampleStringArt.cpp
index 74f3bd800a..e0e069187a 100644
--- a/samplecode/SampleStringArt.cpp
+++ b/samplecode/SampleStringArt.cpp
@@ -59,7 +59,6 @@ protected:
SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
fAngle = x/width();
- this->inval(nullptr);
return nullptr;
}
private:
diff --git a/samplecode/SampleStrokePath.cpp b/samplecode/SampleStrokePath.cpp
index 3f84482f4f..ce64155504 100644
--- a/samplecode/SampleStrokePath.cpp
+++ b/samplecode/SampleStrokePath.cpp
@@ -205,11 +205,6 @@ protected:
drawSet(canvas, &paint);
}
- virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y,
- unsigned modi) override {
- this->inval(nullptr);
- return this->INHERITED::onFindClickHandler(x, y, modi);
- }
private:
typedef SampleView INHERITED;
};
diff --git a/samplecode/SampleSubpixelTranslate.cpp b/samplecode/SampleSubpixelTranslate.cpp
index fd66de25ca..79500037be 100644
--- a/samplecode/SampleSubpixelTranslate.cpp
+++ b/samplecode/SampleSubpixelTranslate.cpp
@@ -100,7 +100,6 @@ protected:
fCurPos.fX += fHorizontalVelocity;
fCurPos.fY += fVerticalVelocity;
- this->inval(nullptr);
}
private:
diff --git a/samplecode/SampleText.cpp b/samplecode/SampleText.cpp
index 12f345cd33..bb3507ef41 100644
--- a/samplecode/SampleText.cpp
+++ b/samplecode/SampleText.cpp
@@ -148,7 +148,6 @@ protected:
virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y,
unsigned modi) override {
fClickX = x;
- this->inval(nullptr);
return this->INHERITED::onFindClickHandler(x, y, modi);
}
diff --git a/samplecode/SampleTextAlpha.cpp b/samplecode/SampleTextAlpha.cpp
index c357e6d8c2..097af8fb4d 100644
--- a/samplecode/SampleTextAlpha.cpp
+++ b/samplecode/SampleTextAlpha.cpp
@@ -76,7 +76,6 @@ protected:
y = 255;
}
fByte = y;
- this->inval(nullptr);
return true;
}
diff --git a/samplecode/SampleTextBox.cpp b/samplecode/SampleTextBox.cpp
index 947ed8ec1e..c5fe4cfcd2 100644
--- a/samplecode/SampleTextBox.cpp
+++ b/samplecode/SampleTextBox.cpp
@@ -23,7 +23,6 @@
#include "SkTextBox.h"
#include "SkOSFile.h"
#include "SkStream.h"
-#include "SkKey.h"
extern void skia_set_text_gamma(float blackGamma, float whiteGamma);
diff --git a/samplecode/SampleTextOnPath.cpp b/samplecode/SampleTextOnPath.cpp
index 63b7ef26cc..0e431810af 100644
--- a/samplecode/SampleTextOnPath.cpp
+++ b/samplecode/SampleTextOnPath.cpp
@@ -143,21 +143,13 @@ protected:
canvas->translate(SkIntToScalar(-275), SkIntToScalar(250));
textPathMatrix(canvas);
-
- if (REPEAT_COUNT > 1)
- this->inval(nullptr);
}
SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
fHints += 1;
- this->inval(nullptr);
return this->INHERITED::onFindClickHandler(x, y, modi);
}
- bool onClick(Click* click) override {
- return this->INHERITED::onClick(click);
- }
-
private:
int fHints;
typedef SampleView INHERITED;
diff --git a/samplecode/SampleUnpremul.cpp b/samplecode/SampleUnpremul.cpp
index cd05fcffd4..57f0efc669 100644
--- a/samplecode/SampleUnpremul.cpp
+++ b/samplecode/SampleUnpremul.cpp
@@ -19,7 +19,6 @@
#include "SkOSPath.h"
#include "SkStream.h"
#include "SkString.h"
-#include "SkSystemEventTypes.h"
#include "SkTypes.h"
#include "SkUtils.h"
#include "SkView.h"
@@ -164,7 +163,6 @@ private:
return;
}
fDecodeSucceeded = decode_file(fCurrFile.c_str(), &fBitmap, kN32_SkColorType, !fPremul);
- this->inval(nullptr);
}
void togglePremul() {
diff --git a/samplecode/SampleVertices.cpp b/samplecode/SampleVertices.cpp
index 9c6eeb8b1b..004befe654 100644
--- a/samplecode/SampleVertices.cpp
+++ b/samplecode/SampleVertices.cpp
@@ -113,7 +113,6 @@ protected:
bool onClick(Click* click) override {
// fCurrX = click->fICurr.fX;
// fCurrY = click->fICurr.fY;
- this->inval(nullptr);
return true;
}
diff --git a/samplecode/SampleXfer.cpp b/samplecode/SampleXfer.cpp
index 645ad4e1a0..074613c441 100644
--- a/samplecode/SampleXfer.cpp
+++ b/samplecode/SampleXfer.cpp
@@ -32,64 +32,36 @@ const int N_Modes = SK_ARRAY_COUNT(gModes);
static SkRandom gRand;
-class PushButtonWig : public SkView {
+struct ModeButton {
SkString fLabel;
SkColor fColor;
- uint32_t fFast32;
+ SkRect fRect;
public:
- PushButtonWig(const char label[], uint32_t fast) : fLabel(label) {
+ void init(const char label[], const SkRect& rect) {
+ fLabel = label;
+ fRect = rect;
fColor = (gRand.nextU() & 0x7F7F7F7F) | SkColorSetARGB(0xFF, 0, 0, 0x80);
- fFast32 = fast;
}
- void postWidgetEvent() {
- SkEvent evt;
- evt.setType("push-button");
- evt.setFast32(fFast32);
- evt.setString("label", fLabel.c_str());
- this->sendEventToParents(evt);
- }
-
-protected:
- void onDraw(SkCanvas* canvas) override {
- SkRect r;
- this->getLocalBounds(&r);
+ void draw(SkCanvas* canvas) {
SkPaint paint;
paint.setAntiAlias(true);
paint.setColor(fColor);
- canvas->drawRoundRect(r, 8, 8, paint);
+ canvas->drawRoundRect(fRect, 8, 8, paint);
paint.setColor(0xFFFFFFFF);
paint.setTextSize(16);
paint.setTextAlign(SkPaint::kCenter_Align);
paint.setLCDRenderText(true);
- canvas->drawString(fLabel, r.centerX(), r.fTop + 0.68f * r.height(), paint);
+ canvas->drawString(fLabel, fRect.centerX(), fRect.fTop + 0.68f * fRect.height(), paint);
}
- Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) override {
- return new Click(this);
- }
-
- bool onClick(Click* click) override {
- SkRect target = SkRect::MakeXYWH(click->fCurr.x() - 1, click->fCurr.y() - 1, 3, 3);
- SkRect r;
- this->getLocalBounds(&r);
- if (r.intersects(target)) {
- fColor = SkColorSetA(fColor, 0x99);
- } else {
- fColor = SkColorSetA(fColor, 0xFF);
- }
- this->inval(nullptr);
-
- if (click->fState == SkView::Click::kUp_State) {
- this->postWidgetEvent();
- }
- return true;
+ bool hitTest(SkScalar x, SkScalar y) {
+ return fRect.intersects(x - 1, y - 1, x + 1, y + 1);
}
};
-
class ModeDrawable : public SkDrawable {
public:
ModeDrawable() : fMode(SkBlendMode::kSrcOver), fLoc(SkPoint::Make(0, 0)) {}
@@ -136,6 +108,7 @@ class XferDemo : public SampleView {
};
SkRect fModeRect[N_Modes];
+ ModeButton fModeButtons[N_Modes];
sk_sp<CircDrawable> fDrs[N];
CircDrawable* fSelected;
@@ -143,12 +116,7 @@ class XferDemo : public SampleView {
SkScalar x = 10;
SkScalar y = 10;
for (int i = 0; i < N_Modes; ++i) {
- sk_sp<SkView> v(new PushButtonWig(SkBlendMode_Name(gModes[i]), (int)gModes[i]));
- v->setSize(70, 25);
- v->setLoc(x, y);
- v->setVisibleP(true);
- v->setEnabledP(true);
- this->attachChildToFront(v.get());
+ fModeButtons[i].init(SkBlendMode_Name(gModes[i]), SkRect::MakeXYWH(x, y, 70, 25));
fModeRect[i] = SkRect::MakeXYWH(x, y + 28, 70, 2);
x += 80;
}
@@ -168,17 +136,6 @@ public:
}
protected:
- bool onEvent(const SkEvent& evt) override {
- if (evt.isType("push-button")) {
- if (fSelected) {
- fSelected->fMode = (SkBlendMode)evt.getFast32();
- this->inval(nullptr);
- }
- return true;
- }
- return this->INHERITED::onEvent(evt);
- }
-
bool onQuery(SkEvent* evt) override {
if (SampleCode::TitleQ(*evt)) {
SampleCode::TitleR(evt, "XferDemo");
@@ -188,6 +145,10 @@ protected:
}
void onDrawContent(SkCanvas* canvas) override {
+ for (int i = 0; i < N_Modes; ++i) {
+ fModeButtons[i].draw(canvas);
+ }
+
SkPaint paint;
if (fSelected) {
for (int i = 0; i < N_Modes; ++i) {
@@ -206,6 +167,14 @@ protected:
}
SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override {
+ // Check mode buttons first
+ for (int i = 0; i < N_Modes; ++i) {
+ if (fModeButtons[i].hitTest(x, y)) {
+ Click* click = new Click(this);
+ click->fMeta.setS32("mode", i);
+ return click;
+ }
+ }
fSelected = nullptr;
for (int i = N - 1; i >= 0; --i) {
if (fDrs[i]->hitTest(x, y)) {
@@ -213,14 +182,19 @@ protected:
break;
}
}
- this->inval(nullptr);
return fSelected ? new Click(this) : nullptr;
}
bool onClick(Click* click) override {
- fSelected->fLoc.fX += click->fCurr.fX - click->fPrev.fX;
- fSelected->fLoc.fY += click->fCurr.fY - click->fPrev.fY;
- this->inval(nullptr);
+ int32_t mode;
+ if (click->fMeta.findS32("mode", &mode)) {
+ if (fSelected && Click::kUp_State == click->fState) {
+ fSelected->fMode = gModes[mode];
+ }
+ } else {
+ fSelected->fLoc.fX += click->fCurr.fX - click->fPrev.fX;
+ fSelected->fLoc.fY += click->fCurr.fY - click->fPrev.fY;
+ }
return true;
}
diff --git a/src/views/SkEvent.cpp b/src/views/SkEvent.cpp
index 8102455979..c2b800fe9e 100644
--- a/src/views/SkEvent.cpp
+++ b/src/views/SkEvent.cpp
@@ -5,18 +5,12 @@
* found in the LICENSE file.
*/
-
-#include "SkDOM.h"
#include "SkEvent.h"
void SkEvent::initialize(const char* type, size_t typeLen) {
fType = nullptr;
setType(type, typeLen);
f32 = 0;
-#ifdef SK_DEBUG
- fTime = 0;
- fNextEvent = nullptr;
-#endif
}
SkEvent::SkEvent()
@@ -113,132 +107,3 @@ void SkEvent::setType(const SkString& type)
{
setType(type.c_str());
}
-
-////////////////////////////////////////////////////////////////////////////
-
-#include "SkParse.h"
-
-void SkEvent::inflate(const SkDOM& dom, const SkDOM::Node* node)
-{
- const char* name = dom.findAttr(node, "type");
- if (name)
- this->setType(name);
-
- const char* value;
- if ((value = dom.findAttr(node, "fast32")) != nullptr)
- {
- int32_t n;
- if (SkParse::FindS32(value, &n))
- this->setFast32(n);
- }
-
- for (node = dom.getFirstChild(node); node; node = dom.getNextSibling(node))
- {
- if (strcmp(dom.getName(node), "data"))
- {
- SkDEBUGCODE(SkDebugf("SkEvent::inflate unrecognized subelement <%s>\n", dom.getName(node));)
- continue;
- }
-
- name = dom.findAttr(node, "name");
- if (name == nullptr)
- {
- SkDEBUGCODE(SkDebugf("SkEvent::inflate missing required \"name\" attribute in <data> subelement\n");)
- continue;
- }
-
- if ((value = dom.findAttr(node, "s32")) != nullptr)
- {
- int32_t n;
- if (SkParse::FindS32(value, &n))
- this->setS32(name, n);
- }
- else if ((value = dom.findAttr(node, "scalar")) != nullptr)
- {
- SkScalar x;
- if (SkParse::FindScalar(value, &x))
- this->setScalar(name, x);
- }
- else if ((value = dom.findAttr(node, "string")) != nullptr)
- this->setString(name, value);
-#ifdef SK_DEBUG
- else
- {
- SkDebugf("SkEvent::inflate <data name=\"%s\"> subelement missing required type attribute [S32 | scalar | string]\n", name);
- }
-#endif
- }
-}
-
-#ifdef SK_DEBUG
-
- #ifndef SkScalarToFloat
- #define SkScalarToFloat(x) ((x) / 65536.f)
- #endif
-
- void SkEvent::dump(const char title[])
- {
- if (title)
- SkDebugf("%s ", title);
-
- SkString etype;
- this->getType(&etype);
- SkDebugf("event<%s> fast32=%d", etype.c_str(), this->getFast32());
-
- const SkMetaData& md = this->getMetaData();
- SkMetaData::Iter iter(md);
- SkMetaData::Type mtype;
- int count;
- const char* name;
-
- while ((name = iter.next(&mtype, &count)) != nullptr)
- {
- SkASSERT(count > 0);
-
- SkDebugf(" <%s>=", name);
- switch (mtype) {
- case SkMetaData::kS32_Type: // vector version???
- {
- int32_t value;
- md.findS32(name, &value);
- SkDebugf("%d ", value);
- }
- break;
- case SkMetaData::kScalar_Type:
- {
- const SkScalar* values = md.findScalars(name, &count, nullptr);
- SkDebugf("%f", SkScalarToFloat(values[0]));
- for (int i = 1; i < count; i++)
- SkDebugf(", %f", SkScalarToFloat(values[i]));
- SkDebugf(" ");
- }
- break;
- case SkMetaData::kString_Type:
- {
- const char* value = md.findString(name);
- SkASSERT(value);
- SkDebugf("<%s> ", value);
- }
- break;
- case SkMetaData::kPtr_Type: // vector version???
- {
- void* value;
- md.findPtr(name, &value);
- SkDebugf("%p ", value);
- }
- break;
- case SkMetaData::kBool_Type: // vector version???
- {
- bool value;
- md.findBool(name, &value);
- SkDebugf("%s ", value ? "true" : "false");
- }
- break;
- default:
- SkDEBUGFAIL("unknown metadata type returned from iterator");
- break;
- }
- }
- SkDebugf("\n");
- }
-#endif
diff --git a/src/views/SkView.cpp b/src/views/SkView.cpp
index be765f1faf..4608c44406 100644
--- a/src/views/SkView.cpp
+++ b/src/views/SkView.cpp
@@ -7,7 +7,6 @@
#include "SkView.h"
#include "SkCanvas.h"
-#include "SkDOM.h"
static inline uint32_t SkSetClearShift(uint32_t bits, bool cond, unsigned shift) {
SkASSERT((int)cond == 0 || (int)cond == 1);
@@ -18,29 +17,13 @@ static inline uint32_t SkSetClearShift(uint32_t bits, bool cond, unsigned shift)
SkView::SkView(uint32_t flags) : fFlags(SkToU8(flags)) {
fWidth = fHeight = 0;
- fLoc.set(0, 0);
- fParent = fFirstChild = fNextSibling = fPrevSibling = nullptr;
- fMatrix.setIdentity();
- fContainsFocus = 0;
}
-SkView::~SkView() {
- this->detachAllChildren();
-}
+SkView::~SkView() {}
void SkView::setFlags(uint32_t flags) {
SkASSERT((flags & ~kAllFlagMasks) == 0);
-
- uint32_t diff = fFlags ^ flags;
-
- if (diff & kVisible_Mask)
- this->inval(nullptr);
-
fFlags = SkToU8(flags);
-
- if (diff & kVisible_Mask) {
- this->inval(nullptr);
- }
}
void SkView::setVisibleP(bool pred) {
@@ -65,37 +48,16 @@ void SkView::setSize(SkScalar width, SkScalar height) {
if (fWidth != width || fHeight != height)
{
- this->inval(nullptr);
fWidth = width;
fHeight = height;
- this->inval(nullptr);
this->onSizeChange();
}
}
-void SkView::setLoc(SkScalar x, SkScalar y) {
- if (fLoc.fX != x || fLoc.fY != y) {
- this->inval(nullptr);
- fLoc.set(x, y);
- this->inval(nullptr);
- }
-}
-
-void SkView::offset(SkScalar dx, SkScalar dy) {
- if (dx || dy)
- this->setLoc(fLoc.fX + dx, fLoc.fY + dy);
-}
-
-void SkView::setLocalMatrix(const SkMatrix& matrix) {
- this->inval(nullptr);
- fMatrix = matrix;
- this->inval(nullptr);
-}
-
void SkView::draw(SkCanvas* canvas) {
if (fWidth && fHeight && this->isVisible()) {
SkRect r;
- r.set(fLoc.fX, fLoc.fY, fLoc.fX + fWidth, fLoc.fY + fHeight);
+ r.set(0, 0, fWidth, fHeight);
if (this->isClipToBounds() && canvas->quickReject(r)) {
return;
}
@@ -106,269 +68,26 @@ void SkView::draw(SkCanvas* canvas) {
canvas->clipRect(r);
}
- canvas->translate(fLoc.fX, fLoc.fY);
- canvas->concat(fMatrix);
-
- if (fParent) {
- fParent->beforeChild(this, canvas);
- }
-
int sc = canvas->save();
this->onDraw(canvas);
canvas->restoreToCount(sc);
-
- if (fParent) {
- fParent->afterChild(this, canvas);
- }
-
- B2FIter iter(this);
- SkView* child;
-
- SkCanvas* childCanvas = this->beforeChildren(canvas);
-
- while ((child = iter.next()) != nullptr)
- child->draw(childCanvas);
-
- this->afterChildren(canvas);
- }
-}
-
-void SkView::inval(SkRect* rect) {
- SkView* view = this;
- SkRect storage;
-
- for (;;) {
- if (!view->isVisible()) {
- return;
- }
- if (view->isClipToBounds()) {
- SkRect bounds;
- view->getLocalBounds(&bounds);
- if (rect && !bounds.intersect(*rect)) {
- return;
- }
- storage = bounds;
- rect = &storage;
- }
- if (view->handleInval(rect)) {
- return;
- }
-
- SkView* parent = view->fParent;
- if (parent == nullptr) {
- return;
- }
-
- if (rect) {
- rect->offset(view->fLoc.fX, view->fLoc.fY);
- }
- view = parent;
}
}
////////////////////////////////////////////////////////////////////////////
-bool SkView::setFocusView(SkView* fv) {
- SkView* view = this;
-
- do {
- if (view->onSetFocusView(fv)) {
- return true;
- }
- } while ((view = view->fParent) != nullptr);
- return false;
-}
-
-SkView* SkView::getFocusView() const {
- SkView* focus = nullptr;
- const SkView* view = this;
- do {
- if (view->onGetFocusView(&focus)) {
- break;
- }
- } while ((view = view->fParent) != nullptr);
- return focus;
-}
-
-bool SkView::hasFocus() const {
- return this == this->getFocusView();
-}
-
-bool SkView::acceptFocus() {
- return this->isFocusable() && this->setFocusView(this);
-}
-
-/*
- Try to give focus to this view, or its children
-*/
-SkView* SkView::acceptFocus(FocusDirection dir) {
- if (dir == kNext_FocusDirection) {
- if (this->acceptFocus()) {
- return this;
- }
- B2FIter iter(this);
- SkView* child, *focus;
- while ((child = iter.next()) != nullptr) {
- if ((focus = child->acceptFocus(dir)) != nullptr) {
- return focus;
- }
- }
- } else { // prev
- F2BIter iter(this);
- SkView* child, *focus;
- while ((child = iter.next()) != nullptr) {
- if ((focus = child->acceptFocus(dir)) != nullptr) {
- return focus;
- }
- }
- if (this->acceptFocus()) {
- return this;
- }
- }
- return nullptr;
-}
-
-SkView* SkView::moveFocus(FocusDirection dir) {
- SkView* focus = this->getFocusView();
-
- if (focus == nullptr) { // start with the root
- focus = this;
- while (focus->fParent) {
- focus = focus->fParent;
- }
- }
-
- SkView* child, *parent;
-
- if (dir == kNext_FocusDirection) {
- parent = focus;
- child = focus->fFirstChild;
- if (child)
- goto FIRST_CHILD;
- else
- goto NEXT_SIB;
-
- do {
- while (child != parent->fFirstChild) {
- FIRST_CHILD:
- if ((focus = child->acceptFocus(dir)) != nullptr)
- return focus;
- child = child->fNextSibling;
- }
- NEXT_SIB:
- child = parent->fNextSibling;
- parent = parent->fParent;
- } while (parent != nullptr);
- } else { // prevfocus
- parent = focus->fParent;
- if (parent == nullptr) { // we're the root
- return focus->acceptFocus(dir);
- } else {
- child = focus;
- while (parent) {
- while (child != parent->fFirstChild) {
- child = child->fPrevSibling;
- if ((focus = child->acceptFocus(dir)) != nullptr) {
- return focus;
- }
- }
- if (parent->acceptFocus()) {
- return parent;
- }
- child = parent;
- parent = parent->fParent;
- }
- }
- }
- return nullptr;
-}
-
-void SkView::onFocusChange(bool gainFocusP) {
- this->inval(nullptr);
-}
-
-////////////////////////////////////////////////////////////////////////////
-
SkView::Click::Click(SkView* target) {
SkASSERT(target);
fTargetID = target->getSinkID();
- fType = nullptr;
- fWeOwnTheType = false;
- fOwner = nullptr;
-}
-
-SkView::Click::~Click() {
- this->resetType();
-}
-
-void SkView::Click::resetType() {
- if (fWeOwnTheType) {
- sk_free(fType);
- fWeOwnTheType = false;
- }
- fType = nullptr;
-}
-
-bool SkView::Click::isType(const char type[]) const {
- const char* t = fType;
-
- if (type == t) {
- return true;
- }
- if (type == nullptr) {
- type = "";
- }
- if (t == nullptr) {
- t = "";
- }
- return !strcmp(t, type);
}
-void SkView::Click::setType(const char type[]) {
- this->resetType();
- fType = (char*)type;
-}
-
-void SkView::Click::copyType(const char type[]) {
- if (fType != type) {
- this->resetType();
- if (type) {
- size_t len = strlen(type) + 1;
- fType = (char*)sk_malloc_throw(len);
- memcpy(fType, type, len);
- fWeOwnTheType = true;
- }
- }
-}
+SkView::Click::~Click() {}
SkView::Click* SkView::findClickHandler(SkScalar x, SkScalar y, unsigned modi) {
if (x < 0 || y < 0 || x >= fWidth || y >= fHeight) {
return nullptr;
}
- if (this->onSendClickToChildren(x, y, modi)) {
- F2BIter iter(this);
- SkView* child;
-
- while ((child = iter.next()) != nullptr) {
- SkPoint p;
-#if 0
- if (!child->globalToLocal(x, y, &p)) {
- continue;
- }
-#else
- // the above seems broken, so just respecting fLoc for now <reed>
- p.set(x - child->fLoc.x(), y - child->fLoc.y());
-#endif
-
- Click* click = child->findClickHandler(p.fX, p.fY, modi);
-
- if (click) {
- return click;
- }
- }
- }
-
return this->onFindClickHandler(x, y, modi);
}
@@ -384,10 +103,6 @@ void SkView::DoClickDown(Click* click, int x, int y, unsigned modi) {
click->fICurr = click->fIPrev = click->fIOrig;
click->fOrig.iset(x, y);
- if (!target->globalToLocal(&click->fOrig)) {
- // no history to let us recover from this failure
- return;
- }
click->fPrev = click->fCurr = click->fOrig;
click->fState = Click::kDown_State;
@@ -408,10 +123,6 @@ void SkView::DoClickMoved(Click* click, int x, int y, unsigned modi) {
click->fPrev = click->fCurr;
click->fCurr.iset(x, y);
- if (!target->globalToLocal(&click->fCurr)) {
- // on failure pretend the mouse didn't move
- click->fCurr = click->fPrev;
- }
click->fState = Click::kMoved_State;
click->fModifierKeys = modi;
@@ -431,10 +142,6 @@ void SkView::DoClickUp(Click* click, int x, int y, unsigned modi) {
click->fPrev = click->fCurr;
click->fCurr.iset(x, y);
- if (!target->globalToLocal(&click->fCurr)) {
- // on failure pretend the mouse didn't move
- click->fCurr = click->fPrev;
- }
click->fState = Click::kUp_State;
click->fModifierKeys = modi;
@@ -447,10 +154,6 @@ void SkView::onDraw(SkCanvas* canvas) {}
void SkView::onSizeChange() {}
-bool SkView::onSendClickToChildren(SkScalar x, SkScalar y, unsigned modi) {
- return true;
-}
-
SkView::Click* SkView::onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) {
return nullptr;
}
@@ -458,323 +161,3 @@ SkView::Click* SkView::onFindClickHandler(SkScalar x, SkScalar y, unsigned modi)
bool SkView::onClick(Click*) {
return false;
}
-
-bool SkView::handleInval(const SkRect*) {
- return false;
-}
-
-//////////////////////////////////////////////////////////////////////
-
-void SkView::getLocalBounds(SkRect* bounds) const {
- if (bounds) {
- bounds->set(0, 0, fWidth, fHeight);
- }
-}
-
-//////////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////////
-
-void SkView::detachFromParent_NoLayout() {
- this->validate();
- if (fParent == nullptr) {
- return;
- }
-
- if (fContainsFocus) {
- (void)this->setFocusView(nullptr);
- }
-
- this->inval(nullptr);
-
- SkView* next = nullptr;
-
- if (fNextSibling != this) { // do we have any siblings
- fNextSibling->fPrevSibling = fPrevSibling;
- fPrevSibling->fNextSibling = fNextSibling;
- next = fNextSibling;
- }
-
- if (fParent->fFirstChild == this) {
- fParent->fFirstChild = next;
- }
-
- fParent = fNextSibling = fPrevSibling = nullptr;
-
- this->validate();
- this->unref();
-}
-
-void SkView::detachFromParent() {
- this->validate();
- SkView* parent = fParent;
-
- if (parent) {
- this->detachFromParent_NoLayout();
- }
-}
-
-SkView* SkView::attachChildToBack(SkView* child) {
- this->validate();
- SkASSERT(child != this);
-
- if (child == nullptr || fFirstChild == child)
- goto DONE;
-
- child->ref();
- child->detachFromParent_NoLayout();
-
- if (fFirstChild == nullptr) {
- child->fNextSibling = child;
- child->fPrevSibling = child;
- } else {
- child->fNextSibling = fFirstChild;
- child->fPrevSibling = fFirstChild->fPrevSibling;
- fFirstChild->fPrevSibling->fNextSibling = child;
- fFirstChild->fPrevSibling = child;
- }
-
- fFirstChild = child;
- child->fParent = this;
- child->inval(nullptr);
-
- this->validate();
-DONE:
- return child;
-}
-
-SkView* SkView::attachChildToFront(SkView* child) {
- this->validate();
- SkASSERT(child != this);
-
- if (child == nullptr || (fFirstChild && fFirstChild->fPrevSibling == child))
- goto DONE;
-
- child->ref();
- child->detachFromParent_NoLayout();
-
- if (fFirstChild == nullptr) {
- fFirstChild = child;
- child->fNextSibling = child;
- child->fPrevSibling = child;
- } else {
- child->fNextSibling = fFirstChild;
- child->fPrevSibling = fFirstChild->fPrevSibling;
- fFirstChild->fPrevSibling->fNextSibling = child;
- fFirstChild->fPrevSibling = child;
- }
-
- child->fParent = this;
- child->inval(nullptr);
-
- this->validate();
-DONE:
- return child;
-}
-
-void SkView::detachAllChildren() {
- this->validate();
- while (fFirstChild)
- fFirstChild->detachFromParent_NoLayout();
-}
-
-void SkView::localToGlobal(SkMatrix* matrix) const {
- if (matrix) {
- matrix->reset();
- const SkView* view = this;
- while (view)
- {
- matrix->preConcat(view->getLocalMatrix());
- matrix->preTranslate(-view->fLoc.fX, -view->fLoc.fY);
- view = view->fParent;
- }
- }
-}
-
-bool SkView::globalToLocal(SkScalar x, SkScalar y, SkPoint* local) const {
- if (local) {
- SkMatrix m;
- this->localToGlobal(&m);
- if (!m.invert(&m)) {
- return false;
- }
- SkPoint p;
- m.mapXY(x, y, &p);
- local->set(p.fX, p.fY);
- }
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////
-
-/* Even if the subclass overrides onInflate, they should always be
- sure to call the inherited method, so that we get called.
-*/
-void SkView::onInflate(const SkDOM& dom, const SkDOM::Node* node) {
- SkScalar x, y;
-
- x = this->locX();
- y = this->locY();
- (void)dom.findScalar(node, "x", &x);
- (void)dom.findScalar(node, "y", &y);
- this->setLoc(x, y);
-
- x = this->width();
- y = this->height();
- (void)dom.findScalar(node, "width", &x);
- (void)dom.findScalar(node, "height", &y);
- this->setSize(x, y);
-
- // inflate the flags
-
- static const char* gFlagNames[] = {
- "visible", "enabled", "focusable", "flexH", "flexV"
- };
- SkASSERT(SK_ARRAY_COUNT(gFlagNames) == kFlagShiftCount);
-
- bool b;
- uint32_t flags = this->getFlags();
- for (unsigned i = 0; i < SK_ARRAY_COUNT(gFlagNames); i++) {
- if (dom.findBool(node, gFlagNames[i], &b)) {
- flags = SkSetClearShift(flags, b, i);
- }
- }
- this->setFlags(flags);
-}
-
-void SkView::inflate(const SkDOM& dom, const SkDOM::Node* node) {
- this->onInflate(dom, node);
-}
-
-//////////////////////////////////////////////////////////////////
-
-SkView* SkView::sendEventToParents(const SkEvent& evt) {
- SkView* parent = fParent;
-
- while (parent) {
- if (parent->doEvent(evt)) {
- return parent;
- }
- parent = parent->fParent;
- }
- return nullptr;
-}
-
-SkView* SkView::sendQueryToParents(SkEvent* evt) {
- SkView* parent = fParent;
-
- while (parent) {
- if (parent->doQuery(evt)) {
- return parent;
- }
- parent = parent->fParent;
- }
- return nullptr;
-}
-
-//////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////
-
-SkView::F2BIter::F2BIter(const SkView* parent) {
- fFirstChild = parent ? parent->fFirstChild : nullptr;
- fChild = fFirstChild ? fFirstChild->fPrevSibling : nullptr;
-}
-
-SkView* SkView::F2BIter::next() {
- SkView* curr = fChild;
-
- if (fChild) {
- if (fChild == fFirstChild) {
- fChild = nullptr;
- } else {
- fChild = fChild->fPrevSibling;
- }
- }
- return curr;
-}
-
-SkView::B2FIter::B2FIter(const SkView* parent) {
- fFirstChild = parent ? parent->fFirstChild : nullptr;
- fChild = fFirstChild;
-}
-
-SkView* SkView::B2FIter::next() {
- SkView* curr = fChild;
-
- if (fChild) {
- SkView* next = fChild->fNextSibling;
- if (next == fFirstChild)
- next = nullptr;
- fChild = next;
- }
- return curr;
-}
-
-//////////////////////////////////////////////////////////////////
-//////////////////////////////////////////////////////////////////
-
-#ifdef SK_DEBUG
-
-void SkView::validate() const {
-// SkASSERT(this->getRefCnt() > 0 && this->getRefCnt() < 100);
- if (fParent) {
- SkASSERT(fNextSibling);
- SkASSERT(fPrevSibling);
- } else {
- bool nextNull = nullptr == fNextSibling;
- bool prevNull = nullptr == fNextSibling;
- SkASSERT(nextNull == prevNull);
- }
-}
-
-static inline void show_if_nonzero(const char name[], SkScalar value) {
- if (value) {
- SkDebugf("%s=\"%g\"", name, value/65536.);
- }
-}
-
-static void tab(int level) {
- for (int i = 0; i < level; i++) {
- SkDebugf(" ");
- }
-}
-
-static void dumpview(const SkView* view, int level, bool recurse) {
- tab(level);
-
- SkDebugf("<view");
- show_if_nonzero(" x", view->locX());
- show_if_nonzero(" y", view->locY());
- show_if_nonzero(" width", view->width());
- show_if_nonzero(" height", view->height());
-
- if (recurse) {
- SkView::B2FIter iter(view);
- SkView* child;
- bool noChildren = true;
-
- while ((child = iter.next()) != nullptr) {
- if (noChildren) {
- SkDebugf(">\n");
- }
- noChildren = false;
- dumpview(child, level + 1, true);
- }
-
- if (!noChildren) {
- tab(level);
- SkDebugf("</view>\n");
- } else {
- goto ONELINER;
- }
- } else {
- ONELINER:
- SkDebugf(" />\n");
- }
-}
-
-void SkView::dump(bool recurse) const {
- dumpview(this, 0, recurse);
-}
-
-#endif
diff --git a/tools/viewer/SampleSlide.cpp b/tools/viewer/SampleSlide.cpp
index 45cdc93820..7c6fe11fea 100644
--- a/tools/viewer/SampleSlide.cpp
+++ b/tools/viewer/SampleSlide.cpp
@@ -9,6 +9,7 @@
#include "SkCanvas.h"
#include "SkCommonFlags.h"
+#include "SkKey.h"
#include "SkOSFile.h"
#include "SkStream.h"