| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) | 2 * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights
reserved. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights
reserved. |
| 4 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. | 4 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 #include "core/style/AppliedTextDecoration.h" | 33 #include "core/style/AppliedTextDecoration.h" |
| 34 #include "core/style/BorderEdge.h" | 34 #include "core/style/BorderEdge.h" |
| 35 #include "core/style/ComputedStyleConstants.h" | 35 #include "core/style/ComputedStyleConstants.h" |
| 36 #include "core/style/ContentData.h" | 36 #include "core/style/ContentData.h" |
| 37 #include "core/style/CursorData.h" | 37 #include "core/style/CursorData.h" |
| 38 #include "core/style/DataEquivalency.h" | 38 #include "core/style/DataEquivalency.h" |
| 39 #include "core/style/QuotesData.h" | 39 #include "core/style/QuotesData.h" |
| 40 #include "core/style/ShadowList.h" | 40 #include "core/style/ShadowList.h" |
| 41 #include "core/style/StyleImage.h" | 41 #include "core/style/StyleImage.h" |
| 42 #include "core/style/StyleInheritedData.h" | 42 #include "core/style/StyleInheritedData.h" |
| 43 #include "core/style/StyleVariableData.h" | 43 #include "core/style/StyleInheritedVariables.h" |
| 44 #include "core/style/StyleNonInheritedVariables.h" |
| 44 #include "platform/LengthFunctions.h" | 45 #include "platform/LengthFunctions.h" |
| 45 #include "platform/RuntimeEnabledFeatures.h" | 46 #include "platform/RuntimeEnabledFeatures.h" |
| 46 #include "platform/fonts/Font.h" | 47 #include "platform/fonts/Font.h" |
| 47 #include "platform/fonts/FontSelector.h" | 48 #include "platform/fonts/FontSelector.h" |
| 48 #include "platform/geometry/FloatRoundedRect.h" | 49 #include "platform/geometry/FloatRoundedRect.h" |
| 49 #include "platform/graphics/GraphicsContext.h" | 50 #include "platform/graphics/GraphicsContext.h" |
| 50 #include "platform/transforms/RotateTransformOperation.h" | 51 #include "platform/transforms/RotateTransformOperation.h" |
| 51 #include "platform/transforms/ScaleTransformOperation.h" | 52 #include "platform/transforms/ScaleTransformOperation.h" |
| 52 #include "platform/transforms/TranslateTransformOperation.h" | 53 #include "platform/transforms/TranslateTransformOperation.h" |
| 53 #include "wtf/MathExtras.h" | 54 #include "wtf/MathExtras.h" |
| (...skipping 820 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 874 if (!value->nativeInvalidationProperties() || !value->customInvalidationProp
erties()) | 875 if (!value->nativeInvalidationProperties() || !value->customInvalidationProp
erties()) |
| 875 return true; | 876 return true; |
| 876 | 877 |
| 877 for (CSSPropertyID propertyID : *value->nativeInvalidationProperties()) { | 878 for (CSSPropertyID propertyID : *value->nativeInvalidationProperties()) { |
| 878 // TODO(ikilpatrick): remove isInterpolableProperty check once | 879 // TODO(ikilpatrick): remove isInterpolableProperty check once |
| 879 // CSSPropertyEquality::propertiesEqual correctly handles all properties
. | 880 // CSSPropertyEquality::propertiesEqual correctly handles all properties
. |
| 880 if (!CSSPropertyMetadata::isInterpolableProperty(propertyID) || !CSSProp
ertyEquality::propertiesEqual(propertyID, *this, other)) | 881 if (!CSSPropertyMetadata::isInterpolableProperty(propertyID) || !CSSProp
ertyEquality::propertiesEqual(propertyID, *this, other)) |
| 881 return true; | 882 return true; |
| 882 } | 883 } |
| 883 | 884 |
| 884 if (variables() || other.variables()) { | 885 if (inheritedVariables() || other.inheritedVariables()) { |
| 885 for (const AtomicString& property : *value->customInvalidationProperties
()) { | 886 for (const AtomicString& property : *value->customInvalidationProperties
()) { |
| 886 CSSVariableData* thisVar = variables() ? variables()->getVariable(pr
operty) : nullptr; | 887 CSSVariableData* thisVar = inheritedVariables() ? inheritedVariables
()->getVariable(property) : nullptr; |
| 887 CSSVariableData* otherVar = other.variables() ? other.variables()->g
etVariable(property) : nullptr; | 888 CSSVariableData* otherVar = other.inheritedVariables() ? other.inher
itedVariables()->getVariable(property) : nullptr; |
| 888 | 889 |
| 889 if (!dataEquivalent(thisVar, otherVar)) | 890 if (!dataEquivalent(thisVar, otherVar)) |
| 890 return true; | 891 return true; |
| 891 } | 892 } |
| 892 } | 893 } |
| 893 | 894 |
| 894 return false; | 895 return false; |
| 895 } | 896 } |
| 896 | 897 |
| 897 void ComputedStyle::updatePropertySpecificDifferences(const ComputedStyle& other
, StyleDifference& diff) const | 898 void ComputedStyle::updatePropertySpecificDifferences(const ComputedStyle& other
, StyleDifference& diff) const |
| (...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1433 return empty; | 1434 return empty; |
| 1434 } | 1435 } |
| 1435 if (m_inheritedData.m_textUnderline) { | 1436 if (m_inheritedData.m_textUnderline) { |
| 1436 DEFINE_STATIC_LOCAL(Vector<AppliedTextDecoration>, underline, (1, Applie
dTextDecoration(TextDecorationUnderline))); | 1437 DEFINE_STATIC_LOCAL(Vector<AppliedTextDecoration>, underline, (1, Applie
dTextDecoration(TextDecorationUnderline))); |
| 1437 return underline; | 1438 return underline; |
| 1438 } | 1439 } |
| 1439 | 1440 |
| 1440 return m_rareInheritedData->appliedTextDecorations->vector(); | 1441 return m_rareInheritedData->appliedTextDecorations->vector(); |
| 1441 } | 1442 } |
| 1442 | 1443 |
| 1443 StyleVariableData* ComputedStyle::variables() const | 1444 StyleInheritedVariables* ComputedStyle::inheritedVariables() const |
| 1444 { | 1445 { |
| 1445 return m_rareInheritedData->variables.get(); | 1446 return m_rareInheritedData->variables.get(); |
| 1446 } | 1447 } |
| 1447 | 1448 |
| 1448 void ComputedStyle::setVariable(const AtomicString& name, PassRefPtr<CSSVariable
Data> value) | 1449 StyleNonInheritedVariables* ComputedStyle::nonInheritedVariables() const |
| 1449 { | 1450 { |
| 1450 RefPtr<StyleVariableData>& variables = m_rareInheritedData.access()->variabl
es; | 1451 return m_rareNonInheritedData->m_variables.get(); |
| 1452 } |
| 1453 |
| 1454 StyleInheritedVariables& ComputedStyle::mutableInheritedVariables() |
| 1455 { |
| 1456 RefPtr<StyleInheritedVariables>& variables = m_rareInheritedData.access()->v
ariables; |
| 1451 if (!variables) | 1457 if (!variables) |
| 1452 variables = StyleVariableData::create(); | 1458 variables = StyleInheritedVariables::create(); |
| 1453 else if (!variables->hasOneRef()) | 1459 else if (!variables->hasOneRef()) |
| 1454 variables = variables->copy(); | 1460 variables = variables->copy(); |
| 1455 variables->setVariable(name, std::move(value)); | 1461 return *variables; |
| 1456 } | 1462 } |
| 1457 | 1463 |
| 1458 void ComputedStyle::setRegisteredInheritedProperty(const AtomicString& name, con
st CSSValue* parsedValue) | 1464 StyleNonInheritedVariables& ComputedStyle::mutableNonInheritedVariables() |
| 1459 { | 1465 { |
| 1460 RefPtr<StyleVariableData>& variables = m_rareInheritedData.access()->variabl
es; | 1466 std::unique_ptr<StyleNonInheritedVariables>& variables = m_rareNonInheritedD
ata.access()->m_variables; |
| 1461 // The CSSVariableData needs to be set before calling this function | 1467 if (!variables) |
| 1462 DCHECK(variables); | 1468 variables = StyleNonInheritedVariables::create(); |
| 1463 DCHECK(!!parsedValue == !!variables->getVariable(name)); | 1469 return *variables; |
| 1464 DCHECK(!(variables->getVariable(name) && variables->getVariable(name)->needs
VariableResolution())); | |
| 1465 | |
| 1466 if (!variables->hasOneRef()) | |
| 1467 variables = variables->copy(); | |
| 1468 variables->setRegisteredInheritedProperty(name, parsedValue); | |
| 1469 } | 1470 } |
| 1470 | 1471 |
| 1471 void ComputedStyle::removeVariable(const AtomicString& name) | 1472 void ComputedStyle::setUnresolvedInheritedVariable(const AtomicString& name, Pas
sRefPtr<CSSVariableData> value) |
| 1472 { | 1473 { |
| 1473 RefPtr<StyleVariableData>& variables = m_rareInheritedData.access()->variabl
es; | 1474 DCHECK(value && value->needsVariableResolution()); |
| 1474 if (!variables) | 1475 mutableInheritedVariables().setVariable(name, std::move(value)); |
| 1475 return; | 1476 } |
| 1476 if (!variables->hasOneRef()) | 1477 |
| 1477 variables = variables->copy(); | 1478 void ComputedStyle::setUnresolvedNonInheritedVariable(const AtomicString& name,
PassRefPtr<CSSVariableData> value) |
| 1478 variables->removeVariable(name); | 1479 { |
| 1480 DCHECK(value && value->needsVariableResolution()); |
| 1481 mutableNonInheritedVariables().setVariable(name, std::move(value)); |
| 1482 } |
| 1483 |
| 1484 void ComputedStyle::setResolvedUnregisteredVariable(const AtomicString& name, Pa
ssRefPtr<CSSVariableData> value) |
| 1485 { |
| 1486 DCHECK(value && !value->needsVariableResolution()); |
| 1487 mutableInheritedVariables().setVariable(name, std::move(value)); |
| 1488 } |
| 1489 |
| 1490 void ComputedStyle::setResolvedInheritedVariable(const AtomicString& name, PassR
efPtr<CSSVariableData> value, const CSSValue* parsedValue) |
| 1491 { |
| 1492 DCHECK(!!value == !!parsedValue); |
| 1493 DCHECK(!(value && value->needsVariableResolution())); |
| 1494 |
| 1495 StyleInheritedVariables& variables = mutableInheritedVariables(); |
| 1496 variables.setVariable(name, std::move(value)); |
| 1497 variables.setRegisteredVariable(name, parsedValue); |
| 1498 } |
| 1499 |
| 1500 void ComputedStyle::setResolvedNonInheritedVariable(const AtomicString& name, Pa
ssRefPtr<CSSVariableData> value, const CSSValue* parsedValue) |
| 1501 { |
| 1502 DCHECK(!!value == !!parsedValue); |
| 1503 DCHECK(!(value && value->needsVariableResolution())); |
| 1504 |
| 1505 StyleNonInheritedVariables& variables = mutableNonInheritedVariables(); |
| 1506 variables.setVariable(name, std::move(value)); |
| 1507 variables.setRegisteredVariable(name, parsedValue); |
| 1508 } |
| 1509 |
| 1510 void ComputedStyle::removeInheritedVariable(const AtomicString& name) |
| 1511 { |
| 1512 mutableInheritedVariables().removeVariable(name); |
| 1513 } |
| 1514 |
| 1515 void ComputedStyle::removeNonInheritedVariable(const AtomicString& name) |
| 1516 { |
| 1517 mutableNonInheritedVariables().removeVariable(name); |
| 1479 } | 1518 } |
| 1480 | 1519 |
| 1481 float ComputedStyle::wordSpacing() const { return getFontDescription().wordSpaci
ng(); } | 1520 float ComputedStyle::wordSpacing() const { return getFontDescription().wordSpaci
ng(); } |
| 1482 float ComputedStyle::letterSpacing() const { return getFontDescription().letterS
pacing(); } | 1521 float ComputedStyle::letterSpacing() const { return getFontDescription().letterS
pacing(); } |
| 1483 | 1522 |
| 1484 bool ComputedStyle::setFontDescription(const FontDescription& v) | 1523 bool ComputedStyle::setFontDescription(const FontDescription& v) |
| 1485 { | 1524 { |
| 1486 if (m_styleInheritedData->font.getFontDescription() != v) { | 1525 if (m_styleInheritedData->font.getFontDescription() != v) { |
| 1487 m_styleInheritedData.access()->font = Font(v); | 1526 m_styleInheritedData.access()->font = Font(v); |
| 1488 return true; | 1527 return true; |
| (...skipping 564 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2053 if (value < 0) | 2092 if (value < 0) |
| 2054 fvalue -= 0.5f; | 2093 fvalue -= 0.5f; |
| 2055 else | 2094 else |
| 2056 fvalue += 0.5f; | 2095 fvalue += 0.5f; |
| 2057 } | 2096 } |
| 2058 | 2097 |
| 2059 return roundForImpreciseConversion<int>(fvalue / zoomFactor); | 2098 return roundForImpreciseConversion<int>(fvalue / zoomFactor); |
| 2060 } | 2099 } |
| 2061 | 2100 |
| 2062 } // namespace blink | 2101 } // namespace blink |
| OLD | NEW |