Changeset 287411 in webkit for trunk/Source/WebCore/css/CSSGradientValue.cpp
- Timestamp:
- Dec 23, 2021, 1:35:00 PM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/css/CSSGradientValue.cpp
r287310 r287411 301 301 302 302 template<typename GradientAdapter> 303 Gradient::ColorStopVector CSSGradientValue::computeStops(GradientAdapter& gradientAdapter, const CSSToLengthConversionData& conversionData, const RenderStyle& style, float maxLengthForRepeat) 304 { 303 GradientColorStops CSSGradientValue::computeStops(GradientAdapter& gradientAdapter, const CSSToLengthConversionData& conversionData, const RenderStyle& style, float maxLengthForRepeat) 304 { 305 bool hasColorFilter = style.hasAppleColorFilter(); 306 305 307 if (m_gradientType == CSSDeprecatedLinearGradient || m_gradientType == CSSDeprecatedRadialGradient) { 306 Gradient ::ColorStopVector result;308 GradientColorStops::StopVector result; 307 309 result.reserveInitialCapacity(m_stops.size()); 308 310 309 311 for (auto& stop : m_stops) { 310 312 float offset; … … 314 316 offset = stop.position->floatValue(CSSUnitType::CSS_NUMBER); 315 317 316 Color color = stop.resolvedColor; 317 if (style.hasAppleColorFilter()) 318 style.appleColorFilter().transformColor(color); 319 result.uncheckedAppend({ offset, color }); 320 } 321 322 std::stable_sort(result.begin(), result.end(), [] (const Gradient::ColorStop& a, const Gradient::ColorStop& b) { 318 result.uncheckedAppend({ offset, hasColorFilter ? style.colorByApplyingColorFilter(stop.resolvedColor) : stop.resolvedColor }); 319 } 320 321 std::stable_sort(result.begin(), result.end(), [] (const GradientColorStop& a, const GradientColorStop& b) { 323 322 return a.offset < b.offset; 324 323 }); 325 324 326 return result;325 return GradientColorStops::Sorted { WTFMove(result) }; 327 326 } 328 327 … … 335 334 auto& stop = m_stops[i]; 336 335 337 Color color = stop.resolvedColor; 338 if (style.hasAppleColorFilter()) 339 style.appleColorFilter().transformColor(color); 340 341 stops[i].color = color; 336 stops[i].color = hasColorFilter ? style.colorByApplyingColorFilter(stop.resolvedColor) : stop.resolvedColor; 342 337 343 338 if (stop.position) { … … 555 550 gradientAdapter.normalizeStopsAndEndpointsOutsideRange(stops, m_colorInterpolationMethod); 556 551 557 Gradient ::ColorStopVector result;552 GradientColorStops::StopVector result; 558 553 result.reserveInitialCapacity(stops.size()); 559 554 for (auto& stop : stops) 560 result.uncheckedAppend({ *stop.offset, stop.color});561 562 return result;555 result.uncheckedAppend({ *stop.offset, WTFMove(stop.color) }); 556 557 return GradientColorStops::Sorted { WTFMove(result) }; 563 558 } 564 559 … … 868 863 auto stops = computeStops(adapter, conversionData, renderer.style(), 1); 869 864 870 auto gradient = Gradient::create(WTFMove(data), colorInterpolationMethod()); 871 gradient->setSortedColorStops(WTFMove(stops)); 872 return gradient; 865 return Gradient::create(WTFMove(data), colorInterpolationMethod(), GradientSpreadMethod::Pad, WTFMove(stops)); 873 866 } 874 867 … … 1202 1195 auto stops = computeStops(adapter, conversionData, renderer.style(), maxExtent); 1203 1196 1204 auto gradient = Gradient::create(WTFMove(data), colorInterpolationMethod()); 1205 gradient->setSortedColorStops(WTFMove(stops)); 1206 return gradient; 1197 return Gradient::create(WTFMove(data), colorInterpolationMethod(), GradientSpreadMethod::Pad, WTFMove(stops)); 1207 1198 } 1208 1199 … … 1276 1267 auto stops = computeStops(adapter, conversionData, renderer.style(), 1); 1277 1268 1278 auto gradient = Gradient::create(WTFMove(data), colorInterpolationMethod()); 1279 gradient->setSortedColorStops(WTFMove(stops)); 1280 return gradient; 1269 return Gradient::create(WTFMove(data), colorInterpolationMethod(), GradientSpreadMethod::Pad, WTFMove(stops)); 1281 1270 } 1282 1271
Note:
See TracChangeset
for help on using the changeset viewer.