Changeset 121285 in webkit for trunk/Source/WebCore/css/StyleBuilder.cpp
- Timestamp:
- Jun 26, 2012, 1:23:26 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/css/StyleBuilder.cpp
r121164 r121285 35 35 #include "Document.h" 36 36 #include "Element.h" 37 #include "NodeRenderStyle.h" 37 38 #include "Pair.h" 38 39 #include "Rect.h" … … 213 214 setValue(styleResolver->style(), *primitiveValue); 214 215 else if (valueType == ComputeLength) 215 setValue(styleResolver->style(), primitiveValue->computeLength<T>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver-> style()->effectiveZoom()));216 setValue(styleResolver->style(), primitiveValue->computeLength<T>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver->parentStyle(), styleResolver->style()->effectiveZoom())); 216 217 } 217 218 … … 223 224 static Length convertToLength(StyleResolver* styleResolver, CSSPrimitiveValue* value) 224 225 { 225 return value->convertToLength<FixedIntegerConversion | PercentConversion | FractionConversion | AutoConversion>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver-> style()->effectiveZoom());226 return value->convertToLength<FixedIntegerConversion | PercentConversion | FractionConversion | AutoConversion>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver->parentStyle(), styleResolver->style()->effectiveZoom()); 226 227 } 227 228 public: … … 380 381 setValue(styleResolver->style(), Length()); 381 382 else if (primitiveValue->isLength()) { 382 Length length = primitiveValue->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver-> style()->effectiveZoom());383 Length length = primitiveValue->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver->parentStyle(), styleResolver->style()->effectiveZoom()); 383 384 length.setQuirk(primitiveValue->isQuirkValue()); 384 385 setValue(styleResolver->style(), length); … … 386 387 setValue(styleResolver->style(), Length(primitiveValue->getDoubleValue(), Percent)); 387 388 else if (primitiveValue->isCalculatedPercentageWithLength()) 388 setValue(styleResolver->style(), Length(primitiveValue->cssCalcValue()->toCalcValue(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver-> style()->effectiveZoom())));389 setValue(styleResolver->style(), Length(primitiveValue->cssCalcValue()->toCalcValue(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver->parentStyle(), styleResolver->style()->effectiveZoom()))); 389 390 else if (primitiveValue->isViewportPercentageLength()) 390 391 setValue(styleResolver->style(), primitiveValue->viewportPercentageLength()); … … 446 447 return; 447 448 } else 448 radiusWidth = pair->first()->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver-> style()->effectiveZoom());449 radiusWidth = pair->first()->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver->parentStyle(), styleResolver->style()->effectiveZoom()); 449 450 if (pair->second()->isPercentage()) 450 451 radiusHeight = Length(pair->second()->getDoubleValue(), Percent); … … 456 457 return; 457 458 } else 458 radiusHeight = pair->second()->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver-> style()->effectiveZoom());459 radiusHeight = pair->second()->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver->parentStyle(), styleResolver->style()->effectiveZoom()); 459 460 int width = radiusWidth.value(); 460 461 int height = radiusHeight.value(); … … 601 602 } else if (ident == CSSValueInvalid) { 602 603 float zoom = (svgZoomEnabled && styleResolver->useSVGZoomRules()) ? 1.0f : styleResolver->style()->effectiveZoom(); 603 length = primitiveValue->computeLength<T>(styleResolver->style(), styleResolver->rootElementStyle(), zoom);604 length = primitiveValue->computeLength<T>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver->parentStyle(), zoom); 604 605 } else { 605 606 ASSERT_NOT_REACHED(); … … 739 740 fontDescription.setIsAbsoluteSize(parentIsAbsoluteSize 740 741 || !(primitiveValue->isPercentage() || primitiveValue->isFontRelativeLength())); 742 743 RenderStyle* gpStyle = 0; 744 ContainerNode* parentNode = styleResolver->parentNode(); 745 if (parentNode) { 746 ContainerNode* gpNode = parentNode->parentNodeForRenderingAndStyle(); 747 gpStyle = gpNode ? gpNode->renderStyle() : 0; 748 } 749 741 750 if (primitiveValue->isLength()) 742 size = primitiveValue->computeLength<float>(styleResolver->parentStyle(), styleResolver->rootElementStyle(), 1.0, true);751 size = primitiveValue->computeLength<float>(styleResolver->parentStyle(), styleResolver->rootElementStyle(), gpStyle, 1.0, true); 743 752 else if (primitiveValue->isPercentage()) 744 753 size = (primitiveValue->getFloatValue() * parentSize) / 100.0f; 745 754 else if (primitiveValue->isCalculatedPercentageWithLength()) 746 size = primitiveValue->cssCalcValue()->toCalcValue(styleResolver->parentStyle(), styleResolver->rootElementStyle() )->evaluate(parentSize);755 size = primitiveValue->cssCalcValue()->toCalcValue(styleResolver->parentStyle(), styleResolver->rootElementStyle(), gpStyle)->evaluate(parentSize); 747 756 else if (primitiveValue->isViewportPercentageLength()) 748 757 size = valueForLength(primitiveValue->viewportPercentageLength(), 0, styleResolver->document()->renderView()); … … 1201 1210 multiplier *= frame->textZoomFactor(); 1202 1211 } 1203 lineHeight = primitiveValue->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle(), multiplier);1212 lineHeight = primitiveValue->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver->parentStyle(), multiplier); 1204 1213 } else if (primitiveValue->isPercentage()) { 1205 1214 // FIXME: percentage should not be restricted to an integer here. … … 1223 1232 class ApplyPropertyPageSize { 1224 1233 private: 1225 static Length mmLength(double mm) { return CSSPrimitiveValue::create(mm, CSSPrimitiveValue::CSS_MM)->computeLength<Length>(0, 0 ); }1226 static Length inchLength(double inch) { return CSSPrimitiveValue::create(inch, CSSPrimitiveValue::CSS_IN)->computeLength<Length>(0, 0 ); }1234 static Length mmLength(double mm) { return CSSPrimitiveValue::create(mm, CSSPrimitiveValue::CSS_MM)->computeLength<Length>(0, 0, 0); } 1235 static Length inchLength(double inch) { return CSSPrimitiveValue::create(inch, CSSPrimitiveValue::CSS_IN)->computeLength<Length>(0, 0, 0); } 1227 1236 static bool getPageSizeFromName(CSSPrimitiveValue* pageSizeName, CSSPrimitiveValue* pageOrientation, Length& width, Length& height) 1228 1237 { … … 1319 1328 if (!second->isLength()) 1320 1329 return; 1321 width = first->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle() );1322 height = second->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle() );1330 width = first->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver->parentStyle()); 1331 height = second->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver->parentStyle()); 1323 1332 } else { 1324 1333 // <page-size> <orientation> … … 1338 1347 // <length> 1339 1348 pageSizeType = PAGE_SIZE_RESOLVED; 1340 width = height = primitiveValue->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle() );1349 width = height = primitiveValue->computeLength<Length>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver->parentStyle()); 1341 1350 } else { 1342 1351 switch (primitiveValue->getIdent()) { … … 1572 1581 return styleResolver->style()->setVerticalAlign(*primitiveValue); 1573 1582 1574 styleResolver->style()->setVerticalAlignLength(primitiveValue->convertToLength<FixedIntegerConversion | PercentConversion | CalculatedConversion | ViewportPercentageConversion>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver-> style()->effectiveZoom()));1583 styleResolver->style()->setVerticalAlignLength(primitiveValue->convertToLength<FixedIntegerConversion | PercentConversion | CalculatedConversion | ViewportPercentageConversion>(styleResolver->style(), styleResolver->rootElementStyle(), styleResolver->parentStyle(), styleResolver->style()->effectiveZoom())); 1575 1584 } 1576 1585
Note:
See TracChangeset
for help on using the changeset viewer.