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

Side by Side Diff: include/core/SkCanvas.h

Issue 1777403002: Allow const& for SkImages and SkPictures in draw methods. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: change to const sk_sp<Foo>&, to match the signature of all of our factories and setters Created 4 years, 9 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 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 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 #ifndef SkCanvas_DEFINED 8 #ifndef SkCanvas_DEFINED
9 #define SkCanvas_DEFINED 9 #define SkCanvas_DEFINED
10 10
(...skipping 754 matching lines...) Expand 10 before | Expand all | Expand 10 after
765 765
766 /** Draw the specified image, with its top/left corner at (x,y), using the 766 /** Draw the specified image, with its top/left corner at (x,y), using the
767 specified paint, transformed by the current matrix. 767 specified paint, transformed by the current matrix.
768 768
769 @param image The image to be drawn 769 @param image The image to be drawn
770 @param left The position of the left side of the image being drawn 770 @param left The position of the left side of the image being drawn
771 @param top The position of the top side of the image being drawn 771 @param top The position of the top side of the image being drawn
772 @param paint The paint used to draw the image, or NULL 772 @param paint The paint used to draw the image, or NULL
773 */ 773 */
774 void drawImage(const SkImage* image, SkScalar left, SkScalar top, const SkPa int* paint = NULL); 774 void drawImage(const SkImage* image, SkScalar left, SkScalar top, const SkPa int* paint = NULL);
775 void drawImage(const sk_sp<SkImage>& image, SkScalar left, SkScalar top,
776 const SkPaint* paint = NULL) {
777 this->drawImage(image.get(), left, top, paint);
778 }
775 779
776 /** 780 /**
777 * Controls the behavior at the edge of the src-rect, when specified in dra wImageRect, 781 * Controls the behavior at the edge of the src-rect, when specified in dra wImageRect,
778 * trading off speed for exactness. 782 * trading off speed for exactness.
779 * 783 *
780 * When filtering is enabled (in the Paint), skia may need to sample in a n eighborhood around 784 * When filtering is enabled (in the Paint), skia may need to sample in a n eighborhood around
781 * the pixels in the image. If there is a src-rect specified, it is intende d to restrict the 785 * the pixels in the image. If there is a src-rect specified, it is intende d to restrict the
782 * pixels that will be read. However, for performance reasons, some impleme ntations may slow 786 * pixels that will be read. However, for performance reasons, some impleme ntations may slow
783 * down if they cannot read 1-pixel past the src-rect boundary at times. 787 * down if they cannot read 1-pixel past the src-rect boundary at times.
784 * 788 *
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
816 void drawImageRect(const SkImage* image, const SkRect& src, const SkRect& ds t, 820 void drawImageRect(const SkImage* image, const SkRect& src, const SkRect& ds t,
817 const SkPaint* paint, 821 const SkPaint* paint,
818 SrcRectConstraint constraint = kStrict_SrcRectConstraint) ; 822 SrcRectConstraint constraint = kStrict_SrcRectConstraint) ;
819 // variant that takes src SkIRect 823 // variant that takes src SkIRect
820 void drawImageRect(const SkImage* image, const SkIRect& isrc, const SkRect& dst, 824 void drawImageRect(const SkImage* image, const SkIRect& isrc, const SkRect& dst,
821 const SkPaint* paint, SrcRectConstraint = kStrict_SrcRect Constraint); 825 const SkPaint* paint, SrcRectConstraint = kStrict_SrcRect Constraint);
822 // variant that assumes src == image-bounds 826 // variant that assumes src == image-bounds
823 void drawImageRect(const SkImage* image, const SkRect& dst, const SkPaint* p aint, 827 void drawImageRect(const SkImage* image, const SkRect& dst, const SkPaint* p aint,
824 SrcRectConstraint = kStrict_SrcRectConstraint); 828 SrcRectConstraint = kStrict_SrcRectConstraint);
825 829
830 void drawImageRect(const sk_sp<SkImage>& image, const SkRect& src, const SkR ect& dst,
831 const SkPaint* paint,
832 SrcRectConstraint constraint = kStrict_SrcRectConstraint) {
833 this->drawImageRect(image.get(), src, dst, paint, constraint);
834 }
835 void drawImageRect(const sk_sp<SkImage>& image, const SkIRect& isrc, const S kRect& dst,
836 const SkPaint* paint, SrcRectConstraint cons = kStrict_Sr cRectConstraint) {
837 this->drawImageRect(image.get(), isrc, dst, paint, cons);
838 }
839 void drawImageRect(const sk_sp<SkImage>& image, const SkRect& dst, const SkP aint* paint,
840 SrcRectConstraint cons = kStrict_SrcRectConstraint) {
841 this->drawImageRect(image.get(), dst, paint, cons);
842 }
843
826 /** 844 /**
827 * Draw the image stretched differentially to fit into dst. 845 * Draw the image stretched differentially to fit into dst.
828 * center is a rect within the image, and logically divides the image 846 * center is a rect within the image, and logically divides the image
829 * into 9 sections (3x3). For example, if the middle pixel of a [5x5] 847 * into 9 sections (3x3). For example, if the middle pixel of a [5x5]
830 * image is the "center", then the center-rect should be [2, 2, 3, 3]. 848 * image is the "center", then the center-rect should be [2, 2, 3, 3].
831 * 849 *
832 * If the dst is >= the image size, then... 850 * If the dst is >= the image size, then...
833 * - The 4 corners are not stretched at all. 851 * - The 4 corners are not stretched at all.
834 * - The sides are stretched in only one axis. 852 * - The sides are stretched in only one axis.
835 * - The center is stretched in both axes. 853 * - The center is stretched in both axes.
836 * Else, for each axis where dst < image, 854 * Else, for each axis where dst < image,
837 * - The corners shrink proportionally 855 * - The corners shrink proportionally
838 * - The sides (along the shrink axis) and center are not drawn 856 * - The sides (along the shrink axis) and center are not drawn
839 */ 857 */
840 void drawImageNine(const SkImage*, const SkIRect& center, const SkRect& dst, 858 void drawImageNine(const SkImage*, const SkIRect& center, const SkRect& dst,
841 const SkPaint* paint = NULL); 859 const SkPaint* paint = nullptr);
860 void drawImageNine(const sk_sp<SkImage>& image, const SkIRect& center, const SkRect& dst,
861 const SkPaint* paint = nullptr) {
862 this->drawImageNine(image.get(), center, dst, paint);
863 }
842 864
843 /** Draw the specified bitmap, with its top/left corner at (x,y), using the 865 /** Draw the specified bitmap, with its top/left corner at (x,y), using the
844 specified paint, transformed by the current matrix. Note: if the paint 866 specified paint, transformed by the current matrix. Note: if the paint
845 contains a maskfilter that generates a mask which extends beyond the 867 contains a maskfilter that generates a mask which extends beyond the
846 bitmap's original width/height, then the bitmap will be drawn as if it 868 bitmap's original width/height, then the bitmap will be drawn as if it
847 were in a Shader with CLAMP mode. Thus the color outside of the original 869 were in a Shader with CLAMP mode. Thus the color outside of the original
848 width/height will be the edge color replicated. 870 width/height will be the edge color replicated.
849 871
850 If a shader is present on the paint it will be ignored, except in the 872 If a shader is present on the paint it will be ignored, except in the
851 case where the bitmap is kAlpha_8_SkColorType. In that case, the color i s 873 case where the bitmap is kAlpha_8_SkColorType. In that case, the color i s
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
966 988
967 /** Draw the picture into this canvas. This method effective brackets the 989 /** Draw the picture into this canvas. This method effective brackets the
968 playback of the picture's draw calls with save/restore, so the state 990 playback of the picture's draw calls with save/restore, so the state
969 of this canvas will be unchanged after this call. 991 of this canvas will be unchanged after this call.
970 @param picture The recorded drawing commands to playback into this 992 @param picture The recorded drawing commands to playback into this
971 canvas. 993 canvas.
972 */ 994 */
973 void drawPicture(const SkPicture* picture) { 995 void drawPicture(const SkPicture* picture) {
974 this->drawPicture(picture, NULL, NULL); 996 this->drawPicture(picture, NULL, NULL);
975 } 997 }
998 void drawPicture(sk_sp<SkPicture>& picture) {
999 this->drawPicture(picture.get());
1000 }
976 1001
977 /** 1002 /**
978 * Draw the picture into this canvas. 1003 * Draw the picture into this canvas.
979 * 1004 *
980 * If matrix is non-null, apply that matrix to the CTM when drawing this pi cture. This is 1005 * If matrix is non-null, apply that matrix to the CTM when drawing this pi cture. This is
981 * logically equivalent to 1006 * logically equivalent to
982 * save/concat/drawPicture/restore 1007 * save/concat/drawPicture/restore
983 * 1008 *
984 * If paint is non-null, draw the picture into a temporary buffer, and then apply the paint's 1009 * If paint is non-null, draw the picture into a temporary buffer, and then apply the paint's
985 * alpha/colorfilter/imagefilter/xfermode to that buffer as it is drawn to the canvas. 1010 * alpha/colorfilter/imagefilter/xfermode to that buffer as it is drawn to the canvas.
986 * This is logically equivalent to 1011 * This is logically equivalent to
987 * saveLayer(paint)/drawPicture/restore 1012 * saveLayer(paint)/drawPicture/restore
988 */ 1013 */
989 void drawPicture(const SkPicture*, const SkMatrix* matrix, const SkPaint* pa int); 1014 void drawPicture(const SkPicture*, const SkMatrix* matrix, const SkPaint* pa int);
1015 void drawPicture(sk_sp<SkPicture>& picture, const SkMatrix* matrix, const Sk Paint* paint) {
1016 this->drawPicture(picture.get(), matrix, paint);
1017 }
990 1018
991 enum VertexMode { 1019 enum VertexMode {
992 kTriangles_VertexMode, 1020 kTriangles_VertexMode,
993 kTriangleStrip_VertexMode, 1021 kTriangleStrip_VertexMode,
994 kTriangleFan_VertexMode 1022 kTriangleFan_VertexMode
995 }; 1023 };
996 1024
997 /** Draw the array of vertices, interpreted as triangles (based on mode). 1025 /** Draw the array of vertices, interpreted as triangles (based on mode).
998 1026
999 If both textures and vertex-colors are NULL, it strokes hairlines with 1027 If both textures and vertex-colors are NULL, it strokes hairlines with
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1058 */ 1086 */
1059 void drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect t ex[], 1087 void drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect t ex[],
1060 const SkColor colors[], int count, SkXfermode::Mode, const Sk Rect* cullRect, 1088 const SkColor colors[], int count, SkXfermode::Mode, const Sk Rect* cullRect,
1061 const SkPaint* paint); 1089 const SkPaint* paint);
1062 1090
1063 void drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect t ex[], int count, 1091 void drawAtlas(const SkImage* atlas, const SkRSXform xform[], const SkRect t ex[], int count,
1064 const SkRect* cullRect, const SkPaint* paint) { 1092 const SkRect* cullRect, const SkPaint* paint) {
1065 this->drawAtlas(atlas, xform, tex, NULL, count, SkXfermode::kDst_Mode, c ullRect, paint); 1093 this->drawAtlas(atlas, xform, tex, NULL, count, SkXfermode::kDst_Mode, c ullRect, paint);
1066 } 1094 }
1067 1095
1096 void drawAtlas(const sk_sp<SkImage>& atlas, const SkRSXform xform[], const S kRect tex[],
1097 const SkColor colors[], int count, SkXfermode::Mode mode, con st SkRect* cull,
1098 const SkPaint* paint) {
1099 this->drawAtlas(atlas.get(), xform, tex, colors, count, mode, cull, pain t);
1100 }
1101 void drawAtlas(const sk_sp<SkImage>& atlas, const SkRSXform xform[], const S kRect tex[],
1102 int count, const SkRect* cullRect, const SkPaint* paint) {
1103 this->drawAtlas(atlas.get(), xform, tex, nullptr, count, SkXfermode::kDs t_Mode,
1104 cullRect, paint);
1105 }
1106
1068 /** 1107 /**
1069 * Draw the contents of this drawable into the canvas. If the canvas is asy nc 1108 * Draw the contents of this drawable into the canvas. If the canvas is asy nc
1070 * (e.g. it is recording into a picture) then the drawable will be referenc ed instead, 1109 * (e.g. it is recording into a picture) then the drawable will be referenc ed instead,
1071 * to have its draw() method called when the picture is finalized. 1110 * to have its draw() method called when the picture is finalized.
1072 * 1111 *
1073 * If the intent is to force the contents of the drawable into this canvas immediately, 1112 * If the intent is to force the contents of the drawable into this canvas immediately,
1074 * then drawable->draw(canvas) may be called. 1113 * then drawable->draw(canvas) may be called.
1075 */ 1114 */
1076 void drawDrawable(SkDrawable* drawable, const SkMatrix* = NULL); 1115 void drawDrawable(SkDrawable* drawable, const SkMatrix* = NULL);
1077 void drawDrawable(SkDrawable*, SkScalar x, SkScalar y); 1116 void drawDrawable(SkDrawable*, SkScalar x, SkScalar y);
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
1512 1551
1513 class SkCanvasClipVisitor { 1552 class SkCanvasClipVisitor {
1514 public: 1553 public:
1515 virtual ~SkCanvasClipVisitor(); 1554 virtual ~SkCanvasClipVisitor();
1516 virtual void clipRect(const SkRect&, SkRegion::Op, bool antialias) = 0; 1555 virtual void clipRect(const SkRect&, SkRegion::Op, bool antialias) = 0;
1517 virtual void clipRRect(const SkRRect&, SkRegion::Op, bool antialias) = 0; 1556 virtual void clipRRect(const SkRRect&, SkRegion::Op, bool antialias) = 0;
1518 virtual void clipPath(const SkPath&, SkRegion::Op, bool antialias) = 0; 1557 virtual void clipPath(const SkPath&, SkRegion::Op, bool antialias) = 0;
1519 }; 1558 };
1520 1559
1521 #endif 1560 #endif
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