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 736 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
747 this->INHERITED::onClipPath(path, op, edgeStyle); | 747 this->INHERITED::onClipPath(path, op, edgeStyle); |
748 this->recordedDrawCommand(); | 748 this->recordedDrawCommand(); |
749 } | 749 } |
750 | 750 |
751 void SkDeferredCanvas::onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op)
{ | 751 void SkDeferredCanvas::onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op)
{ |
752 this->drawingCanvas()->clipRegion(deviceRgn, op); | 752 this->drawingCanvas()->clipRegion(deviceRgn, op); |
753 this->INHERITED::onClipRegion(deviceRgn, op); | 753 this->INHERITED::onClipRegion(deviceRgn, op); |
754 this->recordedDrawCommand(); | 754 this->recordedDrawCommand(); |
755 } | 755 } |
756 | 756 |
757 void SkDeferredCanvas::onDrawPaint(const SkPaint& paint) { | 757 void SkDeferredCanvas::drawPaint(const SkPaint& paint) { |
758 if (fDeferredDrawing && this->isFullFrame(NULL, &paint) && | 758 if (fDeferredDrawing && this->isFullFrame(NULL, &paint) && |
759 isPaintOpaque(&paint)) { | 759 isPaintOpaque(&paint)) { |
760 this->getDeferredDevice()->skipPendingCommands(); | 760 this->getDeferredDevice()->skipPendingCommands(); |
761 } | 761 } |
762 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); | 762 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); |
763 this->drawingCanvas()->drawPaint(paint); | 763 this->drawingCanvas()->drawPaint(paint); |
764 this->recordedDrawCommand(); | 764 this->recordedDrawCommand(); |
765 } | 765 } |
766 | 766 |
767 void SkDeferredCanvas::onDrawPoints(PointMode mode, size_t count, | 767 void SkDeferredCanvas::drawPoints(PointMode mode, size_t count, |
768 const SkPoint pts[], const SkPaint& paint) { | 768 const SkPoint pts[], const SkPaint& paint) { |
769 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); | 769 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); |
770 this->drawingCanvas()->drawPoints(mode, count, pts, paint); | 770 this->drawingCanvas()->drawPoints(mode, count, pts, paint); |
771 this->recordedDrawCommand(); | 771 this->recordedDrawCommand(); |
772 } | 772 } |
773 | 773 |
774 void SkDeferredCanvas::onDrawOval(const SkRect& rect, const SkPaint& paint) { | 774 void SkDeferredCanvas::drawOval(const SkRect& rect, const SkPaint& paint) { |
775 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); | 775 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); |
776 this->drawingCanvas()->drawOval(rect, paint); | 776 this->drawingCanvas()->drawOval(rect, paint); |
777 this->recordedDrawCommand(); | 777 this->recordedDrawCommand(); |
778 } | 778 } |
779 | 779 |
780 void SkDeferredCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) { | 780 void SkDeferredCanvas::drawRect(const SkRect& rect, const SkPaint& paint) { |
781 if (fDeferredDrawing && this->isFullFrame(&rect, &paint) && | 781 if (fDeferredDrawing && this->isFullFrame(&rect, &paint) && |
782 isPaintOpaque(&paint)) { | 782 isPaintOpaque(&paint)) { |
783 this->getDeferredDevice()->skipPendingCommands(); | 783 this->getDeferredDevice()->skipPendingCommands(); |
784 } | 784 } |
785 | 785 |
786 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); | 786 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); |
787 this->drawingCanvas()->drawRect(rect, paint); | 787 this->drawingCanvas()->drawRect(rect, paint); |
788 this->recordedDrawCommand(); | 788 this->recordedDrawCommand(); |
789 } | 789 } |
790 | 790 |
791 void SkDeferredCanvas::onDrawRRect(const SkRRect& rrect, const SkPaint& paint) { | 791 void SkDeferredCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) { |
792 if (rrect.isRect()) { | 792 if (rrect.isRect()) { |
793 this->SkDeferredCanvas::drawRect(rrect.getBounds(), paint); | 793 this->SkDeferredCanvas::drawRect(rrect.getBounds(), paint); |
794 } else if (rrect.isOval()) { | 794 } else if (rrect.isOval()) { |
795 this->SkDeferredCanvas::drawOval(rrect.getBounds(), paint); | 795 this->SkDeferredCanvas::drawOval(rrect.getBounds(), paint); |
796 } else { | 796 } else { |
797 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); | 797 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); |
798 this->drawingCanvas()->drawRRect(rrect, paint); | 798 this->drawingCanvas()->drawRRect(rrect, paint); |
799 this->recordedDrawCommand(); | 799 this->recordedDrawCommand(); |
800 } | 800 } |
801 } | 801 } |
802 | 802 |
803 void SkDeferredCanvas::onDrawDRRect(const SkRRect& outer, const SkRRect& inner, | 803 void SkDeferredCanvas::onDrawDRRect(const SkRRect& outer, const SkRRect& inner, |
804 const SkPaint& paint) { | 804 const SkPaint& paint) { |
805 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); | 805 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); |
806 this->drawingCanvas()->drawDRRect(outer, inner, paint); | 806 this->drawingCanvas()->drawDRRect(outer, inner, paint); |
807 this->recordedDrawCommand(); | 807 this->recordedDrawCommand(); |
808 } | 808 } |
809 | 809 |
810 void SkDeferredCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) { | 810 void SkDeferredCanvas::drawPath(const SkPath& path, const SkPaint& paint) { |
811 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); | 811 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); |
812 this->drawingCanvas()->drawPath(path, paint); | 812 this->drawingCanvas()->drawPath(path, paint); |
813 this->recordedDrawCommand(); | 813 this->recordedDrawCommand(); |
814 } | 814 } |
815 | 815 |
816 void SkDeferredCanvas::onDrawBitmap(const SkBitmap& bitmap, SkScalar left, | 816 void SkDeferredCanvas::drawBitmap(const SkBitmap& bitmap, SkScalar left, |
817 SkScalar top, const SkPaint* paint) { | 817 SkScalar top, const SkPaint* paint) { |
818 SkRect bitmapRect = SkRect::MakeXYWH(left, top, | 818 SkRect bitmapRect = SkRect::MakeXYWH(left, top, |
819 SkIntToScalar(bitmap.width()), SkIntToScalar(bitmap.height())); | 819 SkIntToScalar(bitmap.width()), SkIntToScalar(bitmap.height())); |
820 if (fDeferredDrawing && | 820 if (fDeferredDrawing && |
821 this->isFullFrame(&bitmapRect, paint) && | 821 this->isFullFrame(&bitmapRect, paint) && |
822 isPaintOpaque(paint, &bitmap)) { | 822 isPaintOpaque(paint, &bitmap)) { |
823 this->getDeferredDevice()->skipPendingCommands(); | 823 this->getDeferredDevice()->skipPendingCommands(); |
824 } | 824 } |
825 | 825 |
826 AutoImmediateDrawIfNeeded autoDraw(*this, &bitmap, paint); | 826 AutoImmediateDrawIfNeeded autoDraw(*this, &bitmap, paint); |
827 this->drawingCanvas()->drawBitmap(bitmap, left, top, paint); | 827 this->drawingCanvas()->drawBitmap(bitmap, left, top, paint); |
828 this->recordedDrawCommand(); | 828 this->recordedDrawCommand(); |
829 } | 829 } |
830 | 830 |
831 void SkDeferredCanvas::onDrawBitmapRect(const SkBitmap& bitmap, const SkRect* sr
c, | 831 void SkDeferredCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, |
832 const SkRect& dst, | 832 const SkRect* src, |
833 const SkPaint* paint, DrawBitmapRectFlag
s flags) { | 833 const SkRect& dst, |
| 834 const SkPaint* paint, |
| 835 DrawBitmapRectFlags flags) { |
834 if (fDeferredDrawing && | 836 if (fDeferredDrawing && |
835 this->isFullFrame(&dst, paint) && | 837 this->isFullFrame(&dst, paint) && |
836 isPaintOpaque(paint, &bitmap)) { | 838 isPaintOpaque(paint, &bitmap)) { |
837 this->getDeferredDevice()->skipPendingCommands(); | 839 this->getDeferredDevice()->skipPendingCommands(); |
838 } | 840 } |
839 | 841 |
840 AutoImmediateDrawIfNeeded autoDraw(*this, &bitmap, paint); | 842 AutoImmediateDrawIfNeeded autoDraw(*this, &bitmap, paint); |
841 this->drawingCanvas()->drawBitmapRectToRect(bitmap, src, dst, paint, flags); | 843 this->drawingCanvas()->drawBitmapRectToRect(bitmap, src, dst, paint, flags); |
842 this->recordedDrawCommand(); | 844 this->recordedDrawCommand(); |
843 } | 845 } |
844 | 846 |
845 void SkDeferredCanvas::onDrawBitmapNine(const SkBitmap& bitmap, | 847 void SkDeferredCanvas::drawBitmapNine(const SkBitmap& bitmap, |
846 const SkIRect& center, const SkRect& dst
, | 848 const SkIRect& center, const SkRect& dst, |
847 const SkPaint* paint) { | 849 const SkPaint* paint) { |
848 // TODO: reset recording canvas if paint+bitmap is opaque and clip rect | 850 // TODO: reset recording canvas if paint+bitmap is opaque and clip rect |
849 // covers canvas entirely and dst covers canvas entirely | 851 // covers canvas entirely and dst covers canvas entirely |
850 AutoImmediateDrawIfNeeded autoDraw(*this, &bitmap, paint); | 852 AutoImmediateDrawIfNeeded autoDraw(*this, &bitmap, paint); |
851 this->drawingCanvas()->drawBitmapNine(bitmap, center, dst, paint); | 853 this->drawingCanvas()->drawBitmapNine(bitmap, center, dst, paint); |
852 this->recordedDrawCommand(); | 854 this->recordedDrawCommand(); |
853 } | 855 } |
854 | 856 |
855 void SkDeferredCanvas::onDrawSprite(const SkBitmap& bitmap, int left, int top, | 857 void SkDeferredCanvas::drawSprite(const SkBitmap& bitmap, int left, int top, |
856 const SkPaint* paint) { | 858 const SkPaint* paint) { |
857 SkRect bitmapRect = SkRect::MakeXYWH( | 859 SkRect bitmapRect = SkRect::MakeXYWH( |
858 SkIntToScalar(left), | 860 SkIntToScalar(left), |
859 SkIntToScalar(top), | 861 SkIntToScalar(top), |
860 SkIntToScalar(bitmap.width()), | 862 SkIntToScalar(bitmap.width()), |
861 SkIntToScalar(bitmap.height())); | 863 SkIntToScalar(bitmap.height())); |
862 if (fDeferredDrawing && | 864 if (fDeferredDrawing && |
863 this->isFullFrame(&bitmapRect, paint) && | 865 this->isFullFrame(&bitmapRect, paint) && |
864 isPaintOpaque(paint, &bitmap)) { | 866 isPaintOpaque(paint, &bitmap)) { |
865 this->getDeferredDevice()->skipPendingCommands(); | 867 this->getDeferredDevice()->skipPendingCommands(); |
866 } | 868 } |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
904 this->drawingCanvas()->drawTextBlob(blob, x, y, paint); | 906 this->drawingCanvas()->drawTextBlob(blob, x, y, paint); |
905 this->recordedDrawCommand(); | 907 this->recordedDrawCommand(); |
906 } | 908 } |
907 | 909 |
908 void SkDeferredCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix* m
atrix, | 910 void SkDeferredCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix* m
atrix, |
909 const SkPaint* paint) { | 911 const SkPaint* paint) { |
910 this->drawingCanvas()->drawPicture(picture, matrix, paint); | 912 this->drawingCanvas()->drawPicture(picture, matrix, paint); |
911 this->recordedDrawCommand(); | 913 this->recordedDrawCommand(); |
912 } | 914 } |
913 | 915 |
914 void SkDeferredCanvas::onDrawVertices(VertexMode vmode, int vertexCount, | 916 void SkDeferredCanvas::drawVertices(VertexMode vmode, int vertexCount, |
915 const SkPoint vertices[], | 917 const SkPoint vertices[], |
916 const SkPoint texs[], | 918 const SkPoint texs[], |
917 const SkColor colors[], SkXfermode* xmode, | 919 const SkColor colors[], SkXfermode* xmode, |
918 const uint16_t indices[], int indexCount, | 920 const uint16_t indices[], int indexCount, |
919 const SkPaint& paint) { | 921 const SkPaint& paint) { |
920 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); | 922 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); |
921 this->drawingCanvas()->drawVertices(vmode, vertexCount, vertices, texs, colo
rs, xmode, | 923 this->drawingCanvas()->drawVertices(vmode, vertexCount, vertices, texs, colo
rs, xmode, |
922 indices, indexCount, paint); | 924 indices, indexCount, paint); |
923 this->recordedDrawCommand(); | 925 this->recordedDrawCommand(); |
924 } | 926 } |
925 | 927 |
926 void SkDeferredCanvas::onDrawPatch(const SkPoint cubics[12], const SkColor color
s[4], | 928 void SkDeferredCanvas::onDrawPatch(const SkPoint cubics[12], const SkColor color
s[4], |
927 const SkPoint texCoords[4], SkXfermode* xmode
, | 929 const SkPoint texCoords[4], SkXfermode* xmode
, |
928 const SkPaint& paint) { | 930 const SkPaint& paint) { |
929 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); | 931 AutoImmediateDrawIfNeeded autoDraw(*this, &paint); |
930 this->drawingCanvas()->drawPatch(cubics, colors, texCoords, xmode, paint); | 932 this->drawingCanvas()->drawPatch(cubics, colors, texCoords, xmode, paint); |
931 this->recordedDrawCommand(); | 933 this->recordedDrawCommand(); |
932 } | 934 } |
933 | 935 |
934 SkDrawFilter* SkDeferredCanvas::setDrawFilter(SkDrawFilter* filter) { | 936 SkDrawFilter* SkDeferredCanvas::setDrawFilter(SkDrawFilter* filter) { |
935 this->drawingCanvas()->setDrawFilter(filter); | 937 this->drawingCanvas()->setDrawFilter(filter); |
936 this->INHERITED::setDrawFilter(filter); | 938 this->INHERITED::setDrawFilter(filter); |
937 this->recordedDrawCommand(); | 939 this->recordedDrawCommand(); |
938 return filter; | 940 return filter; |
939 } | 941 } |
940 | 942 |
941 SkCanvas* SkDeferredCanvas::canvasForDrawIter() { | 943 SkCanvas* SkDeferredCanvas::canvasForDrawIter() { |
942 return this->drawingCanvas(); | 944 return this->drawingCanvas(); |
943 } | 945 } |
OLD | NEW |