OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. | 2 * Copyright (C) 2011 Adobe Systems Incorporated. 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 * | 7 * |
8 * 1. Redistributions of source code must retain the above | 8 * 1. Redistributions of source code must retain the above |
9 * copyright notice, this list of conditions and the following | 9 * copyright notice, this list of conditions and the following |
10 * disclaimer. | 10 * disclaimer. |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 CSSValueID side = defaultSide; | 73 CSSValueID side = defaultSide; |
74 RefPtrWillBeRawPtr<CSSPrimitiveValue> amount = nullptr; | 74 RefPtrWillBeRawPtr<CSSPrimitiveValue> amount = nullptr; |
75 | 75 |
76 if (!offset) { | 76 if (!offset) { |
77 side = CSSValueCenter; | 77 side = CSSValueCenter; |
78 } else if (offset->isPrimitiveValue() && toCSSPrimitiveValue(offset.get())->
isValueID()) { | 78 } else if (offset->isPrimitiveValue() && toCSSPrimitiveValue(offset.get())->
isValueID()) { |
79 side = toCSSPrimitiveValue(offset.get())->getValueID(); | 79 side = toCSSPrimitiveValue(offset.get())->getValueID(); |
80 } else if (offset->isValuePair()) { | 80 } else if (offset->isValuePair()) { |
81 side = toCSSPrimitiveValue(toCSSValuePair(*offset).first()).getValueID()
; | 81 side = toCSSPrimitiveValue(toCSSValuePair(*offset).first()).getValueID()
; |
82 amount = &toCSSPrimitiveValue(toCSSValuePair(*offset).second()); | 82 amount = &toCSSPrimitiveValue(toCSSValuePair(*offset).second()); |
| 83 if ((side == CSSValueRight || side == CSSValueBottom) && amount->isPerce
ntage()) { |
| 84 side = defaultSide; |
| 85 amount = cssValuePool().createValue(100 - amount->getFloatValue(), C
SSPrimitiveValue::UnitType::Percentage); |
| 86 } |
83 } else { | 87 } else { |
84 amount = toCSSPrimitiveValue(offset.get()); | 88 amount = toCSSPrimitiveValue(offset.get()); |
85 } | 89 } |
86 | 90 |
87 if (side == CSSValueCenter) { | 91 if (side == CSSValueCenter) { |
88 side = defaultSide; | 92 side = defaultSide; |
89 amount = cssValuePool().createValue(50, CSSPrimitiveValue::UnitType::Per
centage); | 93 amount = cssValuePool().createValue(50, CSSPrimitiveValue::UnitType::Per
centage); |
90 } else if ((side == CSSValueRight || side == CSSValueBottom) | 94 } else if (!amount || (amount->isLength() && !amount->getFloatValue())) { |
91 && amount->isPercentage()) { | |
92 side = defaultSide; | |
93 amount = cssValuePool().createValue(100 - amount->getFloatValue(), CSSPr
imitiveValue::UnitType::Percentage); | |
94 } else if (amount->isLength() && !amount->getFloatValue()) { | |
95 if (side == CSSValueRight || side == CSSValueBottom) | 95 if (side == CSSValueRight || side == CSSValueBottom) |
96 amount = cssValuePool().createValue(100, CSSPrimitiveValue::UnitType
::Percentage); | 96 amount = cssValuePool().createValue(100, CSSPrimitiveValue::UnitType
::Percentage); |
97 else | 97 else |
98 amount = cssValuePool().createValue(0, CSSPrimitiveValue::UnitType::
Percentage); | 98 amount = cssValuePool().createValue(0, CSSPrimitiveValue::UnitType::
Percentage); |
99 side = defaultSide; | 99 side = defaultSide; |
100 } | 100 } |
101 | 101 |
102 return CSSValuePair::create(cssValuePool().createIdentifierValue(side), amou
nt.release(), CSSValuePair::KeepIdenticalValues); | 102 return CSSValuePair::create(cssValuePool().createIdentifierValue(side), amou
nt.release(), CSSValuePair::KeepIdenticalValues); |
103 } | 103 } |
104 | 104 |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 visitor->trace(m_left); | 398 visitor->trace(m_left); |
399 visitor->trace(m_topLeftRadius); | 399 visitor->trace(m_topLeftRadius); |
400 visitor->trace(m_topRightRadius); | 400 visitor->trace(m_topRightRadius); |
401 visitor->trace(m_bottomRightRadius); | 401 visitor->trace(m_bottomRightRadius); |
402 visitor->trace(m_bottomLeftRadius); | 402 visitor->trace(m_bottomLeftRadius); |
403 CSSValue::traceAfterDispatch(visitor); | 403 CSSValue::traceAfterDispatch(visitor); |
404 } | 404 } |
405 | 405 |
406 } // namespace blink | 406 } // namespace blink |
407 | 407 |
OLD | NEW |