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

Side by Side Diff: sky/engine/core/rendering/RenderGeometryMap.cpp

Issue 953673002: Delete RenderLayerModelObject. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 9 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
« no previous file with comments | « sky/engine/core/rendering/RenderGeometryMap.h ('k') | sky/engine/core/rendering/RenderInline.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 28 matching lines...) Expand all
39 , m_nonUniformStepsCount(0) 39 , m_nonUniformStepsCount(0)
40 , m_transformedStepsCount(0) 40 , m_transformedStepsCount(0)
41 , m_mapCoordinatesFlags(flags) 41 , m_mapCoordinatesFlags(flags)
42 { 42 {
43 } 43 }
44 44
45 RenderGeometryMap::~RenderGeometryMap() 45 RenderGeometryMap::~RenderGeometryMap()
46 { 46 {
47 } 47 }
48 48
49 void RenderGeometryMap::mapToContainer(TransformState& transformState, const Ren derLayerModelObject* container) const 49 void RenderGeometryMap::mapToContainer(TransformState& transformState, const Ren derBox* container) const
50 { 50 {
51 // If the mapping includes something like columns, we have to go via rendere rs. 51 // If the mapping includes something like columns, we have to go via rendere rs.
52 if (hasNonUniformStep()) { 52 if (hasNonUniformStep()) {
53 m_mapping.last().m_renderer->mapLocalToContainer(container, transformSta te, ApplyContainerFlip | m_mapCoordinatesFlags); 53 m_mapping.last().m_renderer->mapLocalToContainer(container, transformSta te, ApplyContainerFlip | m_mapCoordinatesFlags);
54 transformState.flatten(); 54 transformState.flatten();
55 return; 55 return;
56 } 56 }
57 57
58 #if ENABLE(ASSERT) 58 #if ENABLE(ASSERT)
59 bool foundContainer = !container || (m_mapping.size() && m_mapping[0].m_rend erer == container); 59 bool foundContainer = !container || (m_mapping.size() && m_mapping[0].m_rend erer == container);
(...skipping 22 matching lines...) Expand all
82 transformState.applyTransform(*currentStep.m_transform.get(), ac cumulate); 82 transformState.applyTransform(*currentStep.m_transform.get(), ac cumulate);
83 else 83 else
84 transformState.move(currentStep.m_offset.width(), currentStep.m_ offset.height(), accumulate); 84 transformState.move(currentStep.m_offset.width(), currentStep.m_ offset.height(), accumulate);
85 } 85 }
86 } 86 }
87 87
88 ASSERT(foundContainer); 88 ASSERT(foundContainer);
89 transformState.flatten(); 89 transformState.flatten();
90 } 90 }
91 91
92 FloatPoint RenderGeometryMap::mapToContainer(const FloatPoint& p, const RenderLa yerModelObject* container) const 92 FloatPoint RenderGeometryMap::mapToContainer(const FloatPoint& p, const RenderBo x* container) const
93 { 93 {
94 FloatPoint result; 94 FloatPoint result;
95 95
96 if (!hasTransformStep() && !hasNonUniformStep() && (!container || (m_mapping .size() && container == m_mapping[0].m_renderer))) 96 if (!hasTransformStep() && !hasNonUniformStep() && (!container || (m_mapping .size() && container == m_mapping[0].m_renderer)))
97 result = p + m_accumulatedOffset; 97 result = p + m_accumulatedOffset;
98 else { 98 else {
99 TransformState transformState(TransformState::ApplyTransformDirection, p ); 99 TransformState transformState(TransformState::ApplyTransformDirection, p );
100 mapToContainer(transformState, container); 100 mapToContainer(transformState, container);
101 result = transformState.lastPlanarPoint(); 101 result = transformState.lastPlanarPoint();
102 } 102 }
(...skipping 24 matching lines...) Expand all
127 fprintf(stderr, "RenderGeometryMap::dumpSteps accumulatedOffset=%d,%d\n", m_ accumulatedOffset.width().toInt(), m_accumulatedOffset.height().toInt()); 127 fprintf(stderr, "RenderGeometryMap::dumpSteps accumulatedOffset=%d,%d\n", m_ accumulatedOffset.width().toInt(), m_accumulatedOffset.height().toInt());
128 for (int i = m_mapping.size() - 1; i >= 0; --i) { 128 for (int i = m_mapping.size() - 1; i >= 0; --i) {
129 fprintf(stderr, " [%d] %s: offset=%d,%d", i, m_mapping[i].m_renderer->de bugName().ascii().data(), m_mapping[i].m_offset.width().toInt(), m_mapping[i].m_ offset.height().toInt()); 129 fprintf(stderr, " [%d] %s: offset=%d,%d", i, m_mapping[i].m_renderer->de bugName().ascii().data(), m_mapping[i].m_offset.width().toInt(), m_mapping[i].m_ offset.height().toInt());
130 if (m_mapping[i].m_hasTransform) 130 if (m_mapping[i].m_hasTransform)
131 fprintf(stderr, " hasTransform"); 131 fprintf(stderr, " hasTransform");
132 fprintf(stderr, "\n"); 132 fprintf(stderr, "\n");
133 } 133 }
134 } 134 }
135 #endif 135 #endif
136 136
137 FloatQuad RenderGeometryMap::mapToContainer(const FloatRect& rect, const RenderL ayerModelObject* container) const 137 FloatQuad RenderGeometryMap::mapToContainer(const FloatRect& rect, const RenderB ox* container) const
138 { 138 {
139 FloatRect result; 139 FloatRect result;
140 140
141 if (!hasTransformStep() && !hasNonUniformStep() && (!container || (m_mapping .size() && container == m_mapping[0].m_renderer))) { 141 if (!hasTransformStep() && !hasNonUniformStep() && (!container || (m_mapping .size() && container == m_mapping[0].m_renderer))) {
142 result = rect; 142 result = rect;
143 result.move(m_accumulatedOffset); 143 result.move(m_accumulatedOffset);
144 } else { 144 } else {
145 TransformState transformState(TransformState::ApplyTransformDirection, r ect.center(), rect); 145 TransformState transformState(TransformState::ApplyTransformDirection, r ect.center(), rect);
146 mapToContainer(transformState, container); 146 mapToContainer(transformState, container);
147 result = transformState.lastPlanarQuad().boundingBox(); 147 result = transformState.lastPlanarQuad().boundingBox();
(...skipping 10 matching lines...) Expand all
158 158
159 // Inspector creates renderers with negative width <https://bugs.webkit. org/show_bug.cgi?id=87194>. 159 // Inspector creates renderers with negative width <https://bugs.webkit. org/show_bug.cgi?id=87194>.
160 // Taking FloatQuad bounds avoids spurious assertions because of that. 160 // Taking FloatQuad bounds avoids spurious assertions because of that.
161 ASSERT(enclosingIntRect(rendererMappedResult) == enclosingIntRect(FloatQ uad(result).boundingBox())); 161 ASSERT(enclosingIntRect(rendererMappedResult) == enclosingIntRect(FloatQ uad(result).boundingBox()));
162 } 162 }
163 #endif 163 #endif
164 164
165 return result; 165 return result;
166 } 166 }
167 167
168 void RenderGeometryMap::pushMappingsToAncestor(const RenderObject* renderer, con st RenderLayerModelObject* ancestorRenderer) 168 void RenderGeometryMap::pushMappingsToAncestor(const RenderObject* renderer, con st RenderBox* ancestorRenderer)
169 { 169 {
170 // We need to push mappings in reverse order here, so do insertions rather t han appends. 170 // We need to push mappings in reverse order here, so do insertions rather t han appends.
171 TemporaryChange<size_t> positionChange(m_insertionPosition, m_mapping.size() ); 171 TemporaryChange<size_t> positionChange(m_insertionPosition, m_mapping.size() );
172 do { 172 do {
173 renderer = renderer->pushMappingToContainer(ancestorRenderer, *this); 173 renderer = renderer->pushMappingToContainer(ancestorRenderer, *this);
174 } while (renderer && renderer != ancestorRenderer); 174 } while (renderer && renderer != ancestorRenderer);
175 175
176 ASSERT(m_mapping.isEmpty() || isTopmostRenderView(m_mapping[0].m_renderer)); 176 ASSERT(m_mapping.isEmpty() || isTopmostRenderView(m_mapping[0].m_renderer));
177 } 177 }
178 178
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 if (!m_mapping.size()) { 210 if (!m_mapping.size()) {
211 ASSERT(ancestorLayer->renderer()->isRenderView()); 211 ASSERT(ancestorLayer->renderer()->isRenderView());
212 pushMappingsToAncestor(ancestorLayer->renderer(), 0); 212 pushMappingsToAncestor(ancestorLayer->renderer(), 0);
213 } 213 }
214 214
215 TemporaryChange<size_t> positionChange(m_insertionPosition, m_mapping.si ze()); 215 TemporaryChange<size_t> positionChange(m_insertionPosition, m_mapping.si ze());
216 bool accumulatingTransform = layer->renderer()->style()->preserves3D() | | ancestorLayer->renderer()->style()->preserves3D(); 216 bool accumulatingTransform = layer->renderer()->style()->preserves3D() | | ancestorLayer->renderer()->style()->preserves3D();
217 push(renderer, toLayoutSize(layerOffset), accumulatingTransform, /*isNon Uniform*/ false, /*hasTransform*/ false); 217 push(renderer, toLayoutSize(layerOffset), accumulatingTransform, /*isNon Uniform*/ false, /*hasTransform*/ false);
218 return; 218 return;
219 } 219 }
220 const RenderLayerModelObject* ancestorRenderer = ancestorLayer ? ancestorLay er->renderer() : 0; 220 const RenderBox* ancestorRenderer = ancestorLayer ? ancestorLayer->renderer( ) : 0;
221 pushMappingsToAncestor(renderer, ancestorRenderer); 221 pushMappingsToAncestor(renderer, ancestorRenderer);
222 } 222 }
223 223
224 void RenderGeometryMap::push(const RenderObject* renderer, const LayoutSize& off setFromContainer, bool accumulatingTransform, bool isNonUniform, bool hasTransfo rm) 224 void RenderGeometryMap::push(const RenderObject* renderer, const LayoutSize& off setFromContainer, bool accumulatingTransform, bool isNonUniform, bool hasTransfo rm)
225 { 225 {
226 // fprintf(stderr, "RenderGeometryMap::push %p %d,%d isNonUniform=%d\n", rend erer, offsetFromContainer.width().toInt(), offsetFromContainer.height().toInt(), isNonUniform); 226 // fprintf(stderr, "RenderGeometryMap::push %p %d,%d isNonUniform=%d\n", rend erer, offsetFromContainer.width().toInt(), offsetFromContainer.height().toInt(), isNonUniform);
227 227
228 ASSERT(m_insertionPosition != kNotFound); 228 ASSERT(m_insertionPosition != kNotFound);
229 ASSERT(!renderer->isRenderView() || !m_insertionPosition || m_mapCoordinates Flags & TraverseDocumentBoundaries); 229 ASSERT(!renderer->isRenderView() || !m_insertionPosition || m_mapCoordinates Flags & TraverseDocumentBoundaries);
230 230
(...skipping 15 matching lines...) Expand all
246 RenderGeometryMapStep& step = m_mapping[m_insertionPosition]; 246 RenderGeometryMapStep& step = m_mapping[m_insertionPosition];
247 247
248 if (!t.isIntegerTranslation()) 248 if (!t.isIntegerTranslation())
249 step.m_transform = adoptPtr(new TransformationMatrix(t)); 249 step.m_transform = adoptPtr(new TransformationMatrix(t));
250 else 250 else
251 step.m_offset = LayoutSize(t.e(), t.f()); 251 step.m_offset = LayoutSize(t.e(), t.f());
252 252
253 stepInserted(step); 253 stepInserted(step);
254 } 254 }
255 255
256 void RenderGeometryMap::popMappingsToAncestor(const RenderLayerModelObject* ance storRenderer) 256 void RenderGeometryMap::popMappingsToAncestor(const RenderBox* ancestorRenderer)
257 { 257 {
258 ASSERT(m_mapping.size()); 258 ASSERT(m_mapping.size());
259 259
260 while (m_mapping.size() && m_mapping.last().m_renderer != ancestorRenderer) { 260 while (m_mapping.size() && m_mapping.last().m_renderer != ancestorRenderer) {
261 stepRemoved(m_mapping.last()); 261 stepRemoved(m_mapping.last());
262 m_mapping.removeLast(); 262 m_mapping.removeLast();
263 } 263 }
264 } 264 }
265 265
266 void RenderGeometryMap::popMappingsToAncestor(const RenderLayer* ancestorLayer) 266 void RenderGeometryMap::popMappingsToAncestor(const RenderLayer* ancestorLayer)
267 { 267 {
268 const RenderLayerModelObject* ancestorRenderer = ancestorLayer ? ancestorLay er->renderer() : 0; 268 const RenderBox* ancestorRenderer = ancestorLayer ? ancestorLayer->renderer( ) : 0;
269 popMappingsToAncestor(ancestorRenderer); 269 popMappingsToAncestor(ancestorRenderer);
270 } 270 }
271 271
272 void RenderGeometryMap::stepInserted(const RenderGeometryMapStep& step) 272 void RenderGeometryMap::stepInserted(const RenderGeometryMapStep& step)
273 { 273 {
274 m_accumulatedOffset += step.m_offset; 274 m_accumulatedOffset += step.m_offset;
275 275
276 if (step.m_isNonUniform) 276 if (step.m_isNonUniform)
277 ++m_nonUniformStepsCount; 277 ++m_nonUniformStepsCount;
278 278
(...skipping 22 matching lines...) Expand all
301 if (!renderer->isRenderView()) 301 if (!renderer->isRenderView())
302 return false; 302 return false;
303 303
304 // If we're not working with multiple RenderViews, then any view is consider ed 304 // If we're not working with multiple RenderViews, then any view is consider ed
305 // "topmost" (to preserve original behavior). 305 // "topmost" (to preserve original behavior).
306 return !(m_mapCoordinatesFlags & TraverseDocumentBoundaries); 306 return !(m_mapCoordinatesFlags & TraverseDocumentBoundaries);
307 } 307 }
308 #endif 308 #endif
309 309
310 } // namespace blink 310 } // namespace blink
OLDNEW
« no previous file with comments | « sky/engine/core/rendering/RenderGeometryMap.h ('k') | sky/engine/core/rendering/RenderInline.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698