| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2008 The Android Open Source Project | 2 * Copyright 2008 The Android Open Source Project |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license that can be | 4 * Use of this source code is governed by a BSD-style license that can be |
| 5 * found in the LICENSE file. | 5 * found in the LICENSE file. |
| 6 */ | 6 */ |
| 7 | 7 |
| 8 #include "SkBitmapDevice.h" | 8 #include "SkBitmapDevice.h" |
| 9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" |
| 10 #include "SkCanvasPriv.h" | 10 #include "SkCanvasPriv.h" |
| (...skipping 2354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2365 // Once we can filter and the filter will return a result larger than itself
, we should be | 2365 // Once we can filter and the filter will return a result larger than itself
, we should be |
| 2366 // able to remove this constraint. | 2366 // able to remove this constraint. |
| 2367 // skbug.com/4526 | 2367 // skbug.com/4526 |
| 2368 // | 2368 // |
| 2369 SkPoint pt; | 2369 SkPoint pt; |
| 2370 ctm.mapXY(x, y, &pt); | 2370 ctm.mapXY(x, y, &pt); |
| 2371 SkIRect ir = SkIRect::MakeXYWH(SkScalarRoundToInt(pt.x()), SkScalarRoundToIn
t(pt.y()), w, h); | 2371 SkIRect ir = SkIRect::MakeXYWH(SkScalarRoundToInt(pt.x()), SkScalarRoundToIn
t(pt.y()), w, h); |
| 2372 return ir.contains(fMCRec->fRasterClip.getBounds()); | 2372 return ir.contains(fMCRec->fRasterClip.getBounds()); |
| 2373 } | 2373 } |
| 2374 | 2374 |
| 2375 class TestPinImage { |
| 2376 public: |
| 2377 TestPinImage(SkCanvas* canvas, const SkImage* image) { |
| 2378 if ((fCtx = canvas->getGrContext()) != nullptr) { |
| 2379 fImage = image; |
| 2380 image->pinAsTexture(fCtx); |
| 2381 } |
| 2382 } |
| 2383 ~TestPinImage() { |
| 2384 if (fImage) { |
| 2385 fImage->unpinAsTexture(fCtx); |
| 2386 } |
| 2387 } |
| 2388 GrContext* fCtx; |
| 2389 const SkImage* fImage = nullptr; |
| 2390 }; |
| 2391 |
| 2375 void SkCanvas::onDrawImage(const SkImage* image, SkScalar x, SkScalar y, const S
kPaint* paint) { | 2392 void SkCanvas::onDrawImage(const SkImage* image, SkScalar x, SkScalar y, const S
kPaint* paint) { |
| 2393 TestPinImage test(this, image); |
| 2394 |
| 2376 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawImage()"); | 2395 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawImage()"); |
| 2377 SkRect bounds = SkRect::MakeXYWH(x, y, | 2396 SkRect bounds = SkRect::MakeXYWH(x, y, |
| 2378 SkIntToScalar(image->width()), SkIntToScala
r(image->height())); | 2397 SkIntToScalar(image->width()), SkIntToScala
r(image->height())); |
| 2379 if (nullptr == paint || paint->canComputeFastBounds()) { | 2398 if (nullptr == paint || paint->canComputeFastBounds()) { |
| 2380 SkRect tmp = bounds; | 2399 SkRect tmp = bounds; |
| 2381 if (paint) { | 2400 if (paint) { |
| 2382 paint->computeFastBounds(tmp, &tmp); | 2401 paint->computeFastBounds(tmp, &tmp); |
| 2383 } | 2402 } |
| 2384 if (this->quickReject(tmp)) { | 2403 if (this->quickReject(tmp)) { |
| 2385 return; | 2404 return; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2437 | 2456 |
| 2438 while (iter.next()) { | 2457 while (iter.next()) { |
| 2439 iter.fDevice->drawImageLattice(iter, image, lattice, dst, looper.paint()
); | 2458 iter.fDevice->drawImageLattice(iter, image, lattice, dst, looper.paint()
); |
| 2440 } | 2459 } |
| 2441 | 2460 |
| 2442 LOOPER_END | 2461 LOOPER_END |
| 2443 } | 2462 } |
| 2444 | 2463 |
| 2445 void SkCanvas::onDrawImageRect(const SkImage* image, const SkRect* src, const Sk
Rect& dst, | 2464 void SkCanvas::onDrawImageRect(const SkImage* image, const SkRect* src, const Sk
Rect& dst, |
| 2446 const SkPaint* paint, SrcRectConstraint constrain
t) { | 2465 const SkPaint* paint, SrcRectConstraint constrain
t) { |
| 2466 TestPinImage test(this, image); |
| 2467 |
| 2447 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawImageRect()"); | 2468 TRACE_EVENT0("disabled-by-default-skia", "SkCanvas::drawImageRect()"); |
| 2448 if (nullptr == paint || paint->canComputeFastBounds()) { | 2469 if (nullptr == paint || paint->canComputeFastBounds()) { |
| 2449 SkRect storage = dst; | 2470 SkRect storage = dst; |
| 2450 if (paint) { | 2471 if (paint) { |
| 2451 paint->computeFastBounds(dst, &storage); | 2472 paint->computeFastBounds(dst, &storage); |
| 2452 } | 2473 } |
| 2453 if (this->quickReject(storage)) { | 2474 if (this->quickReject(storage)) { |
| 2454 return; | 2475 return; |
| 2455 } | 2476 } |
| 2456 } | 2477 } |
| (...skipping 902 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3359 | 3380 |
| 3360 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { | 3381 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { |
| 3361 fCanvas->restoreToCount(fSaveCount); | 3382 fCanvas->restoreToCount(fSaveCount); |
| 3362 } | 3383 } |
| 3363 | 3384 |
| 3364 #ifdef SK_SUPPORT_LEGACY_NEW_SURFACE_API | 3385 #ifdef SK_SUPPORT_LEGACY_NEW_SURFACE_API |
| 3365 SkSurface* SkCanvas::newSurface(const SkImageInfo& info, const SkSurfaceProps* p
rops) { | 3386 SkSurface* SkCanvas::newSurface(const SkImageInfo& info, const SkSurfaceProps* p
rops) { |
| 3366 return this->makeSurface(info, props).release(); | 3387 return this->makeSurface(info, props).release(); |
| 3367 } | 3388 } |
| 3368 #endif | 3389 #endif |
| OLD | NEW |