| OLD | NEW |
| 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 21 matching lines...) Expand all Loading... |
| 32 #include "core/dom/NodeRenderStyle.h" | 32 #include "core/dom/NodeRenderStyle.h" |
| 33 #include "core/dom/TextLinkColors.h" | 33 #include "core/dom/TextLinkColors.h" |
| 34 #include "core/rendering/RenderObject.h" | 34 #include "core/rendering/RenderObject.h" |
| 35 #include "platform/geometry/IntSize.h" | 35 #include "platform/geometry/IntSize.h" |
| 36 #include "platform/graphics/Gradient.h" | 36 #include "platform/graphics/Gradient.h" |
| 37 #include "platform/graphics/GradientGeneratedImage.h" | 37 #include "platform/graphics/GradientGeneratedImage.h" |
| 38 #include "platform/graphics/Image.h" | 38 #include "platform/graphics/Image.h" |
| 39 #include "wtf/text/StringBuilder.h" | 39 #include "wtf/text/StringBuilder.h" |
| 40 #include "wtf/text/WTFString.h" | 40 #include "wtf/text/WTFString.h" |
| 41 | 41 |
| 42 using namespace std; | |
| 43 | |
| 44 namespace WebCore { | 42 namespace WebCore { |
| 45 | 43 |
| 46 void CSSGradientColorStop::trace(Visitor* visitor) | 44 void CSSGradientColorStop::trace(Visitor* visitor) |
| 47 { | 45 { |
| 48 visitor->trace(m_position); | 46 visitor->trace(m_position); |
| 49 visitor->trace(m_color); | 47 visitor->trace(m_color); |
| 50 } | 48 } |
| 51 | 49 |
| 52 PassRefPtr<Image> CSSGradientValue::image(RenderObject* renderer, const IntSize&
size) | 50 PassRefPtr<Image> CSSGradientValue::image(RenderObject* renderer, const IntSize&
size) |
| 53 { | 51 { |
| (...skipping 995 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1049 break; | 1047 break; |
| 1050 default: | 1048 default: |
| 1051 break; | 1049 break; |
| 1052 } | 1050 } |
| 1053 | 1051 |
| 1054 // Now compute the end radii based on the second point, shape and fill. | 1052 // Now compute the end radii based on the second point, shape and fill. |
| 1055 | 1053 |
| 1056 // Horizontal | 1054 // Horizontal |
| 1057 switch (fill) { | 1055 switch (fill) { |
| 1058 case ClosestSide: { | 1056 case ClosestSide: { |
| 1059 float xDist = min(secondPoint.x(), size.width() - secondPoint.x()); | 1057 float xDist = std::min(secondPoint.x(), size.width() - secondPoint.x
()); |
| 1060 float yDist = min(secondPoint.y(), size.height() - secondPoint.y()); | 1058 float yDist = std::min(secondPoint.y(), size.height() - secondPoint.
y()); |
| 1061 if (shape == Circle) { | 1059 if (shape == Circle) { |
| 1062 float smaller = min(xDist, yDist); | 1060 float smaller = std::min(xDist, yDist); |
| 1063 xDist = smaller; | 1061 xDist = smaller; |
| 1064 yDist = smaller; | 1062 yDist = smaller; |
| 1065 } | 1063 } |
| 1066 secondRadius = xDist; | 1064 secondRadius = xDist; |
| 1067 aspectRatio = xDist / yDist; | 1065 aspectRatio = xDist / yDist; |
| 1068 break; | 1066 break; |
| 1069 } | 1067 } |
| 1070 case FarthestSide: { | 1068 case FarthestSide: { |
| 1071 float xDist = max(secondPoint.x(), size.width() - secondPoint.x()); | 1069 float xDist = std::max(secondPoint.x(), size.width() - secondPoint.x
()); |
| 1072 float yDist = max(secondPoint.y(), size.height() - secondPoint.y()); | 1070 float yDist = std::max(secondPoint.y(), size.height() - secondPoint.
y()); |
| 1073 if (shape == Circle) { | 1071 if (shape == Circle) { |
| 1074 float larger = max(xDist, yDist); | 1072 float larger = std::max(xDist, yDist); |
| 1075 xDist = larger; | 1073 xDist = larger; |
| 1076 yDist = larger; | 1074 yDist = larger; |
| 1077 } | 1075 } |
| 1078 secondRadius = xDist; | 1076 secondRadius = xDist; |
| 1079 aspectRatio = xDist / yDist; | 1077 aspectRatio = xDist / yDist; |
| 1080 break; | 1078 break; |
| 1081 } | 1079 } |
| 1082 case ClosestCorner: { | 1080 case ClosestCorner: { |
| 1083 FloatPoint corner; | 1081 FloatPoint corner; |
| 1084 float distance = distanceToClosestCorner(secondPoint, size, corner); | 1082 float distance = distanceToClosestCorner(secondPoint, size, corner); |
| 1085 if (shape == Circle) | 1083 if (shape == Circle) |
| 1086 secondRadius = distance; | 1084 secondRadius = distance; |
| 1087 else { | 1085 else { |
| 1088 // If <shape> is ellipse, the gradient-shape has the same ratio
of width to height | 1086 // If <shape> is ellipse, the gradient-shape has the same ratio
of width to height |
| 1089 // that it would if closest-side or farthest-side were specified
, as appropriate. | 1087 // that it would if closest-side or farthest-side were specified
, as appropriate. |
| 1090 float xDist = min(secondPoint.x(), size.width() - secondPoint.x(
)); | 1088 float xDist = std::min(secondPoint.x(), size.width() - secondPoi
nt.x()); |
| 1091 float yDist = min(secondPoint.y(), size.height() - secondPoint.y
()); | 1089 float yDist = std::min(secondPoint.y(), size.height() - secondPo
int.y()); |
| 1092 | 1090 |
| 1093 secondRadius = horizontalEllipseRadius(corner - secondPoint, xDi
st / yDist); | 1091 secondRadius = horizontalEllipseRadius(corner - secondPoint, xDi
st / yDist); |
| 1094 aspectRatio = xDist / yDist; | 1092 aspectRatio = xDist / yDist; |
| 1095 } | 1093 } |
| 1096 break; | 1094 break; |
| 1097 } | 1095 } |
| 1098 | 1096 |
| 1099 case FarthestCorner: { | 1097 case FarthestCorner: { |
| 1100 FloatPoint corner; | 1098 FloatPoint corner; |
| 1101 float distance = distanceToFarthestCorner(secondPoint, size, corner)
; | 1099 float distance = distanceToFarthestCorner(secondPoint, size, corner)
; |
| 1102 if (shape == Circle) | 1100 if (shape == Circle) |
| 1103 secondRadius = distance; | 1101 secondRadius = distance; |
| 1104 else { | 1102 else { |
| 1105 // If <shape> is ellipse, the gradient-shape has the same ratio
of width to height | 1103 // If <shape> is ellipse, the gradient-shape has the same ratio
of width to height |
| 1106 // that it would if closest-side or farthest-side were specified
, as appropriate. | 1104 // that it would if closest-side or farthest-side were specified
, as appropriate. |
| 1107 float xDist = max(secondPoint.x(), size.width() - secondPoint.x(
)); | 1105 float xDist = std::max(secondPoint.x(), size.width() - secondPoi
nt.x()); |
| 1108 float yDist = max(secondPoint.y(), size.height() - secondPoint.y
()); | 1106 float yDist = std::max(secondPoint.y(), size.height() - secondPo
int.y()); |
| 1109 | 1107 |
| 1110 secondRadius = horizontalEllipseRadius(corner - secondPoint, xDi
st / yDist); | 1108 secondRadius = horizontalEllipseRadius(corner - secondPoint, xDi
st / yDist); |
| 1111 aspectRatio = xDist / yDist; | 1109 aspectRatio = xDist / yDist; |
| 1112 } | 1110 } |
| 1113 break; | 1111 break; |
| 1114 } | 1112 } |
| 1115 } | 1113 } |
| 1116 } | 1114 } |
| 1117 | 1115 |
| 1118 RefPtr<Gradient> gradient = Gradient::create(firstPoint, firstRadius, second
Point, secondRadius, aspectRatio); | 1116 RefPtr<Gradient> gradient = Gradient::create(firstPoint, firstRadius, second
Point, secondRadius, aspectRatio); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1183 visitor->trace(m_firstRadius); | 1181 visitor->trace(m_firstRadius); |
| 1184 visitor->trace(m_secondRadius); | 1182 visitor->trace(m_secondRadius); |
| 1185 visitor->trace(m_shape); | 1183 visitor->trace(m_shape); |
| 1186 visitor->trace(m_sizingBehavior); | 1184 visitor->trace(m_sizingBehavior); |
| 1187 visitor->trace(m_endHorizontalSize); | 1185 visitor->trace(m_endHorizontalSize); |
| 1188 visitor->trace(m_endVerticalSize); | 1186 visitor->trace(m_endVerticalSize); |
| 1189 CSSGradientValue::traceAfterDispatch(visitor); | 1187 CSSGradientValue::traceAfterDispatch(visitor); |
| 1190 } | 1188 } |
| 1191 | 1189 |
| 1192 } // namespace WebCore | 1190 } // namespace WebCore |
| OLD | NEW |