80 {
81 if (nullptr == cullRect) {
83 return false;
84 }
85
88
89 if ((
dx && dy) || (!
dx && !dy)) {
90 return false;
91 }
92
95
96
97
98
102 return false;
103 }
104
106
111
115 }
116
118 if (maxX <= bounds.fLeft || minX >=
bounds.fRight) {
119 return false;
120 }
121
122
123
124
125
126 if (minX <
bounds.fLeft) {
128 }
129 if (maxX >
bounds.fRight) {
131 }
132
137 }
140 } else {
144
145 if (dy < 0) {
148 }
149
151 if (maxY <= bounds.fTop || minY >=
bounds.fBottom) {
152 return false;
153 }
154
155
156
157
158
161 }
162 if (maxY >
bounds.fBottom) {
164 }
165
167 if (dy < 0) {
170 }
173 }
174
175 return true;
176}
static SkM44 inv(const SkM44 &m)
static void outset_for_stroke(SkRect *rect, const SkStrokeRec &rec)
void swap(sk_sp< T > &a, sk_sp< T > &b)
#define SkScalarMod(x, y)
bool invert(SkMatrix *inverse) const
bool rectStaysRect() const
Optional< SkRect > bounds
skia_private::AutoTArray< sk_sp< SkImageFilter > > filters TypedMatrix matrix TypedMatrix matrix SkScalar dx
constexpr float y() const
constexpr float x() const