| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2013 Google Inc. | 3 * Copyright 2013 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 | 8 |
| 9 #include "SkDeferredCanvas.h" | 9 #include "SkDeferredCanvas.h" |
| 10 | 10 |
| (...skipping 848 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 859 void SkDeferredCanvas::drawBitmapNine(const SkBitmap& bitmap, | 859 void SkDeferredCanvas::drawBitmapNine(const SkBitmap& bitmap, |
| 860 const SkIRect& center, const SkRect& dst, | 860 const SkIRect& center, const SkRect& dst, |
| 861 const SkPaint* paint) { | 861 const SkPaint* paint) { |
| 862 // TODO: reset recording canvas if paint+bitmap is opaque and clip rect | 862 // TODO: reset recording canvas if paint+bitmap is opaque and clip rect |
| 863 // covers canvas entirely and dst covers canvas entirely | 863 // covers canvas entirely and dst covers canvas entirely |
| 864 AutoImmediateDrawIfNeeded autoDraw(*this, &bitmap, paint); | 864 AutoImmediateDrawIfNeeded autoDraw(*this, &bitmap, paint); |
| 865 this->drawingCanvas()->drawBitmapNine(bitmap, center, dst, paint); | 865 this->drawingCanvas()->drawBitmapNine(bitmap, center, dst, paint); |
| 866 this->recordedDrawCommand(); | 866 this->recordedDrawCommand(); |
| 867 } | 867 } |
| 868 | 868 |
| 869 void SkDeferredCanvas::drawImage(const SkImage* image, SkScalar left, SkScalar t
op, |
| 870 const SkPaint* paint) { |
| 871 SkRect imageRect = SkRect::MakeXYWH(left, top, |
| 872 SkIntToScalar(image->width()), SkIntToScalar(image->height())); |
| 873 bool isImageOpaque = image->isOpaque(); |
| 874 SkPaintBitmapOpacity pct = isImageOpaque |
| 875 ? kOpaque_SkPaintBitmapOpacity : kUnknown_SkPaintBitmapOpacity; |
| 876 |
| 877 if (fDeferredDrawing && |
| 878 this->isFullFrame(&imageRect, paint) && |
| 879 (isImageOpaque ||isPaintOpaque(paint, pct))) { |
| 880 this->getDeferredDevice()->skipPendingCommands(); |
| 881 } |
| 882 |
| 883 AutoImmediateDrawIfNeeded autoDraw(*this, paint); |
| 884 this->drawingCanvas()->drawImage(image, left, top, paint); |
| 885 this->recordedDrawCommand(); |
| 886 } |
| 887 |
| 888 void SkDeferredCanvas::drawImageRect(const SkImage* image, const SkRect* src, |
| 889 const SkRect& dst, |
| 890 const SkPaint* paint) { |
| 891 bool isImageOpaque = image->isOpaque(); |
| 892 SkPaintBitmapOpacity pct = isImageOpaque |
| 893 ? kOpaque_SkPaintBitmapOpacity : kUnknown_SkPaintBitmapOpacity; |
| 894 |
| 895 if (fDeferredDrawing && |
| 896 this->isFullFrame(&dst, paint) && |
| 897 (isImageOpaque || isPaintOpaque(paint, pct))) { |
| 898 this->getDeferredDevice()->skipPendingCommands(); |
| 899 } |
| 900 |
| 901 AutoImmediateDrawIfNeeded autoDraw(*this, paint); |
| 902 this->drawingCanvas()->drawImageRect(image, src, dst, paint); |
| 903 this->recordedDrawCommand(); |
| 904 } |
| 905 |
| 869 void SkDeferredCanvas::drawSprite(const SkBitmap& bitmap, int left, int top, | 906 void SkDeferredCanvas::drawSprite(const SkBitmap& bitmap, int left, int top, |
| 870 const SkPaint* paint) { | 907 const SkPaint* paint) { |
| 871 SkRect bitmapRect = SkRect::MakeXYWH( | 908 SkRect bitmapRect = SkRect::MakeXYWH( |
| 872 SkIntToScalar(left), | 909 SkIntToScalar(left), |
| 873 SkIntToScalar(top), | 910 SkIntToScalar(top), |
| 874 SkIntToScalar(bitmap.width()), | 911 SkIntToScalar(bitmap.width()), |
| 875 SkIntToScalar(bitmap.height())); | 912 SkIntToScalar(bitmap.height())); |
| 876 if (fDeferredDrawing && | 913 if (fDeferredDrawing && |
| 877 this->isFullFrame(&bitmapRect, paint) && | 914 this->isFullFrame(&bitmapRect, paint) && |
| 878 isPaintOpaque(paint, &bitmap)) { | 915 isPaintOpaque(paint, &bitmap)) { |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 948 SkDrawFilter* SkDeferredCanvas::setDrawFilter(SkDrawFilter* filter) { | 985 SkDrawFilter* SkDeferredCanvas::setDrawFilter(SkDrawFilter* filter) { |
| 949 this->drawingCanvas()->setDrawFilter(filter); | 986 this->drawingCanvas()->setDrawFilter(filter); |
| 950 this->INHERITED::setDrawFilter(filter); | 987 this->INHERITED::setDrawFilter(filter); |
| 951 this->recordedDrawCommand(); | 988 this->recordedDrawCommand(); |
| 952 return filter; | 989 return filter; |
| 953 } | 990 } |
| 954 | 991 |
| 955 SkCanvas* SkDeferredCanvas::canvasForDrawIter() { | 992 SkCanvas* SkDeferredCanvas::canvasForDrawIter() { |
| 956 return this->drawingCanvas(); | 993 return this->drawingCanvas(); |
| 957 } | 994 } |
| OLD | NEW |