Changeset 195892 in webkit
- Timestamp:
- Jan 30, 2016 7:28:48 AM (8 years ago)
- Location:
- trunk
- Files:
-
- 35 added
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r195890 r195892 1 2016-01-30 Dave Hyatt <hyatt@apple.com> 2 3 Support break-after, break-before and break-inside. 4 https://bugs.webkit.org/show_bug.cgi?id=148814 5 6 Reviewed by Dean Jackson. 7 8 * TestExpectations: 9 * fast/multicol/standardized-break-properties-expected.txt: Added. 10 * fast/multicol/standardized-break-properties.html: Added. 11 * fast/multicol/vertical-lr/standardized-break-properties-expected.txt: Added. 12 * fast/multicol/vertical-lr/standardized-break-properties.html: Added. 13 * fast/multicol/vertical-rl/standardized-break-properties-expected.txt: Added. 14 * fast/multicol/vertical-rl/standardized-break-properties.html: Added. 15 * fast/regions/text-break-properties-expected.txt: Added. 16 * fast/regions/text-break-properties.html: Added. 17 * printing/allowed-breaks-expected.txt: Added. 18 * printing/allowed-breaks.html: Added. 19 * printing/break-after-avoid-expected.txt: Added. 20 * printing/break-after-avoid-page-expected.txt: Added. 21 * printing/break-after-avoid-page.html: Added. 22 * printing/break-after-avoid.html: Added. 23 * printing/break-always-expected.txt: Added. 24 * printing/break-always.html: Added. 25 * printing/break-avoid-expected.txt: Added. 26 * printing/break-avoid-page-expected.txt: Added. 27 * printing/break-avoid-page.html: Added. 28 * printing/break-avoid.html: Added. 29 * printing/break-display-none-expected.txt: Added. 30 * printing/break-display-none.html: Added. 31 * printing/break-inside-avoid-expected.txt: Added. 32 * printing/break-inside-avoid-page-expected.txt: Added. 33 * printing/break-inside-avoid-page.html: Added. 34 * printing/break-inside-avoid.html: Added. 35 * printing/script-tests/allowed-breaks.js: Added. 36 (test): 37 * printing/script-tests/break-after-avoid-page.js: Added. 38 (test): 39 * printing/script-tests/break-after-avoid.js: Added. 40 (test): 41 * printing/script-tests/break-always.js: Added. 42 (test): 43 * printing/script-tests/break-avoid-page.js: Added. 44 (test): 45 * printing/script-tests/break-avoid.js: Added. 46 (test): 47 * printing/script-tests/break-display-none.js: Added. 48 (test): 49 * printing/script-tests/break-inside-avoid-page.js: Added. 50 (test): 51 * printing/script-tests/break-inside-avoid.js: Added. 52 (test): 53 1 54 2016-01-29 Michael Catanzaro <mcatanzaro@igalia.com> 2 55 -
trunk/LayoutTests/TestExpectations
r195652 r195892 713 713 714 714 webkit.org/b/148812 imported/w3c/css/css-multicol-1/multicol-width-small-001.xht [ ImageOnlyFailure ] 715 webkit.org/b/148814 imported/w3c/css/css-multicol-1/multicol-break-000.xht [ ImageOnlyFailure ]716 715 webkit.org/b/148814 imported/w3c/css/css-multicol-1/multicol-break-001.xht [ ImageOnlyFailure ] 717 716 webkit.org/b/148816 imported/w3c/css/css-multicol-1/multicol-rule-004.xht [ ImageOnlyFailure ] -
trunk/LayoutTests/fast/css/style-enumerate-properties.html
r155263 r195892 41 41 break; 42 42 } 43 if (++cssPropertyCount <= 10 0)43 if (++cssPropertyCount <= 103) 44 44 previous = p; 45 45 else { -
trunk/Source/WebCore/ChangeLog
r195879 r195892 1 2016-01-30 Dave Hyatt <hyatt@apple.com> 2 3 Support break-after, break-before and break-inside. 4 https://bugs.webkit.org/show_bug.cgi?id=148814 5 6 Reviewed by Dean Jackson. 7 8 New tests added in printing/, fast/multicol/, and fast/regions. 9 10 * css/CSSComputedStyleDeclaration.cpp: 11 (WebCore::convertToPageBreak): 12 (WebCore::convertToColumnBreak): 13 (WebCore::convertToRegionBreak): 14 For backwards compatibility, keep support for all the old properties in 15 computed style. This means we have to convert the break-* property values 16 into keywords that make sense for the legacy properties. This mainly 17 involves mapping "page", "column", "region" to "always" (similar rule for 18 the avoid-* versions as well). 19 20 (WebCore::ComputedStyleExtractor::propertyValue): 21 Add support for the three new break-* properties. 22 23 * css/CSSParser.cpp: 24 (WebCore::isValidKeywordPropertyAndValue): 25 (WebCore::isKeywordPropertyID): 26 (WebCore::CSSParser::parseValue): 27 Add support for the new break properties. 28 29 * css/CSSPrimitiveValueMappings.h: 30 (WebCore::CSSPrimitiveValue::operator BreakBetween): 31 (WebCore::CSSPrimitiveValue::operator BreakInside): 32 Add converters for the new BreakBetween and BreakInside enums. Remove 33 the EPageBreak enum, since it is no longer used. 34 35 * css/CSSPropertyNames.in: 36 * css/CSSValueKeywords.in: 37 Add the new properties and the new values supported by the properties 38 to the keywords lists. 39 40 * css/StyleBuilderConverter.h: 41 (WebCore::StyleBuilderConverter::convertFontSynthesis): 42 (WebCore::StyleBuilderConverter::convertPageBreakBetween): 43 (WebCore::StyleBuilderConverter::convertPageBreakInside): 44 (WebCore::StyleBuilderConverter::convertColumnBreakBetween): 45 (WebCore::StyleBuilderConverter::convertColumnBreakInside): 46 (WebCore::StyleBuilderConverter::convertRegionBreakBetween): 47 (WebCore::StyleBuilderConverter::convertRegionBreakInside): 48 In order to map the legacy properties into the new break-* values 49 we have custom converter functions. 50 51 * rendering/RenderBlock.cpp: 52 (WebCore::RenderBlock::paintChild): 53 (WebCore::RenderBlock::childBoxIsUnsplittableForFragmentation): 54 (WebCore::RenderBlock::computeRegionRangeForBoxChild): 55 * rendering/RenderBlockFlow.cpp: 56 (WebCore::RenderBlockFlow::applyBeforeBreak): 57 (WebCore::RenderBlockFlow::applyAfterBreak): 58 Patch the block code to check the correct new break-* constants. For 59 avoidance, this means checking both the general avoid value and the 60 specific value (e.g., avoid-page). In place of "always", we check 61 the specific value (e.g., column) and then for page specifically, we 62 also treat "left", "right", "recto" and "verso" as "always break" for now. 63 64 * rendering/style/RenderStyle.cpp: 65 (WebCore::RenderStyle::changeRequiresLayout): 66 Make sure changes to the break properties trigger relayout. 67 68 * rendering/style/RenderStyle.h: 69 Add getters and setters for the break-* properties and remove all 70 occurrences of the legacy page, column and region values from the RenderStyle. 71 72 * rendering/style/RenderStyleConstants.cpp: 73 (WebCore::alwaysPageBreak): 74 We have a helper function here for mapping several constant values to "page". 75 76 * rendering/style/RenderStyleConstants.h: 77 Definitions of the new BreakBetween and BreakInside enums. 78 79 * rendering/style/StyleMultiColData.cpp: 80 (WebCore::StyleMultiColData::StyleMultiColData): 81 (WebCore::StyleMultiColData::operator==): 82 * rendering/style/StyleMultiColData.h: 83 Remove the column-specific break data. 84 85 * rendering/style/StyleRareNonInheritedData.cpp: 86 (WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): 87 (WebCore::StyleRareNonInheritedData::operator==): 88 * rendering/style/StyleRareNonInheritedData.h: 89 Remove the region-specific break data and replace it with generic break 90 data that is now used by all three pagination models. 91 1 92 2016-01-29 Per Arne Vollan <peavo@outlook.com> 2 93 -
trunk/Source/WebCore/css/CSSComputedStyleDeclaration.cpp
r194496 r195892 2070 2070 } 2071 2071 2072 static CSSValueID convertToPageBreak(BreakBetween value) 2073 { 2074 if (value == PageBreakBetween || value == LeftPageBreakBetween || value == RightPageBreakBetween 2075 || value == RectoPageBreakBetween || value == VersoPageBreakBetween) 2076 return CSSValueAlways; // CSS 2.1 allows us to map these to always. 2077 if (value == AvoidBreakBetween || value == AvoidPageBreakBetween) 2078 return CSSValueAvoid; 2079 return CSSValueAuto; 2080 } 2081 2082 static CSSValueID convertToColumnBreak(BreakBetween value) 2083 { 2084 if (value == ColumnBreakBetween) 2085 return CSSValueAlways; 2086 if (value == AvoidBreakBetween || value == AvoidColumnBreakBetween) 2087 return CSSValueAvoid; 2088 return CSSValueAuto; 2089 } 2090 2091 static CSSValueID convertToPageBreak(BreakInside value) 2092 { 2093 if (value == AvoidBreakInside || value == AvoidPageBreakInside) 2094 return CSSValueAvoid; 2095 return CSSValueAuto; 2096 } 2097 2098 static CSSValueID convertToColumnBreak(BreakInside value) 2099 { 2100 if (value == AvoidBreakInside || value == AvoidColumnBreakInside) 2101 return CSSValueAvoid; 2102 return CSSValueAuto; 2103 } 2104 2105 #if ENABLE(CSS_REGIONS) 2106 static CSSValueID convertToRegionBreak(BreakBetween value) 2107 { 2108 if (value == RegionBreakBetween) 2109 return CSSValueAlways; 2110 if (value == AvoidBreakBetween || value == AvoidRegionBreakBetween) 2111 return CSSValueAvoid; 2112 return CSSValueAuto; 2113 } 2114 2115 static CSSValueID convertToRegionBreak(BreakInside value) 2116 { 2117 if (value == AvoidBreakInside || value == AvoidRegionBreakInside) 2118 return CSSValueAvoid; 2119 return CSSValueAuto; 2120 } 2121 #endif 2122 2072 2123 static bool isLayoutDependent(CSSPropertyID propertyID, RenderStyle* style, RenderObject* renderer) 2073 2124 { … … 2605 2656 return cssValuePool.createIdentifierValue(style->columnSpan() ? CSSValueAll : CSSValueNone); 2606 2657 case CSSPropertyWebkitColumnBreakAfter: 2607 return cssValuePool.createValue( style->columnBreakAfter());2658 return cssValuePool.createValue(convertToColumnBreak(style->breakAfter())); 2608 2659 case CSSPropertyWebkitColumnBreakBefore: 2609 return cssValuePool.createValue( style->columnBreakBefore());2660 return cssValuePool.createValue(convertToColumnBreak(style->breakBefore())); 2610 2661 case CSSPropertyWebkitColumnBreakInside: 2611 return cssValuePool.createValue( style->columnBreakInside());2662 return cssValuePool.createValue(convertToColumnBreak(style->breakInside())); 2612 2663 case CSSPropertyColumnWidth: 2613 2664 if (style->hasAutoColumnWidth()) … … 2618 2669 #if ENABLE(CSS_REGIONS) 2619 2670 case CSSPropertyWebkitRegionBreakAfter: 2620 return cssValuePool.createValue( style->regionBreakAfter());2671 return cssValuePool.createValue(convertToRegionBreak(style->breakAfter())); 2621 2672 case CSSPropertyWebkitRegionBreakBefore: 2622 return cssValuePool.createValue( style->regionBreakBefore());2673 return cssValuePool.createValue(convertToRegionBreak(style->breakBefore())); 2623 2674 case CSSPropertyWebkitRegionBreakInside: 2624 return cssValuePool.createValue( style->regionBreakInside());2675 return cssValuePool.createValue(convertToRegionBreak(style->breakInside())); 2625 2676 #endif 2626 2677 case CSSPropertyCursor: { … … 2957 3008 return zoomAdjustedPaddingOrMarginPixelValue<&RenderStyle::paddingLeft, &RenderBoxModelObject::computedCSSPaddingLeft>(*style, renderer); 2958 3009 case CSSPropertyPageBreakAfter: 2959 return cssValuePool.createValue( style->pageBreakAfter());3010 return cssValuePool.createValue(convertToPageBreak(style->breakAfter())); 2960 3011 case CSSPropertyPageBreakBefore: 2961 return cssValuePool.createValue(style->pageBreakBefore()); 2962 case CSSPropertyPageBreakInside: { 2963 EPageBreak pageBreak = style->pageBreakInside(); 2964 ASSERT(pageBreak != PBALWAYS); 2965 if (pageBreak == PBALWAYS) 2966 return nullptr; 2967 return cssValuePool.createValue(style->pageBreakInside()); 2968 } 3012 return cssValuePool.createValue(convertToPageBreak(style->breakBefore())); 3013 case CSSPropertyPageBreakInside: 3014 return cssValuePool.createValue(convertToPageBreak(style->breakInside())); 3015 case CSSPropertyBreakAfter: 3016 return cssValuePool.createValue(style->breakAfter()); 3017 case CSSPropertyBreakBefore: 3018 return cssValuePool.createValue(style->breakBefore()); 3019 case CSSPropertyBreakInside: 3020 return cssValuePool.createValue(style->breakInside()); 2969 3021 case CSSPropertyPosition: 2970 3022 return cssValuePool.createValue(style->position()); -
trunk/Source/WebCore/css/CSSParser.cpp
r195808 r195892 1044 1044 return true; 1045 1045 break; 1046 1047 case CSSPropertyBreakAfter: 1048 case CSSPropertyBreakBefore: 1049 // auto | avoid | left | right | recto | verso | column | page | region | avoid-page | avoid-column | avoid-region 1050 if (valueID == CSSValueAuto || valueID == CSSValueAvoid || valueID == CSSValueLeft || valueID == CSSValueRight 1051 || valueID == CSSValueRecto || valueID == CSSValueVerso || valueID == CSSValueColumn || valueID == CSSValuePage 1052 || valueID == CSSValueRegion || valueID == CSSValueAvoidColumn || valueID == CSSValueAvoidPage || valueID == CSSValueAvoidRegion) 1053 return true; 1054 break; 1055 case CSSPropertyBreakInside: 1056 // auto | avoid | avoid-page | avoid-column | avoid-region 1057 if (valueID == CSSValueAuto || valueID == CSSValueAvoid || valueID == CSSValueAvoidColumn || valueID == CSSValueAvoidPage || valueID == CSSValueAvoidRegion) 1058 return true; 1059 break; 1046 1060 default: 1047 1061 ASSERT_NOT_REACHED(); … … 1063 1077 case CSSPropertyBorderTopStyle: 1064 1078 case CSSPropertyBoxSizing: 1079 case CSSPropertyBreakAfter: 1080 case CSSPropertyBreakBefore: 1081 case CSSPropertyBreakInside: 1065 1082 case CSSPropertyCaptionSide: 1066 1083 case CSSPropertyClear: … … 3166 3183 case CSSPropertyBorderTopStyle: 3167 3184 case CSSPropertyBoxSizing: 3185 case CSSPropertyBreakAfter: 3186 case CSSPropertyBreakBefore: 3187 case CSSPropertyBreakInside: 3168 3188 case CSSPropertyCaptionSide: 3169 3189 case CSSPropertyClear: -
trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h
r195699 r195892 2202 2202 } 2203 2203 2204 template<> inline CSSPrimitiveValue::CSSPrimitiveValue( EPageBreake)2205 : CSSValue(PrimitiveClass) 2206 { 2207 m_primitiveUnitType = CSS_VALUE_ID; 2208 switch (e) { 2209 case PBAUTO:2204 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(BreakBetween e) 2205 : CSSValue(PrimitiveClass) 2206 { 2207 m_primitiveUnitType = CSS_VALUE_ID; 2208 switch (e) { 2209 case AutoBreakBetween: 2210 2210 m_value.valueID = CSSValueAuto; 2211 2211 break; 2212 case PBALWAYS: 2213 m_value.valueID = CSSValueAlways; 2214 break; 2215 case PBAVOID: 2212 case AvoidBreakBetween: 2216 2213 m_value.valueID = CSSValueAvoid; 2217 2214 break; 2218 } 2219 } 2220 2221 template<> inline CSSPrimitiveValue::operator EPageBreak() const 2215 case AvoidColumnBreakBetween: 2216 m_value.valueID = CSSValueAvoidColumn; 2217 break; 2218 case AvoidPageBreakBetween: 2219 m_value.valueID = CSSValueAvoidPage; 2220 break; 2221 case AvoidRegionBreakBetween: 2222 m_value.valueID = CSSValueAvoidRegion; 2223 break; 2224 case ColumnBreakBetween: 2225 m_value.valueID = CSSValueColumn; 2226 break; 2227 case PageBreakBetween: 2228 m_value.valueID = CSSValuePage; 2229 break; 2230 case RegionBreakBetween: 2231 m_value.valueID = CSSValueRegion; 2232 break; 2233 case LeftPageBreakBetween: 2234 m_value.valueID = CSSValueLeft; 2235 break; 2236 case RightPageBreakBetween: 2237 m_value.valueID = CSSValueRight; 2238 break; 2239 case RectoPageBreakBetween: 2240 m_value.valueID = CSSValueRecto; 2241 break; 2242 case VersoPageBreakBetween: 2243 m_value.valueID = CSSValueVerso; 2244 break; 2245 } 2246 } 2247 2248 template<> inline CSSPrimitiveValue::operator BreakBetween() const 2222 2249 { 2223 2250 ASSERT(isValueID()); … … 2225 2252 switch (m_value.valueID) { 2226 2253 case CSSValueAuto: 2227 return PBAUTO; 2254 return AutoBreakBetween; 2255 case CSSValueAvoid: 2256 return AvoidBreakBetween; 2257 case CSSValueAvoidColumn: 2258 return AvoidColumnBreakBetween; 2259 case CSSValueAvoidPage: 2260 return AvoidPageBreakBetween; 2261 case CSSValueAvoidRegion: 2262 return AvoidRegionBreakBetween; 2263 case CSSValueColumn: 2264 return ColumnBreakBetween; 2265 case CSSValuePage: 2266 return PageBreakBetween; 2267 case CSSValueRegion: 2268 return RegionBreakBetween; 2228 2269 case CSSValueLeft: 2270 return LeftPageBreakBetween; 2229 2271 case CSSValueRight: 2230 case CSSValueAlways: 2231 return PBALWAYS; // CSS2.1: "Conforming user agents may map left/right to always." 2272 return RightPageBreakBetween; 2273 case CSSValueRecto: 2274 return RectoPageBreakBetween; 2275 case CSSValueVerso: 2276 return VersoPageBreakBetween; 2277 default: 2278 break; 2279 } 2280 2281 ASSERT_NOT_REACHED(); 2282 return AutoBreakBetween; 2283 } 2284 2285 template<> inline CSSPrimitiveValue::CSSPrimitiveValue(BreakInside e) 2286 : CSSValue(PrimitiveClass) 2287 { 2288 m_primitiveUnitType = CSS_VALUE_ID; 2289 switch (e) { 2290 case AutoBreakInside: 2291 m_value.valueID = CSSValueAuto; 2292 break; 2293 case AvoidBreakInside: 2294 m_value.valueID = CSSValueAvoid; 2295 break; 2296 case AvoidColumnBreakInside: 2297 m_value.valueID = CSSValueAvoidColumn; 2298 break; 2299 case AvoidPageBreakInside: 2300 m_value.valueID = CSSValueAvoidPage; 2301 break; 2302 case AvoidRegionBreakInside: 2303 m_value.valueID = CSSValueAvoidRegion; 2304 break; 2305 } 2306 } 2307 2308 template<> inline CSSPrimitiveValue::operator BreakInside() const 2309 { 2310 ASSERT(isValueID()); 2311 2312 switch (m_value.valueID) { 2313 case CSSValueAuto: 2314 return AutoBreakInside; 2232 2315 case CSSValueAvoid: 2233 return PBAVOID; 2234 default: 2235 break; 2236 } 2237 2238 ASSERT_NOT_REACHED(); 2239 return PBAUTO; 2316 return AvoidBreakInside; 2317 case CSSValueAvoidColumn: 2318 return AvoidColumnBreakInside; 2319 case CSSValueAvoidPage: 2320 return AvoidPageBreakInside; 2321 case CSSValueAvoidRegion: 2322 return AvoidRegionBreakInside; 2323 default: 2324 break; 2325 } 2326 2327 ASSERT_NOT_REACHED(); 2328 return AutoBreakInside; 2240 2329 } 2241 2330 -
trunk/Source/WebCore/css/CSSPropertyNames.in
r195529 r195892 197 197 box-shadow [Custom=All] 198 198 box-sizing 199 break-after [Initial=initialBreakBetween] 200 break-before [Initial=initialBreakBetween] 201 break-inside [Initial=initialBreakInside] 199 202 buffered-rendering [SVG] 200 203 // -webkit-box-sizing worked in Safari 4 and earlier. … … 291 294 padding-top [Initial=initialPadding, Converter=Length] 292 295 page [SkipBuilder] 293 page-break-after [Initial=initial PageBreak]294 page-break-before [Initial=initial PageBreak]295 page-break-inside [Initial=initial PageBreak]296 page-break-after [Initial=initialBreakBetween, NameForMethods=BreakAfter, Converter=PageBreakBetween] 297 page-break-before [Initial=initialBreakBetween, NameForMethods=BreakBefore, Converter=PageBreakBetween] 298 page-break-inside [Initial=initialBreakInside, NameForMethods=BreakInside, Converter=PageBreakInside] 296 299 paint-order [SVG, Converter=PaintOrder] 297 300 pointer-events [Inherited] … … 428 431 -webkit-box-shadow [Custom=All] 429 432 -webkit-column-axis 430 -webkit-column-break-after [Initial=initial PageBreak]431 -webkit-column-break-before [Initial=initial PageBreak]432 -webkit-column-break-inside [Initial=initial PageBreak]433 -webkit-column-break-after [Initial=initialBreakBetween, NameForMethods=BreakAfter, Converter=ColumnBreakBetween] 434 -webkit-column-break-before [Initial=initialBreakBetween, NameForMethods=BreakBefore, Converter=ColumnBreakBetween] 435 -webkit-column-break-inside [Initial=initialBreakInside, NameForMethods=BreakInside, Converter=ColumnBreakInside] 433 436 column-count [AutoFunctions] 434 437 -webkit-column-count = column-count … … 643 646 -webkit-flow-from [NameForMethods=RegionThread, Converter=StringOrNone] 644 647 -webkit-region-fragment 645 -webkit-region-break-after [Initial=initial PageBreak]646 -webkit-region-break-before [Initial=initial PageBreak]647 -webkit-region-break-inside [Initial=initial PageBreak]648 -webkit-region-break-after [Initial=initialBreakBetween, NameForMethods=BreakAfter, Converter=RegionBreakBetween] 649 -webkit-region-break-before [Initial=initialBreakBetween, NameForMethods=BreakBefore, Converter=RegionBreakBetween] 650 -webkit-region-break-inside [Initial=initialBreakInside, NameForMethods=BreakInside, Converter=RegionBreakInside] 648 651 #endif 649 652 #if defined(ENABLE_CSS_SHAPES) && ENABLE_CSS_SHAPES -
trunk/Source/WebCore/css/CSSValueKeywords.in
r195699 r195892 833 833 padding-box 834 834 835 // 836 // CSS_PROP_BREAK_BEFORE/AFTER/INSIDE 837 // 838 avoid-column 839 avoid-page 840 avoid-region 841 page 842 recto 843 region 844 verso 845 835 846 // CSS_SHAPES 836 847 margin-box -
trunk/Source/WebCore/css/StyleBuilderConverter.h
r195808 r195892 127 127 static Optional<Length> convertLineHeight(StyleResolver&, CSSValue&, float multiplier = 1.f); 128 128 static FontSynthesis convertFontSynthesis(StyleResolver&, CSSValue&); 129 130 static BreakBetween convertPageBreakBetween(StyleResolver&, CSSValue&); 131 static BreakInside convertPageBreakInside(StyleResolver&, CSSValue&); 132 static BreakBetween convertColumnBreakBetween(StyleResolver&, CSSValue&); 133 static BreakInside convertColumnBreakInside(StyleResolver&, CSSValue&); 134 #if ENABLE(CSS_REGIONS) 135 static BreakBetween convertRegionBreakBetween(StyleResolver&, CSSValue&); 136 static BreakInside convertRegionBreakInside(StyleResolver&, CSSValue&); 137 #endif 129 138 130 139 private: … … 1215 1224 } 1216 1225 1226 inline BreakBetween StyleBuilderConverter::convertPageBreakBetween(StyleResolver&, CSSValue& value) 1227 { 1228 auto& primitiveValue = downcast<CSSPrimitiveValue>(value); 1229 if (primitiveValue.getValueID() == CSSValueAlways) 1230 return PageBreakBetween; 1231 if (primitiveValue.getValueID() == CSSValueAvoid) 1232 return AvoidPageBreakBetween; 1233 return primitiveValue; 1234 } 1235 1236 inline BreakInside StyleBuilderConverter::convertPageBreakInside(StyleResolver&, CSSValue& value) 1237 { 1238 auto& primitiveValue = downcast<CSSPrimitiveValue>(value); 1239 if (primitiveValue.getValueID() == CSSValueAvoid) 1240 return AvoidPageBreakInside; 1241 return primitiveValue; 1242 } 1243 1244 inline BreakBetween StyleBuilderConverter::convertColumnBreakBetween(StyleResolver&, CSSValue& value) 1245 { 1246 auto& primitiveValue = downcast<CSSPrimitiveValue>(value); 1247 if (primitiveValue.getValueID() == CSSValueAlways) 1248 return ColumnBreakBetween; 1249 if (primitiveValue.getValueID() == CSSValueAvoid) 1250 return AvoidColumnBreakBetween; 1251 return primitiveValue; 1252 } 1253 1254 inline BreakInside StyleBuilderConverter::convertColumnBreakInside(StyleResolver&, CSSValue& value) 1255 { 1256 auto& primitiveValue = downcast<CSSPrimitiveValue>(value); 1257 if (primitiveValue.getValueID() == CSSValueAvoid) 1258 return AvoidColumnBreakInside; 1259 return primitiveValue; 1260 } 1261 1262 #if ENABLE(CSS_REGIONS) 1263 inline BreakBetween StyleBuilderConverter::convertRegionBreakBetween(StyleResolver&, CSSValue& value) 1264 { 1265 auto& primitiveValue = downcast<CSSPrimitiveValue>(value); 1266 if (primitiveValue.getValueID() == CSSValueAlways) 1267 return RegionBreakBetween; 1268 if (primitiveValue.getValueID() == CSSValueAvoid) 1269 return AvoidRegionBreakBetween; 1270 return primitiveValue; 1271 } 1272 1273 inline BreakInside StyleBuilderConverter::convertRegionBreakInside(StyleResolver&, CSSValue& value) 1274 { 1275 auto& primitiveValue = downcast<CSSPrimitiveValue>(value); 1276 if (primitiveValue.getValueID() == CSSValueAvoid) 1277 return AvoidRegionBreakInside; 1278 return primitiveValue; 1279 } 1280 #endif 1281 1217 1282 } // namespace WebCore 1218 1283 -
trunk/Source/WebCore/rendering/RenderBlock.cpp
r195740 r195892 1471 1471 { 1472 1472 // Check for page-break-before: always, and if it's set, break and bail. 1473 bool checkBeforeAlways = !childrenInline() && (usePrintRect && child.style().pageBreakBefore() == PBALWAYS);1473 bool checkBeforeAlways = !childrenInline() && (usePrintRect && alwaysPageBreak(child.style().breakBefore())); 1474 1474 LayoutUnit absoluteChildY = paintOffset.y() + child.y(); 1475 1475 if (checkBeforeAlways … … 1500 1500 1501 1501 // Check for page-break-after: always, and if it's set, break and bail. 1502 bool checkAfterAlways = !childrenInline() && (usePrintRect && child.style().pageBreakAfter() == PBALWAYS);1502 bool checkAfterAlways = !childrenInline() && (usePrintRect && alwaysPageBreak(child.style().breakAfter())); 1503 1503 if (checkAfterAlways 1504 1504 && (absoluteChildY + child.height()) > paintInfo.rect.y() … … 3534 3534 bool checkPageBreaks = !checkColumnBreaks && view().layoutState()->m_pageLogicalHeight; 3535 3535 bool checkRegionBreaks = flowThread && flowThread->isRenderNamedFlowThread(); 3536 return child.isUnsplittableForPagination() || (checkColumnBreaks && child.style().columnBreakInside() == PBAVOID) 3537 || (checkPageBreaks && child.style().pageBreakInside() == PBAVOID) 3538 || (checkRegionBreaks && child.style().regionBreakInside() == PBAVOID); 3536 return child.isUnsplittableForPagination() || child.style().breakInside() == AvoidBreakInside 3537 || (checkColumnBreaks && child.style().breakInside() == AvoidColumnBreakInside) 3538 || (checkPageBreaks && child.style().breakInside() == AvoidPageBreakInside) 3539 || (checkRegionBreaks && child.style().breakInside() == AvoidRegionBreakInside); 3539 3540 } 3540 3541 -
trunk/Source/WebCore/rendering/RenderBlockFlow.cpp
r195146 r195892 1491 1491 bool checkPageBreaks = !checkColumnBreaks && view().layoutState()->m_pageLogicalHeight; // FIXME: Once columns can print we have to check this. 1492 1492 bool checkRegionBreaks = flowThread && flowThread->isRenderNamedFlowThread(); 1493 bool checkBeforeAlways = (checkColumnBreaks && child.style(). columnBreakBefore() == PBALWAYS)1494 || (checkPageBreaks && child.style().pageBreakBefore() == PBALWAYS)1495 || (checkRegionBreaks && child.style(). regionBreakBefore() == PBALWAYS);1493 bool checkBeforeAlways = (checkColumnBreaks && child.style().breakBefore() == ColumnBreakBetween) 1494 || (checkPageBreaks && alwaysPageBreak(child.style().breakBefore())) 1495 || (checkRegionBreaks && child.style().breakBefore() == RegionBreakBetween); 1496 1496 if (checkBeforeAlways && inNormalFlow(child) && hasNextPage(logicalOffset, IncludePageBoundary)) { 1497 1497 if (checkColumnBreaks) { … … 1517 1517 bool checkPageBreaks = !checkColumnBreaks && view().layoutState()->m_pageLogicalHeight; // FIXME: Once columns can print we have to check this. 1518 1518 bool checkRegionBreaks = flowThread && flowThread->isRenderNamedFlowThread(); 1519 bool checkAfterAlways = (checkColumnBreaks && child.style(). columnBreakAfter() == PBALWAYS)1520 || (checkPageBreaks && child.style().pageBreakAfter() == PBALWAYS)1521 || (checkRegionBreaks && child.style(). regionBreakAfter() == PBALWAYS);1519 bool checkAfterAlways = (checkColumnBreaks && child.style().breakAfter() == ColumnBreakBetween) 1520 || (checkPageBreaks && alwaysPageBreak(child.style().breakAfter())) 1521 || (checkRegionBreaks && child.style().breakAfter() == RegionBreakBetween); 1522 1522 if (checkAfterAlways && inNormalFlow(child) && hasNextPage(logicalOffset, IncludePageBoundary)) { 1523 1523 LayoutUnit marginOffset = marginInfo.canCollapseWithMarginBefore() ? LayoutUnit() : marginInfo.margin(); -
trunk/Source/WebCore/rendering/style/RenderStyle.cpp
r194819 r195892 685 685 // Check text combine mode. 686 686 if (rareNonInheritedData->m_textCombine != other.rareNonInheritedData->m_textCombine) 687 return true; 688 689 // Check breaks. 690 if (rareNonInheritedData->m_breakBefore != other.rareNonInheritedData->m_breakBefore 691 || rareNonInheritedData->m_breakAfter != other.rareNonInheritedData->m_breakAfter 692 || rareNonInheritedData->m_breakInside != other.rareNonInheritedData->m_breakInside) 687 693 return true; 688 694 -
trunk/Source/WebCore/rendering/style/RenderStyle.h
r195848 r195892 170 170 | verticalAlignMask << verticalAlignOffset 171 171 | floatingMask << floatingOffset 172 | pageBreakMask << pageBreakInsideOffset173 | pageBreakMask << pageBreakBeforeOffset174 | pageBreakMask << pageBreakAfterOffset175 172 | oneBitMask << explicitInheritanceOffset 176 173 | tableLayoutBitMask << tableLayoutOffset … … 213 210 EFloat floating() const { return static_cast<EFloat>(getValue(floatingMask, floatingOffset)); } 214 211 void setFloating(EFloat floating) { updateValue(floating, floatingMask, floatingOffset); } 215 216 // For valid values of page-break-inside see http://www.w3.org/TR/CSS21/page.html#page-break-props217 EPageBreak pageBreakInside() const { return static_cast<EPageBreak>(getValue(pageBreakMask, pageBreakInsideOffset)); }218 void setPageBreakInside(EPageBreak pageBreakInside) { ASSERT(pageBreakInside == PBAUTO || pageBreakInside == PBAVOID); updateValue(pageBreakInside, pageBreakMask, pageBreakInsideOffset); }219 220 EPageBreak pageBreakBefore() const { return static_cast<EPageBreak>(getValue(pageBreakMask, pageBreakBeforeOffset)); }221 void setPageBreakBefore(EPageBreak pageBreakBefore) { updateValue(pageBreakBefore, pageBreakMask, pageBreakBeforeOffset); }222 223 EPageBreak pageBreakAfter() const { return static_cast<EPageBreak>(getValue(pageBreakMask, pageBreakAfterOffset)); }224 void setPageBreakAfter(EPageBreak pageBreakAfter) { updateValue(pageBreakAfter, pageBreakMask, pageBreakAfterOffset); }225 212 226 213 bool hasAnyPublicPseudoStyles() const { return PUBLIC_PSEUDOID_MASK & getValue(pseudoBitsMask, pseudoBitsOffset); } … … 348 335 static const uint64_t floatingMask = (oneBitMask << floatingBitCount) - 1; 349 336 static const unsigned floatingOffset = unicodeBidiOffset + unicodeBidiBitCount; 350 static const unsigned pageBreakBitCount = 2; 351 static const uint64_t pageBreakMask = (oneBitMask << pageBreakBitCount) - 1; 352 static const unsigned pageBreakInsideOffset = floatingOffset + floatingBitCount; 353 static const unsigned pageBreakBeforeOffset = pageBreakInsideOffset + pageBreakBitCount; 354 static const unsigned pageBreakAfterOffset = pageBreakBeforeOffset + pageBreakBitCount; 337 static const unsigned hasExplicitlySetDirectionBitcount = 1; 338 static const unsigned hasExplicitlySetDirectionOffset = floatingOffset + floatingBitCount; 339 static const unsigned hasExplicitlySetWritingModeBitcount = 1; 340 static const unsigned hasExplicitlySetWritingModeOffset = hasExplicitlySetDirectionOffset + hasExplicitlySetDirectionBitcount; 355 341 356 342 // Byte 5. 357 343 static const unsigned explicitInheritanceBitCount = 1; 358 static const unsigned explicitInheritanceOffset = pageBreakAfterOffset + pageBreakBitCount;344 static const unsigned explicitInheritanceOffset = hasExplicitlySetWritingModeOffset + hasExplicitlySetWritingModeBitcount; 359 345 static const unsigned tableLayoutBitCount = 1; 360 346 static const uint64_t tableLayoutBitMask = oneBitMask; 361 347 static const unsigned tableLayoutOffset = explicitInheritanceOffset + explicitInheritanceBitCount; 362 348 static const unsigned verticalAlignBitCount = 4; 349 static const unsigned verticalAlignPadding = 2; 350 static const unsigned verticalAlignAndPaddingBitCount = verticalAlignBitCount + verticalAlignPadding; 363 351 static const uint64_t verticalAlignMask = (oneBitMask << verticalAlignBitCount) - 1; 364 352 static const unsigned verticalAlignOffset = tableLayoutOffset + tableLayoutBitCount; 365 static const unsigned hasExplicitlySetDirectionBitcount = 1;366 static const unsigned hasExplicitlySetDirectionOffset = verticalAlignOffset + verticalAlignBitCount;367 static const unsigned hasExplicitlySetWritingModeBitcount = 1;368 static const unsigned hasExplicitlySetWritingModeOffset = hasExplicitlySetDirectionOffset + hasExplicitlySetDirectionBitcount;369 353 370 354 // Byte 6. 371 355 static const unsigned pseudoBitsBitCount = 7; 372 356 static const uint64_t pseudoBitsMask = (oneBitMask << pseudoBitsBitCount) - 1; 373 static const unsigned pseudoBitsOffset = hasExplicitlySetWritingModeOffset + hasExplicitlySetWritingModeBitcount;357 static const unsigned pseudoBitsOffset = verticalAlignOffset + verticalAlignBitCount; 374 358 375 359 static const unsigned hasViewportUnitsBitCount = 1; … … 394 378 static const unsigned isLinkOffset = affectedByDragOffset + 1; 395 379 396 397 // 62 bits are assigned. There are 2 bits available currently used as padding to improve code generation. 380 // 60 bits are assigned. There are 4 bits available currently used as padding to improve code generation. 398 381 // If you add more style bits here, you will also need to update RenderStyle::copyNonInheritedFrom(). 399 382 uint64_t m_flags; … … 892 875 bool hasAutoWidows() const { return rareInheritedData->m_hasAutoWidows; } 893 876 bool hasAutoOrphans() const { return rareInheritedData->m_hasAutoOrphans; } 894 EPageBreak pageBreakInside() const { return noninherited_flags.pageBreakInside(); }895 EPageBreak pageBreakBefore() const { return noninherited_flags.pageBreakBefore(); }896 EPageBreak pageBreakAfter() const { return noninherited_flags.pageBreakAfter(); }897 877 898 878 // CSS3 Getter Methods 879 BreakInside breakInside() const { return static_cast<BreakInside>(rareNonInheritedData->m_breakInside); } 880 BreakBetween breakBefore() const { return static_cast<BreakBetween>(rareNonInheritedData->m_breakBefore); } 881 BreakBetween breakAfter() const { return static_cast<BreakBetween>(rareNonInheritedData->m_breakAfter); } 899 882 900 883 float outlineOffset() const … … 1039 1022 bool columnRuleIsTransparent() const { return rareNonInheritedData->m_multiCol->m_rule.isTransparent(); } 1040 1023 ColumnSpan columnSpan() const { return static_cast<ColumnSpan>(rareNonInheritedData->m_multiCol->m_columnSpan); } 1041 EPageBreak columnBreakBefore() const { return static_cast<EPageBreak>(rareNonInheritedData->m_multiCol->m_breakBefore); } 1042 EPageBreak columnBreakInside() const { return static_cast<EPageBreak>(rareNonInheritedData->m_multiCol->m_breakInside); } 1043 EPageBreak columnBreakAfter() const { return static_cast<EPageBreak>(rareNonInheritedData->m_multiCol->m_breakAfter); } 1044 EPageBreak regionBreakBefore() const { return static_cast<EPageBreak>(rareNonInheritedData->m_regionBreakBefore); } 1045 EPageBreak regionBreakInside() const { return static_cast<EPageBreak>(rareNonInheritedData->m_regionBreakInside); } 1046 EPageBreak regionBreakAfter() const { return static_cast<EPageBreak>(rareNonInheritedData->m_regionBreakAfter); } 1024 1047 1025 const TransformOperations& transform() const { return rareNonInheritedData->m_transform->m_operations; } 1048 1026 const Length& transformOriginX() const { return rareNonInheritedData->m_transform->m_x; } … … 1509 1487 void setHasAutoOrphans() { SET_VAR(rareInheritedData, m_hasAutoOrphans, true); SET_VAR(rareInheritedData, orphans, initialOrphans()); } 1510 1488 void setOrphans(short o) { SET_VAR(rareInheritedData, m_hasAutoOrphans, false); SET_VAR(rareInheritedData, orphans, o); } 1511 1512 // For valid values of page-break-inside see http://www.w3.org/TR/CSS21/page.html#page-break-props1513 void setPageBreakInside(EPageBreak b) { noninherited_flags.setPageBreakInside(b); }1514 void setPageBreakBefore(EPageBreak b) { noninherited_flags.setPageBreakBefore(b); }1515 void setPageBreakAfter(EPageBreak b) { noninherited_flags.setPageBreakAfter(b); }1516 1489 1517 1490 // CSS3 Setters … … 1621 1594 void resetColumnRule() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule, BorderValue()); } 1622 1595 void setColumnSpan(ColumnSpan columnSpan) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_columnSpan, columnSpan); } 1623 void setColumnBreakBefore(EPageBreak p) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_breakBefore, p); }1624 // For valid values of column-break-inside see http://www.w3.org/TR/css3-multicol/#break-before-break-after-break-inside1625 void setColumnBreakInside(EPageBreak p) { ASSERT(p == PBAUTO || p == PBAVOID); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_breakInside, p); }1626 void setColumnBreakAfter(EPageBreak p) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_breakAfter, p); }1627 void setRegionBreakBefore(EPageBreak p) { SET_VAR(rareNonInheritedData, m_regionBreakBefore, p); }1628 void setRegionBreakInside(EPageBreak p) { ASSERT(p == PBAUTO || p == PBAVOID); SET_VAR(rareNonInheritedData, m_regionBreakInside, p); }1629 void setRegionBreakAfter(EPageBreak p) { SET_VAR(rareNonInheritedData, m_regionBreakAfter, p); }1630 1596 void inheritColumnPropertiesFrom(RenderStyle* parent) { rareNonInheritedData.access()->m_multiCol = parent->rareNonInheritedData->m_multiCol; } 1631 1597 void setTransform(const TransformOperations& ops) { SET_VAR(rareNonInheritedData.access()->m_transform, m_operations, ops); } … … 1654 1620 void setTabSize(unsigned size) { SET_VAR(rareInheritedData, m_tabSize, size); } 1655 1621 1622 void setBreakBefore(BreakBetween breakBehavior) { SET_VAR(rareNonInheritedData, m_breakBefore, breakBehavior); } 1623 void setBreakAfter(BreakBetween breakBehavior) { SET_VAR(rareNonInheritedData, m_breakAfter, breakBehavior); } 1624 void setBreakInside(BreakInside breakBehavior) { SET_VAR(rareNonInheritedData, m_breakInside, breakBehavior); } 1625 1656 1626 // End CSS3 Setters 1657 1627 … … 1910 1880 static EVerticalAlign initialVerticalAlign() { return BASELINE; } 1911 1881 static EFloat initialFloating() { return NoFloat; } 1912 static EPageBreak initialPageBreak() { return PBAUTO; } 1882 static BreakBetween initialBreakBetween() { return AutoBreakBetween; } 1883 static BreakInside initialBreakInside() { return AutoBreakInside; } 1913 1884 static ETableLayout initialTableLayout() { return TAUTO; } 1914 1885 static EBorderCollapse initialBorderCollapse() { return BSEPARATE; } -
trunk/Source/WebCore/rendering/style/RenderStyleConstants.cpp
r191310 r195892 97 97 } 98 98 99 bool alwaysPageBreak(BreakBetween between) 100 { 101 return between >= PageBreakBetween; 102 } 103 99 104 } // namespace WebCore -
trunk/Source/WebCore/rendering/style/RenderStyleConstants.h
r195699 r195892 476 476 }; 477 477 478 enum EPageBreak { 479 PBAUTO, PBALWAYS, PBAVOID 480 }; 481 478 enum BreakBetween { 479 AutoBreakBetween, AvoidBreakBetween, AvoidColumnBreakBetween, AvoidPageBreakBetween, AvoidRegionBreakBetween, ColumnBreakBetween, RegionBreakBetween, PageBreakBetween, LeftPageBreakBetween, RightPageBreakBetween, RectoPageBreakBetween, VersoPageBreakBetween 480 }; 481 bool alwaysPageBreak(BreakBetween); 482 483 enum BreakInside { 484 AutoBreakInside, AvoidBreakInside, AvoidColumnBreakInside, AvoidPageBreakInside, AvoidRegionBreakInside 485 }; 486 482 487 enum EEmptyCell { 483 488 SHOW, HIDE -
trunk/Source/WebCore/rendering/style/StyleMultiColData.cpp
r177259 r195892 36 36 , m_fill(RenderStyle::initialColumnFill()) 37 37 , m_columnSpan(false) 38 , m_breakBefore(RenderStyle::initialPageBreak())39 , m_breakAfter(RenderStyle::initialPageBreak())40 , m_breakInside(RenderStyle::initialPageBreak())41 38 , m_axis(RenderStyle::initialColumnAxis()) 42 39 , m_progression(RenderStyle::initialColumnProgression()) … … 56 53 , m_fill(o.m_fill) 57 54 , m_columnSpan(o.m_columnSpan) 58 , m_breakBefore(o.m_breakBefore)59 , m_breakAfter(o.m_breakAfter)60 , m_breakInside(o.m_breakInside)61 55 , m_axis(o.m_axis) 62 56 , m_progression(o.m_progression) … … 72 66 { 73 67 return m_width == o.m_width && m_count == o.m_count && m_gap == o.m_gap 74 && m_rule == o.m_rule && m_visitedLinkColumnRuleColor == o.m_visitedLinkColumnRuleColor && m_breakBefore == o.m_breakBefore68 && m_rule == o.m_rule && m_visitedLinkColumnRuleColor == o.m_visitedLinkColumnRuleColor 75 69 && m_autoWidth == o.m_autoWidth && m_autoCount == o.m_autoCount && m_normalGap == o.m_normalGap 76 70 && m_fill == o.m_fill && m_columnSpan == o.m_columnSpan 77 && m_breakAfter == o.m_breakAfter && m_breakInside == o.m_breakInside78 71 && m_axis == o.m_axis && m_progression == o.m_progression; 79 72 } -
trunk/Source/WebCore/rendering/style/StyleMultiColData.h
r177259 r195892 65 65 unsigned m_fill : 1; // ColumnFill 66 66 unsigned m_columnSpan : 1; 67 unsigned m_breakBefore : 2; // EPageBreak68 unsigned m_breakAfter : 2; // EPageBreak69 unsigned m_breakInside : 2; // EPageBreak70 67 unsigned m_axis : 2; // ColumnAxis 71 68 unsigned m_progression : 2; // ColumnProgression -
trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp
r191452 r195892 87 87 #endif 88 88 , m_regionFragment(RenderStyle::initialRegionFragment()) 89 , m_regionBreakAfter(RenderStyle::initialPageBreak())90 , m_regionBreakBefore(RenderStyle::initialPageBreak())91 , m_regionBreakInside(RenderStyle::initialPageBreak())92 89 , m_pageSizeType(PAGE_SIZE_AUTO) 93 90 , m_transformStyle3D(RenderStyle::initialTransformStyle3D()) … … 108 105 #endif 109 106 , m_objectFit(RenderStyle::initialObjectFit()) 107 , m_breakBefore(RenderStyle::initialBreakBetween()) 108 , m_breakAfter(RenderStyle::initialBreakBetween()) 109 , m_breakInside(RenderStyle::initialBreakInside()) 110 110 { 111 111 m_maskBoxImage.setMaskDefaults(); … … 179 179 #endif 180 180 , m_regionFragment(o.m_regionFragment) 181 , m_regionBreakAfter(o.m_regionBreakAfter)182 , m_regionBreakBefore(o.m_regionBreakBefore)183 , m_regionBreakInside(o.m_regionBreakInside)184 181 , m_pageSizeType(o.m_pageSizeType) 185 182 , m_transformStyle3D(o.m_transformStyle3D) … … 200 197 #endif 201 198 , m_objectFit(o.m_objectFit) 199 , m_breakBefore(o.m_breakBefore) 200 , m_breakAfter(o.m_breakAfter) 201 , m_breakInside(o.m_breakInside) 202 202 { 203 203 } … … 275 275 && m_regionThread == o.m_regionThread 276 276 && m_regionFragment == o.m_regionFragment 277 && m_regionBreakAfter == o.m_regionBreakAfter278 && m_regionBreakBefore == o.m_regionBreakBefore279 && m_regionBreakInside == o.m_regionBreakInside280 277 && m_pageSizeType == o.m_pageSizeType 281 278 && m_transformStyle3D == o.m_transformStyle3D … … 301 298 #endif 302 299 && m_aspectRatioType == o.m_aspectRatioType 303 && m_objectFit == o.m_objectFit; 300 && m_objectFit == o.m_objectFit 301 && m_breakAfter == o.m_breakAfter 302 && m_breakBefore == o.m_breakBefore 303 && m_breakInside == o.m_breakInside; 304 304 } 305 305 -
trunk/Source/WebCore/rendering/style/StyleRareNonInheritedData.h
r191452 r195892 195 195 unsigned m_regionFragment : 1; // RegionFragment 196 196 197 unsigned m_regionBreakAfter : 2; // EPageBreak198 unsigned m_regionBreakBefore : 2; // EPageBreak199 unsigned m_regionBreakInside : 2; // EPageBreak200 201 197 unsigned m_pageSizeType : 2; // PageSizeType 202 198 unsigned m_transformStyle3D : 1; // ETransformStyle3D … … 224 220 225 221 unsigned m_objectFit : 3; // ObjectFit 222 223 unsigned m_breakBefore : 4; // BreakBetween 224 unsigned m_breakAfter : 4; 225 unsigned m_breakInside : 3; // BreakInside 226 226 227 227 private:
Note: See TracChangeset
for help on using the changeset viewer.