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

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

Issue 19977003: drawBitmap* cleanup (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Fixed bugs Created 7 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | include/core/SkDevice.h » ('j') | 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 /* 2 /*
3 * Copyright 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
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 9
10 #ifndef SkCanvas_DEFINED 10 #ifndef SkCanvas_DEFINED
(...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, 698 virtual void drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m,
699 const SkPaint* paint = NULL); 699 const SkPaint* paint = NULL);
700 700
701 /** 701 /**
702 * Draw the bitmap stretched differentially to fit into dst. 702 * Draw the bitmap stretched differentially to fit into dst.
703 * center is a rect within the bitmap, and logically divides the bitmap 703 * center is a rect within the bitmap, and logically divides the bitmap
704 * into 9 sections (3x3). For example, if the middle pixel of a [5x5] 704 * into 9 sections (3x3). For example, if the middle pixel of a [5x5]
705 * bitmap is the "center", then the center-rect should be [2, 2, 3, 3]. 705 * bitmap is the "center", then the center-rect should be [2, 2, 3, 3].
706 * 706 *
707 * If the dst is >= the bitmap size, then... 707 * If the dst is >= the bitmap size, then...
708 * - The 4 corners are not stretch at all. 708 * - The 4 corners are not stretched at all.
709 * - The sides are stretch in only one axis. 709 * - The sides are stretched in only one axis.
710 * - The center is stretch in both axes. 710 * - The center is stretched in both axes.
711 * Else, for each axis where dst < bitmap, 711 * Else, for each axis where dst < bitmap,
712 * - The corners shrink proportionally 712 * - The corners shrink proportionally
713 * - The sides (along the shrink axis) and center are not drawn 713 * - The sides (along the shrink axis) and center are not drawn
714 */ 714 */
715 virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, 715 virtual void drawBitmapNine(const SkBitmap& bitmap, const SkIRect& center,
716 const SkRect& dst, const SkPaint* paint = NULL); 716 const SkRect& dst, const SkPaint* paint = NULL);
717 717
718 /** Draw the specified bitmap, with its top/left corner at (x,y), 718 /** Draw the specified bitmap, with its top/left corner at (x,y),
719 NOT transformed by the current matrix. Note: if the paint 719 NOT transformed by the current matrix. Note: if the paint
720 contains a maskfilter that generates a mask which extends beyond the 720 contains a maskfilter that generates a mask which extends beyond the
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
995 bool fDone; 995 bool fDone;
996 }; 996 };
997 997
998 protected: 998 protected:
999 // Returns the canvas to be used by DrawIter. Default implementation 999 // Returns the canvas to be used by DrawIter. Default implementation
1000 // returns this. Subclasses that encapsulate an indirect canvas may 1000 // returns this. Subclasses that encapsulate an indirect canvas may
1001 // need to overload this method. The impl must keep track of this, as it 1001 // need to overload this method. The impl must keep track of this, as it
1002 // is not released or deleted by the caller. 1002 // is not released or deleted by the caller.
1003 virtual SkCanvas* canvasForDrawIter(); 1003 virtual SkCanvas* canvasForDrawIter();
1004 1004
1005 // all of the drawBitmap variants call this guy
1006 void commonDrawBitmap(const SkBitmap&, const SkIRect*, const SkMatrix&,
1007 const SkPaint& paint);
1008
1009 // Clip rectangle bounds. Called internally by saveLayer. 1005 // Clip rectangle bounds. Called internally by saveLayer.
1010 // returns false if the entire rectangle is entirely clipped out 1006 // returns false if the entire rectangle is entirely clipped out
1011 bool clipRectBounds(const SkRect* bounds, SaveFlags flags, 1007 bool clipRectBounds(const SkRect* bounds, SaveFlags flags,
1012 SkIRect* intersection); 1008 SkIRect* intersection);
1013 1009
1014 // Called by child classes that override clipPath and clipRRect to only 1010 // Called by child classes that override clipPath and clipRRect to only
1015 // track fast conservative clip bounds, rather than exact clips. 1011 // track fast conservative clip bounds, rather than exact clips.
1016 bool updateClipConservativelyUsingBounds(const SkRect&, SkRegion::Op, 1012 bool updateClipConservativelyUsingBounds(const SkRect&, SkRegion::Op,
1017 bool inverseFilled); 1013 bool inverseFilled);
1018 1014
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
1060 friend class SkDrawIter; // needs setupDrawForLayerDevice() 1056 friend class SkDrawIter; // needs setupDrawForLayerDevice()
1061 friend class AutoDrawLooper; 1057 friend class AutoDrawLooper;
1062 1058
1063 SkDevice* createLayerDevice(SkBitmap::Config, int width, int height, 1059 SkDevice* createLayerDevice(SkBitmap::Config, int width, int height,
1064 bool isOpaque); 1060 bool isOpaque);
1065 1061
1066 SkDevice* init(SkDevice*); 1062 SkDevice* init(SkDevice*);
1067 1063
1068 // internal methods are not virtual, so they can safely be called by other 1064 // internal methods are not virtual, so they can safely be called by other
1069 // canvas apis, without confusing subclasses (like SkPictureRecording) 1065 // canvas apis, without confusing subclasses (like SkPictureRecording)
1070 void internalDrawBitmap(const SkBitmap&, const SkIRect*, const SkMatrix& m, 1066 void internalDrawBitmap(const SkBitmap&, const SkMatrix& m, const SkPaint* p aint);
1071 const SkPaint* paint);
1072 void internalDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, 1067 void internalDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src,
1073 const SkRect& dst, const SkPaint* paint); 1068 const SkRect& dst, const SkPaint* paint);
1074 void internalDrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center, 1069 void internalDrawBitmapNine(const SkBitmap& bitmap, const SkIRect& center,
1075 const SkRect& dst, const SkPaint* paint); 1070 const SkRect& dst, const SkPaint* paint);
1076 void internalDrawPaint(const SkPaint& paint); 1071 void internalDrawPaint(const SkPaint& paint);
1077 int internalSaveLayer(const SkRect* bounds, const SkPaint* paint, 1072 int internalSaveLayer(const SkRect* bounds, const SkPaint* paint,
1078 SaveFlags, bool justForImageFilter); 1073 SaveFlags, bool justForImageFilter);
1079 void internalDrawDevice(SkDevice*, int x, int y, const SkPaint*); 1074 void internalDrawDevice(SkDevice*, int x, int y, const SkPaint*);
1080 1075
1081 // shared by save() and saveLayer() 1076 // shared by save() and saveLayer()
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1175 if (NULL != fCanvas) { 1170 if (NULL != fCanvas) {
1176 fCanvas->endCommentGroup(); 1171 fCanvas->endCommentGroup();
1177 } 1172 }
1178 } 1173 }
1179 1174
1180 private: 1175 private:
1181 SkCanvas* fCanvas; 1176 SkCanvas* fCanvas;
1182 }; 1177 };
1183 1178
1184 #endif 1179 #endif
OLDNEW
« no previous file with comments | « no previous file | include/core/SkDevice.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698