aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode
diff options
context:
space:
mode:
authorGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-01-08 16:17:50 +0000
committerGravatar reed@google.com <reed@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-01-08 16:17:50 +0000
commit4d5c26de0a24f86c37c1da8b0e30d11a550ea67b (patch)
treeae6412d266668e9f7ca91e9ef56d65ddb3b6e9ac /samplecode
parent9aaf36de60c2a2e7a6b441bb7db9521a4fd59e08 (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.cpp4
-rw-r--r--samplecode/SampleApp.cpp64
-rw-r--r--samplecode/SampleApp.h34
-rw-r--r--samplecode/SampleArc.cpp5
-rw-r--r--samplecode/SampleCode.h10
-rw-r--r--samplecode/SampleConcavePaths.cpp5
-rw-r--r--samplecode/SampleEncode.cpp5
-rw-r--r--samplecode/SampleHairline.cpp5
-rw-r--r--samplecode/SampleLayers.cpp5
-rw-r--r--samplecode/SamplePatch.cpp5
-rw-r--r--samplecode/SamplePath.cpp4
-rw-r--r--samplecode/SampleRepeatTile.cpp4
-rw-r--r--samplecode/SampleRotateCircles.cpp5
-rw-r--r--samplecode/SampleShaders.cpp5
-rw-r--r--samplecode/SampleStrokePath.cpp5
-rw-r--r--samplecode/SampleText.cpp5
-rw-r--r--samplecode/SampleTextOnPath.cpp4
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) {