diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/rendering/HitTestingTransformState.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebCore/rendering/HitTestingTransformState.cpp')
-rw-r--r-- | Source/WebCore/rendering/HitTestingTransformState.cpp | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/Source/WebCore/rendering/HitTestingTransformState.cpp b/Source/WebCore/rendering/HitTestingTransformState.cpp index cb3fc84b6..6316b3a82 100644 --- a/Source/WebCore/rendering/HitTestingTransformState.cpp +++ b/Source/WebCore/rendering/HitTestingTransformState.cpp @@ -10,10 +10,10 @@ * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * - * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR @@ -27,7 +27,6 @@ #include "HitTestingTransformState.h" #include "LayoutRect.h" -#include <wtf/PassOwnPtr.h> namespace WebCore { @@ -56,10 +55,11 @@ void HitTestingTransformState::flatten() void HitTestingTransformState::flattenWithTransform(const TransformationMatrix& t) { - TransformationMatrix inverseTransform = t.inverse(); - m_lastPlanarPoint = inverseTransform.projectPoint(m_lastPlanarPoint); - m_lastPlanarQuad = inverseTransform.projectQuad(m_lastPlanarQuad); - m_lastPlanarArea = inverseTransform.projectQuad(m_lastPlanarArea); + if (std::optional<TransformationMatrix> inverse = t.inverse()) { + m_lastPlanarPoint = inverse.value().projectPoint(m_lastPlanarPoint); + m_lastPlanarQuad = inverse.value().projectQuad(m_lastPlanarQuad); + m_lastPlanarArea = inverse.value().projectQuad(m_lastPlanarArea); + } m_accumulatedTransform.makeIdentity(); m_accumulatingTransform = false; @@ -67,22 +67,31 @@ void HitTestingTransformState::flattenWithTransform(const TransformationMatrix& FloatPoint HitTestingTransformState::mappedPoint() const { - return m_accumulatedTransform.inverse().projectPoint(m_lastPlanarPoint); + if (auto inverse = m_accumulatedTransform.inverse()) + return inverse.value().projectPoint(m_lastPlanarPoint); + return m_lastPlanarPoint; } FloatQuad HitTestingTransformState::mappedQuad() const { - return m_accumulatedTransform.inverse().projectQuad(m_lastPlanarQuad); + if (auto inverse = m_accumulatedTransform.inverse()) + return inverse.value().projectQuad(m_lastPlanarQuad); + return m_lastPlanarQuad; } FloatQuad HitTestingTransformState::mappedArea() const { - return m_accumulatedTransform.inverse().projectQuad(m_lastPlanarArea); + if (auto inverse = m_accumulatedTransform.inverse()) + return inverse.value().projectQuad(m_lastPlanarArea); + return m_lastPlanarArea; } LayoutRect HitTestingTransformState::boundsOfMappedArea() const { - return m_accumulatedTransform.inverse().clampedBoundsOfProjectedQuad(m_lastPlanarArea); + if (auto inverse = m_accumulatedTransform.inverse()) + return inverse.value().clampedBoundsOfProjectedQuad(m_lastPlanarArea); + TransformationMatrix identity; + return identity.clampedBoundsOfProjectedQuad(m_lastPlanarArea); } } // namespace WebCore |