Chromium -> Mojo roll.
Update from https://crrev.com/321900
Changes:
(1) OpenTypeSanitizer.cpp: Removed use of ots::EnableWOFF2() which was
removed from library and implementation was empty anyways.
(2) GraphicsContext.cpp: Header location for SkMatrixImageFilter.h moved.
(3) SkiaImageFilterBuilder.cpp: Header location for SkMatrixImageFilter.h moved.
(4) FEDropShadow.cpp: Function signature changed.
R=davemoore@chromium.org, jamesr@chromium.org
BUG=453591
Review URL: https://codereview.chromium.org/1028333002
diff --git a/cc/resources/layer_quad.cc b/cc/resources/layer_quad.cc
index ba92314..ff336ba 100644
--- a/cc/resources/layer_quad.cc
+++ b/cc/resources/layer_quad.cc
@@ -22,6 +22,14 @@
scale(1.0f / tangent.Length());
}
+gfx::PointF LayerQuad::Edge::Intersect(const LayerQuad::Edge& e) const {
+ DCHECK(!degenerate());
+ DCHECK(!e.degenerate());
+
+ return gfx::PointF((y() * e.z() - e.y() * z()) / (x() * e.y() - e.x() * y()),
+ (x() * e.z() - e.x() * z()) / (e.x() * y() - x() * e.y()));
+}
+
LayerQuad::LayerQuad(const gfx::QuadF& quad) {
// Create edges.
left_ = Edge(quad.p4(), quad.p1());
@@ -46,6 +54,12 @@
bottom_(bottom) {}
gfx::QuadF LayerQuad::ToQuadF() const {
+ size_t num_degenerate_edges = left_.degenerate() + right_.degenerate() +
+ top_.degenerate() + bottom_.degenerate();
+ if (num_degenerate_edges > 1) {
+ return gfx::QuadF();
+ }
+
if (left_.degenerate()) {
return gfx::QuadF(top_.Intersect(bottom_), top_.Intersect(right_),
right_.Intersect(bottom_), bottom_.Intersect(top_));