Title: [107818] trunk/Source/WebCore
- Revision
- 107818
- Author
- [email protected]
- Date
- 2012-02-15 07:54:31 -0800 (Wed, 15 Feb 2012)
Log Message
Remove clipToImageBuffer from SourceAlpha and feComposite
https://bugs.webkit.org/show_bug.cgi?id=78355
Reviewed by Nikolas Zimmermann.
The implementation of clipToImageBuffer is inefficient on
non-mac platforms, so we would benefit if remove it.
Existing tests cover this feature.
* platform/graphics/filters/FEComposite.cpp:
(WebCore::FEComposite::platformApplySoftware):
* platform/graphics/filters/SourceAlpha.cpp:
(WebCore::SourceAlpha::platformApplySoftware):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (107817 => 107818)
--- trunk/Source/WebCore/ChangeLog 2012-02-15 15:42:30 UTC (rev 107817)
+++ trunk/Source/WebCore/ChangeLog 2012-02-15 15:54:31 UTC (rev 107818)
@@ -1,3 +1,20 @@
+2012-02-15 Zoltan Herczeg <[email protected]>
+
+ Remove clipToImageBuffer from SourceAlpha and feComposite
+ https://bugs.webkit.org/show_bug.cgi?id=78355
+
+ Reviewed by Nikolas Zimmermann.
+
+ The implementation of clipToImageBuffer is inefficient on
+ non-mac platforms, so we would benefit if remove it.
+
+ Existing tests cover this feature.
+
+ * platform/graphics/filters/FEComposite.cpp:
+ (WebCore::FEComposite::platformApplySoftware):
+ * platform/graphics/filters/SourceAlpha.cpp:
+ (WebCore::SourceAlpha::platformApplySoftware):
+
2012-02-15 Simon Hausmann <[email protected]>
[Qt] Replace use of QGLWidget/QGLContext with QOpenGLContext and QSurface for Qt 5
Modified: trunk/Source/WebCore/platform/graphics/filters/FEComposite.cpp (107817 => 107818)
--- trunk/Source/WebCore/platform/graphics/filters/FEComposite.cpp 2012-02-15 15:42:30 UTC (rev 107817)
+++ trunk/Source/WebCore/platform/graphics/filters/FEComposite.cpp 2012-02-15 15:54:31 UTC (rev 107818)
@@ -239,9 +239,19 @@
filterContext->drawImageBuffer(in->asImageBuffer(), ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
break;
case FECOMPOSITE_OPERATOR_IN: {
- GraphicsContextStateSaver stateSaver(*filterContext);
- filterContext->clipToImageBuffer(in2->asImageBuffer(), drawingRegionOfInputImage(in2->absolutePaintRect()));
- filterContext->drawImageBuffer(in->asImageBuffer(), ColorSpaceDeviceRGB, drawingRegionOfInputImage(in->absolutePaintRect()));
+ // Applies only to the intersected region.
+ IntRect destinationRect = in->absolutePaintRect();
+ destinationRect.intersect(in2->absolutePaintRect());
+ destinationRect.intersect(absolutePaintRect());
+ if (destinationRect.isEmpty())
+ break;
+ IntPoint destinationPoint(destinationRect.x() - absolutePaintRect().x(), destinationRect.y() - absolutePaintRect().y());
+ IntRect sourceRect(IntPoint(destinationRect.x() - in->absolutePaintRect().x(),
+ destinationRect.y() - in->absolutePaintRect().y()), destinationRect.size());
+ IntRect source2Rect(IntPoint(destinationRect.x() - in2->absolutePaintRect().x(),
+ destinationRect.y() - in2->absolutePaintRect().y()), destinationRect.size());
+ filterContext->drawImageBuffer(in2->asImageBuffer(), ColorSpaceDeviceRGB, destinationPoint, source2Rect);
+ filterContext->drawImageBuffer(in->asImageBuffer(), ColorSpaceDeviceRGB, destinationPoint, sourceRect, CompositeSourceIn);
break;
}
case FECOMPOSITE_OPERATOR_OUT:
Modified: trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp (107817 => 107818)
--- trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp 2012-02-15 15:42:30 UTC (rev 107817)
+++ trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp 2012-02-15 15:54:31 UTC (rev 107818)
@@ -63,9 +63,8 @@
FloatRect imageRect(FloatPoint(), absolutePaintRect().size());
GraphicsContext* filterContext = resultImage->context();
- GraphicsContextStateSaver stateSaver(*filterContext);
- filterContext->clipToImageBuffer(filter->sourceImage(), imageRect);
filterContext->fillRect(imageRect, Color::black, ColorSpaceDeviceRGB);
+ filterContext->drawImageBuffer(filter->sourceImage(), ColorSpaceDeviceRGB, IntPoint(), CompositeDestinationIn);
}
void SourceAlpha::dump()
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes