OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009, 2010, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009, 2010, 2011 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 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 { | 241 { |
242 m_graphicsLayer->setOpacity(compositingOpacity(style->opacity())); | 242 m_graphicsLayer->setOpacity(compositingOpacity(style->opacity())); |
243 } | 243 } |
244 | 244 |
245 void RenderLayerBacking::updateTransform(const RenderStyle* style) | 245 void RenderLayerBacking::updateTransform(const RenderStyle* style) |
246 { | 246 { |
247 // FIXME: This could use m_owningLayer->transform(), but that currently has
transform-origin | 247 // FIXME: This could use m_owningLayer->transform(), but that currently has
transform-origin |
248 // baked into it, and we don't want that. | 248 // baked into it, and we don't want that. |
249 TransformationMatrix t; | 249 TransformationMatrix t; |
250 if (m_owningLayer->hasTransform()) { | 250 if (m_owningLayer->hasTransform()) { |
251 style->applyTransform(t, toRenderBox(renderer())->pixelSnappedBorderBoxR
ect().size(), RenderStyle::ExcludeTransformOrigin); | 251 style->applyTransform(t, toRenderBox(renderer())->pixelSnappedBorderBoxR
ect().size(), RenderStyle::ExcludeTransformOrigin, renderer()->view()); |
252 makeMatrixRenderable(t, compositor()->canRender3DTransforms()); | 252 makeMatrixRenderable(t, compositor()->canRender3DTransforms()); |
253 } | 253 } |
254 | 254 |
255 m_graphicsLayer->setTransform(t); | 255 m_graphicsLayer->setTransform(t); |
256 } | 256 } |
257 | 257 |
258 void RenderLayerBacking::updateFilters(const RenderStyle* style) | 258 void RenderLayerBacking::updateFilters(const RenderStyle* style) |
259 { | 259 { |
260 bool didCompositeFilters = m_canCompositeFilters; | 260 bool didCompositeFilters = m_canCompositeFilters; |
261 m_canCompositeFilters = m_graphicsLayer->setFilters(owningLayer()->computeFi
lterOperations(style)); | 261 m_canCompositeFilters = m_graphicsLayer->setFilters(owningLayer()->computeFi
lterOperations(style)); |
(...skipping 1459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1721 transformVector.insert(adoptPtr(new TransformAnimationValue(key, &(k
eyframeStyle->transform()), tf))); | 1721 transformVector.insert(adoptPtr(new TransformAnimationValue(key, &(k
eyframeStyle->transform()), tf))); |
1722 | 1722 |
1723 if ((hasOpacity && isFirstOrLastKeyframe) || currentKeyframe.containsPro
perty(CSSPropertyOpacity)) | 1723 if ((hasOpacity && isFirstOrLastKeyframe) || currentKeyframe.containsPro
perty(CSSPropertyOpacity)) |
1724 opacityVector.insert(adoptPtr(new FloatAnimationValue(key, keyframeS
tyle->opacity(), tf))); | 1724 opacityVector.insert(adoptPtr(new FloatAnimationValue(key, keyframeS
tyle->opacity(), tf))); |
1725 | 1725 |
1726 if ((hasFilter && isFirstOrLastKeyframe) || currentKeyframe.containsProp
erty(CSSPropertyWebkitFilter)) | 1726 if ((hasFilter && isFirstOrLastKeyframe) || currentKeyframe.containsProp
erty(CSSPropertyWebkitFilter)) |
1727 filterVector.insert(adoptPtr(new FilterAnimationValue(key, &(keyfram
eStyle->filter()), tf))); | 1727 filterVector.insert(adoptPtr(new FilterAnimationValue(key, &(keyfram
eStyle->filter()), tf))); |
1728 } | 1728 } |
1729 | 1729 |
1730 bool didAnimate = false; | 1730 bool didAnimate = false; |
| 1731 RenderView* view = m_owningLayer->renderer()->view(); |
1731 | 1732 |
1732 if (hasTransform && m_graphicsLayer->addAnimation(transformVector, toRenderB
ox(renderer())->pixelSnappedBorderBoxRect().size(), anim, keyframes.animationNam
e(), timeOffset)) | 1733 if (hasTransform && m_graphicsLayer->addAnimation(transformVector, toRenderB
ox(renderer())->pixelSnappedBorderBoxRect().size(), anim, keyframes.animationNam
e(), timeOffset, view)) |
1733 didAnimate = true; | 1734 didAnimate = true; |
1734 | 1735 |
1735 if (hasOpacity && m_graphicsLayer->addAnimation(opacityVector, IntSize(), an
im, keyframes.animationName(), timeOffset)) | 1736 if (hasOpacity && m_graphicsLayer->addAnimation(opacityVector, IntSize(), an
im, keyframes.animationName(), timeOffset, view)) |
1736 didAnimate = true; | 1737 didAnimate = true; |
1737 | 1738 |
1738 if (hasFilter && m_graphicsLayer->addAnimation(filterVector, IntSize(), anim
, keyframes.animationName(), timeOffset)) | 1739 if (hasFilter && m_graphicsLayer->addAnimation(filterVector, IntSize(), anim
, keyframes.animationName(), timeOffset, view)) |
1739 didAnimate = true; | 1740 didAnimate = true; |
1740 | 1741 |
1741 return didAnimate; | 1742 return didAnimate; |
1742 } | 1743 } |
1743 | 1744 |
1744 void RenderLayerBacking::animationPaused(double timeOffset, const String& animat
ionName) | 1745 void RenderLayerBacking::animationPaused(double timeOffset, const String& animat
ionName) |
1745 { | 1746 { |
1746 m_graphicsLayer->pauseAnimation(animationName, timeOffset); | 1747 m_graphicsLayer->pauseAnimation(animationName, timeOffset); |
1747 } | 1748 } |
1748 | 1749 |
1749 void RenderLayerBacking::animationFinished(const String& animationName) | 1750 void RenderLayerBacking::animationFinished(const String& animationName) |
1750 { | 1751 { |
1751 m_graphicsLayer->removeAnimation(animationName); | 1752 m_graphicsLayer->removeAnimation(animationName); |
1752 } | 1753 } |
1753 | 1754 |
1754 bool RenderLayerBacking::startTransition(double timeOffset, CSSPropertyID proper
ty, const RenderStyle* fromStyle, const RenderStyle* toStyle) | 1755 bool RenderLayerBacking::startTransition(double timeOffset, CSSPropertyID proper
ty, const RenderStyle* fromStyle, const RenderStyle* toStyle) |
1755 { | 1756 { |
1756 bool didAnimate = false; | 1757 bool didAnimate = false; |
| 1758 RenderView* view = m_owningLayer->renderer()->view(); |
1757 | 1759 |
1758 ASSERT(property != CSSPropertyInvalid); | 1760 ASSERT(property != CSSPropertyInvalid); |
1759 | 1761 |
1760 if (property == CSSPropertyOpacity) { | 1762 if (property == CSSPropertyOpacity) { |
1761 const CSSAnimationData* opacityAnim = toStyle->transitionForProperty(CSS
PropertyOpacity); | 1763 const CSSAnimationData* opacityAnim = toStyle->transitionForProperty(CSS
PropertyOpacity); |
1762 if (opacityAnim && !opacityAnim->isEmptyOrZeroDuration()) { | 1764 if (opacityAnim && !opacityAnim->isEmptyOrZeroDuration()) { |
1763 KeyframeValueList opacityVector(AnimatedPropertyOpacity); | 1765 KeyframeValueList opacityVector(AnimatedPropertyOpacity); |
1764 opacityVector.insert(adoptPtr(new FloatAnimationValue(0, compositing
Opacity(fromStyle->opacity())))); | 1766 opacityVector.insert(adoptPtr(new FloatAnimationValue(0, compositing
Opacity(fromStyle->opacity())))); |
1765 opacityVector.insert(adoptPtr(new FloatAnimationValue(1, compositing
Opacity(toStyle->opacity())))); | 1767 opacityVector.insert(adoptPtr(new FloatAnimationValue(1, compositing
Opacity(toStyle->opacity())))); |
1766 // The boxSize param is only used for transform animations (which ca
n only run on RenderBoxes), so we pass an empty size here. | 1768 // The boxSize param is only used for transform animations (which ca
n only run on RenderBoxes), so we pass an empty size here. |
1767 if (m_graphicsLayer->addAnimation(opacityVector, IntSize(), opacityA
nim, GraphicsLayer::animationNameForTransition(AnimatedPropertyOpacity), timeOff
set)) { | 1769 if (m_graphicsLayer->addAnimation(opacityVector, IntSize(), opacityA
nim, GraphicsLayer::animationNameForTransition(AnimatedPropertyOpacity), timeOff
set, view)) { |
1768 // To ensure that the correct opacity is visible when the animat
ion ends, also set the final opacity. | 1770 // To ensure that the correct opacity is visible when the animat
ion ends, also set the final opacity. |
1769 updateOpacity(toStyle); | 1771 updateOpacity(toStyle); |
1770 didAnimate = true; | 1772 didAnimate = true; |
1771 } | 1773 } |
1772 } | 1774 } |
1773 } | 1775 } |
1774 | 1776 |
1775 if (property == CSSPropertyWebkitTransform && m_owningLayer->hasTransform())
{ | 1777 if (property == CSSPropertyWebkitTransform && m_owningLayer->hasTransform())
{ |
1776 const CSSAnimationData* transformAnim = toStyle->transitionForProperty(C
SSPropertyWebkitTransform); | 1778 const CSSAnimationData* transformAnim = toStyle->transitionForProperty(C
SSPropertyWebkitTransform); |
1777 if (transformAnim && !transformAnim->isEmptyOrZeroDuration()) { | 1779 if (transformAnim && !transformAnim->isEmptyOrZeroDuration()) { |
1778 KeyframeValueList transformVector(AnimatedPropertyWebkitTransform); | 1780 KeyframeValueList transformVector(AnimatedPropertyWebkitTransform); |
1779 transformVector.insert(adoptPtr(new TransformAnimationValue(0, &from
Style->transform()))); | 1781 transformVector.insert(adoptPtr(new TransformAnimationValue(0, &from
Style->transform()))); |
1780 transformVector.insert(adoptPtr(new TransformAnimationValue(1, &toSt
yle->transform()))); | 1782 transformVector.insert(adoptPtr(new TransformAnimationValue(1, &toSt
yle->transform()))); |
1781 if (m_graphicsLayer->addAnimation(transformVector, toRenderBox(rende
rer())->pixelSnappedBorderBoxRect().size(), transformAnim, GraphicsLayer::animat
ionNameForTransition(AnimatedPropertyWebkitTransform), timeOffset)) { | 1783 if (m_graphicsLayer->addAnimation(transformVector, toRenderBox(rende
rer())->pixelSnappedBorderBoxRect().size(), transformAnim, GraphicsLayer::animat
ionNameForTransition(AnimatedPropertyWebkitTransform), timeOffset, view)) { |
1782 // To ensure that the correct transform is visible when the anim
ation ends, also set the final transform. | 1784 // To ensure that the correct transform is visible when the anim
ation ends, also set the final transform. |
1783 updateTransform(toStyle); | 1785 updateTransform(toStyle); |
1784 didAnimate = true; | 1786 didAnimate = true; |
1785 } | 1787 } |
1786 } | 1788 } |
1787 } | 1789 } |
1788 | 1790 |
1789 if (property == CSSPropertyWebkitFilter && m_owningLayer->hasFilter()) { | 1791 if (property == CSSPropertyWebkitFilter && m_owningLayer->hasFilter()) { |
1790 const CSSAnimationData* filterAnim = toStyle->transitionForProperty(CSSP
ropertyWebkitFilter); | 1792 const CSSAnimationData* filterAnim = toStyle->transitionForProperty(CSSP
ropertyWebkitFilter); |
1791 if (filterAnim && !filterAnim->isEmptyOrZeroDuration()) { | 1793 if (filterAnim && !filterAnim->isEmptyOrZeroDuration()) { |
1792 KeyframeValueList filterVector(AnimatedPropertyWebkitFilter); | 1794 KeyframeValueList filterVector(AnimatedPropertyWebkitFilter); |
1793 filterVector.insert(adoptPtr(new FilterAnimationValue(0, &fromStyle-
>filter()))); | 1795 filterVector.insert(adoptPtr(new FilterAnimationValue(0, &fromStyle-
>filter()))); |
1794 filterVector.insert(adoptPtr(new FilterAnimationValue(1, &toStyle->f
ilter()))); | 1796 filterVector.insert(adoptPtr(new FilterAnimationValue(1, &toStyle->f
ilter()))); |
1795 if (m_graphicsLayer->addAnimation(filterVector, IntSize(), filterAni
m, GraphicsLayer::animationNameForTransition(AnimatedPropertyWebkitFilter), time
Offset)) { | 1797 if (m_graphicsLayer->addAnimation(filterVector, IntSize(), filterAni
m, GraphicsLayer::animationNameForTransition(AnimatedPropertyWebkitFilter), time
Offset, view)) { |
1796 // To ensure that the correct filter is visible when the animati
on ends, also set the final filter. | 1798 // To ensure that the correct filter is visible when the animati
on ends, also set the final filter. |
1797 updateFilters(toStyle); | 1799 updateFilters(toStyle); |
1798 didAnimate = true; | 1800 didAnimate = true; |
1799 } | 1801 } |
1800 } | 1802 } |
1801 } | 1803 } |
1802 | 1804 |
1803 return didAnimate; | 1805 return didAnimate; |
1804 } | 1806 } |
1805 | 1807 |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1916 if (m_layerForVerticalScrollbar) | 1918 if (m_layerForVerticalScrollbar) |
1917 backingMemory += m_layerForVerticalScrollbar->backingStoreMemoryEstimate
(); | 1919 backingMemory += m_layerForVerticalScrollbar->backingStoreMemoryEstimate
(); |
1918 | 1920 |
1919 if (m_layerForScrollCorner) | 1921 if (m_layerForScrollCorner) |
1920 backingMemory += m_layerForScrollCorner->backingStoreMemoryEstimate(); | 1922 backingMemory += m_layerForScrollCorner->backingStoreMemoryEstimate(); |
1921 | 1923 |
1922 return backingMemory; | 1924 return backingMemory; |
1923 } | 1925 } |
1924 | 1926 |
1925 } // namespace WebCore | 1927 } // namespace WebCore |
OLD | NEW |