OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008 Apple Inc. All rights reserved. |
3 * Copyright (C) 2015 Google Inc. All rights reserved. | 3 * Copyright (C) 2015 Google Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
146 conversion_data, size, layout_object); | 146 conversion_data, size, layout_object); |
147 break; | 147 break; |
148 default: | 148 default: |
149 NOTREACHED(); | 149 NOTREACHED(); |
150 } | 150 } |
151 | 151 |
152 RefPtr<Image> new_image = GradientGeneratedImage::Create(gradient, size); | 152 RefPtr<Image> new_image = GradientGeneratedImage::Create(gradient, size); |
153 if (is_cacheable_) | 153 if (is_cacheable_) |
154 PutImage(size, new_image); | 154 PutImage(size, new_image); |
155 | 155 |
156 return new_image.Release(); | 156 return new_image; |
157 } | 157 } |
158 | 158 |
159 // Should only ever be called for deprecated gradients. | 159 // Should only ever be called for deprecated gradients. |
160 static inline bool CompareStops(const CSSGradientColorStop& a, | 160 static inline bool CompareStops(const CSSGradientColorStop& a, |
161 const CSSGradientColorStop& b) { | 161 const CSSGradientColorStop& b) { |
162 double a_val = a.offset_->GetDoubleValue(); | 162 double a_val = a.offset_->GetDoubleValue(); |
163 double b_val = b.offset_->GetDoubleValue(); | 163 double b_val = b.offset_->GetDoubleValue(); |
164 | 164 |
165 return a_val < b_val; | 165 return a_val < b_val; |
166 } | 166 } |
(...skipping 868 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1035 repeating_ ? kSpreadMethodRepeat : kSpreadMethodPad); | 1035 repeating_ ? kSpreadMethodRepeat : kSpreadMethodPad); |
1036 AddStops(desc, conversion_data, object); | 1036 AddStops(desc, conversion_data, object); |
1037 | 1037 |
1038 RefPtr<Gradient> gradient = | 1038 RefPtr<Gradient> gradient = |
1039 Gradient::CreateLinear(desc.p0, desc.p1, desc.spread_method, | 1039 Gradient::CreateLinear(desc.p0, desc.p1, desc.spread_method, |
1040 Gradient::ColorInterpolation::kPremultiplied); | 1040 Gradient::ColorInterpolation::kPremultiplied); |
1041 | 1041 |
1042 // Now add the stops. | 1042 // Now add the stops. |
1043 gradient->AddColorStops(desc.stops); | 1043 gradient->AddColorStops(desc.stops); |
1044 | 1044 |
1045 return gradient.Release(); | 1045 return gradient; |
1046 } | 1046 } |
1047 | 1047 |
1048 bool CSSLinearGradientValue::Equals(const CSSLinearGradientValue& other) const { | 1048 bool CSSLinearGradientValue::Equals(const CSSLinearGradientValue& other) const { |
1049 if (gradient_type_ == kCSSDeprecatedLinearGradient) | 1049 if (gradient_type_ == kCSSDeprecatedLinearGradient) |
1050 return other.gradient_type_ == gradient_type_ && | 1050 return other.gradient_type_ == gradient_type_ && |
1051 DataEquivalent(first_x_, other.first_x_) && | 1051 DataEquivalent(first_x_, other.first_x_) && |
1052 DataEquivalent(first_y_, other.first_y_) && | 1052 DataEquivalent(first_y_, other.first_y_) && |
1053 DataEquivalent(second_x_, other.second_x_) && | 1053 DataEquivalent(second_x_, other.second_x_) && |
1054 DataEquivalent(second_y_, other.second_y_) && stops_ == other.stops_; | 1054 DataEquivalent(second_y_, other.second_y_) && stops_ == other.stops_; |
1055 | 1055 |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1409 AddStops(desc, conversion_data, object); | 1409 AddStops(desc, conversion_data, object); |
1410 | 1410 |
1411 RefPtr<Gradient> gradient = Gradient::CreateRadial( | 1411 RefPtr<Gradient> gradient = Gradient::CreateRadial( |
1412 desc.p0, desc.r0, desc.p1, desc.r1, | 1412 desc.p0, desc.r0, desc.p1, desc.r1, |
1413 is_degenerate ? 1 : second_radius.AspectRatio(), desc.spread_method, | 1413 is_degenerate ? 1 : second_radius.AspectRatio(), desc.spread_method, |
1414 Gradient::ColorInterpolation::kPremultiplied); | 1414 Gradient::ColorInterpolation::kPremultiplied); |
1415 | 1415 |
1416 // Now add the stops. | 1416 // Now add the stops. |
1417 gradient->AddColorStops(desc.stops); | 1417 gradient->AddColorStops(desc.stops); |
1418 | 1418 |
1419 return gradient.Release(); | 1419 return gradient; |
1420 } | 1420 } |
1421 | 1421 |
1422 bool CSSRadialGradientValue::Equals(const CSSRadialGradientValue& other) const { | 1422 bool CSSRadialGradientValue::Equals(const CSSRadialGradientValue& other) const { |
1423 if (gradient_type_ == kCSSDeprecatedRadialGradient) | 1423 if (gradient_type_ == kCSSDeprecatedRadialGradient) |
1424 return other.gradient_type_ == gradient_type_ && | 1424 return other.gradient_type_ == gradient_type_ && |
1425 DataEquivalent(first_x_, other.first_x_) && | 1425 DataEquivalent(first_x_, other.first_x_) && |
1426 DataEquivalent(first_y_, other.first_y_) && | 1426 DataEquivalent(first_y_, other.first_y_) && |
1427 DataEquivalent(second_x_, other.second_x_) && | 1427 DataEquivalent(second_x_, other.second_x_) && |
1428 DataEquivalent(second_y_, other.second_y_) && | 1428 DataEquivalent(second_y_, other.second_y_) && |
1429 DataEquivalent(first_radius_, other.first_radius_) && | 1429 DataEquivalent(first_radius_, other.first_radius_) && |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1523 : size.Height() / 2); | 1523 : size.Height() / 2); |
1524 | 1524 |
1525 GradientDesc desc(position, position, | 1525 GradientDesc desc(position, position, |
1526 repeating_ ? kSpreadMethodRepeat : kSpreadMethodPad); | 1526 repeating_ ? kSpreadMethodRepeat : kSpreadMethodPad); |
1527 AddStops(desc, conversion_data, object); | 1527 AddStops(desc, conversion_data, object); |
1528 | 1528 |
1529 RefPtr<Gradient> gradient = Gradient::CreateConic( | 1529 RefPtr<Gradient> gradient = Gradient::CreateConic( |
1530 position, angle, Gradient::ColorInterpolation::kPremultiplied); | 1530 position, angle, Gradient::ColorInterpolation::kPremultiplied); |
1531 gradient->AddColorStops(desc.stops); | 1531 gradient->AddColorStops(desc.stops); |
1532 | 1532 |
1533 return gradient.Release(); | 1533 return gradient; |
1534 } | 1534 } |
1535 | 1535 |
1536 bool CSSConicGradientValue::Equals(const CSSConicGradientValue& other) const { | 1536 bool CSSConicGradientValue::Equals(const CSSConicGradientValue& other) const { |
1537 return repeating_ == other.repeating_ && DataEquivalent(x_, other.x_) && | 1537 return repeating_ == other.repeating_ && DataEquivalent(x_, other.x_) && |
1538 DataEquivalent(y_, other.y_) && | 1538 DataEquivalent(y_, other.y_) && |
1539 DataEquivalent(from_angle_, other.from_angle_) && | 1539 DataEquivalent(from_angle_, other.from_angle_) && |
1540 stops_ == other.stops_; | 1540 stops_ == other.stops_; |
1541 } | 1541 } |
1542 | 1542 |
1543 DEFINE_TRACE_AFTER_DISPATCH(CSSConicGradientValue) { | 1543 DEFINE_TRACE_AFTER_DISPATCH(CSSConicGradientValue) { |
1544 visitor->Trace(x_); | 1544 visitor->Trace(x_); |
1545 visitor->Trace(y_); | 1545 visitor->Trace(y_); |
1546 visitor->Trace(from_angle_); | 1546 visitor->Trace(from_angle_); |
1547 CSSGradientValue::TraceAfterDispatch(visitor); | 1547 CSSGradientValue::TraceAfterDispatch(visitor); |
1548 } | 1548 } |
1549 | 1549 |
1550 } // namespace blink | 1550 } // namespace blink |
OLD | NEW |