Changeset 40877 in webkit
- Timestamp:
- Feb 11, 2009, 4:09:52 PM (17 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r40876 r40877 1 2009-02-11 Chris Marrin <cmarrin@apple.com> 2 3 Reviewed by Dave Hyatt. 4 5 https://bugs.webkit.org/show_bug.cgi?id=23905 6 7 Adds support for 3D CSS properties (transform-style-3d, perspective, 8 perspective-origin, and backface-visibility) to RenderStyle and friends 9 10 * platform/graphics/transforms/TransformOperation.h 11 * rendering/style/RenderStyle.cpp: 12 (WebCore::RenderStyle::diff): 13 (WebCore::RenderStyle::applyTransform): 14 * rendering/style/RenderStyle.h: 15 (WebCore::InheritedFlags::transformOriginZ): 16 (WebCore::InheritedFlags::hasTransformRelatedProperty): 17 (WebCore::InheritedFlags::transformStyle3D): 18 (WebCore::InheritedFlags::backfaceVisibility): 19 (WebCore::InheritedFlags::perspective): 20 (WebCore::InheritedFlags::perspectiveOriginX): 21 (WebCore::InheritedFlags::perspectiveOriginY): 22 (WebCore::InheritedFlags::setTransformOriginZ): 23 (WebCore::InheritedFlags::setTransformStyle3D): 24 (WebCore::InheritedFlags::setBackfaceVisibility): 25 (WebCore::InheritedFlags::setPerspective): 26 (WebCore::InheritedFlags::setPerspectiveOriginX): 27 (WebCore::InheritedFlags::setPerspectiveOriginY): 28 (WebCore::InheritedFlags::initialTransformOriginZ): 29 (WebCore::InheritedFlags::initialTransformStyle3D): 30 (WebCore::InheritedFlags::initialBackfaceVisibility): 31 (WebCore::InheritedFlags::initialPerspective): 32 (WebCore::InheritedFlags::initialPerspectiveOriginX): 33 (WebCore::InheritedFlags::initialPerspectiveOriginY): 34 * rendering/style/RenderStyleConstants.h: 35 (WebCore::): 36 * rendering/style/StyleRareNonInheritedData.cpp: 37 (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): 38 (WebCore::StyleRareNonInheritedData::operator==): 39 * rendering/style/StyleRareNonInheritedData.h: 40 * rendering/style/StyleTransformData.cpp: 41 (WebCore::StyleTransformData::StyleTransformData): 42 (WebCore::StyleTransformData::operator==): 43 * rendering/style/StyleTransformData.h: 44 1 45 2009-02-11 Simon Fraser <simon.fraser@apple.com> 2 46 -
trunk/WebCore/platform/graphics/transforms/TransformOperation.h
r40861 r40877 44 44 SKEW_X, SKEW_Y, SKEW, 45 45 MATRIX, 46 #if ENABLE(3D_TRANSFORMS)47 46 SCALE_Z, SCALE_3D, 48 47 TRANSLATE_Z, TRANSLATE_3D, … … 50 49 MATRIX_3D, 51 50 PERSPECTIVE, 52 #endif53 51 IDENTITY, NONE 54 52 }; -
trunk/WebCore/rendering/style/RenderStyle.cpp
r40863 r40877 336 336 } 337 337 338 #if !USE(ACCELERATED_COMPOSITING) 339 if (rareNonInheritedData.get() != other->rareNonInheritedData.get()) { 340 if (rareNonInheritedData->m_transformStyle3D != other->rareNonInheritedData->m_transformStyle3D || 341 rareNonInheritedData->m_backfaceVisibility != other->rareNonInheritedData->m_backfaceVisibility || 342 rareNonInheritedData->m_perspective != other->rareNonInheritedData->m_perspective || 343 rareNonInheritedData->m_perspectiveOriginX != other->rareNonInheritedData->m_perspectiveOriginX || 344 rareNonInheritedData->m_perspectiveOriginY != other->rareNonInheritedData->m_perspectiveOriginY) 345 return StyleDifferenceLayout; 346 } 347 #endif 348 338 349 #if ENABLE(DASHBOARD_SUPPORT) 339 350 // If regions change, trigger a relayout to re-calc regions. … … 482 493 return StyleDifferenceRepaint; 483 494 495 #if USE(ACCELERATED_COMPOSITING) 496 if (rareNonInheritedData.get() != other->rareNonInheritedData.get()) { 497 if (rareNonInheritedData->m_transformStyle3D != other->rareNonInheritedData->m_transformStyle3D || 498 rareNonInheritedData->m_backfaceVisibility != other->rareNonInheritedData->m_backfaceVisibility || 499 rareNonInheritedData->m_perspective != other->rareNonInheritedData->m_perspective || 500 rareNonInheritedData->m_perspectiveOriginX != other->rareNonInheritedData->m_perspectiveOriginX || 501 rareNonInheritedData->m_perspectiveOriginY != other->rareNonInheritedData->m_perspectiveOriginY) 502 return StyleDifferenceRecompositeLayer; 503 } 504 #endif 505 484 506 // Cursors are not checked, since they will be set appropriately in response to mouse events, 485 507 // so they don't need to cause any repaint or layout. … … 634 656 if (type != TransformOperation::TRANSLATE_X && 635 657 type != TransformOperation::TRANSLATE_Y && 636 type != TransformOperation::TRANSLATE) { 658 type != TransformOperation::TRANSLATE && 659 type != TransformOperation::TRANSLATE_Z && 660 type != TransformOperation::TRANSLATE_3D 661 ) { 637 662 applyTransformOrigin = true; 638 663 break; … … 641 666 } 642 667 643 if (applyTransformOrigin) 644 transform.translate(transformOriginX().calcFloatValue(borderBoxSize.width()), transformOriginY().calcFloatValue(borderBoxSize.height())); 668 if (applyTransformOrigin) { 669 transform.translate3d(transformOriginX().calcFloatValue(borderBoxSize.width()), transformOriginY().calcFloatValue(borderBoxSize.height()), transformOriginZ()); 670 } 645 671 646 672 for (i = 0; i < s; i++) 647 673 rareNonInheritedData->m_transform->m_operations.operations()[i]->apply(transform, borderBoxSize); 648 674 649 if (applyTransformOrigin) 650 transform.translate(-transformOriginX().calcFloatValue(borderBoxSize.width()), -transformOriginY().calcFloatValue(borderBoxSize.height())); 675 if (applyTransformOrigin) { 676 transform.translate3d(-transformOriginX().calcFloatValue(borderBoxSize.width()), -transformOriginY().calcFloatValue(borderBoxSize.height()), -transformOriginZ()); 677 } 651 678 } 652 679 -
trunk/WebCore/rendering/style/RenderStyle.h
r40876 r40877 637 637 Length transformOriginX() const { return rareNonInheritedData->m_transform->m_x; } 638 638 Length transformOriginY() const { return rareNonInheritedData->m_transform->m_y; } 639 float transformOriginZ() const { return rareNonInheritedData->m_transform->m_z; } 639 640 bool hasTransform() const { return !rareNonInheritedData->m_transform->m_operations.operations().isEmpty(); } 641 642 // Return true if any transform related property (currently transform, transformStyle3D or perspective) 643 // indicates that we are transforming 644 bool hasTransformRelatedProperty() const 645 { 646 return hasTransform() || rareNonInheritedData->m_transformStyle3D == TransformStyle3DPreserve3D || rareNonInheritedData->m_perspective > 0 647 ; 648 } 640 649 641 650 enum ApplyTransformOrigin { IncludeTransformOrigin, ExcludeTransformOrigin }; … … 659 668 const Animation* transitionForProperty(int property) const; 660 669 670 ETransformStyle3D transformStyle3D() const { return rareNonInheritedData->m_transformStyle3D; } 671 EBackfaceVisibility backfaceVisibility() const { return rareNonInheritedData->m_backfaceVisibility; } 672 float perspective() const { return rareNonInheritedData->m_perspective; } 673 Length perspectiveOriginX() const { return rareNonInheritedData->m_perspectiveOriginX; } 674 Length perspectiveOriginY() const { return rareNonInheritedData->m_perspectiveOriginY; } 675 661 676 #if USE(ACCELERATED_COMPOSITING) 662 677 // When set, this ensures that styles compare as different. Used during accelerated animations. … … 939 954 void setTransformOriginX(Length l) { SET_VAR(rareNonInheritedData.access()->m_transform, m_x, l); } 940 955 void setTransformOriginY(Length l) { SET_VAR(rareNonInheritedData.access()->m_transform, m_y, l); } 956 void setTransformOriginZ(float f) { SET_VAR(rareNonInheritedData.access()->m_transform, m_z, f); } 941 957 // End CSS3 Setters 942 958 … … 958 974 void adjustAnimations(); 959 975 void adjustTransitions(); 976 977 void setTransformStyle3D(ETransformStyle3D b) { SET_VAR(rareNonInheritedData, m_transformStyle3D, b); } 978 void setBackfaceVisibility(EBackfaceVisibility b) { SET_VAR(rareNonInheritedData, m_backfaceVisibility, b); } 979 void setPerspective(float p) { SET_VAR(rareNonInheritedData, m_perspective, p); } 980 void setPerspectiveOriginX(Length l) { SET_VAR(rareNonInheritedData, m_perspectiveOriginX, l); } 981 void setPerspectiveOriginY(Length l) { SET_VAR(rareNonInheritedData, m_perspectiveOriginY, l); } 960 982 961 983 #if USE(ACCELERATED_COMPOSITING) … … 1126 1148 static Length initialTransformOriginY() { return Length(50.0, Percent); } 1127 1149 static EPointerEvents initialPointerEvents() { return PE_AUTO; } 1150 static float initialTransformOriginZ() { return 0; } 1151 static ETransformStyle3D initialTransformStyle3D() { return TransformStyle3DFlat; } 1152 static EBackfaceVisibility initialBackfaceVisibility() { return BackfaceVisibilityVisible; } 1153 static float initialPerspective() { return 0; } 1154 static Length initialPerspectiveOriginX() { return Length(50.0, Percent); } 1155 static Length initialPerspectiveOriginY() { return Length(50.0, Percent); } 1128 1156 1129 1157 // Keep these at the end. -
trunk/WebCore/rendering/style/RenderStyleConstants.h
r40863 r40877 297 297 }; 298 298 299 enum ETransformStyle3D { 300 TransformStyle3DFlat, TransformStyle3DPreserve3D 301 }; 302 303 enum EBackfaceVisibility { 304 BackfaceVisibilityVisible, BackfaceVisibilityHidden 305 }; 306 299 307 } // namespace WebCore 300 308 -
trunk/WebCore/rendering/style/StyleRareNonInheritedData.cpp
r40876 r40877 50 50 , m_transitions(0) 51 51 , m_mask(FillLayer(MaskFillLayer)) 52 , m_transformStyle3D(RenderStyle::initialTransformStyle3D()) 53 , m_backfaceVisibility(RenderStyle::initialBackfaceVisibility()) 54 , m_perspective(RenderStyle::initialPerspective()) 55 , m_perspectiveOriginX(RenderStyle::initialPerspectiveOriginX()) 56 , m_perspectiveOriginY(RenderStyle::initialPerspectiveOriginY()) 52 57 #if ENABLE(XBL) 53 58 , bindingURI(0) … … 82 87 , m_mask(o.m_mask) 83 88 , m_maskBoxImage(o.m_maskBoxImage) 89 , m_transformStyle3D(o.m_transformStyle3D) 90 , m_backfaceVisibility(o.m_backfaceVisibility) 91 , m_perspective(o.m_perspective) 92 , m_perspectiveOriginX(o.m_perspectiveOriginX) 93 , m_perspectiveOriginY(o.m_perspectiveOriginY) 84 94 #if ENABLE(XBL) 85 95 , bindingURI(o.bindingURI ? o.bindingURI->copy() : 0) … … 136 146 && bindingsEquivalent(o) 137 147 #endif 148 && (m_transformStyle3D == o.m_transformStyle3D) 149 && (m_backfaceVisibility == o.m_backfaceVisibility) 150 && (m_perspective == o.m_perspective) 151 && (m_perspectiveOriginX == o.m_perspectiveOriginX) 152 && (m_perspectiveOriginY == o.m_perspectiveOriginY) 138 153 ; 139 154 } -
trunk/WebCore/rendering/style/StyleRareNonInheritedData.h
r40876 r40877 31 31 #include "FillLayer.h" 32 32 #include "NinePieceImage.h" 33 #include "StyleTransformData.h" 33 34 #include <wtf/OwnPtr.h> 34 35 #include <wtf/PassRefPtr.h> … … 111 112 NinePieceImage m_maskBoxImage; 112 113 114 ETransformStyle3D m_transformStyle3D; 115 EBackfaceVisibility m_backfaceVisibility; 116 float m_perspective; 117 Length m_perspectiveOriginX; 118 Length m_perspectiveOriginY; 119 113 120 #if ENABLE(XBL) 114 121 OwnPtr<BindingURI> bindingURI; // The XBL binding URI list. -
trunk/WebCore/rendering/style/StyleTransformData.cpp
r36593 r40877 31 31 , m_x(RenderStyle::initialTransformOriginX()) 32 32 , m_y(RenderStyle::initialTransformOriginY()) 33 , m_z(RenderStyle::initialTransformOriginZ()) 33 34 { 34 35 } … … 39 40 , m_x(o.m_x) 40 41 , m_y(o.m_y) 42 , m_z(o.m_z) 41 43 { 42 44 } … … 44 46 bool StyleTransformData::operator==(const StyleTransformData& o) const 45 47 { 46 return m_x == o.m_x && m_y == o.m_y && m_ operations == o.m_operations;48 return m_x == o.m_x && m_y == o.m_y && m_z == o.m_z && m_operations == o.m_operations; 47 49 } 48 50 -
trunk/WebCore/rendering/style/StyleTransformData.h
r36593 r40877 47 47 Length m_x; 48 48 Length m_y; 49 float m_z; 49 50 50 51 private:
Note:
See TracChangeset
for help on using the changeset viewer.