OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2010 Google Inc. | 2 * Copyright 2010 Google Inc. |
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 GrClip_DEFINED | 8 #ifndef GrClip_DEFINED |
9 #define GrClip_DEFINED | 9 #define GrClip_DEFINED |
10 | 10 |
(...skipping 15 matching lines...) Expand all Loading... |
26 return this->quickContains(rrect.getBounds()); | 26 return this->quickContains(rrect.getBounds()); |
27 } | 27 } |
28 virtual void getConservativeBounds(int width, int height, SkIRect* devResult
, | 28 virtual void getConservativeBounds(int width, int height, SkIRect* devResult
, |
29 bool* isIntersectionOfRects = nullptr) co
nst = 0; | 29 bool* isIntersectionOfRects = nullptr) co
nst = 0; |
30 virtual bool apply(GrContext*, GrDrawContext*, bool useHWAA, bool hasUserSte
ncilSettings, | 30 virtual bool apply(GrContext*, GrDrawContext*, bool useHWAA, bool hasUserSte
ncilSettings, |
31 GrAppliedClip* out) const = 0; | 31 GrAppliedClip* out) const = 0; |
32 | 32 |
33 virtual ~GrClip() {} | 33 virtual ~GrClip() {} |
34 | 34 |
35 /** | 35 /** |
| 36 * This method quickly and conservatively determines whether the entire clip
is equivalent to |
| 37 * intersection with a rrect. |
| 38 * |
| 39 * @param rtBounds The bounds of the render target that the clip will be app
lied to. |
| 40 * @param rrect If return is true rrect will contain the rrect equivalent
to the clip. |
| 41 * @param aa If return is true aa will indicate whether the rrect clip
is antialiased. |
| 42 * @return true if the clip is equivalent to a single rrect, false otherwise
. |
| 43 */ |
| 44 virtual bool isRRect(const SkRect& rtBounds, SkRRect* rrect, bool* aa) const
= 0; |
| 45 |
| 46 /** |
36 * This is the maximum distance that a draw may extend beyond a clip's bound
ary and still count | 47 * This is the maximum distance that a draw may extend beyond a clip's bound
ary and still count |
37 * count as "on the other side". We leave some slack because floating point
rounding error is | 48 * count as "on the other side". We leave some slack because floating point
rounding error is |
38 * likely to blame. The rationale for 1e-3 is that in the coverage case (and
barring unexpected | 49 * likely to blame. The rationale for 1e-3 is that in the coverage case (and
barring unexpected |
39 * rounding), as long as coverage stays within 0.5 * 1/256 of its intended v
alue it shouldn't | 50 * rounding), as long as coverage stays within 0.5 * 1/256 of its intended v
alue it shouldn't |
40 * have any effect on the final pixel values. | 51 * have any effect on the final pixel values. |
41 */ | 52 */ |
42 constexpr static SkScalar kBoundsTolerance = 1e-3f; | 53 constexpr static SkScalar kBoundsTolerance = 1e-3f; |
43 | 54 |
44 /** | 55 /** |
45 * Returns true if the given query bounds count as entirely inside the clip. | 56 * Returns true if the given query bounds count as entirely inside the clip. |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
115 void getConservativeBounds(int width, int height, SkIRect* devResult, | 126 void getConservativeBounds(int width, int height, SkIRect* devResult, |
116 bool* isIntersectionOfRects) const final { | 127 bool* isIntersectionOfRects) const final { |
117 devResult->setXYWH(0, 0, width, height); | 128 devResult->setXYWH(0, 0, width, height); |
118 if (isIntersectionOfRects) { | 129 if (isIntersectionOfRects) { |
119 *isIntersectionOfRects = true; | 130 *isIntersectionOfRects = true; |
120 } | 131 } |
121 } | 132 } |
122 bool apply(GrContext*, GrDrawContext*, bool, bool, GrAppliedClip*) const fin
al { | 133 bool apply(GrContext*, GrDrawContext*, bool, bool, GrAppliedClip*) const fin
al { |
123 return true; | 134 return true; |
124 } | 135 } |
| 136 bool isRRect(const SkRect&, SkRRect*, bool*) const override { return false;
}; |
125 }; | 137 }; |
126 | 138 |
127 #endif | 139 #endif |
OLD | NEW |