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 | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights |
4 * reserved. | 4 * reserved. |
5 * Copyright (C) 2011 Adobe Systems Incorporated. All rights reserved. | 5 * Copyright (C) 2011 Adobe Systems Incorporated. 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. |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 rare_non_inherited_data_.Access()->flexible_box_.Init(); | 122 rare_non_inherited_data_.Access()->flexible_box_.Init(); |
123 rare_non_inherited_data_.Access()->multi_col_.Init(); | 123 rare_non_inherited_data_.Access()->multi_col_.Init(); |
124 rare_non_inherited_data_.Access()->transform_.Init(); | 124 rare_non_inherited_data_.Access()->transform_.Init(); |
125 rare_non_inherited_data_.Access()->will_change_.Init(); | 125 rare_non_inherited_data_.Access()->will_change_.Init(); |
126 rare_non_inherited_data_.Access()->filter_.Init(); | 126 rare_non_inherited_data_.Access()->filter_.Init(); |
127 rare_non_inherited_data_.Access()->backdrop_filter_.Init(); | 127 rare_non_inherited_data_.Access()->backdrop_filter_.Init(); |
128 rare_non_inherited_data_.Access()->grid_.Init(); | 128 rare_non_inherited_data_.Access()->grid_.Init(); |
129 rare_non_inherited_data_.Access()->grid_item_.Init(); | 129 rare_non_inherited_data_.Access()->grid_item_.Init(); |
130 rare_non_inherited_data_.Access()->scroll_snap_.Init(); | 130 rare_non_inherited_data_.Access()->scroll_snap_.Init(); |
131 rare_inherited_data_.Init(); | 131 rare_inherited_data_.Init(); |
132 style_inherited_data_.Init(); | 132 inherited_data_.Init(); |
133 svg_style_.Init(); | 133 svg_style_.Init(); |
134 } | 134 } |
135 | 135 |
136 ALWAYS_INLINE ComputedStyle::ComputedStyle(const ComputedStyle& o) | 136 ALWAYS_INLINE ComputedStyle::ComputedStyle(const ComputedStyle& o) |
137 : ComputedStyleBase(o), | 137 : ComputedStyleBase(o), |
138 RefCounted<ComputedStyle>(), | 138 RefCounted<ComputedStyle>(), |
139 box_data_(o.box_data_), | 139 box_data_(o.box_data_), |
140 visual_data_(o.visual_data_), | 140 visual_data_(o.visual_data_), |
141 background_data_(o.background_data_), | 141 background_data_(o.background_data_), |
142 rare_non_inherited_data_(o.rare_non_inherited_data_), | 142 rare_non_inherited_data_(o.rare_non_inherited_data_), |
143 rare_inherited_data_(o.rare_inherited_data_), | 143 rare_inherited_data_(o.rare_inherited_data_), |
144 style_inherited_data_(o.style_inherited_data_), | 144 inherited_data_(o.inherited_data_), |
145 svg_style_(o.svg_style_) {} | 145 svg_style_(o.svg_style_) {} |
146 | 146 |
147 static StyleRecalcChange DiffPseudoStyles(const ComputedStyle& old_style, | 147 static StyleRecalcChange DiffPseudoStyles(const ComputedStyle& old_style, |
148 const ComputedStyle& new_style) { | 148 const ComputedStyle& new_style) { |
149 // If the pseudoStyles have changed, ensure layoutObject triggers setStyle. | 149 // If the pseudoStyles have changed, ensure layoutObject triggers setStyle. |
150 if (!old_style.HasAnyPublicPseudoStyles() && | 150 if (!old_style.HasAnyPublicPseudoStyles() && |
151 !new_style.HasAnyPublicPseudoStyles()) | 151 !new_style.HasAnyPublicPseudoStyles()) |
152 return kNoChange; | 152 return kNoChange; |
153 for (PseudoId pseudo_id = kFirstPublicPseudoId; | 153 for (PseudoId pseudo_id = kFirstPublicPseudoId; |
154 pseudo_id < kFirstInternalPseudoId; | 154 pseudo_id < kFirstInternalPseudoId; |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 ComputedStyleBase::InheritFrom(inherit_parent, is_at_shadow_boundary); | 317 ComputedStyleBase::InheritFrom(inherit_parent, is_at_shadow_boundary); |
318 if (is_at_shadow_boundary == kAtShadowBoundary) { | 318 if (is_at_shadow_boundary == kAtShadowBoundary) { |
319 // Even if surrounding content is user-editable, shadow DOM should act as a | 319 // Even if surrounding content is user-editable, shadow DOM should act as a |
320 // single unit, and not necessarily be editable | 320 // single unit, and not necessarily be editable |
321 EUserModify current_user_modify = UserModify(); | 321 EUserModify current_user_modify = UserModify(); |
322 rare_inherited_data_ = inherit_parent.rare_inherited_data_; | 322 rare_inherited_data_ = inherit_parent.rare_inherited_data_; |
323 SetUserModify(current_user_modify); | 323 SetUserModify(current_user_modify); |
324 } else { | 324 } else { |
325 rare_inherited_data_ = inherit_parent.rare_inherited_data_; | 325 rare_inherited_data_ = inherit_parent.rare_inherited_data_; |
326 } | 326 } |
327 style_inherited_data_ = inherit_parent.style_inherited_data_; | 327 inherited_data_ = inherit_parent.inherited_data_; |
328 if (svg_style_ != inherit_parent.svg_style_) | 328 if (svg_style_ != inherit_parent.svg_style_) |
329 svg_style_.Access()->InheritFrom(inherit_parent.svg_style_.Get()); | 329 svg_style_.Access()->InheritFrom(inherit_parent.svg_style_.Get()); |
330 } | 330 } |
331 | 331 |
332 void ComputedStyle::CopyNonInheritedFromCached(const ComputedStyle& other) { | 332 void ComputedStyle::CopyNonInheritedFromCached(const ComputedStyle& other) { |
333 ComputedStyleBase::CopyNonInheritedFromCached(other); | 333 ComputedStyleBase::CopyNonInheritedFromCached(other); |
334 box_data_ = other.box_data_; | 334 box_data_ = other.box_data_; |
335 visual_data_ = other.visual_data_; | 335 visual_data_ = other.visual_data_; |
336 background_data_ = other.background_data_; | 336 background_data_ = other.background_data_; |
337 rare_non_inherited_data_ = other.rare_non_inherited_data_; | 337 rare_non_inherited_data_ = other.rare_non_inherited_data_; |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 } | 456 } |
457 | 457 |
458 bool ComputedStyle::IndependentInheritedEqual( | 458 bool ComputedStyle::IndependentInheritedEqual( |
459 const ComputedStyle& other) const { | 459 const ComputedStyle& other) const { |
460 return ComputedStyleBase::IndependentInheritedEqual(other); | 460 return ComputedStyleBase::IndependentInheritedEqual(other); |
461 } | 461 } |
462 | 462 |
463 bool ComputedStyle::NonIndependentInheritedEqual( | 463 bool ComputedStyle::NonIndependentInheritedEqual( |
464 const ComputedStyle& other) const { | 464 const ComputedStyle& other) const { |
465 return ComputedStyleBase::NonIndependentInheritedEqual(other) && | 465 return ComputedStyleBase::NonIndependentInheritedEqual(other) && |
466 style_inherited_data_ == other.style_inherited_data_ && | 466 inherited_data_ == other.inherited_data_ && |
467 svg_style_->InheritedEqual(*other.svg_style_) && | 467 svg_style_->InheritedEqual(*other.svg_style_) && |
468 rare_inherited_data_ == other.rare_inherited_data_; | 468 rare_inherited_data_ == other.rare_inherited_data_; |
469 } | 469 } |
470 | 470 |
471 bool ComputedStyle::LoadingCustomFontsEqual(const ComputedStyle& other) const { | 471 bool ComputedStyle::LoadingCustomFontsEqual(const ComputedStyle& other) const { |
472 return GetFont().LoadingCustomFonts() == other.GetFont().LoadingCustomFonts(); | 472 return GetFont().LoadingCustomFonts() == other.GetFont().LoadingCustomFonts(); |
473 } | 473 } |
474 | 474 |
475 bool ComputedStyle::NonInheritedEqual(const ComputedStyle& other) const { | 475 bool ComputedStyle::NonInheritedEqual(const ComputedStyle& other) const { |
476 // compare everything except the pseudoStyle pointer | 476 // compare everything except the pseudoStyle pointer |
477 return ComputedStyleBase::NonInheritedEqual(other) && | 477 return ComputedStyleBase::NonInheritedEqual(other) && |
478 OriginalDisplay() == | 478 OriginalDisplay() == |
479 other.OriginalDisplay() && // Not generated in ComputedStyleBase | 479 other.OriginalDisplay() && // Not generated in ComputedStyleBase |
480 VerticalAlign() == other.VerticalAlign() && // Not generated in | 480 VerticalAlign() == other.VerticalAlign() && // Not generated in |
481 // ComputedStyleBase | 481 // ComputedStyleBase |
482 box_data_ == other.box_data_ && | 482 box_data_ == other.box_data_ && |
483 visual_data_ == other.visual_data_ && | 483 visual_data_ == other.visual_data_ && |
484 background_data_ == other.background_data_ && | 484 background_data_ == other.background_data_ && |
485 rare_non_inherited_data_ == other.rare_non_inherited_data_ && | 485 rare_non_inherited_data_ == other.rare_non_inherited_data_ && |
486 svg_style_->NonInheritedEqual(*other.svg_style_); | 486 svg_style_->NonInheritedEqual(*other.svg_style_); |
487 } | 487 } |
488 | 488 |
489 bool ComputedStyle::InheritedDataShared(const ComputedStyle& other) const { | 489 bool ComputedStyle::InheritedDataShared(const ComputedStyle& other) const { |
490 // This is a fast check that only looks if the data structures are shared. | 490 // This is a fast check that only looks if the data structures are shared. |
491 // TODO(sashab): Should ComputedStyleBase have an inheritedDataShared method? | 491 // TODO(sashab): Should ComputedStyleBase have an inheritedDataShared method? |
492 return ComputedStyleBase::InheritedEqual(other) && | 492 return ComputedStyleBase::InheritedEqual(other) && |
493 style_inherited_data_.Get() == other.style_inherited_data_.Get() && | 493 inherited_data_.Get() == other.inherited_data_.Get() && |
494 svg_style_.Get() == other.svg_style_.Get() && | 494 svg_style_.Get() == other.svg_style_.Get() && |
495 rare_inherited_data_.Get() == other.rare_inherited_data_.Get(); | 495 rare_inherited_data_.Get() == other.rare_inherited_data_.Get(); |
496 } | 496 } |
497 | 497 |
498 static bool DependenceOnContentHeightHasChanged(const ComputedStyle& a, | 498 static bool DependenceOnContentHeightHasChanged(const ComputedStyle& a, |
499 const ComputedStyle& b) { | 499 const ComputedStyle& b) { |
500 // If top or bottom become auto/non-auto then it means we either have to solve | 500 // If top or bottom become auto/non-auto then it means we either have to solve |
501 // height based on the content or stop doing so | 501 // height based on the content or stop doing so |
502 // (http://www.w3.org/TR/CSS2/visudet.html#abs-non-replaced-height) | 502 // (http://www.w3.org/TR/CSS2/visudet.html#abs-non-replaced-height) |
503 // - either way requires a layout. | 503 // - either way requires a layout. |
(...skipping 244 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
748 | 748 |
749 if (!rare_inherited_data_->ShadowDataEquivalent( | 749 if (!rare_inherited_data_->ShadowDataEquivalent( |
750 *other.rare_inherited_data_.Get())) | 750 *other.rare_inherited_data_.Get())) |
751 return true; | 751 return true; |
752 | 752 |
753 if (!rare_inherited_data_->QuotesDataEquivalent( | 753 if (!rare_inherited_data_->QuotesDataEquivalent( |
754 *other.rare_inherited_data_.Get())) | 754 *other.rare_inherited_data_.Get())) |
755 return true; | 755 return true; |
756 } | 756 } |
757 | 757 |
758 if (style_inherited_data_->text_autosizing_multiplier != | 758 if (inherited_data_->text_autosizing_multiplier_ != |
759 other.style_inherited_data_->text_autosizing_multiplier) | 759 other.inherited_data_->text_autosizing_multiplier_) |
760 return true; | 760 return true; |
761 | 761 |
762 if (style_inherited_data_->font.LoadingCustomFonts() != | 762 if (inherited_data_->font_.LoadingCustomFonts() != |
763 other.style_inherited_data_->font.LoadingCustomFonts()) | 763 other.inherited_data_->font_.LoadingCustomFonts()) |
764 return true; | 764 return true; |
765 | 765 |
766 if (style_inherited_data_.Get() != other.style_inherited_data_.Get()) { | 766 if (inherited_data_.Get() != other.inherited_data_.Get()) { |
767 if (style_inherited_data_->line_height != | 767 if (inherited_data_->line_height_ != other.inherited_data_->line_height_ || |
768 other.style_inherited_data_->line_height || | 768 inherited_data_->font_ != other.inherited_data_->font_ || |
769 style_inherited_data_->font != other.style_inherited_data_->font || | 769 inherited_data_->horizontal_border_spacing_ != |
770 style_inherited_data_->horizontal_border_spacing != | 770 other.inherited_data_->horizontal_border_spacing_ || |
771 other.style_inherited_data_->horizontal_border_spacing || | 771 inherited_data_->vertical_border_spacing_ != |
772 style_inherited_data_->vertical_border_spacing != | 772 other.inherited_data_->vertical_border_spacing_) |
773 other.style_inherited_data_->vertical_border_spacing) | |
774 return true; | 773 return true; |
775 } | 774 } |
776 | 775 |
777 if (BoxDirection() != other.BoxDirection() || | 776 if (BoxDirection() != other.BoxDirection() || |
778 RtlOrdering() != other.RtlOrdering() || | 777 RtlOrdering() != other.RtlOrdering() || |
779 GetTextAlign() != other.GetTextAlign() || | 778 GetTextAlign() != other.GetTextAlign() || |
780 TextTransform() != other.TextTransform() || | 779 TextTransform() != other.TextTransform() || |
781 Direction() != other.Direction() || WhiteSpace() != other.WhiteSpace() || | 780 Direction() != other.Direction() || WhiteSpace() != other.WhiteSpace() || |
782 GetWritingMode() != other.GetWritingMode()) | 781 GetWritingMode() != other.GetWritingMode()) |
783 return true; | 782 return true; |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1046 | 1045 |
1047 if (!rare_non_inherited_data_->outline_.VisuallyEqual( | 1046 if (!rare_non_inherited_data_->outline_.VisuallyEqual( |
1048 other.rare_non_inherited_data_->outline_)) | 1047 other.rare_non_inherited_data_->outline_)) |
1049 diff.SetNeedsRecomputeOverflow(); | 1048 diff.SetNeedsRecomputeOverflow(); |
1050 } | 1049 } |
1051 | 1050 |
1052 if (!Border().VisualOverflowEqual(other.Border())) | 1051 if (!Border().VisualOverflowEqual(other.Border())) |
1053 diff.SetNeedsRecomputeOverflow(); | 1052 diff.SetNeedsRecomputeOverflow(); |
1054 | 1053 |
1055 if (!diff.NeedsFullPaintInvalidation()) { | 1054 if (!diff.NeedsFullPaintInvalidation()) { |
1056 if (style_inherited_data_->color != other.style_inherited_data_->color || | 1055 if (inherited_data_->color_ != other.inherited_data_->color_ || |
1057 style_inherited_data_->visited_link_color != | 1056 inherited_data_->visited_link_color_ != |
1058 other.style_inherited_data_->visited_link_color || | 1057 other.inherited_data_->visited_link_color_ || |
1059 HasSimpleUnderlineInternal() != other.HasSimpleUnderlineInternal() || | 1058 HasSimpleUnderlineInternal() != other.HasSimpleUnderlineInternal() || |
1060 visual_data_->text_decoration != other.visual_data_->text_decoration) { | 1059 visual_data_->text_decoration != other.visual_data_->text_decoration) { |
1061 diff.SetTextDecorationOrColorChanged(); | 1060 diff.SetTextDecorationOrColorChanged(); |
1062 } else if (rare_non_inherited_data_.Get() != | 1061 } else if (rare_non_inherited_data_.Get() != |
1063 other.rare_non_inherited_data_.Get() && | 1062 other.rare_non_inherited_data_.Get() && |
1064 (rare_non_inherited_data_->text_decoration_style_ != | 1063 (rare_non_inherited_data_->text_decoration_style_ != |
1065 other.rare_non_inherited_data_->text_decoration_style_ || | 1064 other.rare_non_inherited_data_->text_decoration_style_ || |
1066 rare_non_inherited_data_->text_decoration_color_ != | 1065 rare_non_inherited_data_->text_decoration_color_ != |
1067 other.rare_non_inherited_data_->text_decoration_color_ || | 1066 other.rare_non_inherited_data_->text_decoration_color_ || |
1068 rare_non_inherited_data_->visited_link_text_decoration_color_ != | 1067 rare_non_inherited_data_->visited_link_text_decoration_color_ != |
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1424 | 1423 |
1425 StyleImage* ComputedStyle::ListStyleImage() const { | 1424 StyleImage* ComputedStyle::ListStyleImage() const { |
1426 return rare_inherited_data_->list_style_image.Get(); | 1425 return rare_inherited_data_->list_style_image.Get(); |
1427 } | 1426 } |
1428 void ComputedStyle::SetListStyleImage(StyleImage* v) { | 1427 void ComputedStyle::SetListStyleImage(StyleImage* v) { |
1429 if (rare_inherited_data_->list_style_image != v) | 1428 if (rare_inherited_data_->list_style_image != v) |
1430 rare_inherited_data_.Access()->list_style_image = v; | 1429 rare_inherited_data_.Access()->list_style_image = v; |
1431 } | 1430 } |
1432 | 1431 |
1433 Color ComputedStyle::GetColor() const { | 1432 Color ComputedStyle::GetColor() const { |
1434 return style_inherited_data_->color; | 1433 return inherited_data_->color_; |
1435 } | 1434 } |
1436 Color ComputedStyle::VisitedLinkColor() const { | 1435 Color ComputedStyle::VisitedLinkColor() const { |
1437 return style_inherited_data_->visited_link_color; | 1436 return inherited_data_->visited_link_color_; |
1438 } | 1437 } |
1439 void ComputedStyle::SetColor(const Color& v) { | 1438 void ComputedStyle::SetColor(const Color& v) { |
1440 SET_VAR(style_inherited_data_, color, v); | 1439 SET_VAR(inherited_data_, color_, v); |
1441 } | 1440 } |
1442 void ComputedStyle::SetVisitedLinkColor(const Color& v) { | 1441 void ComputedStyle::SetVisitedLinkColor(const Color& v) { |
1443 SET_VAR(style_inherited_data_, visited_link_color, v); | 1442 SET_VAR(inherited_data_, visited_link_color_, v); |
1444 } | 1443 } |
1445 | 1444 |
1446 short ComputedStyle::HorizontalBorderSpacing() const { | 1445 short ComputedStyle::HorizontalBorderSpacing() const { |
1447 return style_inherited_data_->horizontal_border_spacing; | 1446 return inherited_data_->horizontal_border_spacing_; |
1448 } | 1447 } |
1449 short ComputedStyle::VerticalBorderSpacing() const { | 1448 short ComputedStyle::VerticalBorderSpacing() const { |
1450 return style_inherited_data_->vertical_border_spacing; | 1449 return inherited_data_->vertical_border_spacing_; |
1451 } | 1450 } |
1452 void ComputedStyle::SetHorizontalBorderSpacing(short v) { | 1451 void ComputedStyle::SetHorizontalBorderSpacing(short v) { |
1453 SET_VAR(style_inherited_data_, horizontal_border_spacing, v); | 1452 SET_VAR(inherited_data_, horizontal_border_spacing_, v); |
1454 } | 1453 } |
1455 void ComputedStyle::SetVerticalBorderSpacing(short v) { | 1454 void ComputedStyle::SetVerticalBorderSpacing(short v) { |
1456 SET_VAR(style_inherited_data_, vertical_border_spacing, v); | 1455 SET_VAR(inherited_data_, vertical_border_spacing_, v); |
1457 } | 1456 } |
1458 | 1457 |
1459 FloatRoundedRect ComputedStyle::GetRoundedBorderFor( | 1458 FloatRoundedRect ComputedStyle::GetRoundedBorderFor( |
1460 const LayoutRect& border_rect, | 1459 const LayoutRect& border_rect, |
1461 bool include_logical_left_edge, | 1460 bool include_logical_left_edge, |
1462 bool include_logical_right_edge) const { | 1461 bool include_logical_right_edge) const { |
1463 FloatRoundedRect rounded_rect(PixelSnappedIntRect(border_rect)); | 1462 FloatRoundedRect rounded_rect(PixelSnappedIntRect(border_rect)); |
1464 if (HasBorderRadius()) { | 1463 if (HasBorderRadius()) { |
1465 FloatRoundedRect::Radii radii = CalcRadiiFor(Border(), border_rect.Size()); | 1464 FloatRoundedRect::Radii radii = CalcRadiiFor(Border(), border_rect.Size()); |
1466 rounded_rect.IncludeLogicalEdges(radii, IsHorizontalWritingMode(), | 1465 rounded_rect.IncludeLogicalEdges(radii, IsHorizontalWritingMode(), |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1670 } | 1669 } |
1671 | 1670 |
1672 CSSTransitionData& ComputedStyle::AccessTransitions() { | 1671 CSSTransitionData& ComputedStyle::AccessTransitions() { |
1673 if (!rare_non_inherited_data_.Access()->transitions_) | 1672 if (!rare_non_inherited_data_.Access()->transitions_) |
1674 rare_non_inherited_data_.Access()->transitions_ = | 1673 rare_non_inherited_data_.Access()->transitions_ = |
1675 CSSTransitionData::Create(); | 1674 CSSTransitionData::Create(); |
1676 return *rare_non_inherited_data_->transitions_; | 1675 return *rare_non_inherited_data_->transitions_; |
1677 } | 1676 } |
1678 | 1677 |
1679 const Font& ComputedStyle::GetFont() const { | 1678 const Font& ComputedStyle::GetFont() const { |
1680 return style_inherited_data_->font; | 1679 return inherited_data_->font_; |
1681 } | 1680 } |
1682 const FontDescription& ComputedStyle::GetFontDescription() const { | 1681 const FontDescription& ComputedStyle::GetFontDescription() const { |
1683 return style_inherited_data_->font.GetFontDescription(); | 1682 return inherited_data_->font_.GetFontDescription(); |
1684 } | 1683 } |
1685 float ComputedStyle::SpecifiedFontSize() const { | 1684 float ComputedStyle::SpecifiedFontSize() const { |
1686 return GetFontDescription().SpecifiedSize(); | 1685 return GetFontDescription().SpecifiedSize(); |
1687 } | 1686 } |
1688 float ComputedStyle::ComputedFontSize() const { | 1687 float ComputedStyle::ComputedFontSize() const { |
1689 return GetFontDescription().ComputedSize(); | 1688 return GetFontDescription().ComputedSize(); |
1690 } | 1689 } |
1691 LayoutUnit ComputedStyle::ComputedFontSizeAsFixed() const { | 1690 LayoutUnit ComputedStyle::ComputedFontSizeAsFixed() const { |
1692 return LayoutUnit::FromFloatRound(GetFontDescription().ComputedSize()); | 1691 return LayoutUnit::FromFloatRound(GetFontDescription().ComputedSize()); |
1693 } | 1692 } |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1867 } | 1866 } |
1868 | 1867 |
1869 float ComputedStyle::WordSpacing() const { | 1868 float ComputedStyle::WordSpacing() const { |
1870 return GetFontDescription().WordSpacing(); | 1869 return GetFontDescription().WordSpacing(); |
1871 } | 1870 } |
1872 float ComputedStyle::LetterSpacing() const { | 1871 float ComputedStyle::LetterSpacing() const { |
1873 return GetFontDescription().LetterSpacing(); | 1872 return GetFontDescription().LetterSpacing(); |
1874 } | 1873 } |
1875 | 1874 |
1876 bool ComputedStyle::SetFontDescription(const FontDescription& v) { | 1875 bool ComputedStyle::SetFontDescription(const FontDescription& v) { |
1877 if (style_inherited_data_->font.GetFontDescription() != v) { | 1876 if (inherited_data_->font_.GetFontDescription() != v) { |
1878 style_inherited_data_.Access()->font = Font(v); | 1877 inherited_data_.Access()->font_ = Font(v); |
1879 return true; | 1878 return true; |
1880 } | 1879 } |
1881 return false; | 1880 return false; |
1882 } | 1881 } |
1883 | 1882 |
1884 void ComputedStyle::SetFont(const Font& font) { | 1883 void ComputedStyle::SetFont(const Font& font) { |
1885 style_inherited_data_.Access()->font = font; | 1884 inherited_data_.Access()->font_ = font; |
1886 } | 1885 } |
1887 | 1886 |
1888 bool ComputedStyle::HasIdenticalAscentDescentAndLineGap( | 1887 bool ComputedStyle::HasIdenticalAscentDescentAndLineGap( |
1889 const ComputedStyle& other) const { | 1888 const ComputedStyle& other) const { |
1890 const SimpleFontData* font_data = GetFont().PrimaryFont(); | 1889 const SimpleFontData* font_data = GetFont().PrimaryFont(); |
1891 const SimpleFontData* other_font_data = other.GetFont().PrimaryFont(); | 1890 const SimpleFontData* other_font_data = other.GetFont().PrimaryFont(); |
1892 return font_data && other_font_data && | 1891 return font_data && other_font_data && |
1893 font_data->GetFontMetrics().HasIdenticalAscentDescentAndLineGap( | 1892 font_data->GetFontMetrics().HasIdenticalAscentDescentAndLineGap( |
1894 other_font_data->GetFontMetrics()); | 1893 other_font_data->GetFontMetrics()); |
1895 } | 1894 } |
1896 | 1895 |
1897 const Length& ComputedStyle::SpecifiedLineHeight() const { | 1896 const Length& ComputedStyle::SpecifiedLineHeight() const { |
1898 return style_inherited_data_->line_height; | 1897 return inherited_data_->line_height_; |
1899 } | 1898 } |
1900 Length ComputedStyle::LineHeight() const { | 1899 Length ComputedStyle::LineHeight() const { |
1901 const Length& lh = style_inherited_data_->line_height; | 1900 const Length& lh = inherited_data_->line_height_; |
1902 // Unlike getFontDescription().computedSize() and hence fontSize(), this is | 1901 // Unlike getFontDescription().computedSize() and hence fontSize(), this is |
1903 // recalculated on demand as we only store the specified line height. | 1902 // recalculated on demand as we only store the specified line height. |
1904 // FIXME: Should consider scaling the fixed part of any calc expressions | 1903 // FIXME: Should consider scaling the fixed part of any calc expressions |
1905 // too, though this involves messily poking into CalcExpressionLength. | 1904 // too, though this involves messily poking into CalcExpressionLength. |
1906 if (lh.IsFixed()) { | 1905 if (lh.IsFixed()) { |
1907 float multiplier = TextAutosizingMultiplier(); | 1906 float multiplier = TextAutosizingMultiplier(); |
1908 return Length( | 1907 return Length( |
1909 TextAutosizer::ComputeAutosizedFontSize(lh.Value(), multiplier), | 1908 TextAutosizer::ComputeAutosizedFontSize(lh.Value(), multiplier), |
1910 kFixed); | 1909 kFixed); |
1911 } | 1910 } |
1912 | 1911 |
1913 return lh; | 1912 return lh; |
1914 } | 1913 } |
1915 | 1914 |
1916 void ComputedStyle::SetLineHeight(const Length& specified_line_height) { | 1915 void ComputedStyle::SetLineHeight(const Length& specified_line_height) { |
1917 SET_VAR(style_inherited_data_, line_height, specified_line_height); | 1916 SET_VAR(inherited_data_, line_height_, specified_line_height); |
1918 } | 1917 } |
1919 | 1918 |
1920 int ComputedStyle::ComputedLineHeight() const { | 1919 int ComputedStyle::ComputedLineHeight() const { |
1921 const Length& lh = LineHeight(); | 1920 const Length& lh = LineHeight(); |
1922 | 1921 |
1923 // Negative value means the line height is not set. Use the font's built-in | 1922 // Negative value means the line height is not set. Use the font's built-in |
1924 // spacing, if avalible. | 1923 // spacing, if avalible. |
1925 if (lh.IsNegative() && GetFont().PrimaryFont()) | 1924 if (lh.IsNegative() && GetFont().PrimaryFont()) |
1926 return GetFont().PrimaryFont()->GetFontMetrics().LineSpacing(); | 1925 return GetFont().PrimaryFont()->GetFontMetrics().LineSpacing(); |
1927 | 1926 |
(...skipping 27 matching lines...) Expand all Loading... |
1955 | 1954 |
1956 void ComputedStyle::SetLetterSpacing(float letter_spacing) { | 1955 void ComputedStyle::SetLetterSpacing(float letter_spacing) { |
1957 FontSelector* current_font_selector = GetFont().GetFontSelector(); | 1956 FontSelector* current_font_selector = GetFont().GetFontSelector(); |
1958 FontDescription desc(GetFontDescription()); | 1957 FontDescription desc(GetFontDescription()); |
1959 desc.SetLetterSpacing(letter_spacing); | 1958 desc.SetLetterSpacing(letter_spacing); |
1960 SetFontDescription(desc); | 1959 SetFontDescription(desc); |
1961 GetFont().Update(current_font_selector); | 1960 GetFont().Update(current_font_selector); |
1962 } | 1961 } |
1963 | 1962 |
1964 void ComputedStyle::SetTextAutosizingMultiplier(float multiplier) { | 1963 void ComputedStyle::SetTextAutosizingMultiplier(float multiplier) { |
1965 SET_VAR(style_inherited_data_, text_autosizing_multiplier, multiplier); | 1964 SET_VAR(inherited_data_, text_autosizing_multiplier_, multiplier); |
1966 | 1965 |
1967 float size = SpecifiedFontSize(); | 1966 float size = SpecifiedFontSize(); |
1968 | 1967 |
1969 DCHECK(std::isfinite(size)); | 1968 DCHECK(std::isfinite(size)); |
1970 if (!std::isfinite(size) || size < 0) | 1969 if (!std::isfinite(size) || size < 0) |
1971 size = 0; | 1970 size = 0; |
1972 else | 1971 else |
1973 size = std::min(kMaximumAllowedFontSize, size); | 1972 size = std::min(kMaximumAllowedFontSize, size); |
1974 | 1973 |
1975 FontSelector* current_font_selector = GetFont().GetFontSelector(); | 1974 FontSelector* current_font_selector = GetFont().GetFontSelector(); |
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2500 if (value < 0) | 2499 if (value < 0) |
2501 fvalue -= 0.5f; | 2500 fvalue -= 0.5f; |
2502 else | 2501 else |
2503 fvalue += 0.5f; | 2502 fvalue += 0.5f; |
2504 } | 2503 } |
2505 | 2504 |
2506 return RoundForImpreciseConversion<int>(fvalue / zoom_factor); | 2505 return RoundForImpreciseConversion<int>(fvalue / zoom_factor); |
2507 } | 2506 } |
2508 | 2507 |
2509 } // namespace blink | 2508 } // namespace blink |
OLD | NEW |