Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Side by Side Diff: samplecode/SamplePatch.cpp

Issue 441373002: fix hittest in Patch sample (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #include "SampleCode.h" 8 #include "SampleCode.h"
9 #include "SkView.h" 9 #include "SkView.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 211
212 patch->draw(canvas, paint, 10, 10, false, false); 212 patch->draw(canvas, paint, 10, 10, false, false);
213 canvas->translate(SkIntToScalar(180), 0); 213 canvas->translate(SkIntToScalar(180), 0);
214 patch->draw(canvas, paint, 10, 10, true, false); 214 patch->draw(canvas, paint, 10, 10, true, false);
215 canvas->translate(SkIntToScalar(180), 0); 215 canvas->translate(SkIntToScalar(180), 0);
216 patch->draw(canvas, paint, 10, 10, false, true); 216 patch->draw(canvas, paint, 10, 10, false, true);
217 canvas->translate(SkIntToScalar(180), 0); 217 canvas->translate(SkIntToScalar(180), 0);
218 patch->draw(canvas, paint, 10, 10, true, true); 218 patch->draw(canvas, paint, 10, 10, true, true);
219 } 219 }
220 220
221 const SkScalar DX = 20;
222 const SkScalar DY = 0;
223
221 class PatchView : public SampleView { 224 class PatchView : public SampleView {
222 SkShader* fShader0; 225 SkShader* fShader0;
223 SkShader* fShader1; 226 SkShader* fShader1;
224 SkIPoint fSize0, fSize1; 227 SkIPoint fSize0, fSize1;
225 SkPoint fPts[12]; 228 SkPoint fPts[12];
226 229
227 public: 230 public:
228 PatchView() { 231 PatchView() {
229 fShader0 = make_shader0(&fSize0); 232 fShader0 = make_shader0(&fSize0);
230 fSize1 = fSize0; 233 fSize1 = fSize0;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
264 return true; 267 return true;
265 } 268 }
266 return this->INHERITED::onQuery(evt); 269 return this->INHERITED::onQuery(evt);
267 } 270 }
268 271
269 virtual void onDrawContent(SkCanvas* canvas) { 272 virtual void onDrawContent(SkCanvas* canvas) {
270 SkPaint paint; 273 SkPaint paint;
271 paint.setDither(true); 274 paint.setDither(true);
272 paint.setFilterLevel(SkPaint::kLow_FilterLevel); 275 paint.setFilterLevel(SkPaint::kLow_FilterLevel);
273 276
274 canvas->translate(SkIntToScalar(20), 0); 277 canvas->translate(DX, DY);
275 278
276 Patch patch; 279 Patch patch;
277 280
278 paint.setShader(fShader0); 281 paint.setShader(fShader0);
279 if (fSize0.fX == 0) { 282 if (fSize0.fX == 0) {
280 fSize0.fX = 1; 283 fSize0.fX = 1;
281 } 284 }
282 if (fSize0.fY == 0) { 285 if (fSize0.fY == 0) {
283 fSize0.fY = 1; 286 fSize0.fY = 1;
284 } 287 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 int fIndex; 323 int fIndex;
321 PtClick(SkView* view, int index) : Click(view), fIndex(index) {} 324 PtClick(SkView* view, int index) : Click(view), fIndex(index) {}
322 }; 325 };
323 326
324 static bool hittest(const SkPoint& pt, SkScalar x, SkScalar y) { 327 static bool hittest(const SkPoint& pt, SkScalar x, SkScalar y) {
325 return SkPoint::Length(pt.fX - x, pt.fY - y) < SkIntToScalar(5); 328 return SkPoint::Length(pt.fX - x, pt.fY - y) < SkIntToScalar(5);
326 } 329 }
327 330
328 virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, 331 virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y,
329 unsigned modi) SK_OVERRIDE { 332 unsigned modi) SK_OVERRIDE {
333 x -= DX;
334 y -= DY;
330 for (size_t i = 0; i < SK_ARRAY_COUNT(fPts); i++) { 335 for (size_t i = 0; i < SK_ARRAY_COUNT(fPts); i++) {
331 if (hittest(fPts[i], x, y)) { 336 if (hittest(fPts[i], x, y)) {
332 return new PtClick(this, (int)i); 337 return new PtClick(this, (int)i);
333 } 338 }
334 } 339 }
335 return this->INHERITED::onFindClickHandler(x, y, modi); 340 return this->INHERITED::onFindClickHandler(x, y, modi);
336 } 341 }
337 342
338 virtual bool onClick(Click* click) { 343 virtual bool onClick(Click* click) {
339 fPts[((PtClick*)click)->fIndex].set(click->fCurr.fX, click->fCurr.fY); 344 fPts[((PtClick*)click)->fIndex].set(click->fCurr.fX - DX, click->fCurr.f Y - DY);
340 this->inval(NULL); 345 this->inval(NULL);
341 return true; 346 return true;
342 } 347 }
343 348
344 private: 349 private:
345 typedef SampleView INHERITED; 350 typedef SampleView INHERITED;
346 }; 351 };
347 352
348 ////////////////////////////////////////////////////////////////////////////// 353 //////////////////////////////////////////////////////////////////////////////
349 354
350 static SkView* MyFactory() { return new PatchView; } 355 static SkView* MyFactory() { return new PatchView; }
351 static SkViewRegister reg(MyFactory); 356 static SkViewRegister reg(MyFactory);
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698