Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(633)

Unified Diff: third_party/WebKit/Source/platform/geometry/TransformState.cpp

Issue 1777613002: Add localToAbsoluteTransform and localToAncestorTransform. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add comments to LayoutObject.h Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/geometry/TransformState.cpp
diff --git a/third_party/WebKit/Source/platform/geometry/TransformState.cpp b/third_party/WebKit/Source/platform/geometry/TransformState.cpp
index 9ec2073661391dd75f49b5aa40f7459213729c7b..c119f0f8d48cfd1b8afb73dfd88b92288aa34bff 100644
--- a/third_party/WebKit/Source/platform/geometry/TransformState.cpp
+++ b/third_party/WebKit/Source/platform/geometry/TransformState.cpp
@@ -39,6 +39,7 @@ TransformState& TransformState::operator=(const TransformState& other)
if (m_mapQuad)
m_lastPlanarQuad = other.m_lastPlanarQuad;
m_accumulatingTransform = other.m_accumulatingTransform;
+ m_forceAccumulatingTransform = other.m_forceAccumulatingTransform;
m_direction = other.m_direction;
m_accumulatedTransform.clear();
@@ -68,6 +69,9 @@ void TransformState::translateMappedCoordinates(const LayoutSize& offset)
void TransformState::move(const LayoutSize& offset, TransformAccumulation accumulate)
{
+ if (m_forceAccumulatingTransform)
+ accumulate = AccumulateTransform;
+
if (accumulate == FlattenTransform || !m_accumulatedTransform) {
m_accumulatedOffset += offset;
} else {
@@ -127,14 +131,19 @@ void TransformState::applyTransform(const TransformationMatrix& transformFromCon
}
if (accumulate == FlattenTransform) {
- const TransformationMatrix* finalTransform = m_accumulatedTransform ? m_accumulatedTransform.get() : &transformFromContainer;
- flattenWithTransform(*finalTransform, wasClamped);
+ if (m_forceAccumulatingTransform) {
+ m_accumulatedTransform->flattenTo2d();
+ } else {
+ const TransformationMatrix* finalTransform = m_accumulatedTransform ? m_accumulatedTransform.get() : &transformFromContainer;
+ flattenWithTransform(*finalTransform, wasClamped);
+ }
}
- m_accumulatingTransform = accumulate == AccumulateTransform;
+ m_accumulatingTransform = accumulate == AccumulateTransform || m_forceAccumulatingTransform;
}
void TransformState::flatten(bool* wasClamped)
{
+ ASSERT(!m_forceAccumulatingTransform);
if (wasClamped)
*wasClamped = false;
@@ -180,6 +189,12 @@ FloatQuad TransformState::mappedQuad(bool* wasClamped) const
return m_accumulatedTransform->inverse().projectQuad(quad, wasClamped);
}
+const TransformationMatrix& TransformState::accumulatedTransform() const
+{
+ ASSERT(m_forceAccumulatingTransform && m_accumulatingTransform);
+ return *m_accumulatedTransform;
+}
+
void TransformState::flattenWithTransform(const TransformationMatrix& t, bool* wasClamped)
{
if (m_direction == ApplyTransformDirection) {

Powered by Google App Engine
This is Rietveld 408576698