| 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 "SkCanvas.h" | 8 #include "SkCanvas.h" |
| 9 #include "SkCanvasPriv.h" | 9 #include "SkCanvasPriv.h" |
| 10 #include "SkBitmapDevice.h" | 10 #include "SkBitmapDevice.h" |
| (...skipping 2726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2737 SkAutoCanvasMatrixPaint acmp(this, matrix, paint, picture->cullRect(
)); | 2737 SkAutoCanvasMatrixPaint acmp(this, matrix, paint, picture->cullRect(
)); |
| 2738 picture->playback(this); | 2738 picture->playback(this); |
| 2739 } else { | 2739 } else { |
| 2740 this->onDrawPicture(picture, matrix, paint); | 2740 this->onDrawPicture(picture, matrix, paint); |
| 2741 } | 2741 } |
| 2742 } | 2742 } |
| 2743 } | 2743 } |
| 2744 | 2744 |
| 2745 void SkCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, | 2745 void SkCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, |
| 2746 const SkPaint* paint) { | 2746 const SkPaint* paint) { |
| 2747 if (!paint || paint->canComputeFastBounds()) { | |
| 2748 SkRect bounds = picture->cullRect(); | |
| 2749 if (paint) { | |
| 2750 paint->computeFastBounds(bounds, &bounds); | |
| 2751 } | |
| 2752 if (matrix) { | |
| 2753 matrix->mapRect(&bounds); | |
| 2754 } | |
| 2755 if (this->quickReject(bounds)) { | |
| 2756 return; | |
| 2757 } | |
| 2758 } | |
| 2759 | |
| 2760 SkBaseDevice* device = this->getTopDevice(); | 2747 SkBaseDevice* device = this->getTopDevice(); |
| 2761 if (device) { | 2748 if (device) { |
| 2762 // Canvas has to first give the device the opportunity to render | 2749 // Canvas has to first give the device the opportunity to render |
| 2763 // the picture itself. | 2750 // the picture itself. |
| 2764 if (device->EXPERIMENTAL_drawPicture(this, picture, matrix, paint)) { | 2751 if (device->EXPERIMENTAL_drawPicture(this, picture, matrix, paint)) { |
| 2765 return; // the device has rendered the entire picture | 2752 return; // the device has rendered the entire picture |
| 2766 } | 2753 } |
| 2767 } | 2754 } |
| 2768 | 2755 |
| 2769 SkAutoCanvasMatrixPaint acmp(this, matrix, paint, picture->cullRect()); | 2756 SkAutoCanvasMatrixPaint acmp(this, matrix, paint, picture->cullRect()); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2867 } | 2854 } |
| 2868 | 2855 |
| 2869 if (matrix) { | 2856 if (matrix) { |
| 2870 canvas->concat(*matrix); | 2857 canvas->concat(*matrix); |
| 2871 } | 2858 } |
| 2872 } | 2859 } |
| 2873 | 2860 |
| 2874 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { | 2861 SkAutoCanvasMatrixPaint::~SkAutoCanvasMatrixPaint() { |
| 2875 fCanvas->restoreToCount(fSaveCount); | 2862 fCanvas->restoreToCount(fSaveCount); |
| 2876 } | 2863 } |
| OLD | NEW |