| OLD | NEW |
| 1 /* | 1 /* |
| 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) | 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r
ights reserved. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012 Apple Inc. All r
ights reserved. |
| 4 * Copyright (C) 2011 Research In Motion Limited. All rights reserved. | 4 * Copyright (C) 2011 Research In Motion Limited. All rights reserved. |
| 5 * Copyright (C) 2013 Intel Corporation. All rights reserved. | 5 * Copyright (C) 2013 Intel Corporation. All rights reserved. |
| 6 * | 6 * |
| 7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
| 11 * | 11 * |
| 12 * This library is distributed in the hope that it will be useful, | 12 * This library is distributed in the hope that it will be useful, |
| 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 * Library General Public License for more details. | 15 * Library General Public License for more details. |
| 16 * | 16 * |
| 17 * You should have received a copy of the GNU Library General Public License | 17 * You should have received a copy of the GNU Library General Public License |
| 18 * along with this library; see the file COPYING.LIB. If not, write to | 18 * along with this library; see the file COPYING.LIB. If not, write to |
| 19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 20 * Boston, MA 02110-1301, USA. | 20 * Boston, MA 02110-1301, USA. |
| 21 */ | 21 */ |
| 22 | 22 |
| 23 #ifndef StylePropertySerializer_h | 23 #ifndef StylePropertySerializer_h |
| 24 #define StylePropertySerializer_h | 24 #define StylePropertySerializer_h |
| 25 | 25 |
| 26 #include "core/css/CSSValueList.h" | 26 #include "core/css/CSSValueList.h" |
| 27 #include "core/css/StylePropertySet.h" | 27 #include "core/css/StylePropertySet.h" |
| 28 | 28 |
| 29 #include "wtf/BitArray.h" |
| 30 |
| 29 namespace blink { | 31 namespace blink { |
| 30 | 32 |
| 31 class StylePropertySet; | 33 class StylePropertySet; |
| 32 class StylePropertyShorthand; | 34 class StylePropertyShorthand; |
| 33 | 35 |
| 34 class StylePropertySerializer { | 36 class StylePropertySerializer { |
| 35 public: | 37 public: |
| 36 StylePropertySerializer(const StylePropertySet&); | 38 explicit StylePropertySerializer(const StylePropertySet&); |
| 39 |
| 37 String asText() const; | 40 String asText() const; |
| 38 String getPropertyValue(CSSPropertyID) const; | 41 String getPropertyValue(CSSPropertyID) const; |
| 39 private: | 42 private: |
| 40 String getCommonValue(const StylePropertyShorthand&) const; | 43 String getCommonValue(const StylePropertyShorthand&) const; |
| 41 enum CommonValueMode { OmitUncommonValues, ReturnNullOnUncommonValues }; | 44 enum CommonValueMode { OmitUncommonValues, ReturnNullOnUncommonValues }; |
| 42 String borderPropertyValue(CommonValueMode) const; | 45 String borderPropertyValue(CommonValueMode) const; |
| 43 String getLayeredShorthandValue(const StylePropertyShorthand&, bool checkSho
rthandAvailable = false) const; | 46 String getLayeredShorthandValue(const StylePropertyShorthand&, bool checkSho
rthandAvailable = false) const; |
| 44 String get4Values(const StylePropertyShorthand&) const; | 47 String get4Values(const StylePropertyShorthand&) const; |
| 45 String borderSpacingValue(const StylePropertyShorthand&) const; | 48 String borderSpacingValue(const StylePropertyShorthand&) const; |
| 46 String getShorthandValue(const StylePropertyShorthand&) const; | 49 String getShorthandValue(const StylePropertyShorthand&) const; |
| 47 String fontValue() const; | 50 String fontValue() const; |
| 48 void appendFontLonghandValueIfExplicit(CSSPropertyID, StringBuilder& result,
String& value) const; | 51 void appendFontLonghandValueIfExplicit(CSSPropertyID, StringBuilder& result,
String& value) const; |
| 49 String backgroundRepeatPropertyValue() const; | 52 String backgroundRepeatPropertyValue() const; |
| 50 String getPropertyText(CSSPropertyID, const String& value, bool isImportant,
bool isNotFirstDecl) const; | 53 String getPropertyText(CSSPropertyID, const String& value, bool isImportant,
bool isNotFirstDecl) const; |
| 51 bool isPropertyShorthandAvailable(const StylePropertyShorthand&) const; | 54 bool isPropertyShorthandAvailable(const StylePropertyShorthand&) const; |
| 52 bool shorthandHasOnlyInitialOrInheritedValue(const StylePropertyShorthand&)
const; | 55 bool shorthandHasOnlyInitialOrInheritedValue(const StylePropertyShorthand&)
const; |
| 53 void appendBackgroundPropertyAsText(StringBuilder& result, unsigned& numDecl
s) const; | 56 void appendBackgroundPropertyAsText(StringBuilder& result, unsigned& numDecl
s) const; |
| 54 | 57 |
| 55 const StylePropertySet& m_propertySet; | 58 // Only StylePropertySerializer uses the following two classes. |
| 59 class PropertyValueForSerializer { |
| 60 public: |
| 61 explicit PropertyValueForSerializer(StylePropertySet::PropertyReference
property) |
| 62 : m_value(property.value()) |
| 63 , m_id(property.id()) |
| 64 , m_isImportant(property.isImportant()) |
| 65 , m_isImplicit(property.isImplicit()) |
| 66 , m_isInherited(property.isInherited()) { } |
| 67 |
| 68 PropertyValueForSerializer(CSSPropertyID id, const CSSValue* value, bool
isImportant) |
| 69 : m_value(value) |
| 70 , m_id(id) |
| 71 , m_isImportant(isImportant) |
| 72 , m_isImplicit(value->isImplicitInitialValue()) |
| 73 , m_isInherited(value->isInheritedValue()) { } |
| 74 |
| 75 CSSPropertyID id() const { return m_id; } |
| 76 const CSSValue* value() const { return m_value; } |
| 77 bool isImportant() const { return m_isImportant; } |
| 78 bool isImplicit() const { return m_isImplicit; } |
| 79 bool isInherited() const { return m_isInherited; } |
| 80 bool isValid() const { return m_value; } |
| 81 |
| 82 private: |
| 83 const CSSValue* m_value; |
| 84 CSSPropertyID m_id; |
| 85 bool m_isImportant; |
| 86 bool m_isImplicit; |
| 87 bool m_isInherited; |
| 88 }; |
| 89 |
| 90 class StylePropertySetForSerializer { |
| 91 public: |
| 92 explicit StylePropertySetForSerializer(const StylePropertySet&); |
| 93 |
| 94 unsigned propertyCount() const; |
| 95 PropertyValueForSerializer propertyAt(unsigned index) const; |
| 96 bool shouldProcessPropertyAt(unsigned index) const; |
| 97 int findPropertyIndex(CSSPropertyID) const; |
| 98 const CSSValue* getPropertyCSSValue(CSSPropertyID) const; |
| 99 String getPropertyValue(CSSPropertyID) const; |
| 100 bool isPropertyImplicit(CSSPropertyID) const; |
| 101 bool propertyIsImportant(CSSPropertyID) const; |
| 102 |
| 103 private: |
| 104 bool hasExpandedAllProperty() const { return hasAllProperty() && m_needT
oExpandAll; } |
| 105 bool hasAllProperty() const { return m_allIndex != -1; } |
| 106 |
| 107 const StylePropertySet& m_propertySet; |
| 108 int m_allIndex; |
| 109 BitArray<numCSSProperties> m_longhandPropertyUsed; |
| 110 bool m_needToExpandAll; |
| 111 }; |
| 112 |
| 113 const StylePropertySetForSerializer m_propertySet; |
| 56 }; | 114 }; |
| 57 | 115 |
| 58 } // namespace blink | 116 } // namespace blink |
| 59 | 117 |
| 60 #endif | 118 #endif |
| OLD | NEW |