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

Unified Diff: third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.h

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/paint/DrawingDisplayItem.h
diff --git a/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.h b/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.h
index ccfb00905fbeaaf192487c5359c394929dd4afdd..c5d897477880c790e8301cb342c2dd3e70a33658 100644
--- a/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.h
+++ b/third_party/WebKit/Source/platform/graphics/paint/DrawingDisplayItem.h
@@ -8,32 +8,48 @@
#include "base/compiler_specific.h"
#include "platform/PlatformExport.h"
#include "platform/RuntimeEnabledFeatures.h"
-#include "platform/geometry/FloatPoint.h"
+#include "platform/geometry/FloatRect.h"
#include "platform/graphics/paint/DisplayItem.h"
#include "platform/graphics/paint/PaintRecord.h"
#include "third_party/skia/include/core/SkRefCnt.h"
namespace blink {
+// DrawingDisplayItem contains recorded painting operations which can be
+// replayed to produce a rastered output.
+//
+// This class has two notions of the bounds around the content that was recorded
+// and will be produced by the item. The first is the |record_bounds| which
+// describes the bounds of all content in the |record| in the space of the
+// record. The second is the |visual_rect| which should describe the same thing,
+// but takes into account transforms and clips that would apply to the
+// PaintRecord, and is in the space of the DisplayItemList. This allows the
+// visual_rect to be compared between DrawingDisplayItems, and to give bounds
+// around what the user can actually see from the PaintRecord.
class PLATFORM_EXPORT DrawingDisplayItem final : public DisplayItem {
public:
DISABLE_CFI_PERF
DrawingDisplayItem(const DisplayItemClient& client,
Type type,
sk_sp<const PaintRecord> record,
+ const FloatRect& record_bounds,
bool known_to_be_opaque = false)
: DisplayItem(client, type, sizeof(*this)),
record_(record && record->size() ? std::move(record) : nullptr),
+ record_bounds_(record_bounds),
known_to_be_opaque_(known_to_be_opaque) {
DCHECK(IsDrawingType(type));
}
void Replay(GraphicsContext&) const override;
- void AppendToWebDisplayItemList(const IntRect&,
+ void AppendToWebDisplayItemList(const IntRect& visual_rect,
WebDisplayItemList*) const override;
bool DrawsContent() const override;
const sk_sp<const PaintRecord>& GetPaintRecord() const { return record_; }
+ // This rect is described in the coordinate space relative to the PaintRecord
+ // whose bounds it describes.
+ FloatRect GetPaintRecordBounds() const { return record_bounds_; }
bool KnownToBeOpaque() const {
DCHECK(RuntimeEnabledFeatures::slimmingPaintV2Enabled());
@@ -49,6 +65,7 @@ class PLATFORM_EXPORT DrawingDisplayItem final : public DisplayItem {
bool Equals(const DisplayItem& other) const final;
sk_sp<const PaintRecord> record_;
+ FloatRect record_bounds_;
// True if there are no transparent areas. Only used for SlimmingPaintV2.
const bool known_to_be_opaque_;

Powered by Google App Engine
This is Rietveld 408576698