| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "xfa/fde/css/fde_cssstyleselector.h" | 7 #include "xfa/fde/css/fde_cssstyleselector.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 if (bDefIncrement) { | 67 if (bDefIncrement) { |
| 68 data.m_bIncrement = TRUE; | 68 data.m_bIncrement = TRUE; |
| 69 data.m_iIncVal += (int32_t)fValue; | 69 data.m_iIncVal += (int32_t)fValue; |
| 70 } else { | 70 } else { |
| 71 data.m_bReset = TRUE; | 71 data.m_bReset = TRUE; |
| 72 data.m_iResetVal = (int32_t)fValue; | 72 data.m_iResetVal = (int32_t)fValue; |
| 73 } | 73 } |
| 74 } | 74 } |
| 75 } | 75 } |
| 76 } | 76 } |
| 77 |
| 78 CFDE_CSSCounterStyle::CFDE_CSSCounterStyle() |
| 79 : m_pCounterInc(nullptr), m_pCounterReset(nullptr), m_bIndexDirty(FALSE) {} |
| 80 |
| 81 CFDE_CSSCounterStyle::~CFDE_CSSCounterStyle() {} |
| 82 |
| 77 void CFDE_CSSCounterStyle::UpdateIndex() { | 83 void CFDE_CSSCounterStyle::UpdateIndex() { |
| 78 if (!m_bIndexDirty) { | 84 if (!m_bIndexDirty) { |
| 79 return; | 85 return; |
| 80 } | 86 } |
| 81 m_arrCounterData.RemoveAll(); | 87 m_arrCounterData.RemoveAll(); |
| 82 DoUpdateIndex(m_pCounterInc); | 88 DoUpdateIndex(m_pCounterInc); |
| 83 DoUpdateIndex(m_pCounterReset); | 89 DoUpdateIndex(m_pCounterReset); |
| 84 m_bIndexDirty = FALSE; | 90 m_bIndexDirty = FALSE; |
| 85 } | 91 } |
| 86 | 92 |
| 87 FDE_CSSRuleData::FDE_CSSRuleData(CFDE_CSSSelector* pSel, | 93 FDE_CSSRuleData::FDE_CSSRuleData(CFDE_CSSSelector* pSel, |
| 88 CFDE_CSSDeclaration* pDecl, | 94 CFDE_CSSDeclaration* pDecl, |
| 89 uint32_t dwPos) | 95 uint32_t dwPos) |
| 90 : pSelector(pSel), pDeclaration(pDecl), dwPriority(dwPos), pNext(nullptr) { | 96 : pSelector(pSel), pDeclaration(pDecl), dwPriority(dwPos), pNext(nullptr) { |
| 91 static const uint32_t s_Specific[5] = {0x00010000, 0x00010000, 0x00100000, | 97 static const uint32_t s_Specific[5] = {0x00010000, 0x00010000, 0x00100000, |
| 92 0x00100000, 0x01000000}; | 98 0x00100000, 0x01000000}; |
| 93 for (; pSel; pSel = pSel->GetNextSelector()) { | 99 for (; pSel; pSel = pSel->GetNextSelector()) { |
| 94 FDE_CSSSELECTORTYPE eType = pSel->GetType(); | 100 FDE_CSSSELECTORTYPE eType = pSel->GetType(); |
| 95 if (eType > FDE_CSSSELECTORTYPE_Descendant || | 101 if (eType > FDE_CSSSELECTORTYPE_Descendant || |
| 96 pSel->GetNameHash() != FDE_CSSUNIVERSALHASH) { | 102 pSel->GetNameHash() != FDE_CSSUNIVERSALHASH) { |
| 97 dwPriority += s_Specific[eType]; | 103 dwPriority += s_Specific[eType]; |
| 98 } | 104 } |
| 99 } | 105 } |
| 100 } | 106 } |
| 107 |
| 101 void CFDE_CSSRuleCollection::Clear() { | 108 void CFDE_CSSRuleCollection::Clear() { |
| 102 m_IDRules.RemoveAll(); | 109 m_IDRules.RemoveAll(); |
| 103 m_TagRules.RemoveAll(); | 110 m_TagRules.RemoveAll(); |
| 104 m_ClassRules.RemoveAll(); | 111 m_ClassRules.RemoveAll(); |
| 105 m_pUniversalRules = nullptr; | 112 m_pUniversalRules = nullptr; |
| 106 m_pStaticStore = nullptr; | 113 m_pStaticStore = nullptr; |
| 107 m_iSelectors = 0; | 114 m_iSelectors = 0; |
| 108 } | 115 } |
| 116 |
| 117 CFDE_CSSRuleCollection::CFDE_CSSRuleCollection() |
| 118 : m_pStaticStore(nullptr), |
| 119 m_pUniversalRules(nullptr), |
| 120 m_pPersudoRules(nullptr), |
| 121 m_iSelectors(0) {} |
| 122 |
| 123 CFDE_CSSRuleCollection::~CFDE_CSSRuleCollection() { |
| 124 Clear(); |
| 125 } |
| 126 |
| 109 void CFDE_CSSRuleCollection::AddRulesFrom(const CFDE_CSSStyleSheetArray& sheets, | 127 void CFDE_CSSRuleCollection::AddRulesFrom(const CFDE_CSSStyleSheetArray& sheets, |
| 110 uint32_t dwMediaList, | 128 uint32_t dwMediaList, |
| 111 IFGAS_FontMgr* pFontMgr) { | 129 IFGAS_FontMgr* pFontMgr) { |
| 112 int32_t iSheets = sheets.GetSize(); | 130 int32_t iSheets = sheets.GetSize(); |
| 113 for (int32_t i = 0; i < iSheets; ++i) { | 131 for (int32_t i = 0; i < iSheets; ++i) { |
| 114 IFDE_CSSStyleSheet* pSheet = sheets.GetAt(i); | 132 IFDE_CSSStyleSheet* pSheet = sheets.GetAt(i); |
| 115 if (uint32_t dwMatchMedia = pSheet->GetMediaList() & dwMediaList) { | 133 if (uint32_t dwMatchMedia = pSheet->GetMediaList() & dwMediaList) { |
| 116 int32_t iRules = pSheet->CountRules(); | 134 int32_t iRules = pSheet->CountRules(); |
| 117 for (int32_t j = 0; j < iRules; j++) { | 135 for (int32_t j = 0; j < iRules; j++) { |
| 118 AddRulesFrom(pSheet, pSheet->GetRule(j), dwMatchMedia, pFontMgr); | 136 AddRulesFrom(pSheet, pSheet->GetRule(j), dwMatchMedia, pFontMgr); |
| 119 } | 137 } |
| 120 } | 138 } |
| 121 } | 139 } |
| 122 } | 140 } |
| 141 |
| 123 void CFDE_CSSRuleCollection::AddRulesFrom(IFDE_CSSStyleSheet* pStyleSheet, | 142 void CFDE_CSSRuleCollection::AddRulesFrom(IFDE_CSSStyleSheet* pStyleSheet, |
| 124 IFDE_CSSRule* pRule, | 143 IFDE_CSSRule* pRule, |
| 125 uint32_t dwMediaList, | 144 uint32_t dwMediaList, |
| 126 IFGAS_FontMgr* pFontMgr) { | 145 IFGAS_FontMgr* pFontMgr) { |
| 127 switch (pRule->GetType()) { | 146 switch (pRule->GetType()) { |
| 128 case FDE_CSSRULETYPE_Style: { | 147 case FDE_CSSRULETYPE_Style: { |
| 129 IFDE_CSSStyleRule* pStyleRule = static_cast<IFDE_CSSStyleRule*>(pRule); | 148 IFDE_CSSStyleRule* pStyleRule = static_cast<IFDE_CSSStyleRule*>(pRule); |
| 130 CFDE_CSSDeclaration* pDeclaration = pStyleRule->GetDeclaration(); | 149 CFDE_CSSDeclaration* pDeclaration = pStyleRule->GetDeclaration(); |
| 131 int32_t iSelectors = pStyleRule->CountSelectorLists(); | 150 int32_t iSelectors = pStyleRule->CountSelectorLists(); |
| 132 for (int32_t i = 0; i < iSelectors; ++i) { | 151 for (int32_t i = 0; i < iSelectors; ++i) { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 for (int32_t i = 0; i < iRules; ++i) { | 191 for (int32_t i = 0; i < iRules; ++i) { |
| 173 AddRulesFrom(pStyleSheet, pMediaRule->GetRule(i), dwMediaList, | 192 AddRulesFrom(pStyleSheet, pMediaRule->GetRule(i), dwMediaList, |
| 174 pFontMgr); | 193 pFontMgr); |
| 175 } | 194 } |
| 176 } | 195 } |
| 177 } break; | 196 } break; |
| 178 default: | 197 default: |
| 179 break; | 198 break; |
| 180 } | 199 } |
| 181 } | 200 } |
| 201 |
| 182 void CFDE_CSSRuleCollection::AddRuleTo(CFX_MapPtrToPtr& map, | 202 void CFDE_CSSRuleCollection::AddRuleTo(CFX_MapPtrToPtr& map, |
| 183 uint32_t dwKey, | 203 uint32_t dwKey, |
| 184 CFDE_CSSSelector* pSel, | 204 CFDE_CSSSelector* pSel, |
| 185 CFDE_CSSDeclaration* pDecl) { | 205 CFDE_CSSDeclaration* pDecl) { |
| 186 void* pKey = (void*)(uintptr_t)dwKey; | 206 void* pKey = (void*)(uintptr_t)dwKey; |
| 187 FDE_CSSRuleData* pData = NewRuleData(pSel, pDecl); | 207 FDE_CSSRuleData* pData = NewRuleData(pSel, pDecl); |
| 188 FDE_CSSRuleData* pList = nullptr; | 208 FDE_CSSRuleData* pList = nullptr; |
| 189 if (!map.Lookup(pKey, (void*&)pList)) { | 209 if (!map.Lookup(pKey, (void*&)pList)) { |
| 190 map.SetAt(pKey, pData); | 210 map.SetAt(pKey, pData); |
| 191 } else if (AddRuleTo(pList, pData)) { | 211 } else if (AddRuleTo(pList, pData)) { |
| (...skipping 1584 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1776 return FDE_CSSTEXTTRANSFORM_LowerCase; | 1796 return FDE_CSSTEXTTRANSFORM_LowerCase; |
| 1777 default: | 1797 default: |
| 1778 return FDE_CSSTEXTTRANSFORM_None; | 1798 return FDE_CSSTEXTTRANSFORM_None; |
| 1779 } | 1799 } |
| 1780 } | 1800 } |
| 1781 FDE_CSSFONTVARIANT CFDE_CSSStyleSelector::ToFontVariant( | 1801 FDE_CSSFONTVARIANT CFDE_CSSStyleSelector::ToFontVariant( |
| 1782 FDE_CSSPROPERTYVALUE eValue) { | 1802 FDE_CSSPROPERTYVALUE eValue) { |
| 1783 return eValue == FDE_CSSPROPERTYVALUE_SmallCaps ? FDE_CSSFONTVARIANT_SmallCaps | 1803 return eValue == FDE_CSSPROPERTYVALUE_SmallCaps ? FDE_CSSFONTVARIANT_SmallCaps |
| 1784 : FDE_CSSFONTVARIANT_Normal; | 1804 : FDE_CSSFONTVARIANT_Normal; |
| 1785 } | 1805 } |
| 1806 |
| 1807 CFDE_CSSComputedStyle::CFDE_CSSComputedStyle(IFX_MemoryAllocator* pAlloc) |
| 1808 : m_dwRefCount(1), m_pAllocator(pAlloc) {} |
| 1809 |
| 1810 CFDE_CSSComputedStyle::~CFDE_CSSComputedStyle() {} |
| 1811 |
| 1812 uint32_t CFDE_CSSComputedStyle::Retain() { |
| 1813 return ++m_dwRefCount; |
| 1814 } |
| 1815 |
| 1816 uint32_t CFDE_CSSComputedStyle::Release() { |
| 1817 uint32_t dwRefCount = --m_dwRefCount; |
| 1818 if (dwRefCount == 0) { |
| 1819 delete m_NonInheritedData.m_pCounterStyle; |
| 1820 FXTARGET_DeleteWith(CFDE_CSSComputedStyle, m_pAllocator, this); |
| 1821 } |
| 1822 return dwRefCount; |
| 1823 } |
| 1824 |
| 1825 void CFDE_CSSComputedStyle::Reset() { |
| 1826 m_InheritedData.Reset(); |
| 1827 m_NonInheritedData.Reset(); |
| 1828 } |
| 1829 |
| 1830 IFDE_CSSFontStyle* CFDE_CSSComputedStyle::GetFontStyles() { |
| 1831 return static_cast<IFDE_CSSFontStyle*>(this); |
| 1832 } |
| 1833 |
| 1834 IFDE_CSSBoundaryStyle* CFDE_CSSComputedStyle::GetBoundaryStyles() { |
| 1835 return static_cast<IFDE_CSSBoundaryStyle*>(this); |
| 1836 } |
| 1837 |
| 1838 IFDE_CSSPositionStyle* CFDE_CSSComputedStyle::GetPositionStyles() { |
| 1839 return static_cast<IFDE_CSSPositionStyle*>(this); |
| 1840 } |
| 1841 |
| 1842 IFDE_CSSParagraphStyle* CFDE_CSSComputedStyle::GetParagraphStyles() { |
| 1843 return static_cast<IFDE_CSSParagraphStyle*>(this); |
| 1844 } |
| 1845 |
| 1846 FX_BOOL CFDE_CSSComputedStyle::GetCustomStyle(const CFX_WideStringC& wsName, |
| 1847 CFX_WideString& wsValue) const { |
| 1848 for (int32_t i = m_CustomProperties.GetSize() - 2; i > -1; i -= 2) { |
| 1849 if (wsName == m_CustomProperties[i]) { |
| 1850 wsValue = m_CustomProperties[i + 1]; |
| 1851 return TRUE; |
| 1852 } |
| 1853 } |
| 1854 return FALSE; |
| 1855 } |
| 1856 |
| 1857 int32_t CFDE_CSSComputedStyle::CountFontFamilies() const { |
| 1858 return m_InheritedData.m_pFontFamily |
| 1859 ? m_InheritedData.m_pFontFamily->CountValues() |
| 1860 : 0; |
| 1861 } |
| 1862 |
| 1863 const FX_WCHAR* CFDE_CSSComputedStyle::GetFontFamily(int32_t index) const { |
| 1864 return (static_cast<IFDE_CSSPrimitiveValue*>( |
| 1865 m_InheritedData.m_pFontFamily->GetValue(index))) |
| 1866 ->GetString(index); |
| 1867 } |
| 1868 |
| 1869 uint16_t CFDE_CSSComputedStyle::GetFontWeight() const { |
| 1870 return m_InheritedData.m_wFontWeight; |
| 1871 } |
| 1872 |
| 1873 FDE_CSSFONTVARIANT CFDE_CSSComputedStyle::GetFontVariant() const { |
| 1874 return static_cast<FDE_CSSFONTVARIANT>(m_InheritedData.m_eFontVariant); |
| 1875 } |
| 1876 |
| 1877 FDE_CSSFONTSTYLE CFDE_CSSComputedStyle::GetFontStyle() const { |
| 1878 return static_cast<FDE_CSSFONTSTYLE>(m_InheritedData.m_eFontStyle); |
| 1879 } |
| 1880 |
| 1881 FX_FLOAT CFDE_CSSComputedStyle::GetFontSize() const { |
| 1882 return m_InheritedData.m_fFontSize; |
| 1883 } |
| 1884 |
| 1885 FX_ARGB CFDE_CSSComputedStyle::GetColor() const { |
| 1886 return m_InheritedData.m_dwFontColor; |
| 1887 } |
| 1888 |
| 1889 void CFDE_CSSComputedStyle::SetFontWeight(uint16_t wFontWeight) { |
| 1890 m_InheritedData.m_wFontWeight = wFontWeight; |
| 1891 } |
| 1892 |
| 1893 void CFDE_CSSComputedStyle::SetFontVariant(FDE_CSSFONTVARIANT eFontVariant) { |
| 1894 m_InheritedData.m_eFontVariant = eFontVariant; |
| 1895 } |
| 1896 |
| 1897 void CFDE_CSSComputedStyle::SetFontStyle(FDE_CSSFONTSTYLE eFontStyle) { |
| 1898 m_InheritedData.m_eFontStyle = eFontStyle; |
| 1899 } |
| 1900 |
| 1901 void CFDE_CSSComputedStyle::SetFontSize(FX_FLOAT fFontSize) { |
| 1902 m_InheritedData.m_fFontSize = fFontSize; |
| 1903 } |
| 1904 |
| 1905 void CFDE_CSSComputedStyle::SetColor(FX_ARGB dwFontColor) { |
| 1906 m_InheritedData.m_dwFontColor = dwFontColor; |
| 1907 } |
| 1908 |
| 1909 const FDE_CSSRECT* CFDE_CSSComputedStyle::GetBorderWidth() const { |
| 1910 return m_NonInheritedData.m_bHasBorder ? &(m_NonInheritedData.m_BorderWidth) |
| 1911 : nullptr; |
| 1912 } |
| 1913 |
| 1914 const FDE_CSSRECT* CFDE_CSSComputedStyle::GetMarginWidth() const { |
| 1915 return m_NonInheritedData.m_bHasMargin ? &(m_NonInheritedData.m_MarginWidth) |
| 1916 : nullptr; |
| 1917 } |
| 1918 |
| 1919 const FDE_CSSRECT* CFDE_CSSComputedStyle::GetPaddingWidth() const { |
| 1920 return m_NonInheritedData.m_bHasPadding ? &(m_NonInheritedData.m_PaddingWidth) |
| 1921 : nullptr; |
| 1922 } |
| 1923 |
| 1924 void CFDE_CSSComputedStyle::SetMarginWidth(const FDE_CSSRECT& rect) { |
| 1925 m_NonInheritedData.m_MarginWidth = rect; |
| 1926 m_NonInheritedData.m_bHasMargin = TRUE; |
| 1927 } |
| 1928 |
| 1929 void CFDE_CSSComputedStyle::SetPaddingWidth(const FDE_CSSRECT& rect) { |
| 1930 m_NonInheritedData.m_PaddingWidth = rect; |
| 1931 m_NonInheritedData.m_bHasPadding = TRUE; |
| 1932 } |
| 1933 |
| 1934 FDE_CSSDISPLAY CFDE_CSSComputedStyle::GetDisplay() const { |
| 1935 return static_cast<FDE_CSSDISPLAY>(m_NonInheritedData.m_eDisplay); |
| 1936 } |
| 1937 |
| 1938 FX_FLOAT CFDE_CSSComputedStyle::GetLineHeight() const { |
| 1939 return m_InheritedData.m_fLineHeight; |
| 1940 } |
| 1941 |
| 1942 const FDE_CSSLENGTH& CFDE_CSSComputedStyle::GetTextIndent() const { |
| 1943 return m_InheritedData.m_TextIndent; |
| 1944 } |
| 1945 |
| 1946 FDE_CSSTEXTALIGN CFDE_CSSComputedStyle::GetTextAlign() const { |
| 1947 return static_cast<FDE_CSSTEXTALIGN>(m_InheritedData.m_eTextAligh); |
| 1948 } |
| 1949 |
| 1950 FDE_CSSVERTICALALIGN CFDE_CSSComputedStyle::GetVerticalAlign() const { |
| 1951 return static_cast<FDE_CSSVERTICALALIGN>(m_NonInheritedData.m_eVerticalAlign); |
| 1952 } |
| 1953 |
| 1954 FX_FLOAT CFDE_CSSComputedStyle::GetNumberVerticalAlign() const { |
| 1955 return m_NonInheritedData.m_fVerticalAlign; |
| 1956 } |
| 1957 |
| 1958 uint32_t CFDE_CSSComputedStyle::GetTextDecoration() const { |
| 1959 return m_NonInheritedData.m_dwTextDecoration; |
| 1960 } |
| 1961 |
| 1962 const FDE_CSSLENGTH& CFDE_CSSComputedStyle::GetLetterSpacing() const { |
| 1963 return m_InheritedData.m_LetterSpacing; |
| 1964 } |
| 1965 |
| 1966 void CFDE_CSSComputedStyle::SetLineHeight(FX_FLOAT fLineHeight) { |
| 1967 m_InheritedData.m_fLineHeight = fLineHeight; |
| 1968 } |
| 1969 |
| 1970 void CFDE_CSSComputedStyle::SetTextIndent(const FDE_CSSLENGTH& textIndent) { |
| 1971 m_InheritedData.m_TextIndent = textIndent; |
| 1972 } |
| 1973 |
| 1974 void CFDE_CSSComputedStyle::SetTextAlign(FDE_CSSTEXTALIGN eTextAlign) { |
| 1975 m_InheritedData.m_eTextAligh = eTextAlign; |
| 1976 } |
| 1977 |
| 1978 void CFDE_CSSComputedStyle::SetNumberVerticalAlign(FX_FLOAT fAlign) { |
| 1979 m_NonInheritedData.m_eVerticalAlign = FDE_CSSVERTICALALIGN_Number, |
| 1980 m_NonInheritedData.m_fVerticalAlign = fAlign; |
| 1981 } |
| 1982 |
| 1983 void CFDE_CSSComputedStyle::SetTextDecoration(uint32_t dwTextDecoration) { |
| 1984 m_NonInheritedData.m_dwTextDecoration = dwTextDecoration; |
| 1985 } |
| 1986 |
| 1987 void CFDE_CSSComputedStyle::SetLetterSpacing( |
| 1988 const FDE_CSSLENGTH& letterSpacing) { |
| 1989 m_InheritedData.m_LetterSpacing = letterSpacing; |
| 1990 } |
| 1991 |
| 1992 void CFDE_CSSComputedStyle::AddCustomStyle(const CFX_WideString& wsName, |
| 1993 const CFX_WideString& wsValue) { |
| 1994 m_CustomProperties.Add(wsName); |
| 1995 m_CustomProperties.Add(wsValue); |
| 1996 } |
| 1997 |
| 1998 CFDE_CSSInheritedData::CFDE_CSSInheritedData() { |
| 1999 Reset(); |
| 2000 } |
| 2001 |
| 2002 void CFDE_CSSInheritedData::Reset() { |
| 2003 FXSYS_memset(this, 0, sizeof(CFDE_CSSInheritedData)); |
| 2004 m_LetterSpacing.Set(FDE_CSSLENGTHUNIT_Normal); |
| 2005 m_WordSpacing.Set(FDE_CSSLENGTHUNIT_Normal); |
| 2006 m_TextIndent.Set(FDE_CSSLENGTHUNIT_Point, 0); |
| 2007 m_fFontSize = 12.0f; |
| 2008 m_fLineHeight = 14.0f; |
| 2009 m_wFontWeight = 400; |
| 2010 m_dwFontColor = 0xFF000000; |
| 2011 m_iWidows = 2; |
| 2012 m_bTextEmphasisColorCurrent = TRUE; |
| 2013 m_iOrphans = 2; |
| 2014 } |
| 2015 |
| 2016 CFDE_CSSNonInheritedData::CFDE_CSSNonInheritedData() { |
| 2017 Reset(); |
| 2018 } |
| 2019 |
| 2020 void CFDE_CSSNonInheritedData::Reset() { |
| 2021 FXSYS_memset(this, 0, sizeof(CFDE_CSSNonInheritedData)); |
| 2022 m_PaddingWidth.Set(FDE_CSSLENGTHUNIT_Point, 0); |
| 2023 m_MarginWidth = m_PaddingWidth; |
| 2024 m_BorderWidth = m_PaddingWidth; |
| 2025 m_MinBoxSize.Set(FDE_CSSLENGTHUNIT_Point, 0); |
| 2026 m_MaxBoxSize.Set(FDE_CSSLENGTHUNIT_None); |
| 2027 m_eDisplay = FDE_CSSDISPLAY_Inline; |
| 2028 m_fVerticalAlign = 0.0f; |
| 2029 m_ColumnCount.Set(FDE_CSSLENGTHUNIT_Auto); |
| 2030 m_ColumnGap.Set(FDE_CSSLENGTHUNIT_Normal); |
| 2031 m_bColumnRuleColorSame = TRUE; |
| 2032 m_ColumnWidth.Set(FDE_CSSLENGTHUNIT_Auto); |
| 2033 m_ColumnRuleWidth.Set(FDE_CSSLENGTHUNIT_Auto); |
| 2034 m_eTextCombine = FDE_CSSTEXTCOMBINE_None; |
| 2035 } |
| OLD | NEW |