| 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 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 { | 186 { |
| 187 if ((!oldStyle && newStyle) || (oldStyle && !newStyle)) | 187 if ((!oldStyle && newStyle) || (oldStyle && !newStyle)) |
| 188 return Reattach; | 188 return Reattach; |
| 189 | 189 |
| 190 if (!oldStyle && !newStyle) | 190 if (!oldStyle && !newStyle) |
| 191 return NoChange; | 191 return NoChange; |
| 192 | 192 |
| 193 if (oldStyle->display() != newStyle->display() | 193 if (oldStyle->display() != newStyle->display() |
| 194 || oldStyle->hasPseudoStyle(PseudoIdFirstLetter) != newStyle->hasPseudoS
tyle(PseudoIdFirstLetter) | 194 || oldStyle->hasPseudoStyle(PseudoIdFirstLetter) != newStyle->hasPseudoS
tyle(PseudoIdFirstLetter) |
| 195 || !oldStyle->contentDataEquivalent(newStyle) | 195 || !oldStyle->contentDataEquivalent(newStyle) |
| 196 || oldStyle->hasTextCombine() != newStyle->hasTextCombine() | 196 || oldStyle->hasTextCombine() != newStyle->hasTextCombine()) |
| 197 || oldStyle->justifyItems() != newStyle->justifyItems()) // TODO (lajava
): We must avoid this Reattach. | |
| 198 return Reattach; | 197 return Reattach; |
| 199 | 198 |
| 200 if (oldStyle->inheritedNotEqual(*newStyle)) | 199 if (oldStyle->inheritedNotEqual(*newStyle) |
| 200 || oldStyle->alignItems() != newStyle->alignItems() |
| 201 || oldStyle->justifyItems() != newStyle->justifyItems()) |
| 201 return Inherit; | 202 return Inherit; |
| 202 | 203 |
| 203 if (*oldStyle == *newStyle) | 204 if (*oldStyle == *newStyle) |
| 204 return diffPseudoStyles(*oldStyle, *newStyle); | 205 return diffPseudoStyles(*oldStyle, *newStyle); |
| 205 | 206 |
| 206 if (oldStyle->hasExplicitlyInheritedProperties()) | 207 if (oldStyle->hasExplicitlyInheritedProperties()) |
| 207 return Inherit; | 208 return Inherit; |
| 208 | 209 |
| 209 return NoInherit; | 210 return NoInherit; |
| 210 } | 211 } |
| 211 | 212 |
| 212 ItemPosition ComputedStyle::resolveAlignment(const ComputedStyle& parentStyle, c
onst ComputedStyle& childStyle, ItemPosition resolvedAutoPositionForLayoutObject
) | 213 StyleSelfAlignmentData resolvedSelfAlignment(const StyleSelfAlignmentData& value
, ItemPosition normalValueBehavior) |
| 213 { | 214 { |
| 214 // The auto keyword computes to the parent's align-items computed value, or
to "stretch", if not set or "auto". | 215 // To avoid needing to copy the RareNonInheritedData, we repurpose the 'auto
' flag to not just mean 'auto' prior to running the StyleAdjuster but also mean
'normal' after running it. |
| 215 if (childStyle.alignSelfPosition() == ItemPositionAuto) | 216 if (value.position() == ItemPositionNormal || value.position() == ItemPositi
onAuto) |
| 216 return (parentStyle.alignItemsPosition() == ItemPositionAuto) ? resolved
AutoPositionForLayoutObject : parentStyle.alignItemsPosition(); | 217 return {normalValueBehavior, OverflowAlignmentDefault}; |
| 217 return childStyle.alignSelfPosition(); | 218 return value; |
| 218 } | 219 } |
| 219 | 220 |
| 220 const StyleSelfAlignmentData ComputedStyle::resolvedAlignment(const ComputedStyl
e& parentStyle, ItemPosition resolvedAutoPositionForLayoutObject) const | 221 StyleSelfAlignmentData ComputedStyle::resolvedAlignItems(ItemPosition normalValu
eBehaviour) const |
| 221 { | 222 { |
| 222 // The auto keyword computes to the parent's align-items computed value, or
to "stretch", if not set or "auto". | 223 // We will return the behaviour of 'normal' value if needed, which is specif
ic of each layout model. |
| 223 if (alignSelfPosition() == ItemPositionAuto) { | 224 return resolvedSelfAlignment(alignItems(), normalValueBehaviour); |
| 224 if (parentStyle.alignItemsPosition() == ItemPositionAuto) | |
| 225 return {resolvedAutoPositionForLayoutObject, OverflowAlignmentDefaul
t}; | |
| 226 return parentStyle.alignItems(); | |
| 227 } | |
| 228 return alignSelf(); | |
| 229 } | 225 } |
| 230 | 226 |
| 231 ItemPosition ComputedStyle::resolveJustification(const ComputedStyle& parentStyl
e, const ComputedStyle& childStyle, ItemPosition resolvedAutoPositionForLayoutOb
ject) | 227 StyleSelfAlignmentData ComputedStyle::resolvedAlignSelf(ItemPosition normalValue
Behaviour, const ComputedStyle* parentStyle) const |
| 232 { | 228 { |
| 233 if (childStyle.justifySelfPosition() == ItemPositionAuto) | 229 // We will return the behaviour of 'normal' value if needed, which is specif
ic of each layout model. |
| 234 return (parentStyle.justifyItemsPosition() == ItemPositionAuto) ? resolv
edAutoPositionForLayoutObject : parentStyle.justifyItemsPosition(); | 230 if (!parentStyle || alignSelfPosition() != ItemPositionAuto) |
| 235 return childStyle.justifySelfPosition(); | 231 return resolvedSelfAlignment(alignSelf(), normalValueBehaviour); |
| 232 |
| 233 // We shouldn't need to resolve any 'auto' value in post-adjusment ComputedS
tyle, but some layout models |
| 234 // can generate anonymous boxes that may need 'auto' value resolution during
layout. |
| 235 // The 'auto' keyword computes to the parent's align-items computed value. |
| 236 return parentStyle->resolvedAlignItems(normalValueBehaviour); |
| 237 } |
| 238 |
| 239 StyleSelfAlignmentData ComputedStyle::resolvedJustifyItems(ItemPosition normalVa
lueBehaviour) const |
| 240 { |
| 241 // We will return the behaviour of 'normal' value if needed, which is specif
ic of each layout model. |
| 242 return resolvedSelfAlignment(justifyItems(), normalValueBehaviour); |
| 243 } |
| 244 |
| 245 StyleSelfAlignmentData ComputedStyle::resolvedJustifySelf(ItemPosition normalVal
ueBehaviour, const ComputedStyle* parentStyle) const |
| 246 { |
| 247 // We will return the behaviour of 'normal' value if needed, which is specif
ic of each layout model. |
| 248 if (!parentStyle || justifySelfPosition() != ItemPositionAuto) |
| 249 return resolvedSelfAlignment(justifySelf(), normalValueBehaviour); |
| 250 |
| 251 // We shouldn't need to resolve any 'auto' value in post-adjusment ComputedS
tyle, but some layout models |
| 252 // can generate anonymous boxes that may need 'auto' value resolution during
layout. |
| 253 // The auto keyword computes to the parent's justify-items computed value. |
| 254 return parentStyle->resolvedJustifyItems(normalValueBehaviour); |
| 236 } | 255 } |
| 237 | 256 |
| 238 static inline ContentPosition resolvedContentAlignmentPosition(const StyleConten
tAlignmentData& value, const StyleContentAlignmentData& normalValueBehavior) | 257 static inline ContentPosition resolvedContentAlignmentPosition(const StyleConten
tAlignmentData& value, const StyleContentAlignmentData& normalValueBehavior) |
| 239 { | 258 { |
| 240 return (value.position() == ContentPositionNormal && value.distribution() ==
ContentDistributionDefault) ? normalValueBehavior.position() : value.position()
; | 259 return (value.position() == ContentPositionNormal && value.distribution() ==
ContentDistributionDefault) ? normalValueBehavior.position() : value.position()
; |
| 241 } | 260 } |
| 242 | 261 |
| 243 static inline ContentDistributionType resolvedContentAlignmentDistribution(const
StyleContentAlignmentData& value, const StyleContentAlignmentData& normalValueB
ehavior) | 262 static inline ContentDistributionType resolvedContentAlignmentDistribution(const
StyleContentAlignmentData& value, const StyleContentAlignmentData& normalValueB
ehavior) |
| 244 { | 263 { |
| 245 return (value.position() == ContentPositionNormal && value.distribution() ==
ContentDistributionDefault) ? normalValueBehavior.distribution() : value.distri
bution(); | 264 return (value.position() == ContentPositionNormal && value.distribution() ==
ContentDistributionDefault) ? normalValueBehavior.distribution() : value.distri
bution(); |
| (...skipping 1627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1873 if (value < 0) | 1892 if (value < 0) |
| 1874 fvalue -= 0.5f; | 1893 fvalue -= 0.5f; |
| 1875 else | 1894 else |
| 1876 fvalue += 0.5f; | 1895 fvalue += 0.5f; |
| 1877 } | 1896 } |
| 1878 | 1897 |
| 1879 return roundForImpreciseConversion<int>(fvalue / zoomFactor); | 1898 return roundForImpreciseConversion<int>(fvalue / zoomFactor); |
| 1880 } | 1899 } |
| 1881 | 1900 |
| 1882 } // namespace blink | 1901 } // namespace blink |
| OLD | NEW |