summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/HitTestingTransformState.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebCore/rendering/HitTestingTransformState.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/WebCore/rendering/HitTestingTransformState.cpp')
-rw-r--r--Source/WebCore/rendering/HitTestingTransformState.cpp31
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