Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Side by Side Diff: Source/core/css/resolver/StyleBuilderCustom.cpp

Issue 68203023: Merge FixedIntegerConversion and FixedFloatConversion for CSSPrimitiveValue::convertToLength (Closed) Base URL: https://chromium.googlesource.com/chromium/blink@master
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
4 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) 4 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com)
5 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) 5 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com)
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved. 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> 8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org>
9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
10 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. 10 * Copyright (c) 2011, Code Aurora Forum. All rights reserved.
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 #include "core/svg/SVGURIReference.h" 84 #include "core/svg/SVGURIReference.h"
85 #include "platform/fonts/FontDescription.h" 85 #include "platform/fonts/FontDescription.h"
86 #include "wtf/MathExtras.h" 86 #include "wtf/MathExtras.h"
87 #include "wtf/StdLibExtras.h" 87 #include "wtf/StdLibExtras.h"
88 #include "wtf/Vector.h" 88 #include "wtf/Vector.h"
89 89
90 namespace WebCore { 90 namespace WebCore {
91 91
92 static Length clipConvertToLength(StyleResolverState& state, CSSPrimitiveValue* value) 92 static Length clipConvertToLength(StyleResolverState& state, CSSPrimitiveValue* value)
93 { 93 {
94 return value->convertToLength<FixedIntegerConversion | PercentConversion | A utoConversion>(state.style(), state.rootElementStyle(), state.style()->effective Zoom()); 94 return value->convertToLength<FixedConversion | PercentConversion | AutoConv ersion>(state.style(), state.rootElementStyle(), state.style()->effectiveZoom()) ;
95 } 95 }
96 96
97 void StyleBuilderFunctions::applyInitialCSSPropertyClip(StyleResolverState& stat e) 97 void StyleBuilderFunctions::applyInitialCSSPropertyClip(StyleResolverState& stat e)
98 { 98 {
99 state.style()->setClip(Length(), Length(), Length(), Length()); 99 state.style()->setClip(Length(), Length(), Length(), Length());
100 state.style()->setHasClip(false); 100 state.style()->setHasClip(false);
101 } 101 }
102 102
103 void StyleBuilderFunctions::applyInheritCSSPropertyClip(StyleResolverState& stat e) 103 void StyleBuilderFunctions::applyInheritCSSPropertyClip(StyleResolverState& stat e)
104 { 104 {
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 { 534 {
535 if (!value->isValueList()) 535 if (!value->isValueList())
536 return; 536 return;
537 537
538 // [ <length> | <percentage> ] each-line 538 // [ <length> | <percentage> ] each-line
539 // The order is guaranteed. See CSSParser::parseTextIndent. 539 // The order is guaranteed. See CSSParser::parseTextIndent.
540 // The second value, each-line is handled only when css3TextEnabled() return s true. 540 // The second value, each-line is handled only when css3TextEnabled() return s true.
541 541
542 CSSValueList* valueList = toCSSValueList(value); 542 CSSValueList* valueList = toCSSValueList(value);
543 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(valueList->itemWitho utBoundsCheck(0)); 543 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(valueList->itemWitho utBoundsCheck(0));
544 Length lengthOrPercentageValue = primitiveValue->convertToLength<FixedIntege rConversion | PercentConversion>(state.style(), state.rootElementStyle(), state. style()->effectiveZoom()); 544 Length lengthOrPercentageValue = primitiveValue->convertToLength<FixedConver sion | PercentConversion>(state.style(), state.rootElementStyle(), state.style() ->effectiveZoom());
545 ASSERT(!lengthOrPercentageValue.isUndefined()); 545 ASSERT(!lengthOrPercentageValue.isUndefined());
546 state.style()->setTextIndent(lengthOrPercentageValue); 546 state.style()->setTextIndent(lengthOrPercentageValue);
547 547
548 ASSERT(valueList->length() <= 2); 548 ASSERT(valueList->length() <= 2);
549 CSSPrimitiveValue* eachLineValue = toCSSPrimitiveValue(valueList->item(1)); 549 CSSPrimitiveValue* eachLineValue = toCSSPrimitiveValue(valueList->item(1));
550 if (eachLineValue) { 550 if (eachLineValue) {
551 ASSERT(eachLineValue->getValueID() == CSSValueEachLine); 551 ASSERT(eachLineValue->getValueID() == CSSValueEachLine);
552 state.style()->setTextIndentLine(TextIndentEachLine); 552 state.style()->setTextIndentLine(TextIndentEachLine);
553 } else 553 } else
554 state.style()->setTextIndentLine(TextIndentFirstLine); 554 state.style()->setTextIndentLine(TextIndentFirstLine);
555 } 555 }
556 556
557 void StyleBuilderFunctions::applyValueCSSPropertyVerticalAlign(StyleResolverStat e& state, CSSValue* value) 557 void StyleBuilderFunctions::applyValueCSSPropertyVerticalAlign(StyleResolverStat e& state, CSSValue* value)
558 { 558 {
559 if (!value->isPrimitiveValue()) 559 if (!value->isPrimitiveValue())
560 return; 560 return;
561 561
562 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 562 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
563 563
564 if (primitiveValue->getValueID()) 564 if (primitiveValue->getValueID())
565 return state.style()->setVerticalAlign(*primitiveValue); 565 return state.style()->setVerticalAlign(*primitiveValue);
566 566
567 state.style()->setVerticalAlignLength(primitiveValue->convertToLength<FixedI ntegerConversion | PercentConversion>(state.style(), state.rootElementStyle(), s tate.style()->effectiveZoom())); 567 state.style()->setVerticalAlignLength(primitiveValue->convertToLength<FixedC onversion | PercentConversion>(state.style(), state.rootElementStyle(), state.st yle()->effectiveZoom()));
568 } 568 }
569 569
570 static void resetEffectiveZoom(StyleResolverState& state) 570 static void resetEffectiveZoom(StyleResolverState& state)
571 { 571 {
572 // Reset the zoom in effect. This allows the setZoom method to accurately co mpute a new zoom in effect. 572 // Reset the zoom in effect. This allows the setZoom method to accurately co mpute a new zoom in effect.
573 state.setEffectiveZoom(state.parentStyle() ? state.parentStyle()->effectiveZ oom() : RenderStyle::initialZoom()); 573 state.setEffectiveZoom(state.parentStyle() ? state.parentStyle()->effectiveZ oom() : RenderStyle::initialZoom());
574 } 574 }
575 575
576 void StyleBuilderFunctions::applyInitialCSSPropertyZoom(StyleResolverState& stat e) 576 void StyleBuilderFunctions::applyInitialCSSPropertyZoom(StyleResolverState& stat e)
577 { 577 {
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
685 case CSSValueNormal: 685 case CSSValueNormal:
686 state.style()->setMarqueeIncrement(Length(6, Fixed)); // 6px. The Wi nIE default. 686 state.style()->setMarqueeIncrement(Length(6, Fixed)); // 6px. The Wi nIE default.
687 break; 687 break;
688 case CSSValueLarge: 688 case CSSValueLarge:
689 state.style()->setMarqueeIncrement(Length(36, Fixed)); // 36px. 689 state.style()->setMarqueeIncrement(Length(36, Fixed)); // 36px.
690 break; 690 break;
691 default: 691 default:
692 break; 692 break;
693 } 693 }
694 } else { 694 } else {
695 Length marqueeLength = primitiveValue ? primitiveValue->convertToLength< FixedIntegerConversion | PercentConversion>(state.style(), state.rootElementStyl e()) : Length(Undefined); 695 Length marqueeLength = primitiveValue ? primitiveValue->convertToLength< FixedConversion | PercentConversion>(state.style(), state.rootElementStyle()) : Length(Undefined);
696 if (!marqueeLength.isUndefined()) 696 if (!marqueeLength.isUndefined())
697 state.style()->setMarqueeIncrement(marqueeLength); 697 state.style()->setMarqueeIncrement(marqueeLength);
698 } 698 }
699 } 699 }
700 700
701 void StyleBuilderFunctions::applyValueCSSPropertyInternalMarqueeSpeed(StyleResol verState& state, CSSValue* value) 701 void StyleBuilderFunctions::applyValueCSSPropertyInternalMarqueeSpeed(StyleResol verState& state, CSSValue* value)
702 { 702 {
703 if (!value->isPrimitiveValue()) 703 if (!value->isPrimitiveValue())
704 return; 704 return;
705 705
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 { 824 {
825 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 825 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
826 if (primitiveValue->isURI()) 826 if (primitiveValue->isURI())
827 return SVGURIReference::fragmentIdentifierFromIRIString(primitiveValue-> getStringValue(), state.document()); 827 return SVGURIReference::fragmentIdentifierFromIRIString(primitiveValue-> getStringValue(), state.document());
828 return String(); 828 return String();
829 } 829 }
830 830
831 Length StyleBuilderConverter::convertLength(StyleResolverState& state, CSSValue* value) 831 Length StyleBuilderConverter::convertLength(StyleResolverState& state, CSSValue* value)
832 { 832 {
833 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 833 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
834 Length result = primitiveValue->convertToLength<FixedIntegerConversion | Per centConversion>(state.style(), state.rootElementStyle(), state.style()->effectiv eZoom()); 834 Length result = primitiveValue->convertToLength<FixedConversion | PercentCon version>(state.style(), state.rootElementStyle(), state.style()->effectiveZoom() );
835 ASSERT(!result.isUndefined()); 835 ASSERT(!result.isUndefined());
836 result.setQuirk(primitiveValue->isQuirkValue()); 836 result.setQuirk(primitiveValue->isQuirkValue());
837 return result; 837 return result;
838 } 838 }
839 839
840 Length StyleBuilderConverter::convertLengthOrAuto(StyleResolverState& state, CSS Value* value) 840 Length StyleBuilderConverter::convertLengthOrAuto(StyleResolverState& state, CSS Value* value)
841 { 841 {
842 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 842 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
843 Length result = primitiveValue->convertToLength<FixedIntegerConversion | Per centConversion | AutoConversion>(state.style(), state.rootElementStyle(), state. style()->effectiveZoom()); 843 Length result = primitiveValue->convertToLength<FixedConversion | PercentCon version | AutoConversion>(state.style(), state.rootElementStyle(), state.style() ->effectiveZoom());
844 ASSERT(!result.isUndefined()); 844 ASSERT(!result.isUndefined());
845 result.setQuirk(primitiveValue->isQuirkValue()); 845 result.setQuirk(primitiveValue->isQuirkValue());
846 return result; 846 return result;
847 } 847 }
848 848
849 Length StyleBuilderConverter::convertLengthSizing(StyleResolverState& state, CSS Value* value) 849 Length StyleBuilderConverter::convertLengthSizing(StyleResolverState& state, CSS Value* value)
850 { 850 {
851 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 851 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
852 switch (primitiveValue->getValueID()) { 852 switch (primitiveValue->getValueID()) {
853 case CSSValueInvalid: 853 case CSSValueInvalid:
(...skipping 23 matching lines...) Expand all
877 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 877 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
878 if (primitiveValue->getValueID() == CSSValueNone) 878 if (primitiveValue->getValueID() == CSSValueNone)
879 return Length(Undefined); 879 return Length(Undefined);
880 return convertLengthSizing(state, value); 880 return convertLengthSizing(state, value);
881 } 881 }
882 882
883 LengthPoint StyleBuilderConverter::convertLengthPoint(StyleResolverState& state, CSSValue* value) 883 LengthPoint StyleBuilderConverter::convertLengthPoint(StyleResolverState& state, CSSValue* value)
884 { 884 {
885 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 885 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
886 Pair* pair = primitiveValue->getPairValue(); 886 Pair* pair = primitiveValue->getPairValue();
887 Length x = pair->first()->convertToLength<FixedIntegerConversion | PercentCo nversion>(state.style(), state.rootElementStyle(), state.style()->effectiveZoom( )); 887 Length x = pair->first()->convertToLength<FixedConversion | PercentConversio n>(state.style(), state.rootElementStyle(), state.style()->effectiveZoom());
888 Length y = pair->second()->convertToLength<FixedIntegerConversion | PercentC onversion>(state.style(), state.rootElementStyle(), state.style()->effectiveZoom ()); 888 Length y = pair->second()->convertToLength<FixedConversion | PercentConversi on>(state.style(), state.rootElementStyle(), state.style()->effectiveZoom());
889 return LengthPoint(x, y); 889 return LengthPoint(x, y);
890 } 890 }
891 891
892 float StyleBuilderConverter::convertNumberOrPercentage(StyleResolverState& state , CSSValue* value) 892 float StyleBuilderConverter::convertNumberOrPercentage(StyleResolverState& state , CSSValue* value)
893 { 893 {
894 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 894 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
895 ASSERT(primitiveValue->isNumber() || primitiveValue->isPercentage()); 895 ASSERT(primitiveValue->isNumber() || primitiveValue->isPercentage());
896 if (primitiveValue->isNumber()) 896 if (primitiveValue->isNumber())
897 return primitiveValue->getFloatValue(); 897 return primitiveValue->getFloatValue();
898 return primitiveValue->getFloatValue() / 100.0f; 898 return primitiveValue->getFloatValue() / 100.0f;
899 } 899 }
900 900
901 LengthSize StyleBuilderConverter::convertRadius(StyleResolverState& state, CSSVa lue* value) 901 LengthSize StyleBuilderConverter::convertRadius(StyleResolverState& state, CSSVa lue* value)
902 { 902 {
903 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value); 903 CSSPrimitiveValue* primitiveValue = toCSSPrimitiveValue(value);
904 Pair* pair = primitiveValue->getPairValue(); 904 Pair* pair = primitiveValue->getPairValue();
905 Length radiusWidth = pair->first()->convertToLength<FixedIntegerConversion | PercentConversion>(state.style(), state.rootElementStyle(), state.style()->effe ctiveZoom()); 905 Length radiusWidth = pair->first()->convertToLength<FixedConversion | Percen tConversion>(state.style(), state.rootElementStyle(), state.style()->effectiveZo om());
906 Length radiusHeight = pair->second()->convertToLength<FixedIntegerConversion | PercentConversion>(state.style(), state.rootElementStyle(), state.style()->ef fectiveZoom()); 906 Length radiusHeight = pair->second()->convertToLength<FixedConversion | Perc entConversion>(state.style(), state.rootElementStyle(), state.style()->effective Zoom());
907 float width = radiusWidth.value(); 907 float width = radiusWidth.value();
908 float height = radiusHeight.value(); 908 float height = radiusHeight.value();
909 ASSERT(width >= 0 && height >= 0); 909 ASSERT(width >= 0 && height >= 0);
910 if (width <= 0 || height <= 0) 910 if (width <= 0 || height <= 0)
911 return LengthSize(Length(0, Fixed), Length(0, Fixed)); 911 return LengthSize(Length(0, Fixed), Length(0, Fixed));
912 return LengthSize(radiusWidth, radiusHeight); 912 return LengthSize(radiusWidth, radiusHeight);
913 } 913 }
914 914
915 PassRefPtr<ShadowList> StyleBuilderConverter::convertShadow(StyleResolverState& state, CSSValue* value) 915 PassRefPtr<ShadowList> StyleBuilderConverter::convertShadow(StyleResolverState& state, CSSValue* value)
916 { 916 {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
998 workingLength = Length(MaxContent); 998 workingLength = Length(MaxContent);
999 return true; 999 return true;
1000 } 1000 }
1001 1001
1002 if (primitiveValue->isFlex()) { 1002 if (primitiveValue->isFlex()) {
1003 // Fractional unit. 1003 // Fractional unit.
1004 workingLength.setFlex(primitiveValue->getDoubleValue()); 1004 workingLength.setFlex(primitiveValue->getDoubleValue());
1005 return true; 1005 return true;
1006 } 1006 }
1007 1007
1008 workingLength = primitiveValue->convertToLength<FixedIntegerConversion | Per centConversion | AutoConversion>(state.style(), state.rootElementStyle(), state. style()->effectiveZoom()); 1008 workingLength = primitiveValue->convertToLength<FixedConversion | PercentCon version | AutoConversion>(state.style(), state.rootElementStyle(), state.style() ->effectiveZoom());
1009 if (workingLength.length().isUndefined()) 1009 if (workingLength.length().isUndefined())
1010 return false; 1010 return false;
1011 1011
1012 if (primitiveValue->isLength()) 1012 if (primitiveValue->isLength())
1013 workingLength.length().setQuirk(primitiveValue->isQuirkValue()); 1013 workingLength.length().setQuirk(primitiveValue->isQuirkValue());
1014 1014
1015 return true; 1015 return true;
1016 } 1016 }
1017 1017
1018 static bool createGridTrackSize(CSSValue* value, GridTrackSize& trackSize, const StyleResolverState& state) 1018 static bool createGridTrackSize(CSSValue* value, GridTrackSize& trackSize, const StyleResolverState& state)
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
1517 return; 1517 return;
1518 } 1518 }
1519 1519
1520 if (!value->isReflectValue()) 1520 if (!value->isReflectValue())
1521 return; 1521 return;
1522 1522
1523 CSSReflectValue* reflectValue = toCSSReflectValue(value); 1523 CSSReflectValue* reflectValue = toCSSReflectValue(value);
1524 RefPtr<StyleReflection> reflection = StyleReflection::create(); 1524 RefPtr<StyleReflection> reflection = StyleReflection::create();
1525 reflection->setDirection(*reflectValue->direction()); 1525 reflection->setDirection(*reflectValue->direction());
1526 if (reflectValue->offset()) 1526 if (reflectValue->offset())
1527 reflection->setOffset(reflectValue->offset()->convertToLength<FixedI ntegerConversion | PercentConversion>(state.style(), state.rootElementStyle(), z oomFactor)); 1527 reflection->setOffset(reflectValue->offset()->convertToLength<FixedC onversion | PercentConversion>(state.style(), state.rootElementStyle(), zoomFact or));
1528 NinePieceImage mask; 1528 NinePieceImage mask;
1529 mask.setMaskDefaults(); 1529 mask.setMaskDefaults();
1530 state.styleMap().mapNinePieceImage(state.style(), id, reflectValue->mask (), mask); 1530 state.styleMap().mapNinePieceImage(state.style(), id, reflectValue->mask (), mask);
1531 reflection->setMask(mask); 1531 reflection->setMask(mask);
1532 1532
1533 state.style()->setBoxReflect(reflection.release()); 1533 state.style()->setBoxReflect(reflection.release());
1534 return; 1534 return;
1535 } 1535 }
1536 case CSSPropertySrc: // Only used in @font-face rules. 1536 case CSSPropertySrc: // Only used in @font-face rules.
1537 return; 1537 return;
(...skipping 768 matching lines...) Expand 10 before | Expand all | Expand 10 after
2306 break; 2306 break;
2307 } 2307 }
2308 case CSSPropertyEnableBackground: 2308 case CSSPropertyEnableBackground:
2309 // Silently ignoring this property for now 2309 // Silently ignoring this property for now
2310 // http://bugs.webkit.org/show_bug.cgi?id=6022 2310 // http://bugs.webkit.org/show_bug.cgi?id=6022
2311 break; 2311 break;
2312 } 2312 }
2313 } 2313 }
2314 2314
2315 } // namespace WebCore 2315 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/css/resolver/FilterOperationResolver.cpp ('k') | Source/core/css/resolver/TransformBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698