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

Side by Side Diff: third_party/WebKit/Source/platform/graphics/paint/GeometryMapper.cpp

Issue 2385123003: Rewrap comments to 80 columns in Source/platform/graphics/paint/. (Closed)
Patch Set: Resync Created 4 years, 2 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 #include "platform/graphics/paint/GeometryMapper.h" 5 #include "platform/graphics/paint/GeometryMapper.h"
6 6
7 #include "platform/geometry/LayoutRect.h" 7 #include "platform/geometry/LayoutRect.h"
8 8
9 namespace blink { 9 namespace blink {
10 10
(...skipping 25 matching lines...) Expand all
36 36
37 FloatRect GeometryMapper::slowMapToVisualRectInDestinationSpace( 37 FloatRect GeometryMapper::slowMapToVisualRectInDestinationSpace(
38 const FloatRect& rect, 38 const FloatRect& rect,
39 const PropertyTreeState& sourceState, 39 const PropertyTreeState& sourceState,
40 const PropertyTreeState& destinationState, 40 const PropertyTreeState& destinationState,
41 bool& success) { 41 bool& success) {
42 const TransformPaintPropertyNode* lcaTransform = leastCommonAncestor( 42 const TransformPaintPropertyNode* lcaTransform = leastCommonAncestor(
43 sourceState.transform(), destinationState.transform()); 43 sourceState.transform(), destinationState.transform());
44 DCHECK(lcaTransform); 44 DCHECK(lcaTransform);
45 45
46 // Assume that the clip of destinationState is an ancestor of the clip of sour ceState 46 // Assume that the clip of destinationState is an ancestor of the clip of
47 // and is under the space of lcaTransform. Otherwise localToAncestorClipRect() will fail. 47 // sourceState and is under the space of lcaTransform. Otherwise
48 // localToAncestorClipRect() will fail.
48 PropertyTreeState lcaState = destinationState; 49 PropertyTreeState lcaState = destinationState;
49 lcaState.setTransform(lcaTransform); 50 lcaState.setTransform(lcaTransform);
50 51
51 const auto clipRect = localToAncestorClipRect(sourceState, lcaState, success); 52 const auto clipRect = localToAncestorClipRect(sourceState, lcaState, success);
52 if (!success) 53 if (!success)
53 return rect; 54 return rect;
54 55
55 FloatRect result = localToAncestorRect(rect, sourceState, lcaState, success); 56 FloatRect result = localToAncestorRect(rect, sourceState, lcaState, success);
56 DCHECK(success); 57 DCHECK(success);
57 result.intersect(clipRect); 58 result.intersect(clipRect);
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 const PropertyTreeState& localState, 157 const PropertyTreeState& localState,
157 const PropertyTreeState& ancestorState, 158 const PropertyTreeState& ancestorState,
158 bool& success) { 159 bool& success) {
159 PrecomputedDataForAncestor& precomputedData = 160 PrecomputedDataForAncestor& precomputedData =
160 getPrecomputedDataForAncestor(ancestorState); 161 getPrecomputedDataForAncestor(ancestorState);
161 const ClipPaintPropertyNode* clipNode = localState.clip(); 162 const ClipPaintPropertyNode* clipNode = localState.clip();
162 Vector<const ClipPaintPropertyNode*> intermediateNodes; 163 Vector<const ClipPaintPropertyNode*> intermediateNodes;
163 FloatRect clip(LayoutRect::infiniteIntRect()); 164 FloatRect clip(LayoutRect::infiniteIntRect());
164 165
165 bool found = false; 166 bool found = false;
166 // Iterate over the path from localState.clip to ancestorState.clip. Stop if w e've found a memoized (precomputed) clip 167 // Iterate over the path from localState.clip to ancestorState.clip. Stop if
167 // for any particular node. 168 // we've found a memoized (precomputed) clip for any particular node.
168 while (clipNode) { 169 while (clipNode) {
169 auto it = precomputedData.toAncestorClipRects.find(clipNode); 170 auto it = precomputedData.toAncestorClipRects.find(clipNode);
170 if (it != precomputedData.toAncestorClipRects.end()) { 171 if (it != precomputedData.toAncestorClipRects.end()) {
171 clip = it->value; 172 clip = it->value;
172 found = true; 173 found = true;
173 break; 174 break;
174 } 175 }
175 intermediateNodes.append(clipNode); 176 intermediateNodes.append(clipNode);
176 177
177 if (clipNode == ancestorState.clip()) 178 if (clipNode == ancestorState.clip())
178 break; 179 break;
179 180
180 clipNode = clipNode->parent(); 181 clipNode = clipNode->parent();
181 } 182 }
182 if (clipNode != ancestorState.clip() && !found) { 183 if (clipNode != ancestorState.clip() && !found) {
183 success = false; 184 success = false;
184 return clip; 185 return clip;
185 } 186 }
186 187
187 // Iterate down from the top intermediate node found in the previous loop, com puting and memoizing clip rects as we go. 188 // Iterate down from the top intermediate node found in the previous loop,
189 // computing and memoizing clip rects as we go.
188 for (auto it = intermediateNodes.rbegin(); it != intermediateNodes.rend(); 190 for (auto it = intermediateNodes.rbegin(); it != intermediateNodes.rend();
189 ++it) { 191 ++it) {
190 if ((*it) != ancestorState.clip()) { 192 if ((*it) != ancestorState.clip()) {
191 success = false; 193 success = false;
192 const TransformationMatrix& transformMatrix = localToAncestorMatrix( 194 const TransformationMatrix& transformMatrix = localToAncestorMatrix(
193 (*it)->localTransformSpace(), ancestorState, success); 195 (*it)->localTransformSpace(), ancestorState, success);
194 if (!success) 196 if (!success)
195 return clip; 197 return clip;
196 FloatRect mappedRect = transformMatrix.mapRect((*it)->clipRect().rect()); 198 FloatRect mappedRect = transformMatrix.mapRect((*it)->clipRect().rect());
197 clip.intersect(mappedRect); 199 clip.intersect(mappedRect);
(...skipping 11 matching lines...) Expand all
209 const PropertyTreeState& ancestorState, 211 const PropertyTreeState& ancestorState,
210 bool& success) { 212 bool& success) {
211 PrecomputedDataForAncestor& precomputedData = 213 PrecomputedDataForAncestor& precomputedData =
212 getPrecomputedDataForAncestor(ancestorState); 214 getPrecomputedDataForAncestor(ancestorState);
213 215
214 const TransformPaintPropertyNode* transformNode = localTransformNode; 216 const TransformPaintPropertyNode* transformNode = localTransformNode;
215 Vector<const TransformPaintPropertyNode*> intermediateNodes; 217 Vector<const TransformPaintPropertyNode*> intermediateNodes;
216 TransformationMatrix transformMatrix; 218 TransformationMatrix transformMatrix;
217 219
218 bool found = false; 220 bool found = false;
219 // Iterate over the path from localTransformNode to ancestorState.transform. S top if we've found a memoized (precomputed) transform 221 // Iterate over the path from localTransformNode to ancestorState.transform.
220 // for any particular node. 222 // Stop if we've found a memoized (precomputed) transform for any particular
223 // node.
221 while (transformNode) { 224 while (transformNode) {
222 auto it = precomputedData.toAncestorTransforms.find(transformNode); 225 auto it = precomputedData.toAncestorTransforms.find(transformNode);
223 if (it != precomputedData.toAncestorTransforms.end()) { 226 if (it != precomputedData.toAncestorTransforms.end()) {
224 transformMatrix = it->value; 227 transformMatrix = it->value;
225 found = true; 228 found = true;
226 break; 229 break;
227 } 230 }
228 231
229 intermediateNodes.append(transformNode); 232 intermediateNodes.append(transformNode);
230 233
231 if (transformNode == ancestorState.transform()) 234 if (transformNode == ancestorState.transform())
232 break; 235 break;
233 236
234 transformNode = transformNode->parent(); 237 transformNode = transformNode->parent();
235 } 238 }
236 if (!found && transformNode != ancestorState.transform()) { 239 if (!found && transformNode != ancestorState.transform()) {
237 success = false; 240 success = false;
238 return m_identity; 241 return m_identity;
239 } 242 }
240 243
241 // Iterate down from the top intermediate node found in the previous loop, com puting and memoizing transforms as we go. 244 // Iterate down from the top intermediate node found in the previous loop,
245 // computing and memoizing transforms as we go.
242 for (auto it = intermediateNodes.rbegin(); it != intermediateNodes.rend(); 246 for (auto it = intermediateNodes.rbegin(); it != intermediateNodes.rend();
243 it++) { 247 it++) {
244 if ((*it) != ancestorState.transform()) { 248 if ((*it) != ancestorState.transform()) {
245 TransformationMatrix localTransformMatrix = (*it)->matrix(); 249 TransformationMatrix localTransformMatrix = (*it)->matrix();
246 localTransformMatrix.applyTransformOrigin((*it)->origin()); 250 localTransformMatrix.applyTransformOrigin((*it)->origin());
247 transformMatrix = transformMatrix * localTransformMatrix; 251 transformMatrix = transformMatrix * localTransformMatrix;
248 } 252 }
249 253
250 precomputedData.toAncestorTransforms.set(*it, transformMatrix); 254 precomputedData.toAncestorTransforms.set(*it, transformMatrix);
251 } 255 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 291
288 // Walk up until we find the ancestor. 292 // Walk up until we find the ancestor.
289 while (a != b) { 293 while (a != b) {
290 a = a->parent(); 294 a = a->parent();
291 b = b->parent(); 295 b = b->parent();
292 } 296 }
293 return a; 297 return a;
294 } 298 }
295 299
296 } // namespace blink 300 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698