OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) |
3 * (C) 2000 Antti Koivisto (koivisto@kde.org) | 3 * (C) 2000 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
5 * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All | 5 * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All |
6 * rights reserved. | 6 * rights reserved. |
7 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 7 * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
8 * | 8 * |
9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
108 if (!group->base->variable.WidthEquals(value)) \ | 108 if (!group->base->variable.WidthEquals(value)) \ |
109 group.Access()->base.Access()->variable.SetWidth(value) | 109 group.Access()->base.Access()->variable.SetWidth(value) |
110 | 110 |
111 namespace blink { | 111 namespace blink { |
112 | 112 |
113 using std::max; | 113 using std::max; |
114 | 114 |
115 class FilterOperations; | 115 class FilterOperations; |
116 | 116 |
117 class AppliedTextDecoration; | 117 class AppliedTextDecoration; |
118 class BorderData; | |
119 struct BorderEdge; | 118 struct BorderEdge; |
120 class CSSAnimationData; | 119 class CSSAnimationData; |
121 class CSSTransitionData; | 120 class CSSTransitionData; |
122 class CSSVariableData; | 121 class CSSVariableData; |
123 class Font; | 122 class Font; |
124 class Hyphenation; | 123 class Hyphenation; |
125 class RotateTransformOperation; | 124 class RotateTransformOperation; |
126 class ScaleTransformOperation; | 125 class ScaleTransformOperation; |
127 class ShadowList; | 126 class ShadowList; |
128 class ShapeValue; | 127 class ShapeValue; |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
471 bool HasEntirelyFixedBackground() const; | 470 bool HasEntirelyFixedBackground() const; |
472 | 471 |
473 // background-clip | 472 // background-clip |
474 EFillBox BackgroundClip() const { | 473 EFillBox BackgroundClip() const { |
475 return static_cast<EFillBox>(BackgroundInternal().Clip()); | 474 return static_cast<EFillBox>(BackgroundInternal().Clip()); |
476 } | 475 } |
477 | 476 |
478 // Border properties. | 477 // Border properties. |
479 // -webkit-border-image | 478 // -webkit-border-image |
480 static NinePieceImage InitialNinePieceImage() { return NinePieceImage(); } | 479 static NinePieceImage InitialNinePieceImage() { return NinePieceImage(); } |
481 const NinePieceImage& BorderImage() const { | 480 const NinePieceImage& BorderImage() const { return BorderImageInternal(); } |
482 return surround_data_->border_.GetImage(); | 481 void SetBorderImage(const NinePieceImage& b) { SetBorderImageInternal(b); } |
shend
2017/05/18 05:40:33
In a future patch, could BorderImage actually be a
nainar
2017/05/18 06:00:50
Got it.
| |
483 } | |
484 void SetBorderImage(const NinePieceImage& b) { | |
485 SET_VAR(surround_data_, border_.image_, b); | |
486 } | |
487 | 482 |
488 // border-image-slice | 483 // border-image-slice |
489 const LengthBox& BorderImageSlices() const { | 484 const LengthBox& BorderImageSlices() const { |
490 return surround_data_->border_.GetImage().ImageSlices(); | 485 return BorderImage().ImageSlices(); |
491 } | 486 } |
492 void SetBorderImageSlices(const LengthBox&); | 487 void SetBorderImageSlices(const LengthBox&); |
493 | 488 |
494 // border-image-source | 489 // border-image-source |
495 static StyleImage* InitialBorderImageSource() { return 0; } | 490 static StyleImage* InitialBorderImageSource() { return 0; } |
496 StyleImage* BorderImageSource() const { | 491 StyleImage* BorderImageSource() const { return BorderImage().GetImage(); } |
497 return surround_data_->border_.GetImage().GetImage(); | |
498 } | |
499 void SetBorderImageSource(StyleImage*); | 492 void SetBorderImageSource(StyleImage*); |
500 | 493 |
501 // border-image-width | 494 // border-image-width |
502 const BorderImageLengthBox& BorderImageWidth() const { | 495 const BorderImageLengthBox& BorderImageWidth() const { |
503 return surround_data_->border_.GetImage().BorderSlices(); | 496 return BorderImage().BorderSlices(); |
504 } | 497 } |
505 void SetBorderImageWidth(const BorderImageLengthBox&); | 498 void SetBorderImageWidth(const BorderImageLengthBox&); |
506 | 499 |
507 // border-image-outset | 500 // border-image-outset |
508 const BorderImageLengthBox& BorderImageOutset() const { | 501 const BorderImageLengthBox& BorderImageOutset() const { |
509 return surround_data_->border_.GetImage().Outset(); | 502 return BorderImage().Outset(); |
510 } | 503 } |
511 void SetBorderImageOutset(const BorderImageLengthBox&); | 504 void SetBorderImageOutset(const BorderImageLengthBox&); |
512 | 505 |
513 // Border width properties. | 506 // Border width properties. |
514 static float InitialBorderWidth() { return 3; } | 507 static float InitialBorderWidth() { return 3; } |
515 | 508 |
516 // TODO(nainar): Move all fixed point logic to a separate class. | 509 // TODO(nainar): Move all fixed point logic to a separate class. |
517 // border-top-width | 510 // border-top-width |
518 float BorderTopWidth() const { | 511 float BorderTopWidth() const { |
519 if (BorderTopStyle() == EBorderStyle::kNone || | 512 if (BorderTopStyle() == EBorderStyle::kNone || |
(...skipping 2307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2827 } | 2820 } |
2828 | 2821 |
2829 // Border utility functions | 2822 // Border utility functions |
2830 LayoutRectOutsets ImageOutsets(const NinePieceImage&) const; | 2823 LayoutRectOutsets ImageOutsets(const NinePieceImage&) const; |
2831 bool HasBorderImageOutsets() const { | 2824 bool HasBorderImageOutsets() const { |
2832 return BorderImage().HasImage() && BorderImage().Outset().NonZero(); | 2825 return BorderImage().HasImage() && BorderImage().Outset().NonZero(); |
2833 } | 2826 } |
2834 LayoutRectOutsets BorderImageOutsets() const { | 2827 LayoutRectOutsets BorderImageOutsets() const { |
2835 return ImageOutsets(BorderImage()); | 2828 return ImageOutsets(BorderImage()); |
2836 } | 2829 } |
2837 bool BorderImageSlicesFill() const { return Border().GetImage().Fill(); } | 2830 bool BorderImageSlicesFill() const { return BorderImage().Fill(); } |
2838 | 2831 |
2839 void SetBorderImageSlicesFill(bool); | 2832 void SetBorderImageSlicesFill(bool); |
2840 const BorderData& Border() const { return surround_data_->border_; } | |
2841 const BorderValue BorderLeft() const { | 2833 const BorderValue BorderLeft() const { |
2842 return BorderValue(BorderLeftStyle(), BorderLeftColor(), BorderLeftWidth(), | 2834 return BorderValue(BorderLeftStyle(), BorderLeftColor(), BorderLeftWidth(), |
2843 OutlineStyleIsAuto()); | 2835 OutlineStyleIsAuto()); |
2844 } | 2836 } |
2845 const BorderValue BorderRight() const { | 2837 const BorderValue BorderRight() const { |
2846 return BorderValue(BorderRightStyle(), BorderRightColor(), | 2838 return BorderValue(BorderRightStyle(), BorderRightColor(), |
2847 BorderRightWidth(), OutlineStyleIsAuto()); | 2839 BorderRightWidth(), OutlineStyleIsAuto()); |
2848 } | 2840 } |
2849 const BorderValue BorderTop() const { | 2841 const BorderValue BorderTop() const { |
2850 return BorderValue(BorderTopStyle(), BorderTopColor(), BorderTopWidth(), | 2842 return BorderValue(BorderTopStyle(), BorderTopColor(), BorderTopWidth(), |
(...skipping 15 matching lines...) Expand all Loading... | |
2866 BorderValue BorderAfter() const; | 2858 BorderValue BorderAfter() const; |
2867 BorderValue BorderStart() const; | 2859 BorderValue BorderStart() const; |
2868 BorderValue BorderEnd() const; | 2860 BorderValue BorderEnd() const; |
2869 float BorderAfterWidth() const; | 2861 float BorderAfterWidth() const; |
2870 float BorderBeforeWidth() const; | 2862 float BorderBeforeWidth() const; |
2871 float BorderEndWidth() const; | 2863 float BorderEndWidth() const; |
2872 float BorderStartWidth() const; | 2864 float BorderStartWidth() const; |
2873 float BorderOverWidth() const; | 2865 float BorderOverWidth() const; |
2874 float BorderUnderWidth() const; | 2866 float BorderUnderWidth() const; |
2875 | 2867 |
2876 bool HasBorderFill() const { return Border().HasBorderFill(); } | 2868 bool HasBorderFill() const { |
2869 return BorderImage().HasImage() && BorderImage().Fill(); | |
2870 } | |
2877 bool HasBorder() const { | 2871 bool HasBorder() const { |
2878 return BorderLeftNonZero() || BorderRightNonZero() || BorderTopNonZero() || | 2872 return BorderLeftNonZero() || BorderRightNonZero() || BorderTopNonZero() || |
2879 BorderBottomNonZero(); | 2873 BorderBottomNonZero(); |
2880 } | 2874 } |
2881 bool HasBorderDecoration() const { return HasBorder() || HasBorderFill(); } | 2875 bool HasBorderDecoration() const { return HasBorder() || HasBorderFill(); } |
2882 bool HasBorderRadius() const { | 2876 bool HasBorderRadius() const { |
2883 if (!BorderTopLeftRadius().Width().IsZero()) | 2877 if (!BorderTopLeftRadius().Width().IsZero()) |
2884 return true; | 2878 return true; |
2885 if (!BorderTopRightRadius().Width().IsZero()) | 2879 if (!BorderTopRightRadius().Width().IsZero()) |
2886 return true; | 2880 return true; |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2978 return BorderLeftEquals(o) && BorderRightEquals(o) && BorderTopEquals(o) && | 2972 return BorderLeftEquals(o) && BorderRightEquals(o) && BorderTopEquals(o) && |
2979 BorderBottomEquals(o) && BorderImage() == o.BorderImage(); | 2973 BorderBottomEquals(o) && BorderImage() == o.BorderImage(); |
2980 } | 2974 } |
2981 | 2975 |
2982 bool BorderVisuallyEqual(const ComputedStyle& o) const { | 2976 bool BorderVisuallyEqual(const ComputedStyle& o) const { |
2983 return BorderLeftVisuallyEqual(o) && BorderRightVisuallyEqual(o) && | 2977 return BorderLeftVisuallyEqual(o) && BorderRightVisuallyEqual(o) && |
2984 BorderTopVisuallyEqual(o) && BorderBottomVisuallyEqual(o) && | 2978 BorderTopVisuallyEqual(o) && BorderBottomVisuallyEqual(o) && |
2985 BorderImage() == o.BorderImage(); | 2979 BorderImage() == o.BorderImage(); |
2986 } | 2980 } |
2987 | 2981 |
2982 bool BorderVisualOverflowEqual(const ComputedStyle& o) const { | |
2983 return BorderImage().Outset() == o.BorderImage().Outset(); | |
2984 } | |
2985 | |
2988 void ResetBorder() { | 2986 void ResetBorder() { |
2989 ResetBorderImage(); | 2987 ResetBorderImage(); |
2990 ResetBorderTop(); | 2988 ResetBorderTop(); |
2991 ResetBorderRight(); | 2989 ResetBorderRight(); |
2992 ResetBorderBottom(); | 2990 ResetBorderBottom(); |
2993 ResetBorderLeft(); | 2991 ResetBorderLeft(); |
2994 ResetBorderTopLeftRadius(); | 2992 ResetBorderTopLeftRadius(); |
2995 ResetBorderTopRightRadius(); | 2993 ResetBorderTopRightRadius(); |
2996 ResetBorderBottomLeftRadius(); | 2994 ResetBorderBottomLeftRadius(); |
2997 ResetBorderBottomRightRadius(); | 2995 ResetBorderBottomRightRadius(); |
2998 } | 2996 } |
2999 | 2997 |
3000 void ResetBorderTop() { | 2998 void ResetBorderTop() { |
3001 SetBorderTopStyle(EBorderStyle::kNone); | 2999 SetBorderTopStyle(EBorderStyle::kNone); |
3002 SetBorderTopWidth(3); | 3000 SetBorderTopWidth(3); |
3003 SetBorderTopColorInternal(0); | 3001 SetBorderTopColorInternal(0); |
3004 SetBorderTopColorInternal(true); | 3002 SetBorderTopColorInternal(true); |
3005 SetBorderTopStyle(EBorderStyle::kNone); | |
nainar
2017/05/18 05:27:34
These are remenants from a previous CL - clearing
shend
2017/05/18 05:40:33
:/
| |
3006 } | 3003 } |
3007 void ResetBorderRight() { | 3004 void ResetBorderRight() { |
3008 SetBorderRightStyle(EBorderStyle::kNone); | 3005 SetBorderRightStyle(EBorderStyle::kNone); |
3009 SetBorderRightWidth(3); | 3006 SetBorderRightWidth(3); |
3010 SetBorderRightColorInternal(0); | 3007 SetBorderRightColorInternal(0); |
3011 SetBorderRightColorInternal(true); | 3008 SetBorderRightColorInternal(true); |
3012 SetBorderRightStyle(EBorderStyle::kNone); | |
3013 } | 3009 } |
3014 void ResetBorderBottom() { | 3010 void ResetBorderBottom() { |
3015 SetBorderBottomStyle(EBorderStyle::kNone); | 3011 SetBorderBottomStyle(EBorderStyle::kNone); |
3016 SetBorderBottomWidth(3); | 3012 SetBorderBottomWidth(3); |
3017 SetBorderBottomColorInternal(0); | 3013 SetBorderBottomColorInternal(0); |
3018 SetBorderBottomColorInternal(true); | 3014 SetBorderBottomColorInternal(true); |
3019 SetBorderBottomStyle(EBorderStyle::kNone); | |
3020 } | 3015 } |
3021 void ResetBorderLeft() { | 3016 void ResetBorderLeft() { |
3022 SetBorderLeftStyle(EBorderStyle::kNone); | 3017 SetBorderLeftStyle(EBorderStyle::kNone); |
3023 SetBorderLeftWidth(3); | 3018 SetBorderLeftWidth(3); |
3024 SetBorderLeftColorInternal(0); | 3019 SetBorderLeftColorInternal(0); |
3025 SetBorderLeftColorInternal(true); | 3020 SetBorderLeftColorInternal(true); |
3026 SetBorderLeftStyle(EBorderStyle::kNone); | |
3027 } | 3021 } |
3028 void ResetBorderImage() { | 3022 void ResetBorderImage() { SetBorderImageInternal(NinePieceImage()); } |
shend
2017/05/18 05:40:33
When we generate border-image as external, we get
nainar
2017/05/18 06:00:50
Got it.
| |
3029 SET_VAR(surround_data_, border_.image_, NinePieceImage()); | |
3030 } | |
3031 | 3023 |
3032 void SetBorderRadius(const LengthSize& s) { | 3024 void SetBorderRadius(const LengthSize& s) { |
3033 SetBorderTopLeftRadius(s); | 3025 SetBorderTopLeftRadius(s); |
3034 SetBorderTopRightRadius(s); | 3026 SetBorderTopRightRadius(s); |
3035 SetBorderBottomLeftRadius(s); | 3027 SetBorderBottomLeftRadius(s); |
3036 SetBorderBottomRightRadius(s); | 3028 SetBorderBottomRightRadius(s); |
3037 } | 3029 } |
3038 void SetBorderRadius(const IntSize& s) { | 3030 void SetBorderRadius(const IntSize& s) { |
3039 SetBorderRadius( | 3031 SetBorderRadius( |
3040 LengthSize(Length(s.Width(), kFixed), Length(s.Height(), kFixed))); | 3032 LengthSize(Length(s.Width(), kFixed), Length(s.Height(), kFixed))); |
(...skipping 788 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3829 PseudoBitsInternal() | 1 << (pseudo - kFirstPublicPseudoId))); | 3821 PseudoBitsInternal() | 1 << (pseudo - kFirstPublicPseudoId))); |
3830 } | 3822 } |
3831 | 3823 |
3832 inline bool ComputedStyle::HasPseudoElementStyle() const { | 3824 inline bool ComputedStyle::HasPseudoElementStyle() const { |
3833 return PseudoBitsInternal() & kElementPseudoIdMask; | 3825 return PseudoBitsInternal() & kElementPseudoIdMask; |
3834 } | 3826 } |
3835 | 3827 |
3836 } // namespace blink | 3828 } // namespace blink |
3837 | 3829 |
3838 #endif // ComputedStyle_h | 3830 #endif // ComputedStyle_h |
OLD | NEW |