WebCore:
2008-04-29 David Hyatt <hyatt@apple.com>
Implement the new box-reflect property in CSS. This property enables real-time reflections on
objects (yes you can reflect <video>!).
Reviewed by Dan Bernstein
Test cases added in fast/reflections/
* GNUmakefile.am:
* WebCore.pro:
* WebCore.xcodeproj/project.pbxproj:
* WebCoreSources.bkl:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::):
(WebCore::valueForReflection):
(WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
* css/CSSParser.cpp:
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseReflect):
(WebCore::BorderImageParseContext::commitBorderImage):
(WebCore::CSSParser::parseBorderImage):
(WebCore::parseGradientColorStop):
(WebCore::CSSParser::parseTransform):
* css/CSSParser.h:
* css/CSSPropertyNames.in:
* css/CSSReflectValue.cpp: Added.
(WebCore::CSSReflectValue::cssText):
* css/CSSReflectValue.h: Added.
(WebCore::):
(WebCore::CSSReflectValue::CSSReflectValue):
(WebCore::CSSReflectValue::direction):
(WebCore::CSSReflectValue::offset):
(WebCore::CSSReflectValue::mask):
(WebCore::CSSReflectValue::setDirection):
(WebCore::CSSReflectValue::setOffset):
(WebCore::CSSReflectValue::setMask):
* css/CSSStyleSelector.cpp:
(WebCore::CSSStyleSelector::adjustRenderStyle):
(WebCore::CSSStyleSelector::applyProperty):
(WebCore::CSSStyleSelector::mapNinePieceImage):
* css/CSSStyleSelector.h:
* rendering/InlineFlowBox.cpp:
(WebCore::InlineFlowBox::placeBoxesVertically):
(WebCore::InlineFlowBox::paintMask):
* rendering/Length.h:
(WebCore::Length::calcFloatValue):
* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::overflowHeight):
(WebCore::RenderBlock::overflowWidth):
(WebCore::RenderBlock::overflowLeft):
(WebCore::RenderBlock::overflowTop):
(WebCore::RenderBlock::overflowRect):
(WebCore::RenderBlock::layoutBlock):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::setStyle):
(WebCore::RenderBox::paintMask):
(WebCore::RenderBox::imageChanged):
(WebCore::RenderBox::computeAbsoluteRepaintRect):
* rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::layoutBlock):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::RenderLayer):
(WebCore::RenderLayer::~RenderLayer):
(WebCore::RenderLayer::updateLayerPositions):
(WebCore::RenderLayer::enclosingPositionedAncestor):
(WebCore::RenderLayer::enclosingTransformedAncestor):
(WebCore::RenderLayer::isTransparent):
(WebCore::transparencyClipBox):
(WebCore::RenderLayer::operator delete):
(WebCore::RenderLayer::destroy):
(WebCore::RenderLayer::removeOnlyThisLayer):
(WebCore::RenderLayer::insertOnlyThisLayer):
(WebCore::RenderLayer::paintLayer):
(WebCore::RenderLayer::updateZOrderLists):
(WebCore::RenderLayer::updateOverflowList):
(WebCore::RenderLayer::collectLayers):
(WebCore::RenderLayer::shouldBeOverflowOnly):
(WebCore::RenderLayer::styleChanged):
(WebCore::RenderLayer::reflectionLayer):
(WebCore::RenderLayer::createReflection):
(WebCore::RenderLayer::updateReflectionStyle):
* rendering/RenderLayer.h:
(WebCore::RenderLayer::hasReflection):
(WebCore::RenderLayer::reflection):
(WebCore::RenderLayer::paintingInsideReflection):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::RenderObject):
(WebCore::RenderObject::requiresLayer):
(WebCore::RenderObject::setStyle):
(WebCore::RenderObject::updateImage):
(WebCore::RenderObject::reflectionBox):
(WebCore::RenderObject::reflectionOffset):
* rendering/RenderObject.h:
(WebCore::RenderObject::hasTransform):
(WebCore::RenderObject::setHasReflection):
(WebCore::RenderObject::hasReflection):
* rendering/RenderReplica.cpp: Added.
(WebCore::RenderReplica::RenderReplica):
(WebCore::RenderReplica::~RenderReplica):
(WebCore::RenderReplica::layout):
(WebCore::RenderReplica::calcPrefWidths):
(WebCore::RenderReplica::paint):
* rendering/RenderReplica.h: Added.
(WebCore::RenderReplica::renderName):
(WebCore::RenderReplica::requiresLayer):
* rendering/RenderStyle.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):
(WebCore::StyleRareNonInheritedData::reflectionDataEquivalent):
(WebCore::RenderStyle::diff):
(WebCore::RenderStyle::applyTransform):
* rendering/RenderStyle.h:
(WebCore::TranslateTransformOperation::apply):
(WebCore::StyleReflection::StyleReflection):
(WebCore::StyleReflection::operator==):
(WebCore::StyleReflection::operator!=):
(WebCore::StyleReflection::direction):
(WebCore::StyleReflection::offset):
(WebCore::StyleReflection::mask):
(WebCore::StyleReflection::setDirection):
(WebCore::StyleReflection::setOffset):
(WebCore::StyleReflection::setMask):
(WebCore::RenderStyle::boxReflect):
(WebCore::RenderStyle::setBoxReflect):
(WebCore::RenderStyle::initialBoxReflect):
* rendering/RenderTable.cpp:
(WebCore::RenderTable::layout):
(WebCore::RenderTable::paintMask):
* rendering/RenderTableCell.cpp:
(WebCore::RenderTableCell::requiresLayer):
(WebCore::RenderTableCell::paintMask):
LayoutTests:
2008-04-29 David Hyatt <hyatt@apple.com>
Implement support for the new box-reflect property. Tests of the new property.
Reviewed by Dan Bernstein
* fast/reflections: Added.
* fast/reflections/reflection-computed-style-expected.txt: Added.
* fast/reflections/reflection-computed-style.html: Added.
* fast/reflections/reflection-direction.html: Added.
* fast/reflections/reflection-masks.html: Added.
* fast/reflections/reflection-nesting.html: Added.
* fast/reflections/resources: Added.
* fast/reflections/resources/kate.png: Added.
* fast/reflections/resources/vignette-mask.png: Added.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@32695 268f45cc-cd09-0410-ab3c-d52691b4dbfc
46 files changed