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

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

Issue 1301823005: Reland of Implement canComputeFastBounds() for image filters. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 5 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
« no previous file with comments | « include/core/SkImageFilter.h ('k') | include/effects/SkColorFilterImageFilter.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 * 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 SkPaint_DEFINED 8 #ifndef SkPaint_DEFINED
9 #define SkPaint_DEFINED 9 #define SkPaint_DEFINED
10 10
11 #include "SkColor.h" 11 #include "SkColor.h"
12 #include "SkDrawLooper.h"
13 #include "SkFilterQuality.h" 12 #include "SkFilterQuality.h"
14 #include "SkMatrix.h" 13 #include "SkMatrix.h"
15 #include "SkXfermode.h" 14 #include "SkXfermode.h"
16 15
17 class SkAnnotation; 16 class SkAnnotation;
18 class SkAutoDescriptor; 17 class SkAutoDescriptor;
19 class SkAutoGlyphCache; 18 class SkAutoGlyphCache;
20 class SkColorFilter; 19 class SkColorFilter;
21 class SkData; 20 class SkData;
22 class SkDescriptor; 21 class SkDescriptor;
22 class SkDrawLooper;
23 class SkReadBuffer; 23 class SkReadBuffer;
24 class SkWriteBuffer; 24 class SkWriteBuffer;
25 class SkGlyph; 25 class SkGlyph;
26 struct SkRect; 26 struct SkRect;
27 class SkGlyphCache; 27 class SkGlyphCache;
28 class SkImageFilter; 28 class SkImageFilter;
29 class SkMaskFilter; 29 class SkMaskFilter;
30 class SkPath; 30 class SkPath;
31 class SkPathEffect; 31 class SkPathEffect;
32 struct SkPoint; 32 struct SkPoint;
(...skipping 869 matching lines...) Expand 10 before | Expand all | Expand 10 after
902 // mean that we need not draw at all (e.g. SrcOver + 0-alpha) 902 // mean that we need not draw at all (e.g. SrcOver + 0-alpha)
903 bool nothingToDraw() const; 903 bool nothingToDraw() const;
904 904
905 /////////////////////////////////////////////////////////////////////////// 905 ///////////////////////////////////////////////////////////////////////////
906 // would prefer to make these private... 906 // would prefer to make these private...
907 907
908 /** Returns true if the current paint settings allow for fast computation of 908 /** Returns true if the current paint settings allow for fast computation of
909 bounds (i.e. there is nothing complex like a patheffect that would make 909 bounds (i.e. there is nothing complex like a patheffect that would make
910 the bounds computation expensive. 910 the bounds computation expensive.
911 */ 911 */
912 bool canComputeFastBounds() const { 912 bool canComputeFastBounds() const;
913 if (this->getLooper()) {
914 return this->getLooper()->canComputeFastBounds(*this);
915 }
916 return !this->getRasterizer();
917 }
918 913
919 /** Only call this if canComputeFastBounds() returned true. This takes a 914 /** Only call this if canComputeFastBounds() returned true. This takes a
920 raw rectangle (the raw bounds of a shape), and adjusts it for stylistic 915 raw rectangle (the raw bounds of a shape), and adjusts it for stylistic
921 effects in the paint (e.g. stroking). If needed, it uses the storage 916 effects in the paint (e.g. stroking). If needed, it uses the storage
922 rect parameter. It returns the adjusted bounds that can then be used 917 rect parameter. It returns the adjusted bounds that can then be used
923 for quickReject tests. 918 for quickReject tests.
924 919
925 The returned rect will either be orig or storage, thus the caller 920 The returned rect will either be orig or storage, thus the caller
926 should not rely on storage being set to the result, but should always 921 should not rely on storage being set to the result, but should always
927 use the retured value. It is legal for orig and storage to be the same 922 use the retured value. It is legal for orig and storage to be the same
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
1094 friend class GrStencilAndCoverTextContext; 1089 friend class GrStencilAndCoverTextContext;
1095 friend class GrPathRendering; 1090 friend class GrPathRendering;
1096 friend class GrTextContext; 1091 friend class GrTextContext;
1097 friend class GrGLPathRendering; 1092 friend class GrGLPathRendering;
1098 friend class SkScalerContext; 1093 friend class SkScalerContext;
1099 friend class SkTextToPathIter; 1094 friend class SkTextToPathIter;
1100 friend class SkCanonicalizePaint; 1095 friend class SkCanonicalizePaint;
1101 }; 1096 };
1102 1097
1103 #endif 1098 #endif
OLDNEW
« no previous file with comments | « include/core/SkImageFilter.h ('k') | include/effects/SkColorFilterImageFilter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698