175 auto roundLow = [aa](
float v) {
180 auto roundHigh = [aa](
float v) {
186 if (bounds.isEmpty()) {
192 roundHigh(bounds.fRight), roundHigh(bounds.fBottom));
195 roundLow(bounds.fRight), roundLow(bounds.fBottom));
230 SkRect* bounds)
const final {
232 Effect effect = this->
apply(&out->hardClip(), &pixelBounds);
#define SkScalarRoundToInt(x)
#define SkScalarCeilToInt(x)
#define SkScalarRoundToScalar(x)
#define SkScalarFloorToInt(x)
virtual Effect apply(GrRecordingContext *, skgpu::ganesh::SurfaceDrawContext *, GrDrawOp *, GrAAType, GrAppliedClip *, SkRect *bounds) const =0
static bool IsPixelAligned(const SkRect &rect)
static SkIRect GetPixelIBounds(const SkRect &bounds, GrAA aa, BoundsType mode=BoundsType::kExterior)
static bool IsOutsideClip(const SkIRect &outerClipBounds, const SkRect &drawBounds, GrAA aa)
static constexpr SkScalar kBoundsTolerance
virtual SkIRect getConservativeBounds() const =0
static bool IsInsideClip(const SkIRect &innerClipBounds, const SkRect &drawBounds, GrAA aa)
virtual PreClipResult preApply(const SkRect &drawBounds, GrAA aa) const
static constexpr SkScalar kHalfPixelRoundingTolerance
Effect apply(GrRecordingContext *, skgpu::ganesh::SurfaceDrawContext *, GrDrawOp *, GrAAType aa, GrAppliedClip *out, SkRect *bounds) const final
virtual Effect apply(GrAppliedHardClip *out, SkIRect *bounds) const =0
PreClipResult(Effect effect)
PreClipResult(SkRect rect, GrAA aa)
PreClipResult(SkRRect rrect, GrAA aa)
static bool Intersects(const SkIRect &a, const SkIRect &b)
static constexpr SkIRect MakeLTRB(int32_t l, int32_t t, int32_t r, int32_t b)
static constexpr SkIRect MakeEmpty()
bool contains(int32_t x, int32_t y) const
static SkRect Make(const SkISize &size)