Diff
Modified: trunk/LayoutTests/ChangeLog (139237 => 139238)
--- trunk/LayoutTests/ChangeLog 2013-01-09 21:55:18 UTC (rev 139237)
+++ trunk/LayoutTests/ChangeLog 2013-01-09 22:01:09 UTC (rev 139238)
@@ -1,3 +1,28 @@
+2013-01-09 Florin Malita <[email protected]>
+
+ [Skia] Implement GraphicsContext::addRoundedRectClip() using SkCanvas::clipRRect()
+ https://bugs.webkit.org/show_bug.cgi?id=106461
+
+ Reviewed by Stephen White.
+
+ * platform/chromium-linux/fast/backgrounds/border-radius-split-background-image-expected.png:
+ * platform/chromium-linux/fast/borders/border-radius-complex-inner-expected.png:
+ * platform/chromium-linux/fast/borders/border-radius-inset-outset-expected.png:
+ * platform/chromium-linux/fast/borders/border-radius-wide-border-05-expected.png:
+ * platform/chromium-linux/fast/borders/border-styles-split-expected.png:
+ * platform/chromium-linux/fast/borders/borderRadiusArcs01-expected.png:
+ * platform/chromium-linux/fast/borders/mixed-border-styles-radius-expected.png:
+ * platform/chromium-linux/fast/css/background-clip-radius-values-expected.png:
+ * platform/chromium-linux/fast/replaced/border-radius-clip-content-edge-expected.png:
+ * platform/chromium-linux/fast/writing-mode/border-styles-vertical-lr-expected.png:
+ * platform/chromium-linux/fast/writing-mode/border-styles-vertical-rl-expected.png:
+ * platform/chromium-linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png:
+ * platform/chromium-linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png:
+ * platform/chromium-linux/ietestcenter/css3/bordersbackgrounds/border-top-left-radius-values-004-expected.png:
+ * platform/chromium-linux/ietestcenter/css3/bordersbackgrounds/border-top-right-radius-values-004-expected.png:
+ * platform/chromium-linux/svg/custom/svg-fonts-in-html-expected.png:
+ * platform/chromium/TestExpectations:
+
2013-01-09 Dimitri Glazkov <[email protected]>
[Chromium] Land expectations for r139197.
Modified: trunk/LayoutTests/platform/chromium/TestExpectations (139237 => 139238)
--- trunk/LayoutTests/platform/chromium/TestExpectations 2013-01-09 21:55:18 UTC (rev 139237)
+++ trunk/LayoutTests/platform/chromium/TestExpectations 2013-01-09 22:01:09 UTC (rev 139238)
@@ -1380,6 +1380,22 @@
webkit.org/b/106366 platform/chromium/fast/forms/calendar-picker/calendar-picker-appearance.html [ ImageOnlyFailure Pass ]
webkit.org/b/106366 platform/chromium/fast/forms/calendar-picker/calendar-picker-appearance-ru.html [ ImageOnlyFailure Pass ]
+# Need rebaseline after https://bugs.webkit.org/show_bug.cgi?id=106461
+webkit.org/b/106461 fast/backgrounds/border-radius-split-background-image.html [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 fast/borders/border-radius-complex-inner.html [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 fast/borders/border-radius-inset-outset.html [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 fast/borders/border-radius-wide-border-05.html [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 fast/borders/border-styles-split.html [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 fast/borders/borderRadiusArcs01.html [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 fast/borders/mixed-border-styles-radius.html [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 fast/writing-mode/border-styles-vertical-lr.html [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 fast/writing-mode/border-styles-vertical-rl.html [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001.htm [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002.htm [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 ietestcenter/css3/bordersbackgrounds/border-top-left-radius-values-004.htm [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 ietestcenter/css3/bordersbackgrounds/border-top-right-radius-values-004.htm [ ImageOnlyFailure Pass ]
+webkit.org/b/106461 svg/custom/svg-fonts-in-html.html [ ImageOnlyFailure Pass ]
+
# Failing since added by r108699
webkit.org/b/79454 [ Android Linux Mac ] svg/text/text-rescale.html [ ImageOnlyFailure Pass ]
webkit.org/b/79454 [ Android Linux Mac ] svg/text/text-viewbox-rescale.html [ ImageOnlyFailure Pass ]
Modified: trunk/LayoutTests/platform/chromium-linux/fast/backgrounds/border-radius-split-background-image-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/fast/borders/border-radius-complex-inner-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/fast/borders/border-radius-inset-outset-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/fast/borders/border-radius-wide-border-05-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/fast/borders/border-styles-split-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/fast/borders/borderRadiusArcs01-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/fast/borders/mixed-border-styles-radius-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/fast/css/background-clip-radius-values-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/fast/replaced/border-radius-clip-content-edge-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/fast/writing-mode/border-styles-vertical-lr-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/fast/writing-mode/border-styles-vertical-rl-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-001-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/ietestcenter/css3/bordersbackgrounds/border-radius-sum-of-radii-002-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/ietestcenter/css3/bordersbackgrounds/border-top-left-radius-values-004-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/ietestcenter/css3/bordersbackgrounds/border-top-right-radius-values-004-expected.png
(Binary files differ)
Modified: trunk/LayoutTests/platform/chromium-linux/svg/custom/svg-fonts-in-html-expected.png
(Binary files differ)
Modified: trunk/Source/WebCore/ChangeLog (139237 => 139238)
--- trunk/Source/WebCore/ChangeLog 2013-01-09 21:55:18 UTC (rev 139237)
+++ trunk/Source/WebCore/ChangeLog 2013-01-09 22:01:09 UTC (rev 139238)
@@ -1,3 +1,28 @@
+2013-01-09 Florin Malita <[email protected]>
+
+ [Skia] Implement GraphicsContext::addRoundedRectClip() using SkCanvas::clipRRect()
+ https://bugs.webkit.org/show_bug.cgi?id=106461
+
+ Reviewed by Stephen White.
+
+ This patch adds a Skia-specific version of GraphicsContext::addRoundedRectClip() to take
+ advantage of the SkCanvas::clipRRect() primitive.
+
+ As a minor cleanup, the anonymous namespace in GraphicsContextSkia.cpp is extended to cover
+ all the local helper functions.
+
+ No new tests: coverage provided by existing tests.
+
+ * platform/graphics/GraphicsContext.cpp:
+ (WebCore):
+ * platform/graphics/skia/GraphicsContextSkia.cpp:
+ (WebCore::GraphicsContext::addRoundedRectClip):
+ (WebCore):
+ (WebCore::GraphicsContext::fillRoundedRect):
+ * platform/graphics/skia/PlatformContextSkia.h:
+ (WebCore::PlatformContextSkia::clipRRect):
+ (WebCore):
+
2013-01-09 Andreas Kling <[email protected]>
SVG-as-image: Throw out cached bitmap renderings after they sit unused for some time.
Modified: trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp (139237 => 139238)
--- trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp 2013-01-09 21:55:18 UTC (rev 139237)
+++ trunk/Source/WebCore/platform/graphics/GraphicsContext.cpp 2013-01-09 22:01:09 UTC (rev 139238)
@@ -604,6 +604,7 @@
}
#endif
+#if !USE(SKIA)
void GraphicsContext::addRoundedRectClip(const RoundedRect& rect)
{
if (paintingDisabled())
@@ -613,6 +614,7 @@
path.addRoundedRect(rect);
clip(path);
}
+#endif
void GraphicsContext::clipOutRoundedRect(const RoundedRect& rect)
{
Modified: trunk/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp (139237 => 139238)
--- trunk/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp 2013-01-09 21:55:18 UTC (rev 139237)
+++ trunk/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp 2013-01-09 22:01:09 UTC (rev 139238)
@@ -68,6 +68,7 @@
namespace WebCore {
namespace {
+// Local helper functions ------------------------------------------------------
// Return value % max, but account for value possibly being negative.
inline int fastMod(int value, int max)
@@ -84,10 +85,6 @@
return value;
}
-} // namespace
-
-// Local helper functions ------------------------------------------------------
-
void addCornerArc(SkPath* path, const SkRect& rect, const IntSize& size, int startAngle)
{
SkIRect ir;
@@ -200,6 +197,20 @@
}
}
+inline void setRadii(SkVector* radii, IntSize topLeft, IntSize topRight, IntSize bottomRight, IntSize bottomLeft)
+{
+ radii[SkRRect::kUpperLeft_Corner].set(SkIntToScalar(topLeft.width()),
+ SkIntToScalar(topLeft.height()));
+ radii[SkRRect::kUpperRight_Corner].set(SkIntToScalar(topRight.width()),
+ SkIntToScalar(topRight.height()));
+ radii[SkRRect::kLowerRight_Corner].set(SkIntToScalar(bottomRight.width()),
+ SkIntToScalar(bottomRight.height()));
+ radii[SkRRect::kLowerLeft_Corner].set(SkIntToScalar(bottomLeft.width()),
+ SkIntToScalar(bottomLeft.height()));
+}
+
+} // namespace
+
// -----------------------------------------------------------------------------
// This may be called with a NULL pointer to create a graphics context that has
@@ -311,6 +322,21 @@
platformContext()->clipPath(*path.platformPath(), PlatformContextSkia::AntiAliased);
}
+void GraphicsContext::addRoundedRectClip(const RoundedRect& rect)
+{
+ if (paintingDisabled())
+ return;
+
+ SkVector radii[4];
+ RoundedRect::Radii wkRadii = rect.radii();
+ setRadii(radii, wkRadii.topLeft(), wkRadii.topRight(), wkRadii.bottomRight(), wkRadii.bottomLeft());
+
+ SkRRect r;
+ r.setRectRadii(rect.rect(), radii);
+
+ platformContext()->clipRRect(r, PlatformContextSkia::AntiAliased);
+}
+
void GraphicsContext::canvasClip(const Path& path)
{
if (paintingDisabled())
@@ -808,10 +834,7 @@
}
SkVector radii[4];
- radii[SkRRect::kUpperLeft_Corner].set(SkIntToScalar(topLeft.width()), SkIntToScalar(topLeft.height()));
- radii[SkRRect::kUpperRight_Corner].set(SkIntToScalar(topRight.width()), SkIntToScalar(topRight.height()));
- radii[SkRRect::kLowerRight_Corner].set(SkIntToScalar(bottomRight.width()), SkIntToScalar(bottomRight.height()));
- radii[SkRRect::kLowerLeft_Corner].set(SkIntToScalar(bottomLeft.width()), SkIntToScalar(bottomLeft.height()));
+ setRadii(radii, topLeft, topRight, bottomRight, bottomLeft);
SkRRect rr;
rr.setRectRadii(rect, radii);
Modified: trunk/Source/WebCore/platform/graphics/skia/PlatformContextSkia.h (139237 => 139238)
--- trunk/Source/WebCore/platform/graphics/skia/PlatformContextSkia.h 2013-01-09 21:55:18 UTC (rev 139237)
+++ trunk/Source/WebCore/platform/graphics/skia/PlatformContextSkia.h 2013-01-09 22:01:09 UTC (rev 139238)
@@ -226,6 +226,8 @@
SkRegion::Op = SkRegion::kIntersect_Op);
bool clipRect(const SkRect&, AntiAliasingMode = NotAntiAliased,
SkRegion::Op = SkRegion::kIntersect_Op);
+ bool clipRRect(const SkRRect&, AntiAliasingMode = NotAntiAliased,
+ SkRegion::Op = SkRegion::kIntersect_Op);
bool getClipBounds(SkRect*) const;
void setMatrix(const SkMatrix&);
@@ -367,6 +369,13 @@
return m_canvas->clipRect(rect, op, aa == AntiAliased);
}
+inline bool PlatformContextSkia::clipRRect(const SkRRect& rect, AntiAliasingMode aa, SkRegion::Op op)
+{
+ realizeSave(SkCanvas::kClip_SaveFlag);
+
+ return m_canvas->clipRRect(rect, op, aa == AntiAliased);
+}
+
inline bool PlatformContextSkia::getClipBounds(SkRect* bounds) const
{
return m_canvas->getClipBounds(bounds);