diff options
author | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-01-08 16:17:50 +0000 |
---|---|---|
committer | reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2013-01-08 16:17:50 +0000 |
commit | 4d5c26de0a24f86c37c1da8b0e30d11a550ea67b (patch) | |
tree | ae6412d266668e9f7ca91e9ef56d65ddb3b6e9ac /samplecode | |
parent | 9aaf36de60c2a2e7a6b441bb7db9521a4fd59e08 (diff) |
pass modifier keys to click events (e.g. control | shift etc.)
Review URL: https://codereview.appspot.com/7062054
git-svn-id: http://skia.googlecode.com/svn/trunk@7082 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode')
-rw-r--r-- | samplecode/SampleAll.cpp | 4 | ||||
-rw-r--r-- | samplecode/SampleApp.cpp | 64 | ||||
-rw-r--r-- | samplecode/SampleApp.h | 34 | ||||
-rw-r--r-- | samplecode/SampleArc.cpp | 5 | ||||
-rw-r--r-- | samplecode/SampleCode.h | 10 | ||||
-rw-r--r-- | samplecode/SampleConcavePaths.cpp | 5 | ||||
-rw-r--r-- | samplecode/SampleEncode.cpp | 5 | ||||
-rw-r--r-- | samplecode/SampleHairline.cpp | 5 | ||||
-rw-r--r-- | samplecode/SampleLayers.cpp | 5 | ||||
-rw-r--r-- | samplecode/SamplePatch.cpp | 5 | ||||
-rw-r--r-- | samplecode/SamplePath.cpp | 4 | ||||
-rw-r--r-- | samplecode/SampleRepeatTile.cpp | 4 | ||||
-rw-r--r-- | samplecode/SampleRotateCircles.cpp | 5 | ||||
-rw-r--r-- | samplecode/SampleShaders.cpp | 5 | ||||
-rw-r--r-- | samplecode/SampleStrokePath.cpp | 5 | ||||
-rw-r--r-- | samplecode/SampleText.cpp | 5 | ||||
-rw-r--r-- | samplecode/SampleTextOnPath.cpp | 4 |
17 files changed, 123 insertions, 51 deletions
diff --git a/samplecode/SampleAll.cpp b/samplecode/SampleAll.cpp index 662d561033..e783d3d414 100644 --- a/samplecode/SampleAll.cpp +++ b/samplecode/SampleAll.cpp @@ -530,10 +530,10 @@ protected: SkCornerPathEffect.h:28:class SkCornerPathEffect : public SkPathEffect { */ - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) { fClickPt.set(x, y); this->inval(NULL); - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } SkPathEffect* pathEffectTest() { diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp index 716998f960..b2789bce22 100644 --- a/samplecode/SampleApp.cpp +++ b/samplecode/SampleApp.cpp @@ -1955,7 +1955,7 @@ bool SampleWindow::onHandleKey(SkKey key) { static const char gGestureClickType[] = "GestureClickType"; bool SampleWindow::onDispatchClick(int x, int y, Click::State state, - void* owner) { + void* owner, unsigned modi) { if (Click::kMoved_State == state) { updatePointer(x, y); } @@ -1970,9 +1970,19 @@ bool SampleWindow::onDispatchClick(int x, int y, Click::State state, //it's only necessary to update the drawing if there's a click this->inval(NULL); return false; //prevent dragging while magnify is enabled - } - else { - return this->INHERITED::onDispatchClick(x, y, state, owner); + } else { + // capture control+option, and trigger debugger + if ((modi & kControl_SkModifierKey) && (modi & kOption_SkModifierKey)) { + if (Click::kDown_State == state) { + SkEvent evt("debug-hit-test"); + evt.setS32("debug-hit-test-x", x); + evt.setS32("debug-hit-test-y", y); + curr_view(this)->doEvent(evt); + } + return true; + } else { + return this->INHERITED::onDispatchClick(x, y, state, owner, modi); + } } } @@ -1987,7 +1997,8 @@ public: } }; -SkView::Click* SampleWindow::onFindClickHandler(SkScalar x, SkScalar y) { +SkView::Click* SampleWindow::onFindClickHandler(SkScalar x, SkScalar y, + unsigned modi) { return new GestureClick(this); } @@ -2234,11 +2245,21 @@ bool SampleView::onEvent(const SkEvent& evt) { fRepeatCount = evt.getFast32(); return true; } + int32_t pipeHolder; if (evt.findS32(set_use_pipe_tag, &pipeHolder)) { fPipeState = static_cast<SkOSMenu::TriState>(pipeHolder); return true; } + + if (evt.isType("debug-hit-test")) { + fDebugHitTest = true; + evt.findS32("debug-hit-test-x", &fDebugHitTestLoc.fX); + evt.findS32("debug-hit-test-y", &fDebugHitTestLoc.fY); + this->inval(NULL); + return true; + } + return this->INHERITED::onEvent(evt); } @@ -2347,13 +2368,46 @@ void SampleView::draw(SkCanvas* canvas) { writer.endRecording(); } } + +#include "SkBounder.h" + +class DebugHitTestBounder : public SkBounder { +public: + DebugHitTestBounder(int x, int y) { + fLoc.set(x, y); + } + + virtual bool onIRect(const SkIRect& bounds) SK_OVERRIDE { + if (bounds.contains(fLoc.x(), fLoc.y())) { + // + // Set a break-point here to see what was being drawn under + // the click point (just needed a line of code to stop the debugger) + // + bounds.centerX(); + } + return true; + } + +private: + SkIPoint fLoc; + typedef SkBounder INHERITED; +}; + void SampleView::onDraw(SkCanvas* canvas) { this->onDrawBackground(canvas); + DebugHitTestBounder bounder(fDebugHitTestLoc.x(), fDebugHitTestLoc.y()); + if (fDebugHitTest) { + canvas->setBounder(&bounder); + } + for (int i = 0; i < fRepeatCount; i++) { SkAutoCanvasRestore acr(canvas, true); this->onDrawContent(canvas); } + + fDebugHitTest = false; + canvas->setBounder(NULL); } void SampleView::onDrawBackground(SkCanvas* canvas) { diff --git a/samplecode/SampleApp.h b/samplecode/SampleApp.h index 2308a121ab..ecf552ce8b 100644 --- a/samplecode/SampleApp.h +++ b/samplecode/SampleApp.h @@ -119,22 +119,24 @@ public: DeviceType getDeviceType() const { return fDeviceType; } protected: - virtual void onDraw(SkCanvas* canvas); - virtual bool onHandleKey(SkKey key); - virtual bool onHandleChar(SkUnichar); - virtual void onSizeChange(); - - virtual SkCanvas* beforeChildren(SkCanvas*); - virtual void afterChildren(SkCanvas*); - virtual void beforeChild(SkView* child, SkCanvas* canvas); - virtual void afterChild(SkView* child, SkCanvas* canvas); - - virtual bool onEvent(const SkEvent& evt); - virtual bool onQuery(SkEvent* evt); - - virtual bool onDispatchClick(int x, int y, Click::State, void* owner); - virtual bool onClick(Click* click); - virtual Click* onFindClickHandler(SkScalar x, SkScalar y); + virtual void onDraw(SkCanvas* canvas) SK_OVERRIDE; + virtual bool onHandleKey(SkKey key) SK_OVERRIDE; + virtual bool onHandleChar(SkUnichar) SK_OVERRIDE; + virtual void onSizeChange() SK_OVERRIDE; + + virtual SkCanvas* beforeChildren(SkCanvas*) SK_OVERRIDE; + virtual void afterChildren(SkCanvas*) SK_OVERRIDE; + virtual void beforeChild(SkView* child, SkCanvas* canvas) SK_OVERRIDE; + virtual void afterChild(SkView* child, SkCanvas* canvas) SK_OVERRIDE; + + virtual bool onEvent(const SkEvent& evt) SK_OVERRIDE; + virtual bool onQuery(SkEvent* evt) SK_OVERRIDE; + + virtual bool onDispatchClick(int x, int y, Click::State, void* owner, + unsigned modi) SK_OVERRIDE; + virtual bool onClick(Click* click) SK_OVERRIDE; + virtual Click* onFindClickHandler(SkScalar x, SkScalar y, + unsigned modi) SK_OVERRIDE; void registerPictFileSamples(char** argv, int argc); void registerPictFileSample(char** argv, int argc); diff --git a/samplecode/SampleArc.cpp b/samplecode/SampleArc.cpp index a87d280604..3b6c8e99c9 100644 --- a/samplecode/SampleArc.cpp +++ b/samplecode/SampleArc.cpp @@ -168,10 +168,11 @@ protected: this->inval(NULL); } - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, + unsigned modi) { // fSweep += SK_Scalar1; this->inval(NULL); - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } virtual bool onClick(Click* click) { diff --git a/samplecode/SampleCode.h b/samplecode/SampleCode.h index 8bd5fbd98e..b5267870eb 100644 --- a/samplecode/SampleCode.h +++ b/samplecode/SampleCode.h @@ -107,8 +107,11 @@ private: class SampleView : public SkView { public: - SampleView() : fPipeState(SkOSMenu::kOffState), - fBGColor(SK_ColorWHITE), fRepeatCount(1) { + SampleView() + : fPipeState(SkOSMenu::kOffState) + , fBGColor(SK_ColorWHITE) + , fRepeatCount(1) + , fDebugHitTest(false) { } void setBGColor(SkColor color) { fBGColor = color; } @@ -142,6 +145,9 @@ protected: private: int fRepeatCount; + bool fDebugHitTest; + SkIPoint fDebugHitTestLoc; + typedef SkView INHERITED; }; diff --git a/samplecode/SampleConcavePaths.cpp b/samplecode/SampleConcavePaths.cpp index 549e9e2a1b..4677dbc924 100644 --- a/samplecode/SampleConcavePaths.cpp +++ b/samplecode/SampleConcavePaths.cpp @@ -137,9 +137,10 @@ protected: } } - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, + unsigned modi) { this->inval(NULL); - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } private: diff --git a/samplecode/SampleEncode.cpp b/samplecode/SampleEncode.cpp index afcde03f78..003c47a6ed 100644 --- a/samplecode/SampleEncode.cpp +++ b/samplecode/SampleEncode.cpp @@ -215,9 +215,10 @@ protected: } } - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, + unsigned modi) { this->inval(NULL); - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } private: diff --git a/samplecode/SampleHairline.cpp b/samplecode/SampleHairline.cpp index 28ed68f23d..1b16504ed3 100644 --- a/samplecode/SampleHairline.cpp +++ b/samplecode/SampleHairline.cpp @@ -261,10 +261,11 @@ protected: } } - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, + unsigned modi) { fDoAA = !fDoAA; this->inval(NULL); - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } diff --git a/samplecode/SampleLayers.cpp b/samplecode/SampleLayers.cpp index cf6b0090f4..03aa9fc8c5 100644 --- a/samplecode/SampleLayers.cpp +++ b/samplecode/SampleLayers.cpp @@ -249,10 +249,11 @@ protected: canvas->restore(); } - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, + unsigned modi) SK_OVERRIDE { this->inval(NULL); - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } virtual bool onClick(Click* click) { diff --git a/samplecode/SamplePatch.cpp b/samplecode/SamplePatch.cpp index 90aaf4cd3e..c656d7dcc8 100644 --- a/samplecode/SamplePatch.cpp +++ b/samplecode/SamplePatch.cpp @@ -310,13 +310,14 @@ protected: return SkPoint::Length(pt.fX - x, pt.fY - y) < SkIntToScalar(5); } - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, + unsigned modi) SK_OVERRIDE { for (size_t i = 0; i < SK_ARRAY_COUNT(fPts); i++) { if (hittest(fPts[i], x, y)) { return new PtClick(this, i); } } - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } virtual bool onClick(Click* click) { diff --git a/samplecode/SamplePath.cpp b/samplecode/SamplePath.cpp index b07307a9b3..80e307b471 100644 --- a/samplecode/SamplePath.cpp +++ b/samplecode/SamplePath.cpp @@ -202,10 +202,10 @@ protected: this->inval(NULL); } - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) SK_OVERRIDE { fShowHairline = !fShowHairline; this->inval(NULL); - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } private: diff --git a/samplecode/SampleRepeatTile.cpp b/samplecode/SampleRepeatTile.cpp index 54c79effbb..357ab6300b 100644 --- a/samplecode/SampleRepeatTile.cpp +++ b/samplecode/SampleRepeatTile.cpp @@ -67,10 +67,10 @@ protected: canvas->drawPaint(paint); } - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) SK_OVERRIDE { this->inval(NULL); - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } virtual bool onClick(Click* click) { diff --git a/samplecode/SampleRotateCircles.cpp b/samplecode/SampleRotateCircles.cpp index 5bac6cf127..d16d07f72c 100644 --- a/samplecode/SampleRotateCircles.cpp +++ b/samplecode/SampleRotateCircles.cpp @@ -329,13 +329,14 @@ protected: MyClick(SkView* target, int index) : Click(target), fIndex(index) {} }; - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, + unsigned modi) SK_OVERRIDE { for (size_t i = 0; i < SK_ARRAY_COUNT(fPts); ++i) { if (hittest(fPts[i], x, y)) { return new MyClick(this, i); } } - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } virtual bool onClick(Click* click) { diff --git a/samplecode/SampleShaders.cpp b/samplecode/SampleShaders.cpp index 78b63a3938..5c28fd5701 100644 --- a/samplecode/SampleShaders.cpp +++ b/samplecode/SampleShaders.cpp @@ -121,9 +121,10 @@ protected: canvas->drawRect(r, paint); } - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, + unsigned modi) SK_OVERRIDE { this->inval(NULL); - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } virtual bool onClick(Click* click) { diff --git a/samplecode/SampleStrokePath.cpp b/samplecode/SampleStrokePath.cpp index ca5135d1f8..3bc0a127a3 100644 --- a/samplecode/SampleStrokePath.cpp +++ b/samplecode/SampleStrokePath.cpp @@ -209,9 +209,10 @@ protected: drawSet(canvas, &paint); } - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, + unsigned modi) SK_OVERRIDE { this->inval(NULL); - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } private: typedef SampleView INHERITED; diff --git a/samplecode/SampleText.cpp b/samplecode/SampleText.cpp index 26c122d875..20673eed21 100644 --- a/samplecode/SampleText.cpp +++ b/samplecode/SampleText.cpp @@ -305,10 +305,11 @@ protected: } } - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, + unsigned modi) SK_OVERRIDE { fClickX = x; this->inval(NULL); - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } virtual bool onClick(Click* click) { diff --git a/samplecode/SampleTextOnPath.cpp b/samplecode/SampleTextOnPath.cpp index 976f3c8ca9..2337a08d1d 100644 --- a/samplecode/SampleTextOnPath.cpp +++ b/samplecode/SampleTextOnPath.cpp @@ -150,10 +150,10 @@ protected: this->inval(NULL); } - virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y) { + virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) SK_OVERRIDE { fHints += 1; this->inval(NULL); - return this->INHERITED::onFindClickHandler(x, y); + return this->INHERITED::onFindClickHandler(x, y, modi); } virtual bool onClick(Click* click) { |