Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: third_party/WebKit/Source/core/style/ComputedStyle.h

Issue 2891003002: Store border-image-* on SurroundData in ComputedStyle (Closed)
Patch Set: Store border-image-* on SurroundData in ComputedStyle Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 bool HasEntirelyFixedBackground() const; 421 bool HasEntirelyFixedBackground() const;
423 422
424 // background-clip 423 // background-clip
425 EFillBox BackgroundClip() const { 424 EFillBox BackgroundClip() const {
426 return static_cast<EFillBox>(BackgroundInternal().Clip()); 425 return static_cast<EFillBox>(BackgroundInternal().Clip());
427 } 426 }
428 427
429 // Border properties. 428 // Border properties.
430 // -webkit-border-image 429 // -webkit-border-image
431 static NinePieceImage InitialNinePieceImage() { return NinePieceImage(); } 430 static NinePieceImage InitialNinePieceImage() { return NinePieceImage(); }
432 const NinePieceImage& BorderImage() const { 431 const NinePieceImage& BorderImage() const { return BorderImageInternal(); }
433 return surround_data_->border_.GetImage(); 432 void SetBorderImage(const NinePieceImage& b) { SetBorderImageInternal(b); }
434 }
435 void SetBorderImage(const NinePieceImage& b) {
436 SET_VAR(surround_data_, border_.image_, b);
437 }
438 433
439 // border-image-slice 434 // border-image-slice
440 const LengthBox& BorderImageSlices() const { 435 const LengthBox& BorderImageSlices() const {
441 return surround_data_->border_.GetImage().ImageSlices(); 436 return BorderImage().ImageSlices();
442 } 437 }
443 void SetBorderImageSlices(const LengthBox&); 438 void SetBorderImageSlices(const LengthBox&);
444 439
445 // border-image-source 440 // border-image-source
446 static StyleImage* InitialBorderImageSource() { return 0; } 441 static StyleImage* InitialBorderImageSource() { return 0; }
447 StyleImage* BorderImageSource() const { 442 StyleImage* BorderImageSource() const { return BorderImage().GetImage(); }
448 return surround_data_->border_.GetImage().GetImage();
449 }
450 void SetBorderImageSource(StyleImage*); 443 void SetBorderImageSource(StyleImage*);
451 444
452 // border-image-width 445 // border-image-width
453 const BorderImageLengthBox& BorderImageWidth() const { 446 const BorderImageLengthBox& BorderImageWidth() const {
454 return surround_data_->border_.GetImage().BorderSlices(); 447 return BorderImage().BorderSlices();
455 } 448 }
456 void SetBorderImageWidth(const BorderImageLengthBox&); 449 void SetBorderImageWidth(const BorderImageLengthBox&);
457 450
458 // border-image-outset 451 // border-image-outset
459 const BorderImageLengthBox& BorderImageOutset() const { 452 const BorderImageLengthBox& BorderImageOutset() const {
460 return surround_data_->border_.GetImage().Outset(); 453 return BorderImage().Outset();
461 } 454 }
462 void SetBorderImageOutset(const BorderImageLengthBox&); 455 void SetBorderImageOutset(const BorderImageLengthBox&);
463 456
464 // Border width properties. 457 // Border width properties.
465 static float InitialBorderWidth() { return 3; } 458 static float InitialBorderWidth() { return 3; }
466 459
467 // TODO(nainar): Move all fixed point logic to a separate class. 460 // TODO(nainar): Move all fixed point logic to a separate class.
468 // border-top-width 461 // border-top-width
469 float BorderTopWidth() const { 462 float BorderTopWidth() const {
470 if (BorderTopStyle() == EBorderStyle::kNone || 463 if (BorderTopStyle() == EBorderStyle::kNone ||
(...skipping 2307 matching lines...) Expand 10 before | Expand all | Expand 10 after
2778 } 2771 }
2779 2772
2780 // Border utility functions 2773 // Border utility functions
2781 LayoutRectOutsets ImageOutsets(const NinePieceImage&) const; 2774 LayoutRectOutsets ImageOutsets(const NinePieceImage&) const;
2782 bool HasBorderImageOutsets() const { 2775 bool HasBorderImageOutsets() const {
2783 return BorderImage().HasImage() && BorderImage().Outset().NonZero(); 2776 return BorderImage().HasImage() && BorderImage().Outset().NonZero();
2784 } 2777 }
2785 LayoutRectOutsets BorderImageOutsets() const { 2778 LayoutRectOutsets BorderImageOutsets() const {
2786 return ImageOutsets(BorderImage()); 2779 return ImageOutsets(BorderImage());
2787 } 2780 }
2788 bool BorderImageSlicesFill() const { return Border().GetImage().Fill(); } 2781 bool BorderImageSlicesFill() const { return BorderImage().Fill(); }
2789 2782
2790 void SetBorderImageSlicesFill(bool); 2783 void SetBorderImageSlicesFill(bool);
2791 const BorderData& Border() const { return surround_data_->border_; }
2792 const BorderValue BorderLeft() const { 2784 const BorderValue BorderLeft() const {
2793 return BorderValue(BorderLeftStyle(), BorderLeftColor(), BorderLeftWidth(), 2785 return BorderValue(BorderLeftStyle(), BorderLeftColor(), BorderLeftWidth(),
2794 OutlineStyleIsAuto()); 2786 OutlineStyleIsAuto());
2795 } 2787 }
2796 const BorderValue BorderRight() const { 2788 const BorderValue BorderRight() const {
2797 return BorderValue(BorderRightStyle(), BorderRightColor(), 2789 return BorderValue(BorderRightStyle(), BorderRightColor(),
2798 BorderRightWidth(), OutlineStyleIsAuto()); 2790 BorderRightWidth(), OutlineStyleIsAuto());
2799 } 2791 }
2800 const BorderValue BorderTop() const { 2792 const BorderValue BorderTop() const {
2801 return BorderValue(BorderTopStyle(), BorderTopColor(), BorderTopWidth(), 2793 return BorderValue(BorderTopStyle(), BorderTopColor(), BorderTopWidth(),
(...skipping 15 matching lines...) Expand all
2817 BorderValue BorderAfter() const; 2809 BorderValue BorderAfter() const;
2818 BorderValue BorderStart() const; 2810 BorderValue BorderStart() const;
2819 BorderValue BorderEnd() const; 2811 BorderValue BorderEnd() const;
2820 float BorderAfterWidth() const; 2812 float BorderAfterWidth() const;
2821 float BorderBeforeWidth() const; 2813 float BorderBeforeWidth() const;
2822 float BorderEndWidth() const; 2814 float BorderEndWidth() const;
2823 float BorderStartWidth() const; 2815 float BorderStartWidth() const;
2824 float BorderOverWidth() const; 2816 float BorderOverWidth() const;
2825 float BorderUnderWidth() const; 2817 float BorderUnderWidth() const;
2826 2818
2827 bool HasBorderFill() const { return Border().HasBorderFill(); } 2819 bool HasBorderFill() const {
2820 return BorderImage().HasImage() && BorderImage().Fill();
2821 }
2828 bool HasBorder() const { 2822 bool HasBorder() const {
2829 return BorderLeftNonZero() || BorderRightNonZero() || BorderTopNonZero() || 2823 return BorderLeftNonZero() || BorderRightNonZero() || BorderTopNonZero() ||
2830 BorderBottomNonZero(); 2824 BorderBottomNonZero();
2831 } 2825 }
2832 bool HasBorderDecoration() const { return HasBorder() || HasBorderFill(); } 2826 bool HasBorderDecoration() const { return HasBorder() || HasBorderFill(); }
2833 bool HasBorderRadius() const { 2827 bool HasBorderRadius() const {
2834 if (!BorderTopLeftRadius().Width().IsZero()) 2828 if (!BorderTopLeftRadius().Width().IsZero())
2835 return true; 2829 return true;
2836 if (!BorderTopRightRadius().Width().IsZero()) 2830 if (!BorderTopRightRadius().Width().IsZero())
2837 return true; 2831 return true;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
2929 return BorderLeftEquals(o) && BorderRightEquals(o) && BorderTopEquals(o) && 2923 return BorderLeftEquals(o) && BorderRightEquals(o) && BorderTopEquals(o) &&
2930 BorderBottomEquals(o) && BorderImage() == o.BorderImage(); 2924 BorderBottomEquals(o) && BorderImage() == o.BorderImage();
2931 } 2925 }
2932 2926
2933 bool BorderVisuallyEqual(const ComputedStyle& o) const { 2927 bool BorderVisuallyEqual(const ComputedStyle& o) const {
2934 return BorderLeftVisuallyEqual(o) && BorderRightVisuallyEqual(o) && 2928 return BorderLeftVisuallyEqual(o) && BorderRightVisuallyEqual(o) &&
2935 BorderTopVisuallyEqual(o) && BorderBottomVisuallyEqual(o) && 2929 BorderTopVisuallyEqual(o) && BorderBottomVisuallyEqual(o) &&
2936 BorderImage() == o.BorderImage(); 2930 BorderImage() == o.BorderImage();
2937 } 2931 }
2938 2932
2933 bool BorderVisualOverflowEqual(const ComputedStyle& o) const {
2934 return BorderImage().Outset() == o.BorderImage().Outset();
2935 }
2936
2939 void ResetBorder() { 2937 void ResetBorder() {
2940 ResetBorderImage(); 2938 ResetBorderImage();
2941 ResetBorderTop(); 2939 ResetBorderTop();
2942 ResetBorderRight(); 2940 ResetBorderRight();
2943 ResetBorderBottom(); 2941 ResetBorderBottom();
2944 ResetBorderLeft(); 2942 ResetBorderLeft();
2945 ResetBorderTopLeftRadius(); 2943 ResetBorderTopLeftRadius();
2946 ResetBorderTopRightRadius(); 2944 ResetBorderTopRightRadius();
2947 ResetBorderBottomLeftRadius(); 2945 ResetBorderBottomLeftRadius();
2948 ResetBorderBottomRightRadius(); 2946 ResetBorderBottomRightRadius();
2949 } 2947 }
2950 2948
2951 void ResetBorderTop() { 2949 void ResetBorderTop() {
2952 SetBorderTopStyle(EBorderStyle::kNone); 2950 SetBorderTopStyle(EBorderStyle::kNone);
2953 SetBorderTopWidth(3); 2951 SetBorderTopWidth(3);
2954 SetBorderTopColorInternal(0); 2952 SetBorderTopColorInternal(0);
2955 SetBorderTopColorInternal(true); 2953 SetBorderTopColorInternal(true);
2956 SetBorderTopStyle(EBorderStyle::kNone);
2957 } 2954 }
2958 void ResetBorderRight() { 2955 void ResetBorderRight() {
2959 SetBorderRightStyle(EBorderStyle::kNone); 2956 SetBorderRightStyle(EBorderStyle::kNone);
2960 SetBorderRightWidth(3); 2957 SetBorderRightWidth(3);
2961 SetBorderRightColorInternal(0); 2958 SetBorderRightColorInternal(0);
2962 SetBorderRightColorInternal(true); 2959 SetBorderRightColorInternal(true);
2963 SetBorderRightStyle(EBorderStyle::kNone);
2964 } 2960 }
2965 void ResetBorderBottom() { 2961 void ResetBorderBottom() {
2966 SetBorderBottomStyle(EBorderStyle::kNone); 2962 SetBorderBottomStyle(EBorderStyle::kNone);
2967 SetBorderBottomWidth(3); 2963 SetBorderBottomWidth(3);
2968 SetBorderBottomColorInternal(0); 2964 SetBorderBottomColorInternal(0);
2969 SetBorderBottomColorInternal(true); 2965 SetBorderBottomColorInternal(true);
2970 SetBorderBottomStyle(EBorderStyle::kNone);
2971 } 2966 }
2972 void ResetBorderLeft() { 2967 void ResetBorderLeft() {
2973 SetBorderLeftStyle(EBorderStyle::kNone); 2968 SetBorderLeftStyle(EBorderStyle::kNone);
2974 SetBorderLeftWidth(3); 2969 SetBorderLeftWidth(3);
2975 SetBorderLeftColorInternal(0); 2970 SetBorderLeftColorInternal(0);
2976 SetBorderLeftColorInternal(true); 2971 SetBorderLeftColorInternal(true);
2977 SetBorderLeftStyle(EBorderStyle::kNone);
2978 } 2972 }
2979 void ResetBorderImage() { 2973 void ResetBorderImage() { SetBorderImageInternal(NinePieceImage()); }
2980 SET_VAR(surround_data_, border_.image_, NinePieceImage());
2981 }
2982 2974
2983 void SetBorderRadius(const LengthSize& s) { 2975 void SetBorderRadius(const LengthSize& s) {
2984 SetBorderTopLeftRadius(s); 2976 SetBorderTopLeftRadius(s);
2985 SetBorderTopRightRadius(s); 2977 SetBorderTopRightRadius(s);
2986 SetBorderBottomLeftRadius(s); 2978 SetBorderBottomLeftRadius(s);
2987 SetBorderBottomRightRadius(s); 2979 SetBorderBottomRightRadius(s);
2988 } 2980 }
2989 void SetBorderRadius(const IntSize& s) { 2981 void SetBorderRadius(const IntSize& s) {
2990 SetBorderRadius( 2982 SetBorderRadius(
2991 LengthSize(Length(s.Width(), kFixed), Length(s.Height(), kFixed))); 2983 LengthSize(Length(s.Width(), kFixed), Length(s.Height(), kFixed)));
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after
3778 PseudoBitsInternal() | 1 << (pseudo - kFirstPublicPseudoId))); 3770 PseudoBitsInternal() | 1 << (pseudo - kFirstPublicPseudoId)));
3779 } 3771 }
3780 3772
3781 inline bool ComputedStyle::HasPseudoElementStyle() const { 3773 inline bool ComputedStyle::HasPseudoElementStyle() const {
3782 return PseudoBitsInternal() & kElementPseudoIdMask; 3774 return PseudoBitsInternal() & kElementPseudoIdMask;
3783 } 3775 }
3784 3776
3785 } // namespace blink 3777 } // namespace blink
3786 3778
3787 #endif // ComputedStyle_h 3779 #endif // ComputedStyle_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698