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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/paint/PaintChunk.h

Issue 2161253003: Revert of PaintChunk::id (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@CommitOnTheWay
Patch Set: Created 4 years, 5 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef PaintChunk_h 5 #ifndef PaintChunk_h
6 #define PaintChunk_h 6 #define PaintChunk_h
7 7
8 #include "platform/geometry/FloatRect.h" 8 #include "platform/geometry/FloatRect.h"
9 #include "platform/graphics/paint/DisplayItem.h"
10 #include "platform/graphics/paint/PaintChunkProperties.h" 9 #include "platform/graphics/paint/PaintChunkProperties.h"
11 #include "wtf/Allocator.h" 10 #include "wtf/Allocator.h"
12 #include "wtf/Optional.h"
13 #include <iosfwd> 11 #include <iosfwd>
14 12
15 namespace blink { 13 namespace blink {
16 14
17 // A contiguous sequence of drawings with common paint properties. 15 // A contiguous sequence of drawings with common paint properties.
18 // 16 //
19 // This is expected to be owned by the paint artifact which also owns the 17 // This is expected to be owned by the paint artifact which also owns the
20 // related drawings. 18 // related drawings.
21 // 19 //
22 // This is a Slimming Paint v2 class. 20 // This is a Slimming Paint v2 class.
23 struct PaintChunk { 21 struct PaintChunk {
24 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW(); 22 DISALLOW_NEW_EXCEPT_PLACEMENT_NEW();
25 PaintChunk() : beginIndex(0), endIndex(0), knownToBeOpaque(false) { } 23 PaintChunk() : beginIndex(0), endIndex(0), knownToBeOpaque(false) { }
26 PaintChunk(unsigned begin, unsigned end, const DisplayItem::Id* chunkId, con st PaintChunkProperties& props) 24 PaintChunk(unsigned begin, unsigned end, const PaintChunkProperties& props)
27 : beginIndex(begin), endIndex(end), properties(props), knownToBeOpaque(f alse) 25 : beginIndex(begin), endIndex(end), properties(props), knownToBeOpaque(f alse) { }
28 {
29 if (chunkId)
30 id.emplace(*chunkId);
31 }
32 26
33 unsigned size() const 27 unsigned size() const
34 { 28 {
35 ASSERT(endIndex >= beginIndex); 29 ASSERT(endIndex >= beginIndex);
36 return endIndex - beginIndex; 30 return endIndex - beginIndex;
37 } 31 }
38 32
39 // Check if a new PaintChunk (this) created in the latest paint matches an o ld
40 // PaintChunk created in the previous paint.
41 bool matches(const PaintChunk& old) const
42 {
43 // A PaintChunk without an id doesn't match any other PaintChunks.
44 if (!id || !old.id)
45 return false;
46 if (*id != *old.id)
47 return false;
48 #if CHECK_DISPLAY_ITEM_CLIENT_ALIVENESS
49 CHECK(id->client.isAlive());
50 #endif
51 // A chunk whose client is just created should not match any cached chun k,
52 // even if it's id equals the old chunk's id (which may happen if this c hunk's
53 // client is just created at the same address of the old chunk's deleted client).
54 return !id->client.isJustCreated();
55 }
56
57 // Index of the first drawing in this chunk. 33 // Index of the first drawing in this chunk.
58 unsigned beginIndex; 34 unsigned beginIndex;
59 35
60 // Index of the first drawing not in this chunk, so that there are 36 // Index of the first drawing not in this chunk, so that there are
61 // |endIndex - beginIndex| drawings in the chunk. 37 // |endIndex - beginIndex| drawings in the chunk.
62 unsigned endIndex; 38 unsigned endIndex;
63 39
64 // Identifier of this chunk. If it has a value, it should be unique.
65 // It's used to match a new chunk to a cached old chunk to track changes of chunk
66 // contents, so the id should be stable across document cycles.
67 // If the contents of the chunk can't be cached (e.g. it's created when Pain tController
68 // is skipping cache, normally because display items can't be uniquely ident ified),
69 // id is nullopt so that the chunk won't match any other chunk.
70 using Id = DisplayItem::Id;
71 Optional<Id> id;
72
73 // The paint properties which apply to this chunk. 40 // The paint properties which apply to this chunk.
74 PaintChunkProperties properties; 41 PaintChunkProperties properties;
75 42
76 // The total bounds of this paint chunk's contents. 43 // The total bounds of this paint chunk's contents.
77 FloatRect bounds; 44 FloatRect bounds;
78 45
79 // True if the bounds are filled entirely with opaque contents. 46 // True if the bounds are filled entirely with opaque contents.
80 bool knownToBeOpaque; 47 bool knownToBeOpaque;
81 }; 48 };
82 49
83 inline bool operator==(const PaintChunk& a, const PaintChunk& b) 50 inline bool operator==(const PaintChunk& a, const PaintChunk& b)
84 { 51 {
85 return a.beginIndex == b.beginIndex 52 return a.beginIndex == b.beginIndex
86 && a.endIndex == b.endIndex 53 && a.endIndex == b.endIndex
87 && a.id == b.id
88 && a.properties == b.properties 54 && a.properties == b.properties
89 && a.bounds == b.bounds 55 && a.bounds == b.bounds
90 && a.knownToBeOpaque == b.knownToBeOpaque; 56 && a.knownToBeOpaque == b.knownToBeOpaque;
91 } 57 }
92 58
93 inline bool operator!=(const PaintChunk& a, const PaintChunk& b) 59 inline bool operator!=(const PaintChunk& a, const PaintChunk& b)
94 { 60 {
95 return !(a == b); 61 return !(a == b);
96 } 62 }
97 63
98 // Redeclared here to avoid ODR issues. 64 // Redeclared here to avoid ODR issues.
99 // See platform/testing/PaintPrinters.h. 65 // See platform/testing/PaintPrinters.h.
100 void PrintTo(const PaintChunk&, std::ostream*); 66 void PrintTo(const PaintChunk&, std::ostream*);
101 67
102 } // namespace blink 68 } // namespace blink
103 69
104 #endif // PaintChunk_h 70 #endif // PaintChunk_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698