OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2004 Zack Rusin <zack@kde.org> | 2 * Copyright (C) 2004 Zack Rusin <zack@kde.org> |
3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. |
4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> | 5 * Copyright (C) 2007 Nicholas Shanks <webkit@nickshanks.com> |
6 * Copyright (C) 2011 Sencha, Inc. All rights reserved. | 6 * Copyright (C) 2011 Sencha, Inc. All rights reserved. |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Lesser General Public | 9 * modify it under the terms of the GNU Lesser General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 1008 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1019 case MinMaxTrackSizing: | 1019 case MinMaxTrackSizing: |
1020 RefPtr<CSSValueList> minMaxTrackBreadths = CSSValueList::createCommaSepa
rated(); | 1020 RefPtr<CSSValueList> minMaxTrackBreadths = CSSValueList::createCommaSepa
rated(); |
1021 minMaxTrackBreadths->append(valueForGridTrackBreadth(trackSize.minTrackB
readth(), style, renderView)); | 1021 minMaxTrackBreadths->append(valueForGridTrackBreadth(trackSize.minTrackB
readth(), style, renderView)); |
1022 minMaxTrackBreadths->append(valueForGridTrackBreadth(trackSize.maxTrackB
readth(), style, renderView)); | 1022 minMaxTrackBreadths->append(valueForGridTrackBreadth(trackSize.maxTrackB
readth(), style, renderView)); |
1023 return CSSFunctionValue::create("minmax(", minMaxTrackBreadths); | 1023 return CSSFunctionValue::create("minmax(", minMaxTrackBreadths); |
1024 } | 1024 } |
1025 ASSERT_NOT_REACHED(); | 1025 ASSERT_NOT_REACHED(); |
1026 return 0; | 1026 return 0; |
1027 } | 1027 } |
1028 | 1028 |
1029 static PassRefPtr<CSSValue> valueForGridTrackList(const Vector<GridTrackSize>& t
rackSizes, const RenderStyle* style, RenderView *renderView) | 1029 static void addValuesForNamedGridLinesAtIndex(const NamedGridLinesMap& namedGrid
Lines, size_t i, CSSValueList& list) |
| 1030 { |
| 1031 // Note that this won't return the results in the order specified in the sty
le sheet, |
| 1032 // which is probably fine as we stil *do* return all the expected values. |
| 1033 NamedGridLinesMap::const_iterator it = namedGridLines.begin(); |
| 1034 NamedGridLinesMap::const_iterator end = namedGridLines.end(); |
| 1035 for (; it != end; ++it) { |
| 1036 const Vector<size_t>& linesIndexes = it->value; |
| 1037 for (size_t j = 0; j < linesIndexes.size(); ++j) { |
| 1038 if (linesIndexes[j] != i) |
| 1039 continue; |
| 1040 |
| 1041 list.append(cssValuePool().createValue(it->key, CSSPrimitiveValue::C
SS_STRING)); |
| 1042 break; |
| 1043 } |
| 1044 } |
| 1045 } |
| 1046 |
| 1047 static PassRefPtr<CSSValue> valueForGridTrackList(const Vector<GridTrackSize>& t
rackSizes, const NamedGridLinesMap& namedGridLines, const RenderStyle* style, Re
nderView* renderView) |
1030 { | 1048 { |
1031 // Handle the 'none' case here. | 1049 // Handle the 'none' case here. |
1032 if (!trackSizes.size()) | 1050 if (!trackSizes.size()) { |
| 1051 ASSERT(namedGridLines.isEmpty()); |
1033 return cssValuePool().createIdentifierValue(CSSValueNone); | 1052 return cssValuePool().createIdentifierValue(CSSValueNone); |
| 1053 } |
1034 | 1054 |
1035 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); | 1055 RefPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
1036 for (size_t i = 0; i < trackSizes.size(); ++i) | 1056 for (size_t i = 0; i < trackSizes.size(); ++i) { |
| 1057 addValuesForNamedGridLinesAtIndex(namedGridLines, i, *list); |
1037 list->append(valueForGridTrackSize(trackSizes[i], style, renderView)); | 1058 list->append(valueForGridTrackSize(trackSizes[i], style, renderView)); |
| 1059 } |
| 1060 // Those are the trailing <string>* allowed in the syntax. |
| 1061 addValuesForNamedGridLinesAtIndex(namedGridLines, trackSizes.size(), *list); |
1038 return list.release(); | 1062 return list.release(); |
1039 } | 1063 } |
1040 | 1064 |
1041 static PassRefPtr<CSSValue> valueForGridPosition(const GridPosition& position) | 1065 static PassRefPtr<CSSValue> valueForGridPosition(const GridPosition& position) |
1042 { | 1066 { |
1043 if (position.isAuto()) | 1067 if (position.isAuto()) |
1044 return cssValuePool().createIdentifierValue(CSSValueAuto); | 1068 return cssValuePool().createIdentifierValue(CSSValueAuto); |
1045 | 1069 |
1046 if (position.isInteger()) | 1070 if (position.isInteger()) |
1047 return cssValuePool().createValue(position.integerPosition(), CSSPrimiti
veValue::CSS_NUMBER); | 1071 return cssValuePool().createValue(position.integerPosition(), CSSPrimiti
veValue::CSS_NUMBER); |
(...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1898 } | 1922 } |
1899 return list.release(); | 1923 return list.release(); |
1900 } | 1924 } |
1901 case CSSPropertyWebkitGridAutoColumns: | 1925 case CSSPropertyWebkitGridAutoColumns: |
1902 return valueForGridTrackSize(style->gridAutoColumns(), style.get(),
m_node->document()->renderView()); | 1926 return valueForGridTrackSize(style->gridAutoColumns(), style.get(),
m_node->document()->renderView()); |
1903 case CSSPropertyWebkitGridAutoFlow: | 1927 case CSSPropertyWebkitGridAutoFlow: |
1904 return cssValuePool().createValue(style->gridAutoFlow()); | 1928 return cssValuePool().createValue(style->gridAutoFlow()); |
1905 case CSSPropertyWebkitGridAutoRows: | 1929 case CSSPropertyWebkitGridAutoRows: |
1906 return valueForGridTrackSize(style->gridAutoRows(), style.get(), m_n
ode->document()->renderView()); | 1930 return valueForGridTrackSize(style->gridAutoRows(), style.get(), m_n
ode->document()->renderView()); |
1907 case CSSPropertyWebkitGridColumns: | 1931 case CSSPropertyWebkitGridColumns: |
1908 return valueForGridTrackList(style->gridColumns(), style.get(), m_no
de->document()->renderView()); | 1932 return valueForGridTrackList(style->gridColumns(), style->namedGridC
olumnLines(), style.get(), m_node->document()->renderView()); |
1909 case CSSPropertyWebkitGridRows: | 1933 case CSSPropertyWebkitGridRows: |
1910 return valueForGridTrackList(style->gridRows(), style.get(), m_node-
>document()->renderView()); | 1934 return valueForGridTrackList(style->gridRows(), style->namedGridRowL
ines(), style.get(), m_node->document()->renderView()); |
1911 | 1935 |
1912 case CSSPropertyWebkitGridStart: | 1936 case CSSPropertyWebkitGridStart: |
1913 return valueForGridPosition(style->gridStart()); | 1937 return valueForGridPosition(style->gridStart()); |
1914 case CSSPropertyWebkitGridEnd: | 1938 case CSSPropertyWebkitGridEnd: |
1915 return valueForGridPosition(style->gridEnd()); | 1939 return valueForGridPosition(style->gridEnd()); |
1916 case CSSPropertyWebkitGridBefore: | 1940 case CSSPropertyWebkitGridBefore: |
1917 return valueForGridPosition(style->gridBefore()); | 1941 return valueForGridPosition(style->gridBefore()); |
1918 case CSSPropertyWebkitGridAfter: | 1942 case CSSPropertyWebkitGridAfter: |
1919 return valueForGridPosition(style->gridAfter()); | 1943 return valueForGridPosition(style->gridAfter()); |
1920 case CSSPropertyWebkitGridColumn: | 1944 case CSSPropertyWebkitGridColumn: |
(...skipping 1054 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2975 static const CSSPropertyID propertiesAfterSlashSeperator[3] = { CSSPropertyB
ackgroundSize, CSSPropertyBackgroundOrigin, | 2999 static const CSSPropertyID propertiesAfterSlashSeperator[3] = { CSSPropertyB
ackgroundSize, CSSPropertyBackgroundOrigin, |
2976 CSSPropertyB
ackgroundClip }; | 3000 CSSPropertyB
ackgroundClip }; |
2977 | 3001 |
2978 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); | 3002 RefPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); |
2979 list->append(getCSSPropertyValuesForShorthandProperties(StylePropertyShortha
nd(propertiesBeforeSlashSeperator, WTF_ARRAY_LENGTH(propertiesBeforeSlashSeperat
or)))); | 3003 list->append(getCSSPropertyValuesForShorthandProperties(StylePropertyShortha
nd(propertiesBeforeSlashSeperator, WTF_ARRAY_LENGTH(propertiesBeforeSlashSeperat
or)))); |
2980 list->append(getCSSPropertyValuesForShorthandProperties(StylePropertyShortha
nd(propertiesAfterSlashSeperator, WTF_ARRAY_LENGTH(propertiesAfterSlashSeperator
)))); | 3004 list->append(getCSSPropertyValuesForShorthandProperties(StylePropertyShortha
nd(propertiesAfterSlashSeperator, WTF_ARRAY_LENGTH(propertiesAfterSlashSeperator
)))); |
2981 return list.release(); | 3005 return list.release(); |
2982 } | 3006 } |
2983 | 3007 |
2984 } // namespace WebCore | 3008 } // namespace WebCore |
OLD | NEW |