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

Side by Side Diff: Source/core/css/CSSGradientValue.h

Issue 1305383006: Oilpan: Unship CSSValues and AnimatableValues Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/css/CSSFunctionValue.h ('k') | Source/core/css/CSSGradientValue.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2008 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 48
49 // This struct is stack allocated and allocated as part of vectors. 49 // This struct is stack allocated and allocated as part of vectors.
50 // When allocated on the stack its members are found by conservative 50 // When allocated on the stack its members are found by conservative
51 // stack scanning. When allocated as part of Vectors in heap-allocated 51 // stack scanning. When allocated as part of Vectors in heap-allocated
52 // objects its members are visited via the containing object's 52 // objects its members are visited via the containing object's
53 // (CSSGradientValue) traceAfterDispatch method. 53 // (CSSGradientValue) traceAfterDispatch method.
54 struct CSSGradientColorStop { 54 struct CSSGradientColorStop {
55 ALLOW_ONLY_INLINE_ALLOCATION(); 55 ALLOW_ONLY_INLINE_ALLOCATION();
56 public: 56 public:
57 CSSGradientColorStop() : m_colorIsDerivedFromElement(false) { } 57 CSSGradientColorStop() : m_colorIsDerivedFromElement(false) { }
58 RefPtrWillBeMember<CSSPrimitiveValue> m_position; // percentage or length 58 RefPtr<CSSPrimitiveValue> m_position; // percentage or length
59 RefPtrWillBeMember<CSSPrimitiveValue> m_color; 59 RefPtr<CSSPrimitiveValue> m_color;
60 bool m_colorIsDerivedFromElement; 60 bool m_colorIsDerivedFromElement;
61 bool operator==(const CSSGradientColorStop& other) const 61 bool operator==(const CSSGradientColorStop& other) const
62 { 62 {
63 return compareCSSValuePtr(m_color, other.m_color) 63 return compareCSSValuePtr(m_color, other.m_color)
64 && compareCSSValuePtr(m_position, other.m_position); 64 && compareCSSValuePtr(m_position, other.m_position);
65 } 65 }
66 bool isHint() const 66 bool isHint() const
67 { 67 {
68 ASSERT(m_color || m_position); 68 ASSERT(m_color || m_position);
69 return !m_color; 69 return !m_color;
70 } 70 }
71
72 DECLARE_TRACE();
73 }; 71 };
74 72
75 } // namespace blink 73 } // namespace blink
76 74
77 75
78 // We have to declare the VectorTraits specialization before CSSGradientValue 76 // We have to declare the VectorTraits specialization before CSSGradientValue
79 // declares its inline capacity vector below. 77 // declares its inline capacity vector below.
80 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::CSSGradientColorStop); 78 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::CSSGradientColorStop);
81 79
82 namespace blink { 80 namespace blink {
83 81
84 class CSSGradientValue : public CSSImageGeneratorValue { 82 class CSSGradientValue : public CSSImageGeneratorValue {
85 public: 83 public:
86 PassRefPtr<Image> image(LayoutObject*, const IntSize&); 84 PassRefPtr<Image> image(LayoutObject*, const IntSize&);
87 85
88 void setFirstX(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> val) { m_firstX = v al; } 86 void setFirstX(PassRefPtr<CSSPrimitiveValue> val) { m_firstX = val; }
89 void setFirstY(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> val) { m_firstY = v al; } 87 void setFirstY(PassRefPtr<CSSPrimitiveValue> val) { m_firstY = val; }
90 void setSecondX(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> val) { m_secondX = val; } 88 void setSecondX(PassRefPtr<CSSPrimitiveValue> val) { m_secondX = val; }
91 void setSecondY(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> val) { m_secondY = val; } 89 void setSecondY(PassRefPtr<CSSPrimitiveValue> val) { m_secondY = val; }
92 90
93 void addStop(const CSSGradientColorStop& stop) { m_stops.append(stop); } 91 void addStop(const CSSGradientColorStop& stop) { m_stops.append(stop); }
94 92
95 unsigned stopCount() const { return m_stops.size(); } 93 unsigned stopCount() const { return m_stops.size(); }
96 94
97 void appendCSSTextForDeprecatedColorStops(StringBuilder&) const; 95 void appendCSSTextForDeprecatedColorStops(StringBuilder&) const;
98 96
99 bool isRepeating() const { return m_repeating; } 97 bool isRepeating() const { return m_repeating; }
100 98
101 CSSGradientType gradientType() const { return m_gradientType; } 99 CSSGradientType gradientType() const { return m_gradientType; }
102 100
103 bool isFixedSize() const { return false; } 101 bool isFixedSize() const { return false; }
104 IntSize fixedSize(const LayoutObject*) const { return IntSize(); } 102 IntSize fixedSize(const LayoutObject*) const { return IntSize(); }
105 103
106 bool isPending() const { return false; } 104 bool isPending() const { return false; }
107 bool knownToBeOpaque(const LayoutObject*) const; 105 bool knownToBeOpaque(const LayoutObject*) const;
108 106
109 void loadSubimages(Document*) { } 107 void loadSubimages(Document*) { }
110 108
111 DECLARE_TRACE_AFTER_DISPATCH();
112
113 protected: 109 protected:
114 CSSGradientValue(ClassType classType, CSSGradientRepeat repeat, CSSGradientT ype gradientType) 110 CSSGradientValue(ClassType classType, CSSGradientRepeat repeat, CSSGradientT ype gradientType)
115 : CSSImageGeneratorValue(classType) 111 : CSSImageGeneratorValue(classType)
116 , m_stopsSorted(false) 112 , m_stopsSorted(false)
117 , m_gradientType(gradientType) 113 , m_gradientType(gradientType)
118 , m_repeating(repeat == Repeating) 114 , m_repeating(repeat == Repeating)
119 { 115 {
120 } 116 }
121 117
122 CSSGradientValue(const CSSGradientValue& other, ClassType classType, CSSGrad ientType gradientType) 118 CSSGradientValue(const CSSGradientValue& other, ClassType classType, CSSGrad ientType gradientType)
(...skipping 11 matching lines...) Expand all
134 130
135 void addStops(Gradient*, const CSSToLengthConversionData&, const LayoutObjec t&); 131 void addStops(Gradient*, const CSSToLengthConversionData&, const LayoutObjec t&);
136 void addDeprecatedStops(Gradient*, const LayoutObject&); 132 void addDeprecatedStops(Gradient*, const LayoutObject&);
137 133
138 // Resolve points/radii to front end values. 134 // Resolve points/radii to front end values.
139 FloatPoint computeEndPoint(CSSPrimitiveValue*, CSSPrimitiveValue*, const CSS ToLengthConversionData&, const IntSize&); 135 FloatPoint computeEndPoint(CSSPrimitiveValue*, CSSPrimitiveValue*, const CSS ToLengthConversionData&, const IntSize&);
140 136
141 bool isCacheable() const; 137 bool isCacheable() const;
142 138
143 // Points. Some of these may be null. 139 // Points. Some of these may be null.
144 RefPtrWillBeMember<CSSPrimitiveValue> m_firstX; 140 RefPtr<CSSPrimitiveValue> m_firstX;
145 RefPtrWillBeMember<CSSPrimitiveValue> m_firstY; 141 RefPtr<CSSPrimitiveValue> m_firstY;
146 142
147 RefPtrWillBeMember<CSSPrimitiveValue> m_secondX; 143 RefPtr<CSSPrimitiveValue> m_secondX;
148 RefPtrWillBeMember<CSSPrimitiveValue> m_secondY; 144 RefPtr<CSSPrimitiveValue> m_secondY;
149 145
150 // Stops 146 // Stops
151 WillBeHeapVector<CSSGradientColorStop, 2> m_stops; 147 Vector<CSSGradientColorStop, 2> m_stops;
152 bool m_stopsSorted; 148 bool m_stopsSorted;
153 CSSGradientType m_gradientType; 149 CSSGradientType m_gradientType;
154 bool m_repeating; 150 bool m_repeating;
155 }; 151 };
156 152
157 DEFINE_CSS_VALUE_TYPE_CASTS(CSSGradientValue, isGradientValue()); 153 DEFINE_CSS_VALUE_TYPE_CASTS(CSSGradientValue, isGradientValue());
158 154
159 class CSSLinearGradientValue final : public CSSGradientValue { 155 class CSSLinearGradientValue final : public CSSGradientValue {
160 public: 156 public:
161 157
162 static PassRefPtrWillBeRawPtr<CSSLinearGradientValue> create(CSSGradientRepe at repeat, CSSGradientType gradientType = CSSLinearGradient) 158 static PassRefPtr<CSSLinearGradientValue> create(CSSGradientRepeat repeat, C SSGradientType gradientType = CSSLinearGradient)
163 { 159 {
164 return adoptRefWillBeNoop(new CSSLinearGradientValue(repeat, gradientTyp e)); 160 return adoptRef(new CSSLinearGradientValue(repeat, gradientType));
165 } 161 }
166 162
167 void setAngle(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> val) { m_angle = val ; } 163 void setAngle(PassRefPtr<CSSPrimitiveValue> val) { m_angle = val; }
168 164
169 String customCSSText() const; 165 String customCSSText() const;
170 166
171 // Create the gradient for a given size. 167 // Create the gradient for a given size.
172 PassRefPtr<Gradient> createGradient(const CSSToLengthConversionData&, const IntSize&, const LayoutObject&); 168 PassRefPtr<Gradient> createGradient(const CSSToLengthConversionData&, const IntSize&, const LayoutObject&);
173 169
174 PassRefPtrWillBeRawPtr<CSSLinearGradientValue> clone() const 170 PassRefPtr<CSSLinearGradientValue> clone() const
175 { 171 {
176 return adoptRefWillBeNoop(new CSSLinearGradientValue(*this)); 172 return adoptRef(new CSSLinearGradientValue(*this));
177 } 173 }
178 174
179 bool equals(const CSSLinearGradientValue&) const; 175 bool equals(const CSSLinearGradientValue&) const;
180 176
181 DECLARE_TRACE_AFTER_DISPATCH();
182
183 private: 177 private:
184 CSSLinearGradientValue(CSSGradientRepeat repeat, CSSGradientType gradientTyp e = CSSLinearGradient) 178 CSSLinearGradientValue(CSSGradientRepeat repeat, CSSGradientType gradientTyp e = CSSLinearGradient)
185 : CSSGradientValue(LinearGradientClass, repeat, gradientType) 179 : CSSGradientValue(LinearGradientClass, repeat, gradientType)
186 { 180 {
187 } 181 }
188 182
189 explicit CSSLinearGradientValue(const CSSLinearGradientValue& other) 183 explicit CSSLinearGradientValue(const CSSLinearGradientValue& other)
190 : CSSGradientValue(other, LinearGradientClass, other.gradientType()) 184 : CSSGradientValue(other, LinearGradientClass, other.gradientType())
191 , m_angle(other.m_angle) 185 , m_angle(other.m_angle)
192 { 186 {
193 } 187 }
194 188
195 RefPtrWillBeMember<CSSPrimitiveValue> m_angle; // may be null. 189 RefPtr<CSSPrimitiveValue> m_angle; // may be null.
196 }; 190 };
197 191
198 DEFINE_CSS_VALUE_TYPE_CASTS(CSSLinearGradientValue, isLinearGradientValue()); 192 DEFINE_CSS_VALUE_TYPE_CASTS(CSSLinearGradientValue, isLinearGradientValue());
199 193
200 class CSSRadialGradientValue final : public CSSGradientValue { 194 class CSSRadialGradientValue final : public CSSGradientValue {
201 public: 195 public:
202 static PassRefPtrWillBeRawPtr<CSSRadialGradientValue> create(CSSGradientRepe at repeat, CSSGradientType gradientType = CSSRadialGradient) 196 static PassRefPtr<CSSRadialGradientValue> create(CSSGradientRepeat repeat, C SSGradientType gradientType = CSSRadialGradient)
203 { 197 {
204 return adoptRefWillBeNoop(new CSSRadialGradientValue(repeat, gradientTyp e)); 198 return adoptRef(new CSSRadialGradientValue(repeat, gradientType));
205 } 199 }
206 200
207 PassRefPtrWillBeRawPtr<CSSRadialGradientValue> clone() const 201 PassRefPtr<CSSRadialGradientValue> clone() const
208 { 202 {
209 return adoptRefWillBeNoop(new CSSRadialGradientValue(*this)); 203 return adoptRef(new CSSRadialGradientValue(*this));
210 } 204 }
211 205
212 String customCSSText() const; 206 String customCSSText() const;
213 207
214 void setFirstRadius(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> val) { m_first Radius = val; } 208 void setFirstRadius(PassRefPtr<CSSPrimitiveValue> val) { m_firstRadius = val ; }
215 void setSecondRadius(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> val) { m_seco ndRadius = val; } 209 void setSecondRadius(PassRefPtr<CSSPrimitiveValue> val) { m_secondRadius = v al; }
216 210
217 void setShape(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> val) { m_shape = val ; } 211 void setShape(PassRefPtr<CSSPrimitiveValue> val) { m_shape = val; }
218 void setSizingBehavior(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> val) { m_si zingBehavior = val; } 212 void setSizingBehavior(PassRefPtr<CSSPrimitiveValue> val) { m_sizingBehavior = val; }
219 213
220 void setEndHorizontalSize(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> val) { m _endHorizontalSize = val; } 214 void setEndHorizontalSize(PassRefPtr<CSSPrimitiveValue> val) { m_endHorizont alSize = val; }
221 void setEndVerticalSize(PassRefPtrWillBeRawPtr<CSSPrimitiveValue> val) { m_e ndVerticalSize = val; } 215 void setEndVerticalSize(PassRefPtr<CSSPrimitiveValue> val) { m_endVerticalSi ze = val; }
222 216
223 // Create the gradient for a given size. 217 // Create the gradient for a given size.
224 PassRefPtr<Gradient> createGradient(const CSSToLengthConversionData&, const IntSize&, const LayoutObject&); 218 PassRefPtr<Gradient> createGradient(const CSSToLengthConversionData&, const IntSize&, const LayoutObject&);
225 219
226 bool equals(const CSSRadialGradientValue&) const; 220 bool equals(const CSSRadialGradientValue&) const;
227 221
228 DECLARE_TRACE_AFTER_DISPATCH();
229
230 private: 222 private:
231 CSSRadialGradientValue(CSSGradientRepeat repeat, CSSGradientType gradientTyp e = CSSRadialGradient) 223 CSSRadialGradientValue(CSSGradientRepeat repeat, CSSGradientType gradientTyp e = CSSRadialGradient)
232 : CSSGradientValue(RadialGradientClass, repeat, gradientType) 224 : CSSGradientValue(RadialGradientClass, repeat, gradientType)
233 { 225 {
234 } 226 }
235 227
236 explicit CSSRadialGradientValue(const CSSRadialGradientValue& other) 228 explicit CSSRadialGradientValue(const CSSRadialGradientValue& other)
237 : CSSGradientValue(other, RadialGradientClass, other.gradientType()) 229 : CSSGradientValue(other, RadialGradientClass, other.gradientType())
238 , m_firstRadius(other.m_firstRadius) 230 , m_firstRadius(other.m_firstRadius)
239 , m_secondRadius(other.m_secondRadius) 231 , m_secondRadius(other.m_secondRadius)
240 , m_shape(other.m_shape) 232 , m_shape(other.m_shape)
241 , m_sizingBehavior(other.m_sizingBehavior) 233 , m_sizingBehavior(other.m_sizingBehavior)
242 , m_endHorizontalSize(other.m_endHorizontalSize) 234 , m_endHorizontalSize(other.m_endHorizontalSize)
243 , m_endVerticalSize(other.m_endVerticalSize) 235 , m_endVerticalSize(other.m_endVerticalSize)
244 { 236 {
245 } 237 }
246 238
247 239
248 // Resolve points/radii to front end values. 240 // Resolve points/radii to front end values.
249 float resolveRadius(CSSPrimitiveValue*, const CSSToLengthConversionData&, fl oat* widthOrHeight = 0); 241 float resolveRadius(CSSPrimitiveValue*, const CSSToLengthConversionData&, fl oat* widthOrHeight = 0);
250 242
251 // These may be null for non-deprecated gradients. 243 // These may be null for non-deprecated gradients.
252 RefPtrWillBeMember<CSSPrimitiveValue> m_firstRadius; 244 RefPtr<CSSPrimitiveValue> m_firstRadius;
253 RefPtrWillBeMember<CSSPrimitiveValue> m_secondRadius; 245 RefPtr<CSSPrimitiveValue> m_secondRadius;
254 246
255 // The below are only used for non-deprecated gradients. Any of them may be null. 247 // The below are only used for non-deprecated gradients. Any of them may be null.
256 RefPtrWillBeMember<CSSPrimitiveValue> m_shape; 248 RefPtr<CSSPrimitiveValue> m_shape;
257 RefPtrWillBeMember<CSSPrimitiveValue> m_sizingBehavior; 249 RefPtr<CSSPrimitiveValue> m_sizingBehavior;
258 250
259 RefPtrWillBeMember<CSSPrimitiveValue> m_endHorizontalSize; 251 RefPtr<CSSPrimitiveValue> m_endHorizontalSize;
260 RefPtrWillBeMember<CSSPrimitiveValue> m_endVerticalSize; 252 RefPtr<CSSPrimitiveValue> m_endVerticalSize;
261 }; 253 };
262 254
263 DEFINE_CSS_VALUE_TYPE_CASTS(CSSRadialGradientValue, isRadialGradientValue()); 255 DEFINE_CSS_VALUE_TYPE_CASTS(CSSRadialGradientValue, isRadialGradientValue());
264 256
265 } // namespace blink 257 } // namespace blink
266 258
267 #endif // CSSGradientValue_h 259 #endif // CSSGradientValue_h
OLDNEW
« no previous file with comments | « Source/core/css/CSSFunctionValue.h ('k') | Source/core/css/CSSGradientValue.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698