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

Unified Diff: third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp

Issue 2889653002: Remove cullRect() from PaintOpBuffer. (Closed)
Patch Set: movecullrect2 rebase-once-and-for-all Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
diff --git a/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp b/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
index ad855b30357fd27c6c27472a620226cd8403b55d..2325bb9190dc9028716bb811fcab63499840e4bc 100644
--- a/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
+++ b/third_party/WebKit/Source/platform/graphics/filters/SkiaImageFilterBuilder.cpp
@@ -110,11 +110,11 @@ sk_sp<SkImageFilter> TransformInterpolationSpace(
}
void BuildSourceGraphic(FilterEffect* source_graphic,
- sk_sp<PaintRecord> record) {
+ sk_sp<PaintRecord> record,
+ const FloatRect& record_bounds) {
DCHECK(record);
- SkRect cull_rect = record->cullRect();
sk_sp<SkImageFilter> filter =
- SkPictureImageFilter::Make(ToSkPicture(record), cull_rect);
+ SkPictureImageFilter::Make(ToSkPicture(record, record_bounds));
PopulateSourceGraphicImageFilters(
source_graphic, std::move(filter),
source_graphic->OperatingInterpolationSpace());
@@ -131,34 +131,35 @@ sk_sp<SkImageFilter> BuildBoxReflectFilter(const BoxReflection& reflection,
// raster the mask to a bitmap, then encode it in an SkImageSource, which
// can be serialized.
SkBitmap bitmap;
- const SkRect cull_rect = mask_record->cullRect();
- if (static_cast<float>(cull_rect.width()) *
- static_cast<float>(cull_rect.height()) <
+ const SkRect mask_record_bounds = reflection.MaskBounds();
+ if (mask_record_bounds.width() * mask_record_bounds.height() <
kMaxMaskBufferSize) {
- bitmap.allocPixels(
- SkImageInfo::MakeN32Premul(cull_rect.width(), cull_rect.height()));
+ bitmap.allocPixels(SkImageInfo::MakeN32Premul(
+ mask_record_bounds.width(), mask_record_bounds.height()));
SkiaPaintCanvas canvas(bitmap);
canvas.clear(SK_ColorTRANSPARENT);
- canvas.translate(-cull_rect.x(), -cull_rect.y());
+ canvas.translate(-mask_record_bounds.x(), -mask_record_bounds.y());
canvas.drawPicture(mask_record);
sk_sp<SkImage> image = SkImage::MakeFromBitmap(bitmap);
// SkXfermodeImageFilter can choose an excessively large size if the
// mask is smaller than the filtered contents (due to overflow).
// http://skbug.com/5210
- SkImageFilter::CropRect crop_rect(mask_record->cullRect());
+ SkImageFilter::CropRect crop_rect(mask_record_bounds);
masked_input = SkXfermodeImageFilter::Make(
SkBlendMode::kSrcIn,
- SkOffsetImageFilter::Make(cull_rect.x(), cull_rect.y(),
+ SkOffsetImageFilter::Make(mask_record_bounds.x(),
+ mask_record_bounds.y(),
SkImageSource::Make(image)),
input, &crop_rect);
} else {
// If the buffer is excessively big, give up and make an
// SkPictureImageFilter anyway, even if it might not render.
- SkImageFilter::CropRect crop_rect(mask_record->cullRect());
+ SkImageFilter::CropRect crop_rect(mask_record_bounds);
masked_input = SkXfermodeImageFilter::Make(
SkBlendMode::kSrcOver,
- SkPictureImageFilter::Make(ToSkPicture(std::move(mask_record))),
+ SkPictureImageFilter::Make(
+ ToSkPicture(std::move(mask_record), mask_record_bounds)),
input, &crop_rect);
}
} else {

Powered by Google App Engine
This is Rietveld 408576698