Changeset 165892 in webkit
- Timestamp:
- Mar 19, 2014 7:25:34 AM (10 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r165890 r165892 1 2014-03-19 Zalan Bujtas <zalan@apple.com> 2 3 Subpixel rendering: Transform origin is miscalculated when RenderLayer's 4 offsetfromRenderer has device pixel fraction value. 5 https://bugs.webkit.org/show_bug.cgi?id=129859 6 7 Reviewed by Simon Fraser. 8 9 We need to calculate the transformed origin using the painting coordinates to produce 10 pixel precise result. 11 12 * compositing/columns/composited-columns-expected.txt: 13 * compositing/geometry/limit-layer-bounds-opacity-transition-expected.txt: 14 * compositing/repaint/resize-repaint-expected.txt: 15 * platform/mac/compositing/repaint/invalidations-on-composited-layers-expected.txt: 16 * platform/mac/compositing/visibility/visibility-image-layers-dynamic-expected.txt: 17 1 18 2014-03-19 Mihnea Ovidenie <mihnea@adobe.com> 2 19 -
trunk/LayoutTests/compositing/columns/composited-columns-expected.txt
r154785 r165892 8 8 (GraphicsLayer 9 9 (position 8.00 8.00) 10 (anchor 0.50 0.50) 10 11 (bounds 769.00 840.00) 11 12 (drawsContent 1) -
trunk/LayoutTests/compositing/geometry/limit-layer-bounds-opacity-transition-expected.txt
r146814 r165892 10 10 (GraphicsLayer 11 11 (position 8.00 8.00) 12 (anchor 1.00 1.00) 12 13 (bounds 1.00 1.00) 13 14 ) -
trunk/LayoutTests/compositing/repaint/resize-repaint-expected.txt
r163021 r165892 12 12 (GraphicsLayer 13 13 (position 8.00 8.00) 14 (anchor 0.50 0.50) 14 15 (bounds 402.00 207.00) 15 16 (drawsContent 1) -
trunk/LayoutTests/platform/mac/compositing/repaint/invalidations-on-composited-layers-expected.txt
r163021 r165892 19 19 (GraphicsLayer 20 20 (position 50.00 50.00) 21 (anchor 0.51 0.51) 21 22 (bounds 75.00 75.00) 22 23 (contentsOpaque 1) -
trunk/LayoutTests/platform/mac/compositing/visibility/visibility-image-layers-dynamic-expected.txt
r161884 r165892 13 13 (GraphicsLayer 14 14 (position 14.00 6.00) 15 (anchor 0.50 0.50) 15 16 (bounds 757.00 152.00) 16 17 (children 1 … … 24 25 (GraphicsLayer 25 26 (position 14.00 160.00) 27 (anchor 0.50 0.50) 26 28 (bounds 757.00 152.00) 27 29 (contentsVisible 0) … … 36 38 (GraphicsLayer 37 39 (position 14.00 314.00) 40 (anchor 0.50 0.50) 38 41 (bounds 757.00 152.00) 39 42 (contentsVisible 0) … … 52 55 53 56 (GraphicsLayer 54 (bounds 785.00 13 21.00)57 (bounds 785.00 1366.00) 55 58 (children 1 56 59 (GraphicsLayer 57 (bounds 785.00 13 21.00)60 (bounds 785.00 1366.00) 58 61 (contentsOpaque 1) 59 62 (children 3 60 63 (GraphicsLayer 61 64 (position 14.00 6.00) 65 (anchor 0.50 0.50) 62 66 (bounds 757.00 152.00) 63 67 (children 1 … … 70 74 (GraphicsLayer 71 75 (position 14.00 160.00) 76 (anchor 0.50 0.50) 72 77 (bounds 757.00 152.00) 73 78 (contentsVisible 0) … … 82 87 (GraphicsLayer 83 88 (position 14.00 314.00) 89 (anchor 0.50 0.50) 84 90 (bounds 757.00 152.00) 85 91 (contentsVisible 0) … … 98 104 99 105 (GraphicsLayer 100 (bounds 785.00 20 00.00)106 (bounds 785.00 2090.00) 101 107 (children 1 102 108 (GraphicsLayer 103 (bounds 785.00 20 00.00)109 (bounds 785.00 2090.00) 104 110 (contentsOpaque 1) 105 111 (children 3 106 112 (GraphicsLayer 107 113 (position 14.00 6.00) 114 (anchor 0.50 0.50) 108 115 (bounds 757.00 152.00) 109 116 (children 1 … … 116 123 (GraphicsLayer 117 124 (position 14.00 160.00) 125 (anchor 0.50 0.50) 118 126 (bounds 757.00 152.00) 119 127 (drawsContent 1) … … 127 135 (GraphicsLayer 128 136 (position 14.00 314.00) 137 (anchor 0.50 0.50) 129 138 (bounds 757.00 152.00) 130 139 (contentsVisible 0) -
trunk/Source/WebCore/ChangeLog
r165891 r165892 1 2014-03-19 Zalan Bujtas <zalan@apple.com> 2 3 Subpixel rendering: Transform origin is miscalculated when RenderLayer's 4 offsetfromRenderer has device pixel fraction value. 5 https://bugs.webkit.org/show_bug.cgi?id=129859 6 7 Reviewed by Simon Fraser. 8 9 We need to calculate the transformed origin using the painting coordinates to produce 10 pixel precise result. 11 12 * rendering/RenderLayerBacking.cpp: 13 (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry): 14 (WebCore::RenderLayerBacking::computeTransformOriginForPainting): 15 * rendering/RenderLayerBacking.h: 16 1 17 2014-03-19 Claudio Saavedra <csaavedra@igalia.com> 2 18 -
trunk/Source/WebCore/rendering/RenderLayerBacking.cpp
r165863 r165892 840 840 841 841 if (m_owningLayer.hasTransform()) { 842 const LayoutRect borderBox = toRenderBox(renderer()).pixelSnappedBorderBoxRect();843 842 // Update properties that depend on layer dimensions. 843 FloatPoint3D transformOrigin = computeTransformOriginForPainting(toRenderBox(renderer()).borderBoxRect()); 844 844 // Get layout bounds in the coords of compAncestor to match relativeCompositingBounds. 845 LayoutRect layerBounds(offsetFromParent, borderBox.size()); 846 847 // Update properties that depend on layer dimensions 848 FloatPoint3D transformOrigin = computeTransformOrigin(borderBox); 845 FloatPoint layerOffset = roundedForPainting(offsetFromParent, deviceScaleFactor); 849 846 // Compute the anchor point, which is in the center of the renderer box unless transform-origin is set. 850 FloatPoint3D anchor(enclosingRelativeCompositingBounds.width() != 0.0f ? ((layerBounds.x() - enclosingRelativeCompositingBounds.x()) + transformOrigin.x()) 851 / enclosingRelativeCompositingBounds.width() : 0.5f, enclosingRelativeCompositingBounds.height() != 0.0f ? ((layerBounds.y() - enclosingRelativeCompositingBounds.y()) 852 + transformOrigin.y()) / enclosingRelativeCompositingBounds.height() : 0.5f, transformOrigin.z()); 847 FloatPoint3D anchor(enclosingRelativeCompositingBounds.width() ? ((layerOffset.x() - enclosingRelativeCompositingBounds.x()) + transformOrigin.x()) 848 / enclosingRelativeCompositingBounds.width() : 0.5, enclosingRelativeCompositingBounds.height() ? ((layerOffset.y() - enclosingRelativeCompositingBounds.y()) 849 + transformOrigin.y()) / enclosingRelativeCompositingBounds.height() : 0.5, transformOrigin.z()); 850 853 851 if (m_contentsContainmentLayer) 854 852 m_contentsContainmentLayer->setAnchorPoint(anchor); … … 874 872 } 875 873 } else { 876 m_graphicsLayer->setAnchorPoint(FloatPoint3D(0.5 f, 0.5f, 0));874 m_graphicsLayer->setAnchorPoint(FloatPoint3D(0.5, 0.5, 0)); 877 875 if (m_contentsContainmentLayer) 878 m_contentsContainmentLayer->setAnchorPoint(FloatPoint3D(0.5 f, 0.5f, 0));876 m_contentsContainmentLayer->setAnchorPoint(FloatPoint3D(0.5, 0.5, 0)); 879 877 } 880 878 … … 1917 1915 } 1918 1916 1919 FloatPoint3D RenderLayerBacking::computeTransformOrigin (const LayoutRect& borderBox) const1917 FloatPoint3D RenderLayerBacking::computeTransformOriginForPainting(const LayoutRect& borderBox) const 1920 1918 { 1921 1919 const RenderStyle& style = renderer().style(); 1920 float deviceScaleFactor = renderer().document().deviceScaleFactor(); 1922 1921 1923 1922 FloatPoint3D origin; 1924 origin.setX( floatValueForLength(style.transformOriginX(), borderBox.width()));1925 origin.setY( floatValueForLength(style.transformOriginY(), borderBox.height()));1923 origin.setX(roundToDevicePixel(floatValueForLength(style.transformOriginX(), borderBox.width()), deviceScaleFactor)); 1924 origin.setY(roundToDevicePixel(floatValueForLength(style.transformOriginY(), borderBox.height()), deviceScaleFactor)); 1926 1925 origin.setZ(style.transformOriginZ()); 1927 1928 return origin;1929 }1930 1931 FloatPoint RenderLayerBacking::computePerspectiveOrigin(const LayoutRect& borderBox) const1932 {1933 const RenderStyle& style = renderer().style();1934 1935 float boxWidth = borderBox.width();1936 float boxHeight = borderBox.height();1937 1938 FloatPoint origin;1939 origin.setX(floatValueForLength(style.perspectiveOriginX(), boxWidth));1940 origin.setY(floatValueForLength(style.perspectiveOriginY(), boxHeight));1941 1926 1942 1927 return origin; -
trunk/Source/WebCore/rendering/RenderLayerBacking.h
r165863 r165892 251 251 252 252 LayoutSize contentOffsetInCompostingLayer() const; 253 // Result is transform origin in pixels. 254 FloatPoint3D computeTransformOrigin(const LayoutRect& borderBox) const; 255 // Result is perspective origin in pixels. 256 FloatPoint computePerspectiveOrigin(const LayoutRect& borderBox) const; 253 // Result is transform origin in device pixels. 254 FloatPoint3D computeTransformOriginForPainting(const LayoutRect& borderBox) const; 257 255 258 256 void updateOpacity(const RenderStyle*);
Note: See TracChangeset
for help on using the changeset viewer.