void TransformState::applyTransform(const TransformationMatrix& transformFromContainer, TransformAccumulation accumulate, bool* wasClamped) { if (wasClamped) *wasClamped = false; if (transformFromContainer.isIntegerTranslation()) { move(LayoutSize(transformFromContainer.e(), transformFromContainer.f()), accumulate); return; } applyAccumulatedOffset(); // If we have an accumulated transform from last time, multiply in this transform if (m_accumulatedTransform) { if (m_direction == ApplyTransformDirection) m_accumulatedTransform = adoptPtr(new TransformationMatrix(transformFromContainer * *m_accumulatedTransform)); else m_accumulatedTransform->multiply(transformFromContainer); } else if (accumulate == AccumulateTransform) { // Make one if we started to accumulate m_accumulatedTransform = adoptPtr(new TransformationMatrix(transformFromContainer)); } if (accumulate == FlattenTransform) { const TransformationMatrix* finalTransform = m_accumulatedTransform ? m_accumulatedTransform.get() : &transformFromContainer; flattenWithTransform(*finalTransform, wasClamped); } m_accumulatingTransform = accumulate == AccumulateTransform; }
void HitTestingTransformState::applyTransform(const TransformationMatrix& transformFromContainer, TransformAccumulation accumulate) { m_accumulatedTransform.multiply(transformFromContainer); if (accumulate == FlattenTransform) flattenWithTransform(m_accumulatedTransform); m_accumulatingTransform = accumulate == AccumulateTransform; }
void HitTestingTransformState::translate(int x, int y, TransformAccumulation accumulate) { m_accumulatedTransform.translate(x, y); if (accumulate == FlattenTransform) flattenWithTransform(m_accumulatedTransform); m_accumulatingTransform = accumulate == AccumulateTransform; }
void TransformState::flatten() { if (!m_accumulatedTransform) { m_accumulatingTransform = false; return; } flattenWithTransform(*m_accumulatedTransform); }
void TransformState::flatten(bool* wasClamped) { if (wasClamped) *wasClamped = false; applyAccumulatedOffset(); if (!m_accumulatedTransform) { m_accumulatingTransform = false; return; } flattenWithTransform(*m_accumulatedTransform, wasClamped); }
void TransformState::applyTransform(const TransformationMatrix& transformFromContainer, TransformAccumulation accumulate) { // If we have an accumulated transform from last time, multiply in this transform if (m_accumulatedTransform) { if (m_direction == ApplyTransformDirection) m_accumulatedTransform->multiply(transformFromContainer); else m_accumulatedTransform->multLeft(transformFromContainer); } else if (accumulate == AccumulateTransform) { // Make one if we started to accumulate m_accumulatedTransform.set(new TransformationMatrix(transformFromContainer)); } if (accumulate == FlattenTransform) { const TransformationMatrix* finalTransform = m_accumulatedTransform ? m_accumulatedTransform.get() : &transformFromContainer; flattenWithTransform(*finalTransform); } m_accumulatingTransform = accumulate == AccumulateTransform; }
void HitTestingTransformState::flatten() { flattenWithTransform(m_accumulatedTransform); }