|
Lines 552-557
static bool canCreateStackingContext(const RenderLayer& layer)
a/Source/WebCore/rendering/RenderLayer.cpp_sec1
|
| 552 |
{ |
552 |
{ |
| 553 |
auto& renderer = layer.renderer(); |
553 |
auto& renderer = layer.renderer(); |
| 554 |
return renderer.hasTransformRelatedProperty() |
554 |
return renderer.hasTransformRelatedProperty() |
|
|
555 |
#if ENABLE(LAYER_BASED_SVG_ENGINE) |
| 556 |
|| renderer.hasSVGTransform() |
| 557 |
#endif |
| 555 |
|| renderer.hasClipPath() |
558 |
|| renderer.hasClipPath() |
| 556 |
|| renderer.hasFilter() |
559 |
|| renderer.hasFilter() |
| 557 |
|| renderer.hasMask() |
560 |
|| renderer.hasMask() |
|
Lines 1310-1322
static inline FloatRect computeReferenceBox(const RenderLayerModelObject& render
a/Source/WebCore/rendering/RenderLayer.cpp_sec2
|
| 1310 |
|
1313 |
|
| 1311 |
static inline void updateTransformFromStyle(TransformationMatrix& transform, const RenderLayerModelObject& renderer, const RenderStyle& style, OptionSet<RenderStyle::TransformOperationOption> options) |
1314 |
static inline void updateTransformFromStyle(TransformationMatrix& transform, const RenderLayerModelObject& renderer, const RenderStyle& style, OptionSet<RenderStyle::TransformOperationOption> options) |
| 1312 |
{ |
1315 |
{ |
| 1313 |
FloatRect referenceBox; |
1316 |
auto referenceBox = renderer.transformReferenceBoxRect(); |
| 1314 |
|
1317 |
|
| 1315 |
// FIXME: [LBSE] Upstream reference box computation for RenderSVGModelObject derived renderers |
1318 |
#if ENABLE(LAYER_BASED_SVG_ENGINE) |
| 1316 |
if (is<RenderBox>(renderer)) |
1319 |
// No pixel snapping within SVG subtree. |
| 1317 |
referenceBox = snapRectToDevicePixels(LayoutRect(renderer.transformReferenceBoxRect()), renderer.document().deviceScaleFactor()); |
1320 |
if (renderer.isSVGLayerAwareRenderer() && renderer.document().settings().layerBasedSVGEngineEnabled()) { |
|
|
1321 |
renderer.applyTransform(transform, style, referenceBox, options); |
| 1322 |
makeMatrixRenderable(transform, renderer.view().compositor().canRender3DTransforms()); |
| 1323 |
return; |
| 1324 |
} |
| 1325 |
#endif |
| 1318 |
|
1326 |
|
| 1319 |
renderer.applyTransform(transform, style, referenceBox, options); |
1327 |
auto pixelSnappedReferenceBox = snapRectToDevicePixels(LayoutRect(referenceBox), renderer.document().deviceScaleFactor()); |
|
|
1328 |
renderer.applyTransform(transform, style, pixelSnappedReferenceBox, options); |
| 1320 |
makeMatrixRenderable(transform, renderer.view().compositor().canRender3DTransforms()); |
1329 |
makeMatrixRenderable(transform, renderer.view().compositor().canRender3DTransforms()); |
| 1321 |
} |
1330 |
} |
| 1322 |
|
1331 |
|
|
Lines 1353-1374
TransformationMatrix RenderLayer::currentTransform(OptionSet<RenderStyle::Transf
a/Source/WebCore/rendering/RenderLayer.cpp_sec3
|
| 1353 |
if (!m_transform) |
1362 |
if (!m_transform) |
| 1354 |
return { }; |
1363 |
return { }; |
| 1355 |
|
1364 |
|
| 1356 |
// FIXME: [LBSE] Upstream transform support for RenderSVGModelObject derived renderers |
|
|
| 1357 |
if (!is<RenderBox>(renderer())) |
| 1358 |
return { }; |
| 1359 |
|
| 1360 |
auto& renderBox = downcast<RenderBox>(renderer()); |
| 1361 |
|
| 1362 |
// m_transform includes transform-origin and is affected by the choice of the transform-box. |
1365 |
// m_transform includes transform-origin and is affected by the choice of the transform-box. |
| 1363 |
// Therefore we can only use the cached m_transform, if the animation doesn't alter transform-box or excludes transform-origin. |
1366 |
// Therefore we can only use the cached m_transform, if the animation doesn't alter transform-box or excludes transform-origin. |
| 1364 |
|
1367 |
|
| 1365 |
// Query the animatedStyle() to obtain the current transformation, when accelerated transform animations are running. |
1368 |
// Query the animatedStyle() to obtain the current transformation, when accelerated transform animations are running. |
| 1366 |
auto styleable = Styleable::fromRenderer(renderBox); |
1369 |
auto styleable = Styleable::fromRenderer(renderer()); |
| 1367 |
if ((styleable && styleable->isRunningAcceleratedTransformAnimation()) || !options.contains(RenderStyle::TransformOperationOption::TransformOrigin)) { |
1370 |
if ((styleable && styleable->isRunningAcceleratedTransformAnimation()) || !options.contains(RenderStyle::TransformOperationOption::TransformOrigin)) { |
| 1368 |
std::unique_ptr<RenderStyle> animatedStyle = renderBox.animatedStyle(); |
1371 |
std::unique_ptr<RenderStyle> animatedStyle = renderer().animatedStyle(); |
| 1369 |
|
1372 |
|
| 1370 |
TransformationMatrix transform; |
1373 |
TransformationMatrix transform; |
| 1371 |
updateTransformFromStyle(transform, renderBox, *animatedStyle, options); |
1374 |
updateTransformFromStyle(transform, renderer(), *animatedStyle, options); |
| 1372 |
return transform; |
1375 |
return transform; |
| 1373 |
} |
1376 |
} |
| 1374 |
|
1377 |
|